Функция Online VHDX Resize в Hyper-V, доступная с Windows Server 2012 R2, позволяет изменять размер виртуальных дисков VHDX без остановки виртуальной машины. Это упрощает управление дисковым пространством для рабочих станций и серверов под управлением Windows или Linux. В статье описаны шаги для увеличения и сжатия VHDX-дисков через графическую консоль Hyper-V Manager, PowerShell или Windows Admin Center, а также ограничения функции.
Возможности и ограничения Online VHDX Resize
Функция изменения размера виртуальных дисков в Hyper-V имеет следующие особенности:
1. Поддерживаются диски всех типов: фиксированные, динамические и дифференциальные.
2. Размер VHDX-диска, включая системный, можно изменять без выключения виртуальной машины.
3. Диски в формате VHD не поддерживают изменение размера онлайн — их нужно конвертировать в VHDX.
4. Диск должен быть подключен через SCSI-контроллер. Для дисков на IDE-контроллере требуется остановка ВМ.
5. Поддерживаются ВМ первого и второго поколения.
6. Гостевые ОС: Windows и Linux.
7. Поддерживаются операции расширения (extend) и сжатия (shrink).
8. Изменение размера возможно через Hyper-V Manager, PowerShell или Windows Admin Center.
9. Ограничения: не поддерживаются общие VHDX-файлы, VHD Set (VHDS/AVHDX) и диски с активными снимками (checkpoints).
Увеличение размера VHDX-диска в Hyper-V Manager
Для расширения размера виртуального диска через графическую консоль выполните следующие шаги:
1. Откройте Диспетчер Hyper-V и выберите нужную виртуальную машину.
2. Перейдите в Настройки -> SCSI-контроллер, выберите диск и нажмите Изменить.
3. Если кнопка Изменить неактивна с сообщением Изменение недоступно из-за наличия snapshot, удалите все снэпшоты ВМ или отключите Production Checkpoint в настройках.
4. В мастере выберите Расширить.
5. Укажите новый размер диска (например, увеличьте до 170 ГБ).
После расширения VHDX-диска обновите размер раздела в гостевой ОС
Расширение раздела в Windows
1. Подключитесь к гостевой ОС и откройте Управление дисками (diskmgmt.msc).
2. Найдите неразмеченную область (например, 43 ГБ).
3. Щелкните правой кнопкой мыши по разделу слева от неразмеченной области и выберите Расширить том.
4. Укажите объем для расширения, следуя указаниям мастера.
Примечание: Если расширению мешает раздел восстановления, переместите его или удалите, если это безопасно.
Расширение раздела в Linux
Для гостевых ОС Linux используйте утилиту parted:
1. Подключитесь к ВМ и откройте терминал.
2. Выполните команду для изменения размера раздела, например:
parted /dev/sdX resizepart 1 100%
где /dev/sdX — имя диска, а 1 — номер раздела.
Сжатие VHDX-диска в Hyper-V Manager
Сжатие виртуального диска требует предварительной подготовки в гостевой ОС, чтобы освободить место.
Подготовка в гостевой ОС Windows
1. Откройте Управление дисками (diskmgmt.msc).
2. Выберите нужный раздел и щелкните Сжать том.
3. Укажите объем для сжатия (например, 50 ГБ). Пункт доступен только при наличии свободного места.
4. Подтвердите сжатие. На диске появится неразмеченная область.
Сжатие диска в Hyper-V
1. В Диспетчере Hyper-V перейдите в настройки ВМ -> SCSI-контроллер -> выберите диск -> Изменить.
2. В мастере выберите Сжать.
3. Укажите новый размер диска (например, с 40 ГБ до 31 ГБ). Размер не может быть меньше объема данных на диске.
Оптимизация диска перед сжатием
Для повышения эффективности сжатия выполните дефрагментацию и оптимизацию диска:
1. В мастере выберите Сжать -> Уплотнить (Compact).
2. Или используйте PowerShell:
Optimize-VHD -Path 'D:\Hyper-V\fs01.vhdx'
Изменение размера VHDX-диска через PowerShell
Командлет Resize-VHD позволяет изменять размер VHDX-диска без остановки ВМ (в отличие от Resize-VirtualDisk, который относится к модулю Storage).
Получение информации о диске
1. Узнайте путь к VHDX и его параметры:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
Вывод покажет:
— FileSize: текущий размер файла на диске.
— Size: максимальный размер VHDX.
— MinimumSize: минимально возможный размер.
Увеличение размера диска
Для расширения выполните:
Resize-VHD -Path 'C:\VM\fs01\Virtual Hard Disks\fs01.vhdx' -SizeBytes 50GB
Если указан размер меньше текущего объема данных, появится ошибка: Resize-VHD: Не удалось изменить размер виртуального диска.
Расширение раздела в гостевой ОС
Для расширения раздела в Windows удаленно через PowerShell:
1. Подключитесь к ВМ:
Enter-PSSession -ComputerName fs01
2. Узнайте максимальный размер раздела и расширьте его:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter C -Size $MaxSize
Сжатие диска
Для сжатия до минимального размера:
Resize-VHD -Path 'C:\VM\fs01\Virtual Hard Disks\fs01.vhdx' -ToMinimumSize
Эта команда уменьшит максимальный размер VHDX до минимально возможного, учитывая объем данных.
Рекомендации
1. Перед сжатием всегда освобождайте место в гостевой ОС, чтобы избежать ошибок.
2. Регулярно выполняйте оптимизацию динамических дисков с помощью Optimize-VHD.
3. Убедитесь, что VHDX подключен через SCSI-контроллер, чтобы избежать необходимости останавливать ВМ.
4. Перед изменением размера удалите все снимки ВМ, так как они блокируют операцию.