Назад | Перейти на главную страницу

Сжатие диска не работает на гостевых компьютерах ESXi

EHLO всем! Мой первый пост в сети 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 может уменьшить размер виртуального диска только при экспорте виртуальной машины. Однако пространство, занимаемое виртуальным диском на сервере ESX / ESXi, не меняется.

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

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

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

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

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

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

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

На самом деле, есть способ уменьшить виртуальную машину на 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.

http://www.vmware.com/pdf/vmware-tools-cli.pdf Стр. 13:

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

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

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