Skip to main content

在 Ubuntu 14.04 环境下,将 整块分区 /dev/vdc1 转换为 VHD 文件

Ubuntu 14.04 环境下,将 整块分区 /dev/vdc1 转换为 VHD 文件 并保存到
/home/shuncom/推荐使用 qemu-img,而不是直接 dd,因为:

  • VHD 支持稀疏文件(体积更小)

  • 兼容 Hyper-V

  • 可控、可校验、可恢复

下面给你一套 生产可用、一步到位 的做法。


一、前置强烈建议(重要)

1️⃣ 确保分区未被写入

mount | grep vdc1
  • 理想状态:未挂载

  • 如果已挂载,务必只读卸载:

umount /dev/vdc1

2️⃣ 确认分区信息

lsblk -f /dev/vdc

二、安装必需工具(Ubuntu 14.04 可用)

apt-get update
apt-get install -y qemu-utils

确认:

qemu-img --version

三、推荐方案(最优):直接转为 VHD

命令(标准、安全)

qemu-img convert \
  -p \
  -f raw \
  -O vpc \
  /dev/vdc1 \
  /home/shuncom/vdc1.vhd

说明:

参数 含义
-p 显示进度
-f raw 输入是裸设备
-O vpc 输出为 VHD(Hyper-V)
/dev/vdc1 整个分区
vdc1.vhd 目标文件

四、如果你想“更稳妥”(推荐生产)

方案:raw → vhd(两步)

1️⃣ 先做 raw 镜像

dd if=/dev/vdc1 \
   of=/home/shuncom/vdc1.raw \
   bs=64M \
   status=progress

2️⃣ 转换为 VHD

qemu-img convert -p -f raw -O vpc \
  /home/shuncom/vdc1.raw \
  /home/shuncom/vdc1.vhd

完成后可删除 raw:

rm -f /home/shuncom/vdc1.raw

五、校验与确认(必须做)

1️⃣ 查看 VHD 信息

qemu-img info /home/shuncom/vdc1.vhd

应看到:

file format: vpc
virtual size: XXXG

2️⃣ (可选)做 hash 校验

sha256sum /home/shuncom/vdc1.vhd > /home/shuncom/vdc1.vhd.sha256

六、常见问题与坑

❗ XFS / ext4 都支持

  • ext4:完全没问题

  • XFS:必须卸载或只读


❗ 空间不足

VHD 虽然是稀疏文件,但仍需:

  • 至少 10–20% 剩余空间

  • df -h 提前确认


❗ 分区 vs 整盘区别

你现在导出的是:

/dev/vdc1   ← 分区(常用,正确)

如果你想要 MBR/GPT + 全盘,应使用:

/dev/vdc

七、导入 Hyper-V 的注意事项(提前提醒)

  • 建议用 Generation 1(尤其是老系统 / BIOS)

  • Linux 内核 3.x(14.04)兼容性更好

  • 启动失败时检查:

    • grub

    • fstab 中 UUID


八、我可以继续帮你

如果你后续是要:

  • 导入 Hyper-V 无法启动

  • 要合并系统盘 + 数据盘

  • 转 VHDX / QCOW2 / VMDK

  • 写自动化脚本

直接告诉我你的 最终目标平台,我可以直接给你下一步命令级方案。