Очень часто бывает так, что дисковое пространство выделенное виртуальной машине VMware ESXi заканчивается и нужно его расширить. Имеется три типа виртуальных дисков:
- Thin Занимаемый размер диска при создании минимален и расширяется по мере надобности
- Thick Lazy Размер фиксирован, но данные не забиваются нулями, очистка происходит в момент обращения к новому блоку данных. Середнячок в плане производительности. Создание диска занимает много времени.
- Thick Eager Zeroed — Размер фиксирован, данные очищаются при создании диска. Наиболее оптимальный вариант с точки зрения производительности. Но создание такого диска довольно длительный процесс.
Итак, скажем у нас имеется виртуальная машина с Thick Eager Zeroed диском. Нужно расширить его скажем до 500 гигабайт. Далее есть несколько путей. Первый — это импортировать виртуальную машину через VMvare vCenter Converter Standalone. При импорте можно указать размеры разделов и тип диска. В интерфейсе все понятно и если нужно импортировать машину, то данный метод подойдет как нельзя лучше. Но он не совсем подходит если машина уже на сервере и копировать туда сюда террабайты инфы дело не быстрое. К тому же при импорте ВМ можно указать лишь тип диска (Thin or Thick) и на выходе мы получаем Thick Lazy Zeroed, что не совсем то, что нужно.
Второй способ более низкоуровневый и более информативный. Подключаемся к ESXi хосту через SSH (заранее включим его). И для начала посмотрим какой тип имеет исходный диск.
vmkfstools -t0 /vmfs/volumes/name_your_datastore/name_VM.vmdk
Если во всем выхлопе присутствует
VMFS -- LVID
значит наш диск это чистый Thick Eager Zeroed и остается только его переразметить.
vmkfstools -X 500G -d eagerzeroedthick /vmfs/volumes/name_your_data_store/name_VM.vmdk
После завершения процесса следует повторно запустить проверку, так как иногда бывает целевой диск превращается из Eager Zeroed в Lazy Zeroed. Проверим это:
vmkfstools -t0 /vmfs/volumes/name_your_datastore/name_VM.vmdk | grep 'VMFS Z'
Если выхлоп пуст, значит все выполнилось как надо. Если же местами появилось VMFS Z, то лучше сделать его полностью Eager Zeroed, так:
vmkfstools --eagerzero /vmfs/volumes/name_your_datastore/name_VM.vmdk
По желанию проверить еще раз. Все ваши данные имеющиеся на виртуальном диске останутся. Далее нужно загрузиться в виртуальную машину и чем нибудь похожим на Acronis Disk Director Server изменить размер логического диска в самой виртуальной машине. Если мы расширяем Eager Zeroed то операция пройдет мгновенно, так как никакие данные не нужно будет копировать.
Если исходный диск Thin, соответствие которому можно проверить той же командой (в выхлопе vmkfstools -t0 будет NOMP) то его можно конвертировать в Eager Zeroed так:
vmkfstools --inflatedisk /vmfs/volumes/name_your_datastore/name_VM.vmdk