Перейти к содержимому

Как уменьшить диск vmware

  • автор:

Уменьшение размера виртуального диска на ESXi

date

13.04.2022

user

itpro

directory

VMware

comments

комментарий 31

В этой статье мы рассмотрим, как уменьшить размер виртуального диска (vmdk) в VMWare ESXi. В отличии от процедуры расширения диска виртуальной машины VMWare, которую можно выполнить на-лету без выключения ВМ, процедура уменьшения размера vmdk файла на гипервизоре VMWare ESXi задача более сложная, и выполнить ее непосредственно через графический интерфейс vSphere Client в принципе нельзя. Клиент vSphere не позволяет вам указать меньший размер виртуального диска.

Важно. Данная инструкция не является официально поддерживаемым решением по сжатию vmdk дисков в VMWare. Однако я применял этот способ уже не один десяток раз. При написании этой статьи использовалась версия VMWare ESXi 6.7.

нельзя уменьшить размер виртуального vmdk диска в vmware esxi из графического интерфейса клиента vsphere

Перед тем, как уменьшить размера виртуального диска на хосте 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). Если этого не сделать, то после уменьшения размера виртуального диска можно получить неработоспособную файловую систему.

уменьшить раздел (shrink volume) в windows

Допустим, вы хотите хотим уменьшить размер диска на 40 Гб. Значит размер тома должен быть уменьшен на 40960 Мб (40 Гб x 1024). Именно это значение нужно ввести в поле мастера Shrink Volume. После уменьшения размера раздела на диске справа от вашего основного раздела останется некоторое количество неразмеченного (Unallocated) пространства (в нашем примере 40 Гб).

новый раздел диска в гостевой виртуальной машине с windows

Обратите внимание, что OEM раздел или раздел восстановления в Windows иногда может мешать увеличению или уменьшению размера диск.

свободная (unallocated) область на диске в windows

В Linux вы можете уменьшить размер раздела с помощью parted. Если используются LVM тома, то сценарий другой.

Уменьшение размера VMDK файла виртуальной машины VMware

Теперь нужно уменьшить размера VMDK файла на файловой системе VMWare VMFS.

файлы виртуальной в каталоге volumes на esxi

  1. Выключите виртуальную машину, размер виртуального диска которой вы хотите уменьшить;
  2. Подключитесь по SSH к консоли гипервизора ESXi, на котором зарегистрирована ВМ (можно воспользоваться putty или встроенным ssh клиентом Windows);
  3. Перейдите в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere)
    cd /vmfs/volumes/datastore/test-VM
  4. Выведите содержимое конфигурационного файла виртуального диска (с расширением *.vmdk) с помощью команды cat:
    # cat test_vm_3.vmdk

