• Как сжать чрезмерно увеличившийся виртуальный диск VirtualBox. Уменьшение размера виртуального диска VHD(X) Сжатие vmdk

    09.10.2021

    Всем привет сегодня я хочу вам рассказать, о очень полезной функции которой к сожалению нет у VMware ESXI 5.5, а есть у Hyper-V начиная с Windows Server 2012. Это функция уменьшения размера виртуального диска. Сделано очень удобно, так как это может спасти администратора виртуализации он неправильно спланированной инфраструктуры виртуальной машины.

    Как уменьшить виртуальный диск hyper v

    Напомню, что VMware тоже давал некоторые методы по уменьшению vmdk файлов , но там это делалось не очень удобно через конвертер. В MS как ни странно данный процесс сделали в виде удобного мастера.

    Итак как же уменьшить виртуальный диск hyper v, для этого логинимся в свою виртуальную машину, у меня на ней установлен Windows Server 2012 R2, но это не принципиально. Вам нужно зайти в оснастку Управление дисками.

    Выбираем диск который следует уменьшить, щелкаем по нему правым кликом и нужна нажать Сжать.

    Задаете размер сжимаемого пространства и жмете сжать.

    в итоге у вас появится не размеченное пространство на вашем локальном диске, за счет него мы и уменьшим диск hyper-v.

    Теперь выключаем виртуальную машину и заходим в ее свойства.

    Выбираем нужный виртуальный диск, и запускаем пункт правка.

    Откроется мастер изменения виртуального жесткого диска

    Как видите, тут тоже есть функция Сжать, она то и позволит в hyper-v уменьшить размер диска, жмем далее.

    Мастер вам подскажет до какого минимума можно сжать диск.

    Осталось только проверить, запускаем виртуалку и открываем Мой компьютер. И как видите, все успешно сжалось.

    Как увеличить виртуальный диск hyper v

    Для увеличения виртуального жесткого диска, следует в мастере изменения виртуального жесткого диска, выбрать пункт развернуть, перевод конечно очень корявый. Так, что увеличить диск hyper v, ни чуть не сложнее.

    давайте тоже самое проделаем из командной строки сильного языка:) Первым делом у нас есть виртуальная машина dc1, давайте ее закинем в переменную и посмотрим ее свойства.

    $vm = Get-VM -Name DC1
    Get-VHD -VMId $vm.VMId



    Мы будем рассматривать вот такие вот значения
    • File Size > по сути это нынешний размер файла VHD. Отображает, сколько реально используется.
    • Size > нынешний размер виртуального диска. Если VHD динамический, то вам отобразят максимальный размер, до которого он может увеличиться
    • Minimum Size > отображает до какого размера можно уменьшить VHD.
      Имеем динамически расширяемый VHD - размером 40Gb, из которых занято > 20Gb. Как видите свободное пространство имеется, но оно практически одинаково с минимальным, и уменьшить диск, не выйдет.

    15971

    У виртуальных динамических дисков VDI , созданных в программе есть одна особенность, которая при определённых обстоятельствах может доставить пользователю некоторые неудобства. При копировании на них массивов данных динамические виртуальные диски имеют свойство расширяться, но если затем вы удалите с такого диска все файлы, его размер останется прежним. Таким образом виртуальная машина может раздуться до весьма значительных размеров, заняв на физическом носителе неоправданно много места.

    Ключ resize , предназначенный для изменения размера виртуального диска в данном случае бесполезен, так как работает он только в одну сторону - в сторону расширения диска. Чтобы сжать виртуальный диск, необходимо использовать другой ключ - compact . Но перед тем как приступать к сжатию, нужно удалить с виртуального диска все ненужные файлы, а затем выполнить его зачистку с помощью утилиты , созданной известным программистом Марком Руссиновичем и входящей в пакет средств администрирования Windows Sysinternals . Также необходимо удалить все снимки виртуальной машины, в противном случае вы можете получить ошибку.

    П римечание: утилита используется для очистки разделов и дисков в ОС Windows, для очистки дисков в Linux следует использовать утилиту ZeroFree .

    Имеет маленький вес и не требует установки.

    Поместите её внутри запущенной виртуальной машины в корень системного раздела, а затем, открыв от имени администратора командную строку, выполните такие команды:

    cd C:\
    sdelete.exe -s -z C:

    Аналогичным образом зачистите свободное пространство пользовательского раздела .

    sdelete.exe -s -z D:

    После этого завершите работу виртуальной машины, от имени администратора откройте в базовой системе командную строку и последовательно выполните две этих команды:

    cd C:\Program Files\Oracle\VirtualBox
    VboxManage.exe modifyhd "D:\Oracle VM VirtualBox\Windows 10 x86 Ent 1607.vdi" --compact

    Первой командой мы переходим в расположение утилиты VboxManage.exe , а второй производим сжатие виртуального диска с помощью команды modifyhd и ключа compact . Путь к файлу VDI у вас будет свой, также не забывайте о прямых кавычках, если в пути или имени файла есть пробелы. Процедура сжатия занимает больше времени, чем расширение (на это нужно всего несколько секунд) , так как утилите приходится работать с реально занятым дисковым пространством.

    Добрый день!. Задача простая, уменьшить размер виртуального диска vmdk в ESXI 5 или 6.5. Такая нужда может возникнуть при не правильном планировании, или просто из-за неправильной информации со стороны человека ставящего задачу. Что имеем, есть виртуальная машина с windows server 2008 R2 диск C 50 гб занято 20 гб и диск D 100гб, а используется 1, нужно его уменьшить, до 10 скажем и чтобы он остался толстым. К сожалению штатными средствами, это сделать не получится, это не как в Hyper-V зашел в настройки и отнял нужное количество. Но есть к счастью не муторный способ, это решить, а именно утилита VMware vCenter Converter Standalone 5-6.2, пример ее работы я описал .

    Открываем утилиту. Выбираем "VMware Infrastructure virtual machine", и вводим учетные данные для подключения к вашему хосту или vCenter серверу. Затем next.

    Выбираем хост и виртуальную машину для уменьшения дисков.

    Вводим место назначения и данные дл доступа, в моем примере это тот же vcenter сервер.

    Выбираем папку установки и имя

    Выбираем хост, версию vmtools советую 9, чтобы можно было редактировать из толстого клиента в windows и датастор, а то придется производить процедуру понижения версии виртуального оборудования .

    И теперь самое интересное, уменьшение дисков. Data copy type выбираем Select volume и ниже на против жесткого диска кнопка edit, в выпадающем меню можно выбрать текущий размер или самый минимальный, выбирайте минимальный, потом после выполнения конвертации расширите до такого как вам нужно, собственно все жмем next и процесс пошел.

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

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

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

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

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

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

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

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

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

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

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

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

    На работе имеется несколько виртуальных машин, под управлением гипервизира ESXi 5, когда создавал диски сделал их тонкими, на каком-то этапе размер занимаемого диска вырос, хоть я и удалял данные в виртуальнойм сервере, диск остается того же размера, как можно сжать диск?

    Тонкие (thin) диски VMWare позволяют существенно сэкономить место на файловой системе VMFS хранилища при создании виртуальной машине. Такие vmdk диски при создании практически не занимают место на файловой системе и постепенно разрастаются до максимального размера по мере накопления информации. Однако основная проблема при использовании thin диски заключается в том, что они со временем разрастаются даже в том случае, если вы освободили место внутри гостевой операционной системы.

    Примечание . При удалении данных в ОС Windows (и Linux это также касается) система не заполняет освоившееся место нулями, а просто помечает области как удаленные в метаданных раздела (их можно использовать для записи). Получается, что ESXi сервер не может самостоятельно определить какие из отданных ей блоков на самом деле свободны

    Стандартного средства сжатия тонких дисков в ESXi нет, а сама система виртуализации ничего не знает об особенностях хранения данных внутри гостевой ОС.

    В этой статье мы опишем простой способ сжатия тонкого vmdk диска в ESXi.

    1. На первом этапе необходимо помочь гипервизору, заполнив все свободное место на дисках внутри гостевой ОС нулями.Обнулить свободные блоки в Windows можно с помощью утилиты Марка Русиновича SDelete (на момент написания статьи последняя доступная версия SDelete v1.61, если вы используете более раннюю версии SDelete, имейте в виду, в ней могут использоваться немного другие параметры). Скачать SDelete можно тут: http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx .

      Распакуйте архив на диск, откройте командную строку (естественно, с правами администратора) и выполните следующую команду

      Sdelete –z c:

      В данном случае c: - это виртуальный тонкий vmdk диск, который мы планируем сжать.

      В Linux эту операцию можно выполнить с помощь dd

      Dd if=/dev/zero bs=64k of=zero.temp ; rm zero.temp

    2. Выключаем гостевую ОС (Shutdown).

      Примечание . Сжать диск можно и с помощью миграции виртуальной машины на другое хранилище (Storage VMotion). Однако отметим, что данный способ не является универсальным и работает только при соблюдении определенных условий.

    3. Подключаемся к ESXi серверу по SSH под root –ом (не забудьте включить службу SSH и разрешить входящий трафик на файерволе ESXi). Переходим в каталог c файлами виртуальной машины:
      cd vmfs/volumes/storage1/vm1

      где storage1 – имя хранилища, а vm1 – каталог, в котором хранятся файлы с vmdk дисками виртуальной машины

    4. Выведем «полный» размер виртуального диска.
      ls -lh *.vmdk

      “Реальный” размер виртуального диска, который он занимает на файловой системе можно узнать так:

      Du –h *.vmdk

      Как вы видите, thin диск занимает на хранилище 33 Гб (максимальный его размер 40 Гб). Причем внутри гостевой ОС Windows занято всего 15 Гб.

    5. Сжимаем vmdk диск с помощью vmkfstools. Команда сжатия диска thin будет выглядеть так:
      vmkfstools --punchzero /vmfs/volumes/storage1/vm1/vm1.vmdk

      Процедура сжатия в нашем примере заняла около 5 минут (скорость от размера диска и скорости и загруженности хранилища и сети SAN). После окончания процедуры сжатия проверим текущий размер vmdk файла.

      Как вы видите vmdk диск сжался до 15 Гб!

    Примечание . Если дисков несколько, данную процедуру необходимо выполнить для каждого.

    Похожие статьи