Русский
Русский
English
Статистика
Реклама

Recovery mode Enlarge your увеличиваем виртуальный диск in-place

Периодически приходится манипулировать виртуальными дисками гостевых систем KVM.
Но так как делать это приходится нечасто, то каждый раз приходится заново RTFM'ить, поэтому написал такую вот шпору.

Сегодня увеличивал NTFS-диск гостевой Windows средствами хостовой CentOS 7, так что ниже - прямая трансляция.
Все операции будем проводить руками - без мышки и прочих plug-n-play'ев.
Всё надо делать предельно внимательно, перед операцией сделать бэкап целевого диска (если есть возможность; я вот сегодня сделал) или хорошо помолиться (если места нет; в прошлый раз именно такой случай).

Для работы понадобятся:

  • dd (coreutils)

  • fdisk (util-linux)

  • kpartx (kpartx)

  • ntfsresize (ntfsprogs)

Увеличивать будем "диск" ws_e.img с 64 кГБ на 16 кГБ (до 80 кГБ).
Note: 1 кГБ (какбыгигабайт) = 1008 MB (кратно 63 по историческим причинам), ну так вот среди меня принято и совершенно необязательно к принятию во внимание).

1. Enlarge your disk

Прежде всего нарастим собственно диск.

Было:

[root@ext images]# ls -l ws_e.img -rw-r--r-- 1 root root 67645734912 окт 25 14:31 ws_e.img

Операция:

[root@ext images]# dd if=/dev/zero of=ws_e.img bs=1008M count=16 oflag=append conv=notrunc16+0 записей получено16+0 записей отправлено скопировано 16911433728 байт (17 GB), 69,638 c, 243 MB/c

Или более шустрый вариант (сам пока не пробовал):

fallocate -i -l 16128M -o 64512M ws_e.img

Стало:

[root@ext images]# ls -l ws_e.img -rw-r--r-- 1 root root 84557168640 окт 25 14:54 ws_e.img

Note: в случае переноса данных между железными дисками в этом месте должно быть нечто вроде dd if=/dev/sdb of=/dev/sdc

2. Enlarge your partition

man ntfsresize:

To enlarge an NTFS filesystem, first you must enlarge the size of the underlying partition. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size.

Так и поступим:
[root@ext images]# fdisk ws_e.img Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Команда (m для справки): pDisk ws_e.img: 84.6 GB, 84557168640 bytes, 165150720 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0xc617554dУстр-во Загр     Начало       Конец       Блоки   Id  Системаws_e.img1            2048   132116479    66057216    7  HPFS/NTFS/exFATКоманда (m для справки): dSelected partition 1Partition 1 is deletedКоманда (m для справки): nPartition type:   p   primary (0 primary, 0 extended, 4 free)   e   extendedSelect (default p): Using default response pНомер раздела (1-4, default 1): Первый sector (2048-165150719, по умолчанию 2048): Используется значение по умолчанию 2048Last sector, +sectors or +size{K,M,G} (2048-165150719, по умолчанию 165150719): Используется значение по умолчанию 165150719Partition 1 of type Linux and of size 78,8 GiB is setКоманда (m для справки): tSelected partition 1Hex code (type L to list all codes): 7Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'Команда (m для справки): pDisk ws_e.img: 84.6 GB, 84557168640 bytes, 165150720 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0xc617554dУстр-во Загр     Начало       Конец       Блоки   Id  Системаws_e.img1            2048   165150719    82574336    7  HPFS/NTFS/exFATКоманда (m для справки): wТаблица разделов была изменена!Синхронизируются диски.

Т.к. fdisk ничего не делает с содержимым разделов, то операция достаточно безопасна.

3. Enlarge your FS

Файловая система не в курсе об изменении размера её раздела, поэтому здесь тоже надо лезть руками. Для ext? это будет resize2fs (если кому надо), для NTFS - ntfsresize.
Т.к. ntfsresize не умеет в файл-как-диск, то сначала сделаем для него этот самый "диск":

[root@ext images]# kpartx -av ws_e.img add map loop0p1 (253:0): 0 165148672 linear /dev/loop0 2048

Проверим как оно вообще:

[root@ext images]# fdisk -l /dev/loop0...Устр-во Загр     Начало       Конец       Блоки   Id  Система/dev/loop0p1            2048   165150719    82574336    7  HPFS/NTFS/exFAT[root@ext images]# ls /dev/mappercontrol  loop0p1

Собственно enlarge:

[root@ext images]# ntfsresize /dev/mapper/loop0p1ntfsresize v2017.3.23 (libntfs-3g)Device name        : /dev/mapper/loop0p1NTFS volume version: 3.1Cluster size       : 4096 bytesCurrent volume size: 67642585600 bytes (67643 MB)Current device size: 84556120064 bytes (84557 MB)New volume size    : 84556116480 bytes (84557 MB)Checking filesystem consistency ...100.00 percent completedAccounting clusters ...Space in use       : 64255 MB (95,0%)Collecting resizing constraints ...WARNING: Every sanity check passed and only the dangerous operations left.Make sure that important data has been backed up! Power outage or computercrash may result major data loss!Are you sure you want to proceed (y/[n])? ySchedule chkdsk for NTFS consistency check at Windows boot time ...Resetting $LogFile ... (this might take a while)Updating $BadClust file ...Updating $Bitmap file ...Updating Boot record ...Syncing device ...Successfully resized NTFS on device '/dev/mapper/loop0p1'.

(Note: при попытке внести код под спойлер новый хабраредактор наглухо вешается (хотя один раз каким-то образом получилось с 5-го раза), поэтому так вот.)

и убираем за собой:

[root@ext images]# kpartx -dv /dev/loop0del devmap : loop0p1

ну и полетели:

[root@ext images]# virsh start win2k8r2Домен win2k8r2 был успешно запущен

PS.:

  • Операцию 3 (а может даже и 2) можно провести средствами самой Windows (Управление дисками - Расширить том), но а) с системным диском не прокатит и б) статья не об этом.

  • Уменьшение виртуальных дисков делается в обратном порядке (FS partition disk), только еще более страшно внимательно.

  • Большая часть операций применима для переноса между железными дисками.

Источник: habr.com
К списку статей
Опубликовано: 25.10.2020 18:16:57
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Системное администрирование

*nix

Ntfsresize

Kvm

Libvirt

Шпора

Tips'n'tricks

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru