Эхло всем! Мой первый пост в сети 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).
Документация гласит:
ВАЖНО! Сокращение дисков не допускается при следующих обстоятельствах:
Виртуальная машина размещается на сервере ESX / ESXi. ESX / ESXi Server может уменьшить размер виртуального диска только при экспорте виртуальной машины. Однако пространство, занимаемое виртуальным диском на сервере ESX / ESXi, не изменяется.
Виртуальная машина имеет гостевую операционную систему Mac .
Вы предварительно распределили все пространство на виртуальном диске при его создании.
Виртуальная машина содержит снимок .
Виртуальная машина является связанным клоном или родителем связанного клона.
Виртуальный диск - это независимый диск в нестабильном режиме.
Файловая система - это файловая система журналирования , такая как файловая система ext4, xfs или jfs .
Неудивительно, что есть возможность сжать VMWare Workstation, но не в клиенте vSphere, подключенном к экземпляру ESXi или vCenter.
Ответы:
http://www.vmware.com/pdf/vmware-tools-cli.pdf Страница 13:
Усадка дисков не допускается при следующих обстоятельствах:
Виртуальная машина размещается на сервере ESX / ESXi. ESX / ESXi Server может уменьшить размер виртуального диска только при экспорте виртуальной машины. Однако пространство, занимаемое виртуальным диском на сервере ESX / ESXi, не изменяется.
источник
На самом деле, есть способ уменьшить виртуальную машину на ESXi, хотя для этого вам нужно выключить виртуальную машину. Вот как:
Обнулить все неиспользуемое пространство внутри ВМ:
dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero
Сделайте то же самое с другими точками монтирования, разделами перестановки и т. Д.
Выключите ВМ.
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.
Найдите большой файл и удалите их.
find / -type f -size +50M
Дефрагментация (не нужно ничего размонтировать / перемонтировать). Игнорировать любые ошибки. Некоторые файлы, такие как символические ссылки и файлы устройств, не могут быть дефрагментированы.
sudo e4defrag /
Обнулите все неиспользуемое пространство, чтобы VMware знала, что оно действительно не используется:
dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile
Запустите операцию сжатия: если 4 не удается, перейдите к 5.
sudo vmware-toolbox-cmd disk shrinkonly
Перезагрузите систему Linux с опцией try и отредактируйте таблицу разделов с помощью gparted. Сократите корневую файловую систему и удалите и переместите раздел подкачки рядом с корневым разделом.
SSH к ESXi и выполните эту команду:
vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk
Нам нужно отредактировать файл * .vmdk. После букв RW, определяет размер виртуального диска VMware (VMDK)
* 40 ГБ = 40 * 1024 * 1024 * 1024/512 = 83886080 *
Перенесите его в другое хранилище данных, чтобы отразить новый размер.
источник