我有 vhdx 格式的单个分区(不是完整磁盘)的映像。我想用它们创建带有 Hyper-V 的虚拟机。由于映像只是分区,因此机器无法启动。
如何添加磁盘头或将多个 vhdx 分区合并到带有头的单个 vhdx 磁盘。
注意:我有 2 个用例:
- 来自 WindowsServerBackup(/WindowsImageBackup) 的 vhdx 图像
- 使用 dd 从 lvm 快照创建并使用 qemu-img 转换的 linux ext4 分区
我知道分区大小,因为源服务器必须运行
答案1
虽然不具有权威性,但我认为您的问题的答案是,这取决于原始系统磁盘是 mbr 还是 gpt。对于 Windows,我认为您必须在数据位置之前添加启动分区,使用(MBR 磁盘)fixmbr 和 fixboot 使磁盘可启动,并可能使分区处于活动状态(通过 diskpart),或者为 GPT 和 UEFI 重新创建 EFI 和 MSR 分区。我认为这篇文章解释了 UEFI 的所有内容:http://woshub.com/如何修复已删除的 efi 分区在 windows-7 中/
替代选项 1:您可以在 vhd 上全新安装 Windows,然后删除 Windows 分区,添加仅分区磁盘,并修复启动过程(启动修复)...
替代选项 2:一种变通方法,而不是直接回答......也许,我不记得我是否成功尝试过,但也许......
创建一个连接到 VM 的新 vhdx,在其上执行基本的 Windows 安装,然后关闭并将仅分区的 vhdx 作为附加磁盘连接,然后启动到 gparted 或您喜欢的其他恢复 iso 工具(Hirens 64?),并将分区复制(克隆)到现有分区的顶部。
然后,您可能需要在 Windows 设置启动 > 修复 > 命令提示符中使用 bcdedit 解决一些启动问题。
备选方案 3:如果 Windows 备份是系统映像备份,您也可以通过 winsetup > repair 使用命令行 wbadmin 工具来恢复它。需要满足一些先决条件,例如,您需要相同数量的“物理”磁盘来恢复(如果是在 VM 中,则为附加的 vhd),其容量要与原始磁盘相同或更大 - 即使它是一个 8TB 的磁盘,但只使用了 1MB,您也需要一个 >8TB 的虚拟磁盘来恢复。
当您更换磁盘并修复东西时,不要忘记检查 hyper-v 中的启动顺序;您可能会因为启动顺序不正确而误以为您没有修复它。
我不确定 Linux,但对于 Windows,您还需要将 VM 生成与原始系统类型相匹配 - 例如在 hyper-v 中,第 1 代 VM 用于预 UEFI 启动(传统的基于 BIOS 的系统),第 2 代 VM 用于 UEFI 启动系统。