Как уменьшить размер диска Hyper V в интерфейсе и Powershell


12 сентября 2019


Уменьшение размера диска Hyper V в интерфейсе и Powershell

Уменьшить размер диска Hyper V можно через диспетчер виртуальных машин и с помощью Powershell. Оба варианта мы покажем на примерах.

В Hyper V возможно уменьшить тип диска VHDX, относящийся ко второму поколению виртуальных машин (Generation 2). Тип VHD уменьшить нельзя. Если вы не уверены в типе винчестера его можно проверить в свойстве виртуальной машины - этот способ показан на скриншоте ниже. Если вы используете VHD можно либо конвертировать тип в VHDX либо скопировать содержимое при создании нового диска Hyper V.

Разницы в сжатии динамических и фиксированных устройств нет.

Перед уменьшением диска Hyper V нужно зайти в саму виртуальную машину где этот файл подключен и открыть диспетчер управления дисками:

Диспетчер дисков Windows

Аналогично увеличению диска Hyper V нужно выбрать тот, размер которого необходимо уменьшить. Если есть не используемые разделы, то можно их удалить - эффект тот же. Если таких разделов нет, то нужно в выплывающем меню выбрать "Сжать том..." (Shrink). После нажатия кнопки пойдет расчет места, которое возможно освободить:

уменьшить виртуальный диск hyper v

В новом окне нужно выбрать размер, который будет вычтен из выбранного диска. "Доступное для сжатия пространство" - максимальный размер, на который мы можем уменьшить раздел. Изначально я попробовал уменьшить на 1 Гб, но в дальнейшем Hyper V отказался уменьшать диск на такое пространство. С уменьшением на 10 ГБ проблем с Hyper V не было. Под "отказался" я имею виду, что не появлялась возможность уменьшения в диспетчере Hyper V. Какой минимальный размер для сжатия точно сказать не могу, но как я и написал при 10 Гб работает нормально.

уменьшить диск hyper v

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

hyper v уменьшить размер диска

Теперь нужно зайти в настройки виртуальной машины гипервизора:

hyper v уменьшить размер

В открытом окне выбрать виртуальный жесткий диск который вы сжимали и нажмите кнопку редактирования. Тут же мы можем увидеть тип диска, который вы используете VHD или VHDX.

hyper v сжать диск

В первом окне ничего нельзя изменить, так как мы открывали конкретный VHDX файл, а не из диспетчера управления дисками Hyper V. Открываем следующее окно, где увидим возможность Hyper V уменьшения размера диска (Сжатие/Shrink). Выбираем ее:

уменьшить диск hyper v

Уменьшить виртуальный диск Hyper V можно на тот размер, на который мы освободили внутренний раздел машины:

hyper v уменьшить размер диска

На последнем окне еще раз убеждаемся, что введенные данные верны и подтверждаем их:

hyper v уменьшить размер

Виртуальный диск Hyper V уменьшен.

 

Уменьшение диска Hyper V в Powershell

Первое что нужно сделать это узнать имя виртуальной машины Hyper V для сжатия диска:

Get-VM

Моя виртуальная машина называется Win10 и на примерах вам нужно изменить ее имя на свое. Нам нужно проверить, что файл виртуального винчестера имеет тип VHDX, возможности уменьшения VHD нет:

Get-VMHardDiskDrive -VMName 'Win10' | select Path

Далее включаем виртуальную машину:

Start-VM -Name 'Win10'

Подключимся к операционной системе виртуальной машины. Если вы подключаетесь с хоста гипервизора проблем быть не должно, но возможно потребуется настроить средства для удаленных команд Powershell. 

Enter-PSSession -VMName 'Win10'

 Либо можно запустить консоль Powershell с самой виртуальной машины.

Сейчас нам нужно уменьшить раздел внутри виртуальной машины что бы в последующем это место убрать через возможности гипервизора. Уменьшить можно и через diskpart, но описывается вариант с Powershell. Нужно выбрать раздел, с которого будет убираться место:

Get-Partition

Конечно не стоит уменьшать размер загрузочного раздела или системного до минимального размера. 

Далее нам нужно узнать насколько возможно уменьшить раздел. В этой команде я передаю только букву раздела:

Get-PartitionSupportedSize -DriveLetter C

 Если команда запущена не под администратором, то вы увидите ошибку:

Get-PartitionSupportedSize: клиенту не удалось получить доступ к ресурсу CIM.

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

Get-PartitionSupportedSize -DriveLetter C | % {$_.SizeMin/1GB;$_.SizeMax/1GB}

Если нужно изменить данные на MB или TB просто замените соответствующие буквы.

В этой команде мы указываем конечный размер раздела, а не сколько хотим от него отнять. В случае работы с интерфейсом возможность уменьшения VHDX в диспетчере гипервизора не была активна при неразмеченном пространстве в 1GB. Эта ситуация исправилась при 10GB.

Можно указывать и другую единицу измерения:

Resize-Partition -DriverLetter C -Size 20GB

уменьшить диск hyper v powershell

Виртуальную машину можно оставить включенной, но я бы рекомендовал выключить:

Stop-VM -VMName 'Win10'

Этой командой мы увидим, на сколько мы можем уменьшить диск Hyper V. Я использую конвейер что бы не прописывать путь к файлу VHDX:

Get-VMHardDiskDrive -VMName 'Win10' | Get-VHD

Команда ниже в Hyper V уменьшает размер диска. Я вставил изначально значение, но можно использовать и варианты с примеров выше:

Get-VMHardDiskDrive -VMName 'Win10' | Resize-VHD -SizeBytes 22119727616

Убедимся что диск виртуальной машины Hyper V уменьшен:

Get-VMHardDiskDrive -VMName 'Win10' | Get-VHD

hyper v уменьшить размер диска powershell 

...

Теги: #powershell #hyper-v


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.