Определение простыми словами
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 остаётся неизменным до момента слияния.