VMware, Linux: уменьшение размера диска с логическими томами
Нет ничего более постоянного, чем временное. Когда я делал тестовую машинку, чтобы настроить на ней почтовый обменник, в дальнейших планах было установить чистую Linux (RHEL) на виртуалку и перенести на нее готовую конфигурацию. Однако после того, как мы с помощью VMware Converter успешно сконвертировали в виртуалку машину с сайтом (по сути, потом пришлось только восстановить загрузчик), мы решили продолжить эту практику и поступили так же с почтовым обменником.
Проблема была в том, что в свое время меня не волновало, какого размера будет дисковый раздел на тестовой машине, и он занимал предложенные по умолчанию 80 Гб. Разумеется, столько же получилось и на виртуальном диске. Перед запуском в промышленную эксплуатацию надо было его уменьшить.
С уменьшением обычно бывает сложнее, чем с увеличением. Итак, мы имеем большой диск (файл .vmdk), на котором находится группа LVM-разделов VolGroup00 . Том, который нужно уменьшить — LogVol00 . Для него 20 Гб кажется разумным размером. Прежде всего добавляем виртуальной машине второй диск (я сделал 22 Гб с учетом места под swap с запасом). Исходный диск мы позднее отключим и удалим, а сейчас неплохо было бы сделать его резервную копию на случай, если что-то пойдет не так.
Дальше нужно с чего-нибудь загрузиться — например, с установочного диска Linux (при загрузке набрать linux rescue ). При этом следует отказаться от монтирования файловой системы.
Получив командную строку, смотрим, что у нас есть:
Активируем группу томов; без этого ничего не сделать с файловой системой:
lvm vgchange —available y VolGroup00
Проверяем, что получилось (искомое состояние — ACTIVE):
Проверяем раздел на наличие ошибок и исправляем их, если таковые имеются:
e2fsck -f /dev/VolGroup00/LogVol00
Изменяем размер файловой системы:
resize2fs /dev/VolGroup00/LogVol00 20G
e2fsck -f /dev/VolGroup00/LogVol00
Теперь можно уменьшить размер тома:
lvm lvreduce -L 20G /dev/VolGroup00/LogVol00
Не забываем, что у нас есть еще LogVol01 , где находится swap, а расположен он в конце диска. Поэтому придется его удалить и снова создать. Посмотрим, какой у него размер:
Допустим, у нас 512 Мб. Тогда делаем так:
lvm lvremove /dev/VolGroup00/LogVol01
lvm lvcreate —size 512M —name LogVol01 VolGroup00
mkswap /dev/VolGroup00/LogVol01
Далее уменьшаем физический том:
lvm pvresize /dev/sda2 —setphysicalvolumesize 22G
И немного поработаем с fdisk. Предположим, наши разделы находятся на /dev/hda .
Вводим команду p:
Disk /dev/hda: 23.6 GB, 23622320128 bytes
255 heads, 63 sectors/track, 2871 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 2871 22956885 8e Linux LVM
Мы видим, что на диске 2871 цилиндр, но в последней строчке вместо 2871 будет другое, большее число. Чтобы исправить это, удалим раздел 2 и создадим его снова: вводим команду d, затем 2. Создаем новый: n, p — основной, 2 — номер, дальше можно два раза нажать Enter, чтобы принять значения по умолчанию: 14 — начало, 2871 (максимальный номер цилиндра, у вас может быть другое число). Устанавливаем тип раздела LVM: t, 2, 8e. Еще раз посмотрим командой p, все ли в порядке. Если да, записываем изменения — w и выходим — q.
Теперь нужно перезагрузиться. Не помешает еще раз проверить том:
lvm vgchange —available y VolGroup00
e2fsck -f /dev/VolGroup00/LogVol00
Осталось все скопировать со старого диска на новый. Если новый диск — /dev/hdc , команда будет выглядеть так:
Это длительная операция, прогресс здесь не отображается и нужно потерпеть. Ошибка в конце, связанная с нехваткой места — нормальное явление.
После выключения машины можно удалить в клиенте VMware старый диск, оставив на его месте новый.
Уменьшение размера виртуального диска на ESXi
13.04.2022
itpro
VMware
комментарий 31
В этой статье мы рассмотрим, как уменьшить размер виртуального диска (vmdk) в VMWare ESXi. В отличии от процедуры расширения диска виртуальной машины VMWare, которую можно выполнить на-лету без выключения ВМ, процедура уменьшения размера vmdk файла на гипервизоре VMWare ESXi задача более сложная, и выполнить ее непосредственно через графический интерфейс vSphere Client в принципе нельзя. Клиент vSphere не позволяет вам указать меньший размер виртуального диска.
Важно. Данная инструкция не является официально поддерживаемым решением по сжатию vmdk дисков в VMWare. Однако я применял этот способ уже не один десяток раз. При написании этой статьи использовалась версия VMWare ESXi 6.7.
Перед тем, как уменьшить размера виртуального диска на хосте VMWare ESXi необходимо:
- Удалить все снапшоты виртуальной машины (иначе вы можете повредить виртуальный диск)
- Создать полную резервную копию виртуальной машины, или предварительно сделайте копию vmdk и flat файла, который вы хотите уменьшить. Воспользуйтесь командами:
cp vmname.vmdk backup_vmname.vmdk
cp vmname-flat.vmdk backup_vmname-flat.vmdk
Процедура уменьшения размера виртуального диска состоит из двух этапов:
- Уменьшение раздела внутри гостевой ОС;
- Уменьшение размера VMDK файла виртуальной машины VMware на VMFS (NFS) хранилище.
Уменьшение раздела внутри гостевой ОС
В первую очередь необходимо уменьшить размер дискового раздела внутри гостевой операционной системы. Если у вас в ВМ запущена Windows, воспользуйтесь диспетчером управления дисков diskmgmt.msc (операция Shrink Volume доступна во всех поддерживаемых версиях Windows, для старых версий Windows для уменьшения размера раздела используется утилита sdelete) или используйте сторонние утилиты (например, Acronis Disk Director). Если этого не сделать, то после уменьшения размера виртуального диска можно получить неработоспособную файловую систему.
Допустим, вы хотите хотим уменьшить размер диска на 40 Гб. Значит размер тома должен быть уменьшен на 40960 Мб (40 Гб x 1024). Именно это значение нужно ввести в поле мастера Shrink Volume. После уменьшения размера раздела на диске справа от вашего основного раздела останется некоторое количество неразмеченного (Unallocated) пространства (в нашем примере 40 Гб).
Обратите внимание, что OEM раздел или раздел восстановления в Windows иногда может мешать увеличению или уменьшению размера диск.
В Linux вы можете уменьшить размер раздела с помощью parted. Если используются LVM тома, то сценарий другой.
Уменьшение размера VMDK файла виртуальной машины VMware
Теперь нужно уменьшить размера VMDK файла на файловой системе VMWare VMFS.
- Выключите виртуальную машину, размер виртуального диска которой вы хотите уменьшить;
- Подключитесь по SSH к консоли гипервизора ESXi, на котором зарегистрирована ВМ (можно воспользоваться putty или встроенным ssh клиентом Windows);
- Перейдите в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere)
cd /vmfs/volumes/datastore/test-VM - Выведите содержимое конфигурационного файла виртуального диска (с расширением *.vmdk) с помощью команды cat:
# cat test_vm_3.vmdk
Размер vmdk диска задается в секции #Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512)
Совет. Если у вас всего один ESXi хост, одно VMFS хранилище или нет vCenter, то вы не сможете сделать операцию Storage vMotion. В таком случае можно склонировать vmdk диск командой:
vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk
Удалите оригинальный vmdk диск и еще раз склонируйте оставшийся vmdk диск, вернув ему прежнее имя:
rm test_vm_3.vmdk
rm test_vm_3-flat.vmdk
vmkfstools -i test_vm_3_newsize.vmdk test_vm_3.vmdk
Убедитесь, что в свойствах ВМ теперь отображается новый размер виртуального диска;
Осталось запустить гостевую ОС и убедиться, что неразмеченная область пропала, а размер диска уменьшился.
Совет. Если на предыдущем шаге использовалась утилита vmkfstools, нужно переподключить виртуальный диск в настройках ВМ, т.к. его новый размер может отображаться некорректно.
Итак, мы рассмотрели один из вариантов выполнения операции уменьшения размера виртуального vmdk диска в VMWare ESXi. Если требует уменьшить размер тонкого диска VMWare за счет неиспользуемого места, рекомендуем воспользоваться этой инструкцией.
Примечание. В качестве распространенных альтернативных методик сжатия виртуальных vmdk дисков часто используются такие схемы:
- Уменьшение размера виртуального диска путем конвертации виртуальной машины с помощью VMware vCenter Converter. При конвертации нужно указать размер нового диска меньше, чем исходный (об этом в следующем разделе);
- Можно склонировать содержимого виртуального диска с помощью стороннего софта (например, Acronis True Image или Symantec Ghost32). Операция выполняется путем добавления в виртуальную машину нового диска меньшего размера и клонирования на него содержимого большего диска. После этого большой диск можно удалить.
Уменьшение размера виртуального диска с помощью VMware vCenter Converter Standalone
Еще один способ уменьшения размера виртуальных дисков у ВМ на VMWare с помочью GUI — воспользоваться бесплатным конвертером — VMware vCenter Converter Standalone.
- Конвертация V2V выполняется медленно;
- На датасторе должно быть достаточно места для разрешения новой ВМ;
- У новой ВМ будет новый MAC адрес.
- не требуется открывать в консоль vCenter или ESXi хоста;
- создается точная копия VM;
- источник не поломается при ошибке в настройках параметров задачи конвертирования.
Примечание. Виртуальная машина, которую вы хотите сконвертировать (изменять размеры дисков и т.д.), должна быть выключена (с помощью Shut down или Power Off, но не Suspend).
Укажите параметры новой ВМ.
Перейдите в режим редактирования диска (Data to copy -> Edit).
Выберите режим копирования: Select volumes to copy.
Укажите новый размер диска в новой ВМ. Как вы видите, на диске в гостевой занято 48 гб, а размер самого диска – 150. Мы уменьшим размер виртуального диска до 60 Гб.
Запустите процесс конвертирования ВМ. После окончания отключите исходную ВМ и включите новую. Проверьте, что размер диска уменьшился. После этого исходную ВМ можно удалить.
Примечание. Отметим, что в последней версии гипервизора Microsoft есть технология динамического изменения (как расширения, так и сжатия) виртуальных дисков под названием Hyper –V Online VHDX Resize.
Предыдущая статья Следующая статья