Что такое формат файла VHD?
Файл .vhd содержит виртуальный образ жесткого диска, используемый платформами виртуализации, такими как Microsoft Hyper-V, Oracle VirtualBox и Windows Virtual PC. Один файл .vhd может содержать все данные, хранящиеся на физическом жестком диске, сохраненные в той же структуре - разделы, системные файлы, обычные файлы и папки.
Возможности, предоставляемые файлами .vhd
Файлы .vhd обычно используются в качестве дисков виртуальных машин, что позволяет устанавливать и запускать несколько операционных систем без необходимости использования нескольких физических дисков или отдельных компьютеров. Это открывает множество возможностей - например, поддержку программ и приложений в различных средах. Файлы .vhd также позволяют восстанавливать выбранные каталоги или весь жесткий диск. В Windows 7 и более поздних версиях файл .vhd можно смонтировать напрямую через «Управление дисками» или с помощью командлета PowerShell Mount-DiskImage без использования стороннего ПО.
Краткая история формата VHD
Формат VHD был создан компанией Connectix, которую Microsoft приобрела в 2003 году, после чего разработала продукт Microsoft Virtual PC. Впоследствии Microsoft опубликовала спецификацию VHD в рамках программы Open Specification Promise, сделав формат бесплатным для реализации. В 2012 году были представлены значительные обновления в виде нового формата - .VHDX, который поддерживает диски большего объема (до 64 ТБ) и обладает повышенной устойчивостью к сбоям.
Типы файлов VHD
Файлы .vhd делятся на несколько типов, что облегчает управление ими:
- Фиксированный образ жесткого диска - имеет фиксированный размер, равный размеру виртуального диска; все пространство выделяется в момент создания.
- Динамический образ жесткого диска - размер файла изначально мал и растет по мере записи данных; он содержит только те секторы, которые были фактически использованы.
- Дифференциальный образ диска - отдельный файл
.vhd, который записывает только изменения относительно родительского (базового) диска; Hyper-V использует связанное расширение .AVHD для файлов контрольных точек виртуальных машин. - Связанный (сквозной) - содержит только ссылку на физический диск, предоставляя виртуальной машине прямой доступ к оборудованию.
Конкурирующими форматами дисков виртуализации являются .VMDK (VMware) и .VDI (нативный формат VirtualBox). Инструмент qemu-img позволяет конвертировать файлы между всеми этими форматами в Linux и macOS.
Безопасность и защита
РИСК: MEDIUMФайл .vhd является образом диска и не исполняется напрямую на хосте, но он может содержать полноценную загрузочную ОС, поэтому скачанный VHD может скрывать вредоносное ПО внутри гостевой системы. Запускайте недоверенные виртуальные машины изолированно (без общих папок, с ограниченной сетью). Монтирование VHD через «Управление дисками» открывает его файловую систему хосту, поэтому сканируйте неизвестные образы перед открытием файлов. VHD также хранят любые конфиденциальные данные гостя (учетные данные, личные файлы) - обращайтесь с ними как с конфиденциальной информацией. Они имеют большой размер; убедитесь в наличии свободного места перед конвертацией или копированием.
Детали формата
в двух словахПрограммы, открывающие файлы VHD
Технические подробности
глубокая спецификация| Тип контейнера | Бинарный контейнер виртуального жесткого диска - необработанный образ диска с 512-байтным футером, добавленным в конец файла |
| Cookie футера (магические байты) | ASCII-строка `conectix` (8 байт) в начале 512-байтного футера; в конце файла для фиксированных VHD и дополнительно со смещением 0 для динамических и дифференциальных VHD |
| Размер футера | 512 байт; вторая копия помещается в байт 0 в динамических и дифференциальных файлах VHD, где она служит заголовком файла |
| Максимальный размер виртуального диска | ~2040 ГБ (~2 ТБ), ограничен 32-битными полями геометрии в футере VHD |
| MIME-тип | application/x-vhd |
| Поддерживаемые типы образов дисков | Фиксированный (предварительно выделенный), Динамический (разреженный, растет при записи), Дифференциальный (дочерний диск, записывающий изменения относительно родителя), Сквозной (ссылка на физический диск) |
| Размер динамического блока | По умолчанию 2 МБ на блок; каждый блок имеет связанную битовую карту секторов, отслеживающую, какие 512-байтные секторы внутри него были записаны |
| Порядок байтов в футере | Big-endian (сетевой порядок байтов) для всех многобайтовых полей футера, включая размер, геометрию и временные метки |
| Проверка целостности | Контрольная сумма CRC-32, встроенная как в 512-байтный футер, так и в заголовок динамического диска |
| Кодирование геометрии диска | Значения Cylinder-Head-Sector (CHS), хранящиеся в футере для совместимости с загрузкой через BIOS |
| Нативное монтирование в Windows | Возможно в Windows 7 и более поздних версиях без сторонних инструментов - через «Управление дисками», `diskpart attach vdisk` или командлет PowerShell `Mount-DiskImage` |
| Формат-преемник | Заменен форматом `.vhdx`, который поддерживает виртуальные диски до 64 ТБ и добавляет журналирование метаданных для устойчивости к сбоям |
| Эмулируемый размер сектора | 512 байт (традиционная геометрия HDD), независимо от физического размера сектора хост-диска |
| Записи локатора родителя | Дифференциальные VHD хранят до 8 записей локатора родителя, поддерживая гибкое разрешение путей на разных платформах |
| Модель лицензирования | Опубликовано в рамках Microsoft Open Specification Promise, что позволяет сторонним разработчикам реализовывать формат без лицензионных отчислений |
| Выпущен | Connectix Virtual PC (early 2000s); Microsoft published the VHD spec under its Open Specification Promise in 2006 |
| Открыть стандартное | Да · без роялти |
| Спецификация | learn.microsoft.com |