Динамическое изменение размеров дисков виртуальных машин доступно, начиная с версии 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 диска (в том числе системного диска гостевой ОС) на-лету. Останавливать виртуальную машину не нужно;
- VHDX диск должен быть подключен к ВМ через виртуальный SCSI контролер (не поддерживается онлайн расширение дисков на IDE контроллере, такую ВМ придется выключить для изменения размера диска);
- Online VHDX Resize работает как на первом, так и втором поколении виртуальных машин Hyper-V ;
- В качестве гостевой ОС может выступать, как Windows, так и Linux;
- Поддерживается как расширение виртуальных дисков (extend), так и их сжатие (shrink);
- Вы можете изменить размер vhdx диска из графической консоли Hyper-V, PowerShell или Windows Admin Center ;
Увеличиваем размер виртуальный 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-Vfs01.vhdx'
- Готово
Изменить размер виртуального диска Hyper-V с помощью PowerShell
Можно изменить размер VHDX диска с помощью PowerShell. Для этого используется командлет Resize-VHD (не путать с Resize-VirtualDisk
, который относится к командлетам модуля управления дисками Storage ).
Примечание . В современных версиях Hyper-V для изменения размера виртуального диска с помощью командлета Resize-VHD не обязательно выключать виртуальную машину.
Сначала нужно получить полный путь к VHDX диску виртуальной машины:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
Здесь же можно увидеть реальный размер VHDX файла на диске ( FileSize ) и максимальный размер, который он может занять ( Size ).
MinimumSize – это минимальный размер VHDX диска, до которого можно уменьшить файл виртуального диска.
Чтобы увеличить размер VHDX диска нужно указать его новый размер:
Resize-VHD -Path 'C:VMfs01Virtual Hard Disksfs01.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:VMfs01Virtual Hard Disksfs01.vhdx' -ToMinimumSize
Данная команда уменьшила максимальный размер VHDX файла на 6 Гб.
Инструкции по изменению размера виртуальных дисков в других гипервизорах доступны по ссылкам:
KVM ,
VMWare .