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

11

Эхло всем! Мой первый пост в сети 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.

NekojiruSou
источник
2
Не могли бы вы показать значение ключа изоляции.tools.diskShrink.disable, который можно найти в файле vmx?
Чикураку
1
Там не было Добавление изоляции.tools.diskShrink.disable = "false" ничего не изменило.
NekojiruSou

Ответы:

3

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

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

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

Ли Ни
источник
Грустно, но верно ...
NekojiruSou
18

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

haimg
источник
6
Для Windows вы можете получить копию Virtual Server 2005 , извлечь из нее файл Precompact.iso , он содержит программу Procompact.exe, которая обнуляет весь неиспользуемый объем диска в Windows.
Крис С
vmkfstools не работает, когда виртуальная машина находится в хранилище NFS.
Свен
0

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

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

Джаррод Л.Дж. Гибсон
источник
-1

Усадка дисков возможна на 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. Перенесите его в другое хранилище данных, чтобы отразить новый размер.

Kondapaneni
источник