Размер vmdk диска задается в секции #Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512) размер виртуального диска в конфигурационном файле vmdk

  • Я хочу уменьшить виртуального vmdk диска с 80 до 40 Гб. Это значит, что в секции Extent description нужно указать значение: 83886080 (40 Гб*1024*1024*1024 / 512). Задайте новый размер виртуального диска с помощью текстового редактора ( vi или nano );
  • Я использую редактор vi: # vi test_vm_3.vmdk
  • В редакторе vi с помощью стрелки вниз перейдите на строку с размером диска и нажмите i (для перехода в режим редактирования). Укажите новый размер виртуального диска. Нажмите ESC , чтобы выйти из режима редактирования и :wq -> Enter чтобы сохранить изменения;уменьшить размер виртуального диска vmdk в vmware esxi
  • Осталось склонировать или смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска;

    vmkfstools клонировать диск

    Совет. Если у вас всего один 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

    Убедитесь, что в свойствах ВМ теперь отображается новый размер виртуального диска;размем виртуального диска в клиенте vmware esxi уменьшился
    Осталось запустить гостевую ОС и убедиться, что неразмеченная область пропала, а размер диска уменьшился.размер диска в виртуальной машине windows уменьшился

    Совет. Если на предыдущем шаге использовалась утилита 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).

    Укажите адрес ESXi хоста.

    vm-converter-1

    Выберите исходную ВМ.

    vm-converter-2

    Укажите параметры новой ВМ.

    vm-converter-3

    Перейдите в режим редактирования диска (Data to copy -> Edit).

    vm-converter-4

    Выберите режим копирования: Select volumes to copy.

    vm-converter-5

    Укажите новый размер диска в новой ВМ. Как вы видите, на диске в гостевой занято 48 гб, а размер самого диска – 150. Мы уменьшим размер виртуального диска до 60 Гб.

    vm-converter-6vm-converter-7vm-converter87

    Запустите процесс конвертирования ВМ. После окончания отключите исходную ВМ и включите новую. Проверьте, что размер диска уменьшился. После этого исходную ВМ можно удалить.

    Примечание. Отметим, что в последней версии гипервизора Microsoft есть технология динамического изменения (как расширения, так и сжатия) виртуальных дисков под названием Hyper –V Online VHDX Resize.

    Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

    Уменьшение размера тонкого диска в ESXi

    Когда я начал работать с ESXi, столкнулся с проблемой нехватки дискового пространства из-за сильно разросшихся тонких дисков. Вообще, лучше создавать диски меньшего размера, потому что увеличить диск в ESXi намного проще, чем уменьшить. Но что же делать, если все-таки возникла необходимость уменьшить диск? Причем, мое положение усугубляли LVM разделы на сервере, которые не распознавал Acronis, и, следовательно, не мог изменить размер раздела.
    Опишу способ, которым воспользовался я:

    1 этап) Уменьшение диска внутри виртуальной машины
    Сперва нужно уменьшить диск внутри самой виртуальной машины, для этого существует множество универсальных программ: Acronis disc director, paragon partition manager, встроенная утилита управления дисками в windows и т.д. Мне ни одна из этих программ не помогла, поэтому пришлось использовать средства линукса и LiveCD.

    1) Для начала нужно загрузиться с livecd linux, я использовал для этого centos 7. При загрузке виртуальной машины клавиша ESC для появления меню загрузки.

    2) Активируем LVM разделы

    vgchange -a y 

    3) Проверка активированных логических томов

    lvscan 

    4) Проверяем файловые системы

    fsck -fy /dev/test/root fsck -fy /dev/test/home 

    5) Уменьшаем размер файловой системы

    resize2fs /dev/test/home 20G 

    6) Уменьшаем размер тома до размера файловой системы

    lvreduce -L 20G /dev/test/home 

    Также мы можем добавить это место к другом тому
    Для этого:

    Увеличиваем том root:

    lvextend -L +10G /dev/test/root 

    Увеличиваем размер файловой системы на томе root до размера тома:

    resize2fs /dev/test/root 

    7) Опять проверяем целостность файловой системы

    fsck -fy /dev/test/root fsck -fy /dev/test/home 

    8) Далее можно запустить виртуальную машину и убедиться, что все корректно работает

    df -h 

    2 этап) уменьшение provisioning space.

    10) Выключаем виртуальную машину
    11) Подключаемся по SSH к физическому серверу, на котором установлен ESXi
    12) Переходим в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere). У меня это

    cd /vmfs/volumes/datastore1*/ cd VM_name/ 

    Каталог имеет подобную структуру:
    Структура каталога виртуальной машины

    /vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/MTS-SCPortal-TEST3 # ls -l
    total 19810320
    -rw-r—r— 1 root root 27 Dec 20 20:46 VM_name-0b1f4705.hlog
    -rw——- 1 root root 6442450944 Feb 2 08:24 VM_name-0b1f4705.vswp
    -rw——- 1 root root 147102629888 Feb 2 08:28 VM_name-flat.vmdk
    -rw——- 1 root root 8684 Feb 2 08:25 VM_name.nvram
    -rw——- 1 root root 507 Feb 2 08:25 VM_name.vmdk
    -rw-r—r— 1 root root 0 Dec 20 20:14 VM_name.vmsd
    -rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx
    -rw——- 1 root root 0 Feb 2 08:24 VM_name.vmx.lck
    -rw-r—r— 1 root root 273 Dec 20 20:14 VM_name.vmxf
    -rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx~
    -rw——- 1 root root 3424256 Feb 2 08:24 vmmcores-1.gz
    -rw-r—r— 1 root root 240722 Dec 20 20:46 vmware-1.log
    -rw-r—r— 1 root root 1252287 Feb 2 08:24 vmware-2.log
    -rw-r—r— 1 root root 43555 Feb 2 08:24 vmware-3.log
    -rw-r—r— 1 root root 151873 Feb 2 08:25 vmware.log
    -rw——- 1 root root 122683392 Feb 2 08:24 vmx-VM_name-186599173-1.vswp
    /vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/VM_name #

    13) Просмотрим содержимое конфигурационного файла с расширением *.vmdk с помощью команды cat или vi:

    cat VM_name.vmdk 

    Пример содержимого конфигурационного файла виртуальной машины

    # Disk DescriptorFile
    version=1
    encoding=«UTF-8»
    CID=829544ab
    parentCID=ffffffff
    isNativeSnapshot=«no»
    createType=«vmfs»

    # Extent description
    RW 44000000 VMFS «VM_name-flat.vmdk»

    # The Disk Data Base
    #DDB

    ddb.adapterType = «lsilogic»
    ddb.geometry.cylinders = «17884»
    ddb.geometry.heads = «255»
    ddb.geometry.sectors = «63»
    ddb.longContentID = «c78bccbfd4724f0ee20a1ef2829544ab»
    ddb.thinProvisioned = «0»
    ddb.uuid = «60 00 C2 98 20 ac 05 4a-e5 39 e4 40 e8 a2 d8 d0»
    ddb.virtualHWVersion = «8»

    14) Размер vmdk диска задается в секции #Extent description (после символов RW). Меняем это значение, например, чтобы установить размер диска в 20Гб ставим 41943040 (20 Гб*1024*1024*1024 / 512)

    vi VM_name.vmdk 

    Я ставлю значение немного больше, чем размер, вычисленный по методике выше (41943040 (20 Гб*1024*1024*1024 / 512)), на всякий случай.
    15) Осталось склонировать или смигрировать виртуальную машину, после чего отобразится новый размер диска.

    Физическое уменьшение тонкого диска без изменения provisioning
    Также возможно только уменьшить размер файла виртуальной машины, путем удаления нулевых блоков.
    Для этого:
    1) Нужно заполнить все неиспользованное пространство, внутри виртуальной машины, нулями. Создаем файл по размерам неиспользуемой области диска, а потом удаляем его.

    cat /dev/zero > /file cd / rm file 

    2) Подключаемся по SSH к консоли ESXi как описано выше и переходим в каталог с виртуальной машиной.
    3) В консоли гипервизора есть специальная утилита, которая позволяет затереть нулевые блоки, тем самым уменьшив физический размер тонкого диска.
    Делается это с помощью ключа -K (можно также использовать ключ —punchzero) в консоли сервера ESXi

    vmkfstools -K VM_name.vmdk 

    Надо отметить, что утилита vmkfstools, запущенная с ключом -K, еще и может преобразовать обычный диск (zeroedthick или eagerzeroedthick) в thin disk с вычищением нулевых блоков и, соответственно, уменьшением размера vmdk.

    P.S. Надеюсь данная статья будет кому-то полезной. Во всяком случае, я потратил много времени, прежде чем мне удалось корректно уменьшить размер тонкого диска.

    как сжать динамический диск vmware

    Работаю часто с виртуалками, например убунту сервер, провожу там всякие обработки данных. с утра машина весит 4гб, к вечеру уже 12гб Хотя в самой системе я все чищу удаляю, диск динамический задан, 30гб, но зараза постоянно растет) машину выключаю, в меню настроек, есть работа с диском — сжать — пишет готово, но ничего не меняется. должен же быть какая то утилита простая?

    Отслеживать
    задан 1 фев 2019 в 5:58
    Алекс Лизенберг Алекс Лизенберг
    908 1 1 золотой знак 7 7 серебряных знаков 19 19 бронзовых знаков

    2 ответа 2

    Сортировка: Сброс на вариант по умолчанию

    Нет, сжимать диски просто так нельзя. ВМ занимает столько место, сколько реально занимает (обычно). Можно использовать snapshots и откатиться, потеряв данные, но освободив место. Но есть способы уменьшить размер диска (но только динамических):

    1. можно уменьшить swap, можно использовать дефрагментацию для Windows систем.
    2. Сжатие виртуального диска с помощью VMware Tools
    3. также workstation имеет встроенные возможности clean up

    Касательно второго пункта. Можно использовать VMware Tools, чтобы стереть пустые сектора диска в конце диска. Запустите VMware Toolbox (или vmware-toolbox для linux систем), перейдите в Shrink вкладку, выберите диск, Prepare to Shrink и следуйте инстукциям.

    Blog of Khlebalin Dmitriy

    Как уменьшить размер виртуального диска (vmdk) виртуальной машины Vmware?

    Каким бы большим не было хранилище, место рано или поздно на нем заканчивается.

    Достаточно продолжительное время имею дело с «Варей» и выработал для себя вот такое правило: Создаем виртуальную машину минимального размера, далее всегда успеем расширить диски. Уменьшить диски потом будет значительно сложней.

    Но однажды наступает момент, когда сделать это приходится.

    И сделать это можно несколькими способами:

    1) Выполнить Shrink или Compact. Для VMware ESXi можно сделать Shrink через интерфейс Vmware Tools установленных на ВМ. Или через интерфейс средств администрирования vSphere. Для VMware Workstation можно сделать Compact в свойствах ВМ в свойствах диска.

    Может не сработать.

    2) Уменьшить размер диска через его клонирование:

    — добавить еще один диск нужного размера (меньшего) на ВМ для которой хотим уменьшить диск.

    — загружаем ВМ с загрузочного диска сторонних программ для клонирования дисков (Acronis True Image или Ghost32 (Symantec Norton Ghost) или им подобные).

    — клонируем содержимое большого диска на маленький.

    — удаляем большой диск из ВМ

    3) Уменьшить размер диска через конвертацию ВМ с помощью VMware vCenter Converter. При конвертации можно указать размер получаемого диска меньше чем исходного.

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *