Сжатие диска не работает на гостях ESXi

Эхло всем! Мой первый пост в сети StackOverflow:)

Мы используем некоторую инфраструктуру ESXi 5.0/vCenter для размещения в основном гостевых систем Debian 6/amd64 с разделами ext3 и open-vm-tools скомпилировано из исходного кода для ошибки Debian 471784.

Есть проблема, которая поднимается по всему Интернету, но без какого-либо окончательного ответа.

При попытке сжать диск с тонким предоставлением в независимом постоянном режиме, без моментальных снимков, родителей, клонов, я постоянно получаю следующую ошибку:

root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.

Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.

(Кстати, каковы "другие факторы", и какая из тонны технических документов и технических руководств является руководством пользователя?:)

Я знаю, что могу заполнить разделы нулями (на самом деле, я использую shred -fuzn0 при удалении больших файлов), затем выключите гостя и используйте различные методы, такие как vmkfstoolsклонирование или vMotioning дисков в режиме тонкого предоставления и т. д., но все они либо несут штраф за время простоя уклоняемого гостя, либо приводят к неоправданному перемещению данных между хранилищами данных и / или хостами.


И ответ: нет сокращения в ESX/ESXi (начиная с версии 5).

Документация гласит:

ВАЖНО! Сокращение дисков не допускается при следующих обстоятельствах:

  1. Виртуальная машина размещается на сервере ESX / ESXi. ESX / ESXi Server может уменьшить размер виртуального диска только при экспорте виртуальной машины. Однако пространство, занимаемое виртуальным диском на сервере ESX / ESXi, не изменяется.

  2. Виртуальная машина имеет гостевую операционную систему Mac.

  3. Вы предварительно распределили все пространство на виртуальном диске при его создании.

  4. Виртуальная машина содержит снимок.

  5. Виртуальная машина является связанным клоном или родителем связанного клона.

  6. Виртуальный диск - это независимый диск в нестабильном режиме.

  7. Файловая система - это файловая система журналирования, такая как файловая система ext4, xfs или jfs.

Неудивительно, что есть возможность сжать VMWare Workstation, но не в клиенте vSphere, подключенном к экземпляру ESXi или vCenter.

4 ответа

Решение

http://www.vmware.com/pdf/vmware-tools-cli.pdf Страница 13:

Усадка дисков не допускается при следующих обстоятельствах:

Виртуальная машина размещается на сервере ESX / ESXi. ESX / ESXi Server может уменьшить размер виртуального диска только при экспорте виртуальной машины. Однако пространство, занимаемое виртуальным диском на сервере ESX / ESXi, не изменяется.

На самом деле, есть способ уменьшить виртуальную машину на ESXi, хотя для этого вам нужно выключить виртуальную машину. Вот как:

  1. Обнулить все неиспользуемое пространство внутри ВМ:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. Сделайте то же самое с другими точками монтирования, разделами перестановки и т. Д.

  3. Выключите ВМ.

  4. SSH к ESXi и выполните эту команду:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

Это займет некоторое время... vmkfstools "пробивает дыры" внутри вашего VMDK, например, освобождает все блоки, заполненные нулями, эффективно сокращая ваш VMDK.

Единственный способ уменьшить размер VMDK в vSphere ESXi - это экспортировать или перенести /Storage vMotion в другое хранилище данных. Я делаю это часто с живыми серверами, которые могут обрабатывать миграцию (не SQL или Exchange). Предыдущий администратор сервера создавал все виртуальные машины с дисками Thick Provisioned. Я перемещаю виртуальные машины из одного хранилища данных в другое и изменяю VMDK на тонко предоставленные.

Вы также можете сделать vmkfstools, если сервер находится в автономном режиме.

Сжатие дисков возможно на ESXi.

  1. Найдите большой файл и удалите их.

    find / -type f -size +50M

  2. Дефрагментация (не нужно ничего размонтировать / перемонтировать). Игнорировать любые ошибки. Некоторые файлы, такие как символические ссылки и файлы устройств, не могут быть дефрагментированы.

    sudo e4defrag /

  3. Обнулите все неиспользуемое пространство, чтобы VMware знала, что оно действительно не используется:

    dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

  4. Запустите операцию сжатия: если 4 не удается, перейдите к 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Перезагрузите систему Linux с опцией try и отредактируйте таблицу разделов с помощью gparted. Сократите корневую файловую систему и удалите и переместите раздел подкачки рядом с корневым разделом.

  6. SSH к ESXi и выполните эту команду:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

  7. Нам нужно отредактировать файл *.vmdk. После букв RW, определяет размер виртуального диска VMware (VMDK)

    * 40 ГБ = 40 * 1024 * 1024 * 1024 / 512 = 83886080*

  8. Перенесите его в другое хранилище данных, чтобы отразить новый размер.

Другие вопросы по тегам