How to Determine a VHDX’s Eligibility for Shrinking
You can find out very easily if you can shrink a virtual disk and, if so, just how much you can shrink it. Use Get-VHD on the target virtual disk file. Look for the Size and MinimumSize fields.
If the MinimumSize field is empty, as in the following screenshot, then the contained logical disk is likely Dynamic (again, not to be confused with dynamically expanding). Another possibility is that the file system is corrupt. This field also starts out as empty until an operating system has initialized the contained disk.
Get-VHD on a VHDX that Contains a Dynamic Disk
A more normal output looks like the following:
Get-VHD on a VHDX that Contains a Basic Disk
Notice that the VhdType here is Dynamic, for dynamically expanding. That won’t stop you from shrinking it. However, this disk is not eligible to be shrunk either, because its MinimumSize and Size are identical. This disk is almost entirely empty; just look at FileSize. Even that probably has a lot of empty blocks. The issue here is the difference between used and allocated. Inside the virtual machine, or, more accurately, inside the contained disk’s allocation table, all the space has been claimed (allocated) even though most of it is empty. To make this disk eligible for shrinking, the MinimumSize must be smaller than the Size.
Results
Efficiency | Purgable slabs | |||
Size at start | 73,991,716,864 | 100% | 11 | |
/k | Slab consolidation | 69,965,185,024 | 100% | 11 |
/l | Retrim | 69,965,185,024 | 100% | 11 |
/x | Free space consolidation | 69,965,185,024 | 100% | 9 |
/x /l /k (repeat) | 69,898,076,160 | 100% | 9 |
The table shows the first /l retrim operation reducing the number of purgable slabs, after which a further 67,108,864 bytes (64MB) of space is freed – the two 32MB slabs.
Why not run Defrag /d on an SSD?
Defrag /d aka “traditional defrag” physically moves the file data to the end of its home partition, reconstructs the file in a contiguous series of blocks and moves the file back to the start of the disk. This process is unnecessary on an SSD. Here, there is virtually no likelihood that the data is stored in a contiguous fashion on the SSD NAND flash. There is also no performance benefit for the file being stored contiguously. While you can perform defrag /d on an SSD. In reality, you are needlessly shortening its cell-write life and the step should be skipped.
Уменьшение размера VMDK файла виртуальной машины VMware
Переходим ко второй операции — непосредственно изменяю размера VMDK файла на файловой системе VMWare VMFS.
- Выключите виртуальную машину, размер виртуального диска которой вы хотите уменьшить
- Подключитесь по SSH к консоли гипервизора ESXi, на котором зарегистрирована ВМ
- Перейдите в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere): cd /vmfs/volumes/datastore/VM-name
- Просмотрим содержимое конфигурационного файла с расширением *.vmdk с помощью команды cat: cat VM-name.vmdk
Размер vmdk диска задается в секции #Extent description
(после символов RW). В данном случае указана цифра 83886080
(40 Гб *1024*1024*1024 / 512) - Мы хотим уменьшить размер vmdk диска с 40 до 20 Гб. Это значит, что в секции Extent description нужно указать значение: 41943040
(20 Гб*1024*1024*1024 / 512). Задайте новый размер виртуального диска с помощью текстового редактора (vi или nano). - Осталось склонировать или смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска.
Совет
. Если vCenter отсутствует, или VMFS хранилище одно, эти операции недоступны. В таком случае можно склонировать vmdk диск командой:vmkfstools -i vmname.vmdk vmname-new-size.vmdk
Удалить оригинальный диск и еще раз склонировать vmdk диск, вернув ему прежнее имя:
rm vmname.vmdk
Rm vmname-flat.vmdk
Vmkfstools -i vmname-new-size.vmdk vmname.vmdk
- Осталось запустить гостевую ОС и удостовериться, что неразмеченная область исчезла.
Совет
. Если на предыдущем шаге использовалась утилита vmkfstools , возможно понадобится переподключить виртуальный диск в настройках ВМ, т.к. его новый размер может отображаться некорректно.
Итак, мы рассмотрели один из вариантов выполнения операции уменьшения размера виртуальных vmdk дисков на VMWare ESXi. Если требует уменьшить размер тонкого диска VMWare за счет неиспользуемого места, рекомендуем воспользоваться этой инструкцией.
Примечание
. В качестве распространенных альтернативных методик сжатия виртуальных vmdk дисков часто используются такие схемы:
- Уменьшение размера виртуального диска путем конвертации виртуальной машины с помощью VMware vCenter Converter (при конвертации указывается размер получаемого диска меньший, чем исходный)
- Клонирование содержимого виртуального диска с помощью стороннего софта (например, Acronis True Image или Symantec Ghost32). Операция выполняется путем добавления в виртуальную машину нового диска меньшего размера и клонирования на него содержимого большего диска. После чего большой диск удаляется.
О динамических дисках
Динамические диски – это заимствованная по лицензии компанией Microsoft технология, она поставляется вместе с Windows, начиная с версии 2000, и являет собой программную реализацию RAID-массивов. Технология не поддерживается в редакциях Windows Home.
Технология динамических дисков являет собой дополнительные возможности по распределению пространства жестких дисков с целью удобства работы с данными, обеспечения их сохранности, а также увеличения производительности компьютера за счет объединения скорости разных дисков. Динамические диски предлагают возможности, не поддерживаемые дисками с базовым типом, это такие возможности как:
- увеличение размера разделов за счет места на всем диске, а не только при условии существования примыкающего свободного места (нераспределенного пространства);
- поддержка разделов, создаваемых из объема нескольких жестких дисков;
- поддержка основных RAID-конфигураций.
В числе преимуществ этой технологии – большая степень надежности, чем при использовании дешевых RAID-контроллеров. Но только если речь идет о дешевых RAID-контроллерах с их недостатками типа ошибок работы драйверов или вероятности потери данных. Полноценным дорогостоящим RAID-контроллерам технология в составе Windows, естественно, уступает. В плане снятия нагрузки с процессора, в принципе, любой аппаратный RAID-массив будет более эффективным, нежели реализуемый с помощью программных средств. Но дорогостоящие RAID-контроллеры и свои задачи будут выполнять за счет собственных ресурсов, и предложат более широкий функционал, и обеспечат отказоустойчивость.
Динамические диски обладают и прочими минусами. К ним невозможно получить доступ с устройств на базе ранних версий системы (начиная с Windows XP Home и ниже). На динамические диски допускается установка только одной системы Windows, существование другой Windows на другом разделе невозможно.
В процессе переустановки Windows (ее современных версий 7, 8.1 и 10) для форматирования и выбора в качестве системного будет доступен лишь единственный раздел динамического диска – тот раздел, на котором ранее, до момента переустановки находилась Windows.
Процесс переустановки Windows на динамическом диске может затянуться по времени. Нередко из-за того, что новая система видит динамический диск как диск с ошибками, она запускает службу Chkdsk для сканирования и исправления ошибок. С навязчивой активностью Chkdsk также сталкиваются пользователи, подключившиеся к компьютеру динамический диск, снятый с другого компьютера. Чтобы наверняка избежать проблем с переустановкой Windows на динамическом диске, его можно перед этим процессом преобразовать в базовый. А после переустановки системы – совершить обратный процесс по преобразованию диска в динамический.
Разделы на динамических дисках, как и на базовых, при создании по умолчанию настроены на форматирование в файловую систему NTFS. Максимальный размер раздела на динамических MBR-дисках – 2 Тб, а на динамических GPT-дисках – 18 Тб. Для динамических дисков не существует понятий основных и логических разделов, как для дисков базового типа. У разделов динамических дисков своя специфика, и она не связана с ограничениями по числу создаваемых разделов. А что касается числа возможных разделов, то никаких ограничений для дисков динамического типа нет.
Optimise your VM
Inevitably there will be some data inside the VM which is not necessary to retain. Removing this prior to compaction, will automatically increase the amount of space that you save.
Optimising Windows
Under Windows, running the Disk Clean-up tool is a good place to start. Additional places to clear-out include:
- C:\Windows\Temp
- C:\Windows\SoftwareDistribution\Download
The SoftwareDistribution\Download folder will usually save over 1GB of space as it contains the installation sources for Windows Updates. Microsoft Update will re-download the files again if it needs them on the next update scan. - C:\Users\<user>\AppData\Local\Temp
You can run defrag from within the VM, however if you are in a position where you can off-line compact the virtual disk, it is more time efficient to defrag the VHDX while offline.
Optimising Linux
Optimisation should also be performed on Linux systems. Unlike with Windows, Linux self-clears its own Temp space on restart. You can also free space from the updates process using your package manager. The below example can be used to free space using :
sudo apt-get update sudo apt-get autoremove sudo apt-get autoclean sudo apt-get clean
Under native Linux file systems, there is no concept of running a defragmentation. ext4 performs this automatically on behalf of the system. This optimisation does not release free space in a “physical” fashion on the hard drive. Unless this “physical” space is released (zeroed out), Hyper-V will be unable to compact the disk.
Fortunately it is possible to force Linux to zero-out unused disk space in the VM. It can be performed using the following command
su cd / cat /dev/zero > zero.dat ; sync ; sleep 1 ; sync ; rm -f zero.dat
This command creates a file on the drive mounted in the “” line. It then writes 0’s into this file until the system literally runs out of disk space. The new 0’s file is then deleted. If you are compacting a VHDX that is not the root partition, you must change the “” line to represent the correct drive e.g. ““.
Note: You will completely fill the volume for a few seconds. This will impact other write activities occurring on the disk and so can be considered to be a dangerous process.
Динамические накопители
Технологию по динамическим винчестерам разработала и предоставила пользователям компания Microsoft. Программная реализация Raid-массива происходит вместе с установленным Windows в версиях с 2000 года. Один компьютер может функционировать как с базовым, так и с новой технологией по разной конфигурации.
Основные установки работают по отдельным главам, динамические задействуют тома, которые имеют тип:
Пользователь сможет, работая с накопителем:
- Создать стандартный.
- Удалить зеркальный.
- Расширить или перекрыть простой.
- Разделить на 2 объекта.
- Восстановить элемент.
- Провести повторную активацию.
- Выполнить преобразование из одного вида в другой.
Новые устройства обеспечены своими характеристиками, которые наделены дополнительной отказоустойчивостью. Пользователю предоставлено оперативное управление томом в реальном времени.
Руководство по преобразованию P2V с помощью Disk2VHD
Перейдите на страницу Windows Sysinternals и скачайте программу.
Программа Disk2vhd v2.01.
Шаг 2. Запустите Disk2vhd на физическом сервере, который необходимо преобразовать
Просто распакуйте ее и запустите на сервере. Как показано на рисунке, интерфейс программы очень простой. Чтобы создать диск VHDX, поставьте флажок Use Vhdx (Использовать Vhdx).
ПРИМЕЧАНИЕ. VHDX — это формат диска, появившийся в Windows Server 2012. По сравнению с традиционным VHD, в VHDX был внесен ряд изменений: появился специальный внутренний журнал, снижающий вероятность повреждения данных, увеличилась емкость (до 64 ТБ), добавлены некоторые другие функции. Я рекомендую по возможности использовать формат VHDX.
Выберите Use VSS (Использовать VSS), если вы хотите получить копию диска, согласованную на уровне транзакций, а не сбоев. Выберите место, где будет находиться файл VHDX (если оно будет расположено на том же диске, возможно «поглощение», поэтому для хранения образа лучше использовать другой жесткий диск). Выберите любой диск/том, который нужно виртуализовать. Если вы хотите сделать этот диск загрузочным, необходимо включить туда системный диск и область загрузки (поставьте флажок System Reserved (Зарезервировано системой)). Нажмите Create (Создать), чтобы начать преобразование.
Запустите Disk2vhd на физическом сервере, который необходимо преобразовать.
Шаг 3. Преобразуйте диск(и) в формат VHDX и скопируйте на хост Hyper-V
Во время этой операции вы увидите примерное время, оставшееся до ее завершения.
Преобразуйте диск(и) в формат VHDX и скопируйте на хост Hyper-V.
После ее завершения вы получите файл/диск VHDX, который можно скопировать на сервер Hyper-V и поместить в папку, где находятся диски ВМ.
Преобразуйте диск(и) в формат VHDX и скопируйте на хост Hyper-V.
Шаг 4. Создайте новую ВМ на хосте Hyper-V
Чтобы использовать созданный диск, необходимо создать ВМ. Запустите мастер (New → Virtual Machine (Создать → Виртуальная машина)) в Менеджере Hyper-V и настройте ее в соответствии со своими требованиями. Параметры настройки очень просты, за исключением выбора поколения ВМ (появился только в Windows Server 2012 R2).
Создайте новую ВМ на хосте Hyper-V.
ПРИМЕЧАНИЕ. Необходимо внимательно подойти к выбору поколения ВМ. Начиная с Windows 2012 R2, в Hyper-V появился новый параметр:Generation 2 virtual machine (Виртуальная машина 2 поколения). Речь идет о втором поколении встроенного ПО для ВМ с обновленным набором виртуального аппаратного обеспечения и новыми возможностями для пользователей, такими как загрузка с устройства, подключенного по iSCSI. Но ВМ 2 поколения имеют существенные ограничения, например, они поддерживают гостевые ОС, только начиная с Windows 8, а семейство Unix не поддерживают совсем. Таким образом, на практике этот вариант следует выбирать только для Windows 8/8.1 или Windows Server 2012/2012 R2 и только для 64-разрядных версий.
Поэтому к выбору поколения ВМ нужно отнестись внимательно, и если вы не уверены на 100%, что вам необходимо Поколение 2, выбирайте поколение 1.
Создайте новую ВМ на хосте Hyper-V.
Шаг 5. Подключите созданный диск
Дойдя до шага Connect Virtual Hard Disk (Подключение виртуального жесткого диска), необходимо настроить виртуальный жесткий диск. Найдите уже созданный диск и выполните оставшиеся действия с помощью мастера.
Подключите виртуальный жесткий диск.
Шаг 6. Запустите ВМ и приступайте к работе
Щелкните правой кнопкой мыши на ВМ, выберите Run (Запустить), затем еще раз щелкните правой кнопкой и подключитесь к ней.
Запустите ВМ.
Загрузка ВМ может занять некоторое время, поскольку конфигурация аппаратного обеспечения будет отличаться. Но через несколько минут вы увидите экран приветствия и сможете войти в систему. Готово!
Запустите ВМ.
Вот и все!
Наслаждайтесь преимуществами своих ВМ и не забудьте их защитить, используя бэкап виртуальной инфраструктуры с помощью Veeam!
Также вас могут заинтересовать:
- Скачать пробную версию Veeam Availability Suite v9 бесплатно
- Бесплатный бэкап виртуальных машин Hyper-V
- Как выполнить миграцию работающей ВМ в Hyper-V
- Как защитить виртуальные машины Hyper-V
Shrinking an Offline VHDX
The most efficient method to free space from a VHDX file is to perform the compact wile it is offline. The disadvantage of an offline compaction is that the VM will need to be shutdown prior to the operation. The amount of time that the VM will be down for is directly proportional to the amount of work required to complete the optimisation process. You can improve this through online defragmentation prior to starting, however this takes significant additional administrative effort.
The following steps outline the process that I use to greatest effect. I use X:\ as the example drive letter in this scenario and the use of PowerShell is expected.
- Get the initial VHDX size
- {optionally} Defrag the VM while online
- Shutdown the VM
- Mount the VHDX in read/write mode (not read only mode)
- Purge Temp files and the contents of X:\Windows\SoftwareDistribution\Download
- Defragment the VHDX while mounted to the management system
- If the VHDX is stored on SSD drives
- If the VHDX is stored on Hard Drives (/x /k /l are retained for Trim capable SANs)Note: Defrag /d can be particularly time consuming
- Dismount the VHDX
- Perform a full optimisation of the VHD file
- Get the new size of the VHDX
- Start the VM
- Find out how much disk space you saved (if any)
You will note that I repeat the steps of running defrag /x and defrag /k /l. In experimenting, this is because the repitition appears to allow a small amount of additiona space to be freed in some situations as show in the table below.
Шесть доводов против динамических дисков
- Преобразование базового диска в динамический — это практически необратимая операция. Исключение составляют simple-разделы, которые можно превратить в обычные тома путем редактирования диска на секторном уровне (смотри ниже «Высший пилотаж, или делаем из динамического диска обычный»). Но составные, чередующиеся и уж тем более RAID–5 диски преобразовать обратно можно только путем копирования данных на внешний носитель и удаления динамических дисков с последующим созданием обычных разделов.
- Преобразовав системный диск в динамический, мы уже не сможем ни обновить, ни переустановить Windows, поскольку динамические диски, увы, инсталлятор не понимает и навряд ли будет понимать в дальнейшем (Server 2008 beta 3 до сих пор не поддерживает такую операцию).
- Linux и xBSD штатным образом динамические диски не поддерживают и для работы с ними требуют установки программного обеспечения от сторонних производителей (например, Paragon LDM/NTFS driver – paragon-software.com), но это еще полбеды. Некоторые типы динамических дисков поддерживаются только «продвинутыми» версиями Windows, и потому, обновляя, например, Windows XP Home до Windows Vista Home Base/Premium, мы с удивлением обнаружим пропажу динамических дисков.
- При серьезных разрушениях дискового тома восстанавливать данные на динамических дисках намного труднее, чем на обычных, и как минимум на порядок дороже. Хакеры только-только распотрошили формат информации, описывающий структуру динамических дисков, но там еще много белых пятен, и реально действующих утилит для автоматизированного восстановления на сегодняшний день нет.
- Динамические диски имеют проблемы со службой кластеров и теневыми копиями, и, чтобы не накосячить, требуется раскурить базу знаний и тщательно продумать каждый шаг.
- Серьезные серверы традиционно оснащаются аппаратными RAID-контроллерами, а у несерьезных потребности в динамических дисках, в общем-то, не возникает, и там они несут больше проблем, чем решают.
Создаем и удаляем динамические диски
Создание динамических дисков не представляет никаких проблем. Запускаем Computer Management, входим в Disk Management, щелкаем правой клавишей мыши по базовому диску, который мы хотим преобразовать в динамический, выбираем в контекстном меню пункт Convert to Dynamic Disk и, ответив на ряд унылых запросов, получаем simple-том. Щелкнув по нему, мы сможем либо расширить его размер за счет невыделенного свободного пространства других дисков (Extend Volume), либо зазеркалить том (Add Mirror). Причем последний пункт работает только в серверных версиях и только при наличии места на зеркальном диске (создать зеркало на том же самом физическом диске невозможно, да это и ненужно).
Simple-том не может быть преобразован в RAID–5, и потому для создания такой матрицы нам потребуется по меньшей мере три пустых динамических диска, на которых не создано никаких томов. Щелкаем мышью по любому из них, говорим New Volume, в появившемся диалоговом окне выбираем RAID–5 (работает только на серверных версиях Windows), отвечаем на пару несложных запросов (какие диски добавлять в массив, как его форматировать) — и все!
Утилита командой строки DISKPART позволяет делать то же самое, только без помощи мыши. Просто набираем в консоли diskpart.exe, пишем help и смотрим вывод. В частности, чтобы создать simple-том размером 32 Гб на диске №4, находясь внутри diskpart.exe, необходимо написать:
Для удаленного управления динамическими дисками можно либо воспользоваться терминальной службой, запуская в RDP-сессии diskpart.exe, либо в Computer Management выбрать «Action -> Connect to another computer». При этом в качестве клиента может выступать любая ось из линейки NT, начиная с Win2k.
Высший пилотаж, или делаем из динамического диска обычный
Simple-том, полученный путем обновления базового диска до динамического, можно вернуть обратно, запустив редактор диска и поменяв тип раздела с 42h на 07h. После перезагрузки «Менеджер диска» потеряет динамический диск, отметив его красным крестиком, но это нестрашно, и его можно смело удалить. А вот восстановленный базовый диск рекомендуется почекать утилитой chkdsk. Подробнее об этом можно прочитать в статье «Converting Dynamic Disks Back to Basic Disks» (thelazyadmin.com/blogs/thelazyadmin/archive/2007/01/17/Converting-Dynamic-Disks-Back-to-Basic-Disks.aspx). Однако следует помнить, что во всех остальных случаях (включая расширение simple-диска до spanned/stripped) эта техника уже не работает, приводя к серьезным разрушениям данных, восстановить которые по силам только профессионалам.
Troubleshooting Unexpected Shrink Results
I have never seen a catastrophic outcome from a shrink. However, shrink does not always work as expected. The cases that I’ve seen involve an insufficient level of shrinkage. This has two potential causes. The first cause: the disk has no unallocated space at the end. I will not rehash the parts about the reported minimum size; if you missed that part, scroll up and read it. The second cause: you cannot de-allocate as much space as you need. Use a defragmentation tool to address that.
Yes, I have a near fanatical opposition to defragmentation. No, this does not represent a change of my stance. Defragmentation has a handful of valid uses, including cleaning up volumes from shrinking. Try a standard Windows defrag pass first. Other tools might do a better job. You only want to move files from the end of the disk toward the front. You might need to delete some unneeded files to make room first. You have one goal here: clear as much space as possible from the end of the volume. A volume can only shrink to the last non-empty block, even if earlier blocks have no data.
If that doesn’t help, you might need to use a data-moving tool. Create a new VHDX of the desired size and use something like robocopy to transfer the contents of the old disk to the new. I would not use this for operating system volumes, but it works well for data-only volumes. In fact, you could take these steps:
- Turn off the owning VM
- Disconnect the VHDX
- Mount the old VHDX and the new in the management operating system
- Use robocopy or a similar tool to transfer the files
- Dismount both VHDXs from the management operating system
- Attach the new VHDX to the VM in place of the old
Robocopy has switches to copy ACLs and file descriptors. You will need to double-check that the operating system reconnects any shared folders, though.
Разница между базовым и динамическим диском
Хотя в Windows используются оба типа моделей хранения, это означает, что Windows предлагает два способа настройки жесткого диска: в качестве базового или динамического диска. Базовый диск — это традиционная модель хранения, которая использует обычные таблицы разделов, имеющиеся в MS-DOS и Windows, для управления всеми разделами на жестком диске. Динамический диск, с другой стороны, не содержит таблиц разделов или логических дисков; вместо этого жесткий диск делится на динамические тома, которые называются динамическими, поскольку физический диск инициализируется для динамического хранения.
Тома, содержащиеся на базовом диске, называются базовыми томами, и когда вы создаете разделы с базовой конфигурацией диска, скажем, с определенным размером набора, его нельзя изменить. Каждый жесткий диск может содержать до четырех разделов или до трех разделов и один дополнительный раздел (расширенный раздел), а из дополнительного раздела можно создавать логические диски. Динамические диски, с другой стороны, не ограничиваются первичными и расширенными разделами, фактически жесткий диск делится на тома, а не на разделы, которые могут быть несмежными и могут занимать один или несколько дисков..
Базовый диск может создавать только два стиля разделов: MBR и GPT. Основная загрузочная запись (MBR) — это широко используемая структура дисков, в которой используется стандартная таблица разделов BIOS. GPT (таблица разделов GUID) — это своего рода таблица разделов, в которой используется Unified Extensible Firmware Interface (UEFI). Жесткий диск на базе GPT может содержать до 128 разделов. Динамический диск, с другой стороны, содержит простые тома, составные тома, чередующиеся тома, зеркальные тома и тома RAID-5. Динамический том содержится в динамическом диске и является логическим томом, очень похожим на логический диск в базовом диске..
Одним из ключевых отличий между базовыми дисками и динамическими дисками является поддержка мультизагрузочной конфигурации. Хотя динамические диски имеют много преимуществ по сравнению с базовыми дисками, существуют определенные ограничения, когда речь идет о конфигурации с множественной загрузкой. Базовые диски поддерживают мультизагрузочные конфигурации, что означает, что вы можете легко выбирать между несколькими операционными системами на компьютере. Динамические диски не используют загрузчики, которые не позволяют выбирать между несколькими операционными системами. Вот почему это не может использоваться как единственный диск в мультизагрузочной среде.
Базовый диск может быть легко преобразован в динамический диск без потери данных, что позволяет создавать тома, охватывающие несколько дисков. Вам не нужно перезагружать компьютер во время конвертации. Тем не менее, это требует от вас делать резервные копии. Однако для преобразования динамического диска в базовый диск необходимо удалить все тома на динамическом диске. Поскольку для динамического диска требуется 1 МБ дискового пространства для базы данных управления дисками, может потребоваться оставить 1 МБ на диске неразделенным, чтобы впоследствии его можно было использовать для базы данных управления дисками для преобразования базового в динамический диск.