虚拟硬盘 (.vhd)

Microsoft 标准

虚拟硬盘 (VHD) 是微软经典的虚拟硬盘格式,随 Virtual PC 和 Hyper-V 一起引入,用于将完整的操作系统磁盘、分区和文件系统封装到单个文件中。

将 VMDK 转换为 VHD

免费的浏览器端 VMDK 转 VHD 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 VHD 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 VHD 文件:

十六进制签名 (偏移量 0):

63 6F 6E 65 63 74 69 78

ASCII 表示形式: conectix

标准化: Microsoft Virtual Hard Disk Image Format Specification

技术规格

容器架构512 字节的尾部位于文件末尾,包含“conectix”标识(动态磁盘和差分磁盘的文件开头也有一份副本)
压缩方式未压缩;动态磁盘采用稀疏分配
字节序尾部和块分配表(BAT)采用大端序
色彩空间不适用(虚拟硬盘)
通道与结构完整虚拟硬盘:MBR/GPT 分区表、NTFS/FAT 文件系统和扇区块
最大尺寸2 太字节(32 位扇区架构限制为 2,040 GB)
透明度无
流式传输与渐进式加载直接映射扇区,以便实时虚拟化操作系统

技术对比矩阵:VHD 对比同类产品

技术属性VHD (当前)VHDXVMDKQCOW2
最大容量2 太字节 (2,040 GB)64 太字节62 太字节2 拍字节
原生 Windows 挂载100% 原生(磁盘管理)100% 原生(磁盘管理)需要 VMware 或驱动程序需要第三方工具
魔术字节conectix (0x63 0x6F 0x6E 0x65...)vhdxfileKDMV (0x4B 0x44 0x4D 0x56)QFIû (0x51 0x46 0x49 0xFB)
弹性适中(无写入日志)高(基于日志的元数据日志记录)高高

常见损坏模式与十六进制恢复指南

Windows 磁盘管理错误:"虚拟磁盘文件已损坏且无法打开"。

根本原因: 文件末尾缺少或截断了 512 字节的"conectix"尾部。

恢复方法: 使用 File2File.app VHD 工具重新生成并附加缺少的尾部。

安全分析与解析器攻击向量

虚拟化管理程序中的 VHD 解析器会解析块分配表 (BAT),并且必须对其进行边界检查,以防止宿主机内存损坏。

已知攻击向量

  • 块分配表 (BAT) 偏移计算期间的整数溢出。
  • 通过虚拟存储驱动程序中的越界扇区写入实现虚拟机管理程序逃逸。
  • 通过格式错误的父子差异磁盘链循环导致拒绝服务。

防御性最佳实践: 在隔离的沙盒中严格以只读模式挂载不受信任的 VHD 文件。

历史渊源与里程碑

2012Windows Server 2012 引入了 VHDX,将最大容量从 2 TB 扩展到 64 TB。
2008Windows 7 和 Windows Server 2008 R2 引入了原生的 VHD 挂载和直接 VHD 启动。
2003微软收购 Connectix 公司并公开发布了 VHD 规范。

核心优势与特点

  • 原生 Windows 集成:可以直接在 Windows 磁盘管理中挂载为物理驱动器盘符。
  • 原生 VHD 启动:Windows 无需虚拟机管理程序,即可直接从物理硬件上的 .vhd 文件启动。
  • 支持固定、动态扩展(稀疏)以及差异父子磁盘配置。

技术局限与劣势

  • 架构容量硬性上限为 2 太字节(更大容量的驱动器可使用 VHDX)。
  • 更新动态块分配表时如果断电,文件可能损坏。
  • 不支持 QCOW2 等现代格式所具备的原生集群压缩。

趣味技术冷知识

  • 每个有效的 VHD 文件都在其 512 字节的文件尾部包含 ASCII 魔数"conectix",以纪念最初发明 Virtual PC 的公司。
  • 在固定 VHD 中,512 字节的尾部仅位于文件末尾;在动态 VHD 中,尾部的副本作为标头放置在字节 0 处。
  • 微软 Azure 最初将 VHD 用作所有云虚拟机的基础磁盘格式。

常见技术问题

VHD 和 VHDX 有什么区别?

VHD 是微软的旧格式,限制为 2 TB。VHDX 是现代的替代品,支持高达 64 TB,并具有防止损坏的断电保护功能。

如何在 Windows 上挂载 VHD 文件?

在 Windows 中,按 Win+X,打开“磁盘管理”,点击顶部菜单中的“操作”,然后选择“附加 VHD”将其挂载为驱动器盘符。

如何将 VHD 转换为 VMDK 或 ISO?

您可以直接在浏览器的 File2File.app 中将 VHD 文件转换为 VMware VMDK、原始磁盘映像或 ISO。