Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Windows Server, AD и Роли

Как сжать виртуальный диск Hyper-V (VHDX): инструкция Compact Disk

Обновлено: 27.08.2026 · Официальная документация ↗

Почему динамический диск VHDX раздувается и не уменьшается?

В среде виртуализации Hyper-V администраторы чаще всего используют динамически расширяемые виртуальные диски (.vhdx). При записи данных внутрь гостевой виртуальной машины файл .vhdx на физическом хосте автоматически растет. Однако когда пользователь удаляет внутри ВМ 100 ГБ файлов, размер файла VHDX на хосте сам по себе не уменьшается. Файловая система оставляет эти блоки помеченными, но не отдает пространство хосту.

Размер внутри ВМРазмер VHDX на хосте Hyper-VРезультат
Занято: 40 ГБ (свободно 160 ГБ)Размер файла: 200 ГБ160 ГБ дискового пространства хоста расходуются впустую.

Пошаговый процесс сжатия диска VHDX

Шаг 1. Зануление пустого места внутри гостевой ВМ (Важно!)

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

# Выполняем дефрагментацию и TRIM для освобождения блоков:
Optimize-Volume -DriveLetter C -ReTrim -Defrag -Verbose

Шаг 2. Сжатие VHDX на хост-сервере Hyper-V

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

  1. Откройте «Диспетчер Hyper-V».
  2. В правом меню действий нажмите «Изменить диск...» (Edit Disk).
  3. Укажите путь к вашему файлу .vhdx на диске хоста.
  4. Выберите действие «Сжать» (Compact) и нажмите «Готово». Процесс займет от нескольких минут до часа в зависимости от объема.

Сжатие диска одной командой PowerShell на хосте Hyper-V:

# 1. Монтируем VHDX диск только для чтения:
Mount-VHD -Path "D:\Hyper-V\Virtual Hard Disks\ServerVM.vhdx" -ReadOnly

# 2. Запускаем глубокую оптимизацию и сжатие:
Optimize-VHD -Path "D:\Hyper-V\Virtual Hard Disks\ServerVM.vhdx" -Mode Full

# 3. Размонтируем диск обратно:
Dismount-VHD -Path "D:\Hyper-V\Virtual Hard Disks\ServerVM.vhdx"
💡 Практика специалистов: Перед сжатием больших дисков VHDX файловых серверов обязательно запускайте утилиту Sysinternals SDelete (`sdelete.exe -z c:`) внутри виртуальной машины. Она гарантированно перезаписывает освобожденное пространство нулями, что позволяет вернуть до 98% свободного места при последующем `Optimize-VHD`.

Частые вопросы (FAQ)

Можно ли сжимать диск VHDX «на лету» без выключения виртуальной машины?

Да, если гостевая ОС поддерживает SCSI TRIM (Windows Server 2012 R2 и новее), можно выполнить Optimize-VHD -Mode Quick без выключения ВМ, но максимальный процент сжатия достигается только в выключенном состоянии в режиме Full.

Работает ли сжатие для дисков фиксированного размера (Fixed Size)?

Нет. Сжимать можно только динамические диски (Dynamically Expanding). Фиксированный диск сначала потребуется преобразовать (Convert) в динамический через мастер Hyper-V.

Что делать, если у виртуальной машины есть контрольные точки (снапшоты)?

Сжатие родительского VHDX невозможно при наличии активных файлов разностных дисков .avhdx. Сначала удалите все чекпоинты через Диспетчер Hyper-V и дождитесь завершения слияния (Merge).

Безопасна ли эта процедура для хранящихся баз данных внутри ВМ?

Да, процедура полностью безопасна. Hyper-V удаляет только неиспользуемые пустые секторы с нулями.

Полезные материалы
Рекомендуем