Облачное хранилище

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

Содержание:
  • Уменьшение раздела внутри гостевой ОС
  • Уменьшение размера VMDK файла виртуальной машины VMware
  • Уменьшение размера виртуального диска с помощью VMware vCenter Converter Standalone

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

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

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

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

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

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

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

В первую очередь необходимо уменьшить размер дискового раздела внутри гостевой операционной системы. Если у вас в ВМ запущена Windows, воспользуйтесь диспетчером управления дисков diskmgmt.msc (операция Shrink Volume доступна во всех поддерживаемых версиях Windows, для старых версий Windows для уменьшения размера раздела используется утилита sdelete) или используйте сторонние утилиты (например, Acronis Disk Director). Если этого не сделать, то после уменьшения размера виртуального диска можно получить неработоспособную файловую систему.

уменьшить раздел (shrink volume) в windows

Допустим, вы хотите хотим уменьшить размер диска на 40 Гб. Значит размер тома должен быть уменьшен на 40960 Мб (40 Гб x 1024). Именно это значение нужно ввести в поле мастера Shrink Volume. После уменьшения размера раздела на диске справа от вашего основного раздела останется некоторое количество неразмеченного (Unallocated) пространства (в нашем примере 40 Гб).

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

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

свободная (unallocated) область на диске в windows

В 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. Выведите содержимое конфигурационного файла виртуального диска (с расширением *.vmdk) с помощью команды cat:
      # cat test_vm_3.vmdk
      Размер vmdk диска задается в секции #Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512)размер виртуального диска в конфигурационном файле vmdk
    5. Я хочу уменьшить виртуального vmdk диска с 80 до 40 Гб. Это значит, что в секции Extent description нужно указать значение: 83886080 (40 Гб*1024*1024*1024 / 512). Задайте новый размер виртуального диска с помощью текстового редактора ( vi или nano )
    6. Я использую редактор vi: # vi  test_vm_3.vmdk
    7. В редакторе vi с помощью стрелки вниз перейдите на строку с размером диска и нажмите i (для перехода в режим редактирования). Укажите новый размер виртуального диска. Нажмите ESC , чтобы выйти из режима редактирования и :wq -> Enter чтобы сохранить изменения;уменьшить размер виртуального диска vmdk в vmware esxi
    8. Осталось склонировать или смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска;
      Совет. Если у вас всего один ESXi хост, одно VMFS хранилище или нет vCenter, то вы не сможете сделать операцию Storage vMotion. В таком случае можно склонировать vmdk диск командой:
      vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk
      vmkfstools клонировать диск
      Удалите оригинальный 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 уменьшился

    9. Осталось запустить гостевую ОС и убедиться, что неразмеченная область пропала, а размер диска уменьшился.размер диска в виртуальной машине windows уменьшился
      Совет. Если на предыдущем шаге использовалась утилита vmkfstools, нужно переподключить виртуальный диск в настройках ВМ, т.к. его новый размер может отображаться некорректно.

 

Итак, мы рассмотрели один из вариантов выполнения операции уменьшения размера виртуального vmdk диска в VMWare ESXi. Если требует уменьшить размер тонкого диска VMWare за счет неиспользуемого места, рекомендуем воспользоваться этой инструкцией.

Примечание. В качестве распространенных альтернативных методик сжатия виртуальных vmdk дисков часто используются такие схемы:

  • Уменьшение размера виртуального диска путем конвертации виртуальной машины с помощью VMware vCenter Converter. При конвертации нужно указать размер нового диска меньше, чем исходный (об этом в следующем разделе);
  • Можно склонировать содержимого виртуального диска с помощью стороннего софта (например, Acronis True Image или Symantec Ghost32). Операция выполняется путем добавления в виртуальную машину нового диска меньшего размера и клонирования на него содержимого большего диска. После этого большой диск можно удалить.

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

Еще один способ уменьшения размера виртуальных дисков у ВМ на VMWare с помочью GUI — воспользоваться бесплатным конвертером — VMware vCenter Converter Standalone.

Недостаток:

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

Плюсы:

  • не требуется открывать в консоль vCenter или ESXi хоста;
  • создается точная копия VM;
  • источник не поломается при ошибке в настройках параметров задачи конвертирования.

Примечание. Виртуальная машина, которую вы хотите сконвертировать (изменять размеры дисков и т.д.), должна быть выключена (с помощью Shut down или Power Off, но не Suspend).

Укажите адрес 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-6vm-converter-7vm-converter87

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

Примечание. Отметим, что в последней версии гипервизора Microsoft есть технология динамического изменения (как расширения, так и сжатия) виртуальных дисков под названием Hyper –V Online VHDX Resize.