Сжимаем тонкий (thin) диск в ESXi 5

Тонкие (thin) диски VMWare позволяют существенно сэкономить место на файловой системе VMFS хранилища при создании виртуальной машине. Такие vmdk диски при создании практически не занимают место на файловой системе и постепенно разрастаются до максимального размера по мере накопления информации. Однако основная проблема при использовании thin диски заключается в том, что они со временем разрастаются даже в том случае, если вы освободили место внутри гостевой операционной системы.

Примечание . При удалении данных в ОС Windows (и Linux это также касается) система не заполняет освоившееся место нулями, а просто помечает области как удаленные в метаданных раздела (их можно использовать для записи). Получается, что ESXi сервер не может самостоятельно определить какие из отданных ей блоков на самом деле свободны

Стандартного средства сжатия тонких дисков в ESXi нет, а сама система виртуализации ничего не знает об особенностях хранения данных внутри гостевой ОС.

В этой статье мы опишем простой способ сжатия тонкого vmdk диска в ESXi.

  1. На первом этапе необходимо помочь гипервизору, заполнив все свободное место на дисках внутри гостевой ОС нулями.Обнулить свободные блоки в Windows можно с помощью утилиты Марка Русиновича SDelete (на момент написания статьи последняя доступная версия SDelete v1.61, если вы используете более раннюю версии SDelete, имейте в виду, в ней могут использоваться немного другие параметры). Скачать SDelete можно тут: http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx.Распакуйте архив на диск, откройте командную строку (естественно, с правами администратора) и выполните следующую команду
    Sdelete –z c:

    В данном случае c: — это виртуальный тонкий vmdk диск, который мы планируем сжать.

    sdelete - очистка свободного места в windows

    В Linux эту операцию можно выполнить с помощь dd

    dd if=/dev/zero bs=64k of=zero.temp ; rm zero.temp
  2. Выключаем гостевую ОС (Shutdown).
    Примечание . Сжать диск можно и с помощью миграции виртуальной машины на другое хранилище (Storage VMotion). Однако отметим, что данный способ не является универсальным и работает только при соблюдении определенных условий.
  3. Подключаемся к ESXi серверу по SSH под root –ом (не забудьте включить службу SSH и разрешить входящий трафик на файерволе ESXi). Переходим в каталог c файлами виртуальной машины:
    cd vmfs/volumes/storage1/vm1

    где storage1 – имя хранилища, а vm1 – каталог, в котором хранятся файлы с vmdk дисками виртуальной машины

  4. Выведем «полный» размер виртуального диска.
    ls -lh *.vmdk

    Вывод списка vmdk дисков esxi

    “Реальный” размер виртуального диска, который он занимает на файловой системе можно узнать так:

    du –h *.vmdk

    Размер занимаемый vmdk диском esxi на файловой системе vmfs

    Как вы видите, thin диск занимает на хранилище 33 Гб (максимальный его размер 40 Гб). Причем внутри гостевой ОС Windows занято всего 15 Гб.

  5. Сжимаем vmdk диск с помощью vmkfstools. Команда сжатия диска thin будет выглядеть так:
    vmkfstools --punchzero /vmfs/volumes/storage1/vm1/vm1.vmdk

    Сжать thin диск Esxi 5

    Процедура сжатия в нашем примере заняла около 5 минут (скорость от размера диска и скорости и загруженности хранилища и сети SAN). После окончания процедуры сжатия проверим текущий размер vmdk файла.

    Размер тонкого диска vmware после сжатия

    Как вы видите vmdk диск сжался до 15 Гб!

Примечание . Если дисков несколько, данную процедуру необходимо выполнить для каждого.

К счастью расширить виртуальный диск гораздо проще

EnglishRussianUkrainian