VHDX — что это и чем отличается от VHD и VMDK | Глоссарий FREEHOSTING

VHDX

Virtual Hard Disk v2
VHDX — VHDX — формат виртуального жёсткого диска второго поколения от Microsoft, поддерживающий тома до 64 ТБ, защиту от повреждений при сбое питания и улучшенное выравнивание секторов. Используется в Hyper-V начиная с Windows Server 2012.

Определение простыми словами

VHDX (Virtual Hard Disk v2) — это файл-контейнер, который эмулирует физический жёсткий диск внутри виртуальной машины. Операционная система внутри ВМ видит его как обычный диск: создаёт разделы, форматирует, читает и пишет данные. Снаружи это просто файл с расширением .vhdx на хосте.

Формат пришёл на смену устаревшему VHD: максимальный размер вырос с 2 ТБ до 64 ТБ, добавилась защита метаданных через журналирование (аналог файловых систем ext4/NTFS), а выравнивание данных по 1 МБ снизило потери производительности на современных физических дисках с большими секторами (4Kn, Advanced Format).

Сравнение форматов виртуальных дисков

Параметр VHDX VHD VMDK qcow2
Макс. размер 64 ТБ 2 ТБ 62 ТБ 2 ЭБ (теор.)
Гипервизор Hyper-V 2012+ Hyper-V, VirtualBox VMware ESXi, VirtualBox QEMU/KVM, Proxmox
Защита от сбоя питания Да (журнал) Нет Частично Да (copy-on-write)
Динамическое расширение Да Да Да Да
Снапшоты Через AVHDX Через AVHD Нативно Нативно
Нативный Linux-доступ Через qemu-img / libguestfs Через libguestfs Через qemu-img Нативно

Кейсы использования

  • Production-ВМ на Hyper-V: системный диск ВМ под Windows Server или Linux хранится как фиксированный VHDX — предсказуемая производительность без фрагментации.
  • Динамические диски для dev/test: VHDX с динамическим расширением занимает только использованное место на хосте; удобно для стендов, которые редко заполняются.
  • Дифференцирующие диски (AVHDX): снапшоты Hyper-V хранятся в файлах .avhdx — изменения пишутся туда, базовый диск остаётся нетронутым.
  • Миграция с VHD: конвертация старых виртуальных машин для снятия ограничения в 2 ТБ и получения журналирования метаданных.
  • Офлайн-монтирование для анализа: администратор подключает VHDX к хосту без запуска ВМ, чтобы извлечь файлы или проверить целостность диска.

Негативный пример: использование динамического VHDX на медленном HDD-хосте для базы данных с высоким I/O — фрагментация файла на физическом уровне ведёт к деградации производительности. В таких случаях нужен фиксированный VHDX на SSD или переход на qcow2 с raw-бэкендом на KVM.

Технические детали

Операции с VHDX через qemu-img (доступен на Linux-хостах):

# Создать фиксированный VHDX 100 ГБ
qemu-img create -f vhdx -o subformat=fixed /var/lib/vms/disk0.vhdx 100G

# Создать динамический VHDX
qemu-img create -f vhdx -o subformat=dynamic /var/lib/vms/disk0.vhdx 100G

# Просмотр информации о диске
qemu-img info /var/lib/vms/disk0.vhdx

# Конвертировать VHD → VHDX
qemu-img convert -f vpc -O vhdx /path/to/old.vhd /path/to/new.vhdx

# Конвертировать VHDX → qcow2 (для миграции на KVM/Proxmox)
qemu-img convert -f vhdx -O qcow2 /path/to/disk.vhdx /path/to/disk.qcow2

# Монтирование VHDX на Linux (через libguestfs)
guestmount -a /path/to/disk.vhdx -i /mnt/vhdx

# Размонтировать
guestunmount /mnt/vhdx

На Windows Server подключение VHDX через PowerShell:

Mount-VHD -Path C:VMsdisk0.vhdx
Dismount-VHD -Path C:VMsdisk0.vhdx
Resize-VHD -Path C:VMsdisk0.vhdx -SizeBytes 200GB

Частые вопросы

Можно ли использовать VHDX на Linux без Hyper-V?

Да. Утилита qemu-img из пакета qemu-utils читает и конвертирует VHDX на любом Linux-хосте. Для монтирования файловой системы внутри диска используется libguestfs (guestmount).

В чём разница между фиксированным и динамическим VHDX?

Фиксированный VHDX занимает весь заявленный объём на хосте сразу — предсказуемая производительность, меньше фрагментации. Динамический растёт по мере записи данных — экономит место, но медленнее при активном росте диска.

Как конвертировать VHDX в формат для KVM или Proxmox?

Командой qemu-img convert -f vhdx -O qcow2 disk.vhdx disk.qcow2. После этого образ можно импортировать в Proxmox через GUI или команду qm importdisk.

Что такое AVHDX?

AVHDX — файл дифференцирующего (разностного) диска, создаваемый Hyper-V при снятии снапшота. Все изменения после снапшота пишутся в AVHDX, а базовый VHDX остаётся неизменным до момента слияния.