В этой статье мы рассмотрим, как уменьшить размер диска (vmdk) виртуальной машины в VMware ESXi. Уменьшить размер виртуального диска VMware из графического веб-интерфейса vSphere Client нельзя (можно только увеличить диск ВМ VMware ). При попытке указать меньший размер диска ВМ, появляется ошибка: Enter a disk size which is larger than its original capacity
.
Перед тем, как уменьшить размера виртуального диска на хосте VMWare ESXi необходимо:
- Удалить все снапшоты виртуальной машины;
- Создать полную резервную копию виртуальной машины, или предварительно сделайте копию vmdk и flat файла виртуального диска, который вы хотите уменьшить. Выполните следующие команды в конолси ESXi:
cp vmname.vmdk backup_vmname.vmdk
cp vmname-flat.vmdk backup_vmname-flat.vmdk
Процедура уменьшения размера виртуального диска состоит из двух этапов:
- Уменьшение раздела внутри гостевой ОС;
- Уменьшение размера VMDK файла виртуальной машины VMware на VMFS (NFS) хранилище.
Уменьшение размера раздела виртуального диска в гостевой ОС
Сначала нужно уменьшить размер раздела диска внутри гостевой ОС.
Если в ВМ установлена гостевая Windows:
- Откройте консоль управления дисками (
diskmgmt.msc
) - В нашем случае справа от раздела, который мы хотим уменьшить, находится раздел восстановления среды WinRE (
Recovery Partition
). Для корректного выполнения процедуры уменьшения виртуального диска справа от раздела, который вы хотите уменьшить не должно быть других разделов. Вам нужно или перенести образ восстановления winre.wim с отдельного раздела на системный, или переместить раздел recovery в начала диска (оба варианта подробно описаны в статье Не могу расширить диск в Windows из-за раздела восстановления ). - Теперь вы можете уменьшить размер основного раздела (в современных версиях Windows вы можете уменьшить размер диска без перезагрузки, в старых версиях придется использовать утилиту
sdelete
). Щелкните по разделу и выберите Shrink Volume . - Допустим, вы хотите уменьшить размер диска ВМ на 40 Гб. Укажите значение 40960 Мб (40 Гб x 1024) в поле Enter the amount of space to shrink in MB и нажмите Shrink ;
- После завершения операции уменьшения размера раздела, справа от вашего основного раздела останется 40 Гб неразмеченного (
Unallocated
) пространства.
Для Linux ВМ, если вам нужно уменьшить размер корневого раздела, нужно загрузиться ВМ с LiveCD GParted (GNOME Partition Editor). Уменьшите размеры разделов из графического интерфейса GParted через меню Resize/Move. Если нужно, переместите разделы. Чтобы применить изменения, выберите Edit -> Apply all operations. Утилита изменит размеры разделов и уменьшит файловую систему через Rezise2fs.
Загрузите гостевую ВМ с Linux и проверьте, что все работает корректно.
Уменьшить размер VMDK файла виртуальной машины VMware
Теперь нужно уменьшить размера VMDK файла на файловой системе VMware VMFS.
- Выключите ВМ;
- Подключитесь по SSH к консоли гипервизора ESXi , на котором зарегистрирована ВМ (можно воспользоваться putty или встроенным ssh клиентом Windows );
- Перейдите в каталог, в котором хранится vmdk файл ВМ (путь к виртуальному диску узнать в свойствах виртуального диска в веб интерфейсе клиента vSphere):
cd /vmfs/volumes/datastore/test-VM
- Выведите содержимое конфигурационного файла виртуального с помощью команды cat:
# cat test_vm_3.vmdk
Размер vmdk диска задается в секции # Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512) - Я хочу уменьшить виртуального vmdk диска на 40 Гб. Это значит, что в секции Extent description нужно указать значение: 83886080 . Это значение получилось следующим образом:
167772160
(текущий размер диска)- 83886080
(40 Гб*1024*1024*1024 / 512) - Отредактируйте конфигурационный файл диска с помощью vi
# vi test_vm_3.vmdk
- В редакторе vi с помощью стрелки вниз перейдите на строку с размером диска и нажмите
i
(для перехода в режим редактирования). Укажите новый размер виртуального диска. НажмитеESC
, чтобы выйти из режима редактирования и:wq
-> Enter чтобы сохранить изменения; - Осталось смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска;
Затем перейдите в раздел Storage, найдите VMFS/NFS хранилище, где находится ВМ -> Datastore Browser, найдите каталог ВМ, щёлкните по VMX файлу и выберите Register .
Либо можно сделать копию диска с помощью команды
vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk
Затем удалите оригинальный vmdk диск и еще раз склонируйте оставшийся vmdk диск, вернув ему прежнее имя:
rm test_vm_3.vmdk
rm test_vm_3-flat.vmdk
vmkfstools -i test_vm_3_newsize.vmdk test_vm_3.vmdk
Убедитесь, что в свойствах ВМ теперь отображается новый размер виртуального диска;
Запустите гостевую ОС и проверьте, что неразмеченная область диска пропала, а размер диска уменьшился.
Уменьшаем размера виртуального диска с помощью VMware vCenter Converter Standalone
Для уменьшения размера виртуальных дисков ВМ на VMWare можно воспользоваться бесплатным графическим конвертором VMware vCenter Converter Standalone . Эта утилита позволяет скопировать ВМ и при указать размер нового диска меньше, чем исходный (на гостевой файловой системе должно быть свободное место).
Недостаток:
- Конвертация V2V выполняется медленно;
- На датасторе должно быть достаточно места для размещения новой ВМ;
- У новой ВМ будет новый MAC адрес.
Плюсы:
- Простой графический интерфейс
- Создается точная копия VM;
- Исходная ВМ не поломается при некорректных действиях.
Запустите VMware Converter и укажите адрес ESXi хоста.
Выберите исходную ВМ.
Укажите параметры новой ВМ.
Перейдите в режим редактирования диска (Data to copy -> Edit).
Выберите режим копирования: Select volumes to copy.
Укажите новый размер диска в новой ВМ. В нашем примере на виртуальном диске занято 48 Гб, а размер самого диска — 150 Гб. Мы уменьшим размер виртуального диска до 60 Гб.
Запустите процесс конвертирования ВМ. После окончания отключите исходную ВМ и включите новую. Проверьте, что размер диска уменьшился. После этого исходную ВМ можно удалить.