Поиск по сайту:

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


Динамическое изменение размера жестких дисков виртуальных машин доступно, начиная с Hyper-V в Windows Server 2012 R2. Функция Онлайн-изменение размера VHDX позволяет увеличивать или уменьшать размер VHDX-файла виртуальной машины онлайн (без остановки виртуальной машины). В этой статье мы рассмотрим, как расширить или уменьшить (сжать) размер жесткого диска виртуальной машины в Hyper-V, работающем под управлением Windows 10 или Windows Server 2016 (инструкции применимы ко всем поддерживаемым версиям Hyper-V, включая бесплатные Сервер Hyper-V).

Ключевые особенности и ограничения Online VHDX Resize в Hyper-V:

  • Вы можете изменить размер виртуального диска Hyper-V любого типа: фиксированного, динамического и дифференциального;

  • Вы можете изменить размер VHDX-диска (включая системный диск гостевой ОС) на лету. Вам не нужно останавливать виртуальную машину;

    Динамическое изменение размера возможно только для VHDX. Диски VHD не поддерживаются, их необходимо конвертировать в формат VHDX.

  • Диск VHDX должен быть подключен к ВМ через виртуальный SCSI-контроллер (онлайн-расширение дисков на IDE-контроллере не поддерживается, для изменения размера диска такую ВМ придется отключить);

  • Online VHDX Resize работает как на первом, так и на втором поколении виртуальных машин Hyper-V;

  • И Windows, и Linux могут выступать в качестве гостевой ОС;

  • Поддерживается как расширение, так и сжатие виртуальных дисков;

  • Вы можете изменить размер VHDX-диска из графической консоли Hyper-V, PowerShell или Windows Admin Center;

  • Изменение размера общих дисков VHDX (AVHDX), используемых в кластерах, не поддерживается;

  • Вы не можете изменить размер виртуального диска, для которого был создан снимок (например, во время резервного копирования).

Расширение жесткого диска виртуальной машины в Hyper-V

Вы можете увеличить размер виртуального диска VHDX с помощью консоли диспетчера Hyper-V.

  1. Выберите виртуальную машину в диспетчере виртуальных машин Hyper-V, перейдите в Настройки виртуальной машины -> разверните SCSI Controller;

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

    Если кнопка «Изменить» неактивна и отображается предупреждение «Редактирование недоступно, поскольку для этой виртуальной машины существует контрольная точка», вам необходимо удалить все снимки. Возможно, потребуется отключить параметр Производственная контрольная точка в свойствах виртуальной машины.

  3. В появившемся мастере редактирования виртуального жесткого диска выберите Развернуть;

  4. Укажите новый размер виртуального жесткого диска (в нашем примере мы расширим размер диска до 170 ГБ);

  5. Зайдите в консоль гостевой ОС, диск которой был расширен. Давайте рассмотрим, как увеличить системный раздел в гостевой ОС Windows. Откройте консоль Диспетчер дисков. Как видите, на диске появилось дополнительно 43 ГБ нераспределенного места;

  6. Щелкните правой кнопкой мыши раздел, который хотите расширить, и выберите Расширить том (вы можете расширить том только слева от нераспределенной области). Укажите, насколько вы хотите увеличить текущий размер тома;

    Иногда расширение тома может быть заблокировано разделом восстановления Windows.

  7. После завершения процедуры Расширить размер тома будет увеличен.

    В гостевой ОС Linux расширить диск можно с помощью инструмента parted.

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

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

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

    Примечание. Опция «Сжать том» становится доступной только в том случае, если на разделе есть свободное место.

  2. Укажите объем места, на который нужно уменьшить раздел (в нашем примере мы указали 50 ГБ);

  3. После уменьшения размера раздела в гостевой ОС необходимо открыть консоль Hyper-V и зайти в настройки виртуального диска. Нажмите кнопку Изменить;

  4. В мастере Редактировать виртуальный жесткий диск выберите Сжать, затем укажите новый размер VHDX-файла. Обратите внимание, что вы не можете сделать диск меньше, чем данные на нем (проверьте значение Минимум). В нашем случае вы можете уменьшить размер диска с 40 до 31 ГБ;

    Прежде чем сжимать файл VHDX, попробуйте дефрагментировать его с помощью оптимизации Hyper-V. В предыдущей форме выберите параметр Компактный. Альтернативно вы можете использовать команду PowerShell для оптимизации и дефрагментации динамического виртуального диска Hyper-V.:

    Optimize-VHD -Path 'C:\VM\VHDHyper-V\fs01.vhdx'

  5. Сделанный.

Изменение размера файлов виртуального жесткого диска в Hyper-V с помощью PowerShell

Вы можете изменить размер диска VHDX на хосте Hyper-V с помощью PowerShell. Для этого используйте командлет Resize-VHD (не путать с командлетом Resize-VirtualDisk, который относится к встроенным командлетам управления дисками Windows).

Примечание. Вам не нужно выключать виртуальную машину, чтобы изменить размер виртуального диска с помощью командлета Resize-VHD в текущих версиях Hyper-V.

Сначала вам необходимо получить полный путь к VHDX-диску виртуальной машины:

Get-VM -VMName fs01 | Select-Object VMId | Get-VHD

Эти командлеты также возвращают фактический размер файла VHDX в хранилище (FileSize) и максимальный размер, который он может принять (Size). MinimumSize — это минимальный размер диска VHDX, до которого можно уменьшить файл виртуального диска.

Для того, чтобы увеличить размер VHDX-диска, вам необходимо указать его новый размер:

Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -SizeBytes 50Gb

Если вы указали новый размер виртуального диска меньше, чем занимает диск, появится ошибка:

Resize-VHD : Failed to resize the virtual disk

Вам просто нужно изменить размер раздела в гостевой ОС.

Вы можете расширить диск в Windows удаленно с помощью PowerShell Remoting. Подключитесь к удаленной виртуальной машине с помощью командлета Invoke-Command или Enter-PSSession (по сети или через Hyper-V PowerShell Direct):

Enter-PSSession -ComputerName fs01

Вам необходимо получить информацию о том, насколько можно расширить раздел и расширить его до максимально доступного размера:

$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize

Если вам нужно уменьшить размер виртуального диска до минимально возможного размера, запустите:

Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -ToMinimumSize

Эта команда уменьшит максимальный размер файла VHDX на 6 ГБ.

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

Статьи по данной тематике