Как увеличить/уменьшить размер виртуального диска Hyper-V?

Как увеличить/уменьшить размер виртуального диска Hyper-V?

Динамическое изменение размеров дисков виртуальных машин доступно, начиная с версии 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.

  1. В менеджере виртуальных машин Hyper-V выберите виртуальную машину, перейдите в ее настройки (Settings) -> SCSI Controller;
  2. Выберите нужный виртуальный диск и нажмите кнопку Edit;изменить размер файла виртуальной машины vhdx в hyper-v
    Если кнопка Edit неактивна, и внизу указано Edit is not available because checkpoint exist for this virtual machine, нужно удалить снапшоты. Возможно необходимо отключить Production Checkpoint в свойствах ВМ. Edit is not available because checkpoint exist for this virtual machine
  3. В запустившемся мастере выберите пункт Expand;expand vhdx файл в hyper-v manager
  4. Укажите новый размер виртуального жесткого диска (в нашем примере мы расширим диск до 170 Гб);увеличить размер виртуального диска hyperv без выключения ВМ
  5. Теперь нужно подключится к гостевой ОС, диск которой был расширен. Рассмотрим, как увеличить диск в гостевой ОС Windows. Откройте консоль диспетчера управления дисками Disk Manager. На диске должна появиться дополнительная неразмеченная область 43 Гб (Unallocated); Неразмеченная область в гостевой ОС
  6. Щелкните по разделу, который нужно растянуть и выберите Extend Volume (можно расширить только раздел, находящийся слева от неразмеченной области). Укажите на сколько нужно расширить этот раздел за счет неразмеченного места (подробнее процедура расширения описана здесь);Расширить раздел в гостевой ОС Windows
  7. После выполнения процедуры Extend, размер диска будет увеличен.
    В гостевой Linux можно расширить диск с помощью утилиты Parted.

Как сжать виртуальный VHDX диск в Hyper-V?

Рассмотрим теперь как уменьшить размер виртуального vhdx диска на Hyper-V.

  1. Перед тем как сжать виртуального диска из консоли Hyper-V, необходимо внутри гостевой ОС уменьшить размер логического раздела на диске, освободить часть места, преобразовав его в неразмеченную область. Для этого внутри гостевой ОС откройте диспетчер управления дисков, выберите нужный раздел и выберите пункт Shrink Volume (Сжать том);Сжимаем том в гостевой ОС Windows

    Примечание. Пункт Shrink Volume будет доступен только в том случае, если на диске есть свободное место.

  2. Укажите на сколько нужно уменьшить размер раздела (в нашем примере, мы указали 50 Гб);Уменьшить размер диска
  3. После уменьшения размера раздела в гостевой ОС, нужно открыть консоль Hyper-V и перейти в настройки виртуального диска. Нажмите кнопку Edit;
  4. В мастере Edit Virtual Hard Disk выберите пункт Shrink, затем укажите новый размер vhdx файла. Обратите внимание, что вы не можете сделать размер диска меньше, чем размер данных на нем. В нашем случае можно уменьшить диск с 40 до 31 Гб. уменьшить размер виртуального диска hyper-v
    Прежде чем уменьшать размер VHDX файла, попробуйте дефрагментировать его с помощью оптимизации Hyper-V. Выберите пункт Compact в предыдущей форме. Либо для оптимизации и дефрагментации динамического диска Hyper-V можно использовать команду PowerShell:
    Optimize-VHD -Path 'D:Hyper-Vfs01.vhdx'
    compact сжать файл в hyper-v с помощью дефрагментации
  5. Готово

Изменить размер виртуального диска 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 диска, до которого можно уменьшить файл виртуального диска.

powershell получить текущий, минимальный и максимальный размер vhdx диска в hyper-v

Чтобы увеличить размер 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

уменьшить размер виртуального диска hyperv командлет powershell resize-vhd tominimumsize

Данная команда уменьшила максимальный размер VHDX файла на 6 Гб.

Инструкции по изменению размера виртуальных дисков в других гипервизорах доступны по ссылкам: KVM, VMWare.

Windows 10
Как увеличить/уменьшить размер виртуального диска Hyper-V?