Уменьшение размера виртуального диска в VMware ESXi

В этой статье мы рассмотрим, как уменьшить размер диска (vmdk) виртуальной машины в VMware ESXi. Уменьшить размер виртуального диска VMware из графического веб-интерфейса vSphere Client нельзя (можно только увеличить диск ВМ VMware ). При попытке указать меньший размер диска ВМ, появляется ошибка: Enter a disk size which is larger than its original capacity .

Важно. Данная инструкция не является официально поддерживаемым решением по сжатию виртуальных vmdk дисков в ESXi. Однако я применял этот способ уже не один десяток раз.

нельзя уменьшить размер виртуального vmdk диска в vmware esxi из графического интерфейса клиента vsphere

Перед тем, как уменьшить размера виртуального диска на хосте VMWare ESXi необходимо:

  • Удалить все снапшоты виртуальной машины;
  • Создать полную резервную копию виртуальной машины, или предварительно сделайте копию vmdk и flat файла виртуального диска, который вы хотите уменьшить. Выполните следующие команды в конолси ESXi:
    cp vmname.vmdk backup_vmname.vmdk
    cp vmname-flat.vmdk backup_vmname-flat.vmdk
    создать копию виртуального vmdk диска

Процедура уменьшения размера виртуального диска состоит из двух этапов:

  • Уменьшение раздела внутри гостевой ОС;
  • Уменьшение размера VMDK файла виртуальной машины VMware на VMFS (NFS) хранилище.

Уменьшение размера раздела виртуального диска в гостевой ОС

Сначала нужно уменьшить размер раздела диска внутри гостевой ОС.

Если в ВМ установлена гостевая Windows:

  1. Откройте консоль управления дисками ( diskmgmt.msc )
  2. В нашем случае справа от раздела, который мы хотим уменьшить, находится раздел восстановления среды WinRE ( Recovery Partition ). Для корректного выполнения процедуры уменьшения виртуального диска справа от раздела, который вы хотите уменьшить не должно быть других разделов. Вам нужно или перенести образ восстановления winre.wim с отдельного раздела на системный, или переместить раздел recovery в начала диска (оба варианта подробно описаны в статье Не могу расширить диск в Windows из-за раздела восстановления ). Уменьшить раздел в гостевой Windows
  3. Теперь вы можете уменьшить размер основного раздела (в современных версиях Windows вы можете уменьшить размер диска без перезагрузки, в старых версиях придется использовать утилиту sdelete ). Щелкните по разделу и выберите Shrink Volume . уменьшить раздел (shrink volume) в windows
  4. Допустим, вы хотите уменьшить размер диска ВМ на 40 Гб. Укажите значение 40960 Мб (40 Гб x 1024) в поле Enter the amount of space to shrink in MB и нажмите Shrink ; новый раздел диска в гостевой виртуальной машине с windows
  5. После завершения операции уменьшения размера раздела, справа от вашего основного раздела останется 40 Гб неразмеченного ( Unallocated ) пространства. свободная (unallocated) область на диске в windows

Для Linux ВМ, если вам нужно уменьшить размер корневого раздела, нужно загрузиться ВМ с LiveCD GParted (GNOME Partition Editor). Уменьшите размеры разделов из графического интерфейса GParted через меню Resize/Move. Если нужно, переместите разделы. Чтобы применить изменения, выберите Edit -> Apply all operations. Утилита изменит размеры разделов и уменьшит файловую систему через Rezise2fs.

gparted - уменьшить размер раздела в виртуалной машине linux

Загрузите гостевую ВМ с Linux и проверьте, что все работает корректно.

Непосредсвенно из гостевой Linux вы можете уменьшить размеры отмонтированных раздела с помощью parted . Если используются LVM тома , то сценарий другой.

Уменьшить размер VMDK файла виртуальной машины VMware

