Динамическое изменение размеров дисков виртуальных машин доступно, начиная с версии Hyper-V в Windows Server 2012 R2. Функция Online VHDX Resize позволяет вам увеличить или уменьшить размер vhdx диска виртуальной машины онлайн (без остановки ВМ). В этой статье мы рассмотрим, как увеличить или уменьшить (сжать) размер диска виртуальной машины в Hyper-V, запущенном в Windows 10 или Windows Server 2016 (инструкции применима для всех поддерживаемых версий Hyper-V, в том числе бесплатного Hyper-V Server).
Основные возможности и ограничений Online VHDX Resize в Hyper-V:
- Вы можете изменить размер виртуального диска Hyper-V любого типа: фиксированного, динамического, и дифференциального.
- Вы можете изменить размер VHDX диска (в том числе системного диска гостевой ОС) на-лету. Останавливать виртуальную машину не нужно;Нельзя динамически изменить размер VHD диско. Его сначала придется переконвертировать в формат VHDX.
- VHDX диск должен быть подключен к ВМ через виртуальный SCSI контролер (не поддерживается онлайн расширение дисков на IDE контроллере, такую ВМ придется выключить для изменения размера диска);
- Online VHDX Resize работает как на первом, так и втором поколении виртуальных машин Hyper-V;
- В качестве гостевой ОС может выступать, как Windows, так и Linux;
- Поддерживается как расширение виртуальных дисков (extend), так и их сжатие (shrink);
- Вы можете изменить размер vhdx диска из графической консоли Hyper-V, PowerShell или Windows Admin Center;
- Не поддерживается изменение размера общих VHDX файлов или VHD Set (VHDS/AVHDX) дисков, используемых в гостевых кластерах;
- Нельзя изменить размер виртуального диска, для которого создан снапшот (например при резервном копировании).
Увеличиваем размер виртуальный VHDX диска в Hyper-V
Рассмотрим, как увеличить размер виртуального VHDX диска с помощью консоли Hyper-V Manager.
- В менеджере виртуальных машин Hyper-V выберите виртуальную машину, перейдите в ее настройки (Settings) -> SCSI Controller;
- Выберите нужный виртуальный диск и нажмите кнопку Edit;Если кнопка Edit неактивна, и внизу указано Edit is not available because checkpoint exist for this virtual machine, нужно удалить снапшоты. Возможно необходимо отключить Production Checkpoint в свойствах ВМ.
- В запустившемся мастере выберите пункт Expand;
- Укажите новый размер виртуального жесткого диска (в нашем примере мы расширим диск до 170 Гб);
- Теперь нужно подключится к гостевой ОС, диск которой был расширен. Рассмотрим, как увеличить диск в гостевой ОС Windows. Откройте консоль диспетчера управления дисками Disk Manager. На диске должна появиться дополнительная неразмеченная область 43 Гб (Unallocated);
- Щелкните по разделу, который нужно растянуть и выберите Extend Volume (можно расширить только раздел, находящийся слева от неразмеченной области). Укажите на сколько нужно расширить этот раздел за счет неразмеченного места (подробнее процедура расширения описана здесь);
- После выполнения процедуры Extend, размер диска будет увеличен.В гостевой Linux можно расширить диск с помощью утилиты Parted.
Как сжать виртуальный VHDX диск в Hyper-V?
Рассмотрим теперь как уменьшить размер виртуального vhdx диска на Hyper-V.
- Перед тем как сжать виртуального диска из консоли Hyper-V, необходимо внутри гостевой ОС уменьшить размер логического раздела на диске, освободить часть места, преобразовав его в неразмеченную область. Для этого внутри гостевой ОС откройте диспетчер управления дисков, выберите нужный раздел и выберите пункт Shrink Volume (Сжать том);Примечание. Пункт Shrink Volume будет доступен только в том случае, если на диске есть свободное место.
- Укажите на сколько нужно уменьшить размер раздела (в нашем примере, мы указали 50 Гб);
- После уменьшения размера раздела в гостевой ОС, нужно открыть консоль Hyper-V и перейти в настройки виртуального диска. Нажмите кнопку Edit;
- В мастере Edit Virtual Hard Disk выберите пункт Shrink, затем укажите новый размер vhdx файла. Обратите внимание, что вы не можете сделать размер диска меньше, чем размер данных на нем. В нашем случае можно уменьшить диск с 40 до 31 Гб. Прежде чем уменьшать размер VHDX файла, попробуйте дефрагментировать его с помощью оптимизации Hyper-V. Выберите пункт Compact в предыдущей форме. Либо для оптимизации и дефрагментации динамического диска Hyper-V можно использовать команду PowerShell:
Optimize-VHD -Path 'D:\Hyper-V\fs01.vhdx'
- Готово
Изменить размер виртуального диска Hyper-V с помощью PowerShell
Можно изменить размер VHDX диска с помощью PowerShell. Для этого используется командлет Resize-VHD (не путать с
Resize-VirtualDisk
, который относится к командлетам модуля управления дисками Storage).
Сначала нужно получить полный путь к VHDX диску виртуальной машины:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
Здесь же можно увидеть реальный размер VHDX файла на диске (FileSize) и максимальный размер, который он может занять (Size).
MinimumSize – это минимальный размер VHDX диска, до которого можно уменьшить файл виртуального диска.
Чтобы увеличить размер VHDX диска нужно указать его новый размер:
Resize-VHD -Path 'C:\VM\fs01\Virtual Hard Disks\fs01.vhdx' -SizeBytes 50Gb
Resize-VHD : Failed to resize the virtual disk
.Вам осталось расширить диск в гостевой ОС.
Можно сделать это удаленно через PowerShell Remoting. Подключитесь к виртуальной машины с помощью Invoke-Command или Enter-PSSession (по сети или через PowerShell Direct)
Enter-PSSession -ComputerName fs01
Получим информацию о том, на сколько можно расширить раздел и расширим его до максимального размера:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно уменьшить размер виртуального диска до минимально-возможного, выполните:
Resize-VHD -Path 'C:\VM\fs01\Virtual Hard Disks\fs01.vhdx' -ToMinimumSize
Данная команда уменьшила максимальный размер VHDX файла на 6 Гб.