Более 1870 заметок о виртуализации и виртуальных машинах VMware, Microsoft, Citrix, Red Hat
VM Guru / Articles / Как уменьшить тонкие (thin) диски виртуальных машин VMware ESXi 5, когда они разрослись.
Как уменьшить тонкие (thin) диски виртуальных машин VMware ESXi 5, когда они разрослись.
Как уменьшить тонкие (thin) диски виртуальных машин VMware ESXi 5, когда они разрослись.
Автор: Александр Самойленко Дата: 05/12/2011
Реклама:
Статья:
Возвращаемся к проблеме тонких (thin) дисков VMware ESXi и уменьшения их размера после того, как они разрослись. Суть проблемы: когда вы используете тонкие диски для виртуальных машин - они постоянно растут, даже если вы удаляете в гостевой ОС. Это происходит потому, что ОС Windows (да и Linux) при удалении файлов не заполняет их блоки нулями, а просто помечает их удаленными в метаданных тома.
Для целей обнуления блоков файловой системы можно использовать утилиту sdelete. Вот так, например, можно заполнить нулями все свободное место на диске C: в ОС Windows.
sdelete -z C
Для Linux есть вот такой способ. Делается с помощью dd:
Затем можно сделать Storage vMotion виртуальной машины на другое хранилище, после чего нулевые блоки должны удалиться и vmdk-диск машины должен уменьшиться. Но так происходит не всегда - см. нашу статью "Блоки томов VMFS и поведение виртуальных машин VMware vSphere при Storage vMotion". Такое работает только когда используются хранилища с разными размерами блоков и для горячей миграции хранилищ Storage vMotion используется старый Data Mover (fsdm).
Проблема в том, что новый Data Mover (fs3dm) так и не был доработан в VMware ESXi 5, а, кроме того, теперь блоки VMFS 5 имеют одинаковый размер (1 МБ, если проведен апгрейд с VMFS 3 - размер блока сохраняется). Соответственно, для Storage vMotion между хранилищами VMFS 5 используется новый fs3dm, который по-прежнему не умеет вычищать нулевые блоки, а поэтому уменьшения дисков на ESXi 5 у вас никакого при их миграции не будет.
Решение простое - временно отключить fs3dm, после чего миграция Storage vMotion будет проводиться с помощью старого Data Mover - fsdm, который умеет чистить блоки в vmdk-файлах.
Отключется fs3dm из консоли ESXi 5 командой:
~ # vsish /> set /config/VMFS3/intOpts/EnableDataMovement 0
Проверяем, что fs3dm отключен:
/> get /config/VMFS3/intOpts/EnableDataMovement
Должно быть что-то вроде этого:
Vmkernel Config Option { Default value:1 Min value:0 Max value:1 Current value:0 hidden config option:1 Description:Whether VMFS should handle data movement requests by leveraging FS3DM } />
Current value:0 - это значит мы отключили fs3dm.
Теперь делаем миграцию Storage vMotion на другой Datastore - и размер vmdk-диска должен уменьшиться.
После этого возвращаем fs3dm на место командой:
/> set /config/VMFS3/intOpts/EnableDataMovement 1
Что делать если такое решение не очень подходит? Есть такие варианты:
Сделать VMFS-том версии 3 с отличным от 1 МБ размером блока. Дальше его можно обновить на VMFS 5, размер блока сохранится, и использовать этот том в качестве буферного.
Если у вас нет Storage vMotion, то можно использовтаь V2V-конвертацию виртуальной машины с помощью бесплатного VMware Converter - он умеет уменьшать vmdk-диски.
Ну а лучше тонкие диски при больших инсталляциях не использовать - они все растут, за ними не уследишь. Но это мое мнение.