Теперь нужно уменьшить размера VMDK файла на файловой системе VMware VMFS.

  1. Выключите ВМ;
  2. Подключитесь по SSH к консоли гипервизора ESXi , на котором зарегистрирована ВМ (можно воспользоваться putty или встроенным ssh клиентом Windows );
  3. Перейдите в каталог, в котором хранится vmdk файл ВМ (путь к виртуальному диску узнать в свойствах виртуального диска в веб интерфейсе клиента vSphere):
    cd /vmfs/volumes/datastore/test-VM файлы виртуальной в каталоге volumes на esxi
  4. Выведите содержимое конфигурационного файла виртуального с помощью команды cat:
    # cat test_vm_3.vmdk
    Размер vmdk диска задается в секции # Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512) размер виртуального диска в конфигурационном файле vmdk
  5. Я хочу уменьшить виртуального vmdk диска на 40 Гб. Это значит, что в секции Extent description нужно указать значение: 83886080 . Это значение получилось следующим образом: 167772160 (текущий размер диска) - 83886080 (40 Гб*1024*1024*1024 / 512)
  6. Отредактируйте конфигурационный файл диска с помощью vi # vi  test_vm_3.vmdk
  7. В редакторе vi с помощью стрелки вниз перейдите на строку с размером диска и нажмите i (для перехода в режим редактирования). Укажите новый размер виртуального диска. Нажмите ESC , чтобы выйти из режима редактирования и :wq -> Enter чтобы сохранить изменения; уменьшить размер виртуального диска vmdk в vmware esxi
  8. Осталось смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска;
Совет . Если у вас всего один ESXi хост, чтобы обновить размер диска в клиенте vSphere, проще всего просто перерегистрировать виртуальную машину. Щелкните по ВМ и выберите Unregister .

vmware unregister виртуальной машины

Затем перейдите в раздел Storage, найдите VMFS/NFS хранилище, где находится ВМ -> Datastore Browser, найдите каталог ВМ, щёлкните по VMX файлу и выберите Register .

Зарегистрировать виртуальную машину по vmx файлу

Либо можно сделать копию диска с помощью команды

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 esxi уменьшился

Запустите гостевую ОС и проверьте, что неразмеченная область диска пропала, а размер диска уменьшился.

размер диска в виртуальной машине windows уменьшился

Уменьшаем размера виртуального диска с помощью VMware vCenter Converter Standalone

Для уменьшения размера виртуальных дисков ВМ на VMWare можно воспользоваться бесплатным графическим конвертором VMware vCenter Converter Standalone . Эта утилита позволяет скопировать ВМ и при указать размер нового диска меньше, чем исходный (на гостевой файловой системе должно быть свободное место).

Недостаток:

  • Конвертация V2V выполняется медленно;
  • На датасторе должно быть достаточно места для размещения новой ВМ;
  • У новой ВМ будет новый MAC адрес.

Плюсы:

  • Простой графический интерфейс
  • Создается точная копия VM;
  • Исходная ВМ не поломается при некорректных действиях.
Примечание . Исходная ВМ, которую вы хотите сконвертировать (изменить размеры дисков и т.д.), должна быть выключена .

Запустите VMware Converter и укажите адрес ESXi хоста.

vm-converter-1

Выберите исходную ВМ.

vm-converter-2

Укажите параметры новой ВМ.

vm-converter-3

Перейдите в режим редактирования диска (Data to copy -> Edit).

vm-converter-4

Выберите режим копирования: Select volumes to copy.

vm-converter-5

Укажите новый размер диска в новой ВМ. В нашем примере на виртуальном диске занято 48 Гб, а размер самого диска — 150 Гб. Мы уменьшим размер виртуального диска до 60 Гб.
vm-converter-6 vm-converter-7 vm-converter87

Запустите процесс конвертирования ВМ. После окончания отключите исходную ВМ и включите новую. Проверьте, что размер диска уменьшился. После этого исходную ВМ можно удалить.

EnglishRussianUkrainian