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

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

- VHD 支持稀疏文件（体积更小）
- 兼容 **Hyper-V**
- 可控、可校验、可恢复

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

---

## 一、前置强烈建议（重要）

### 1️⃣ 确保分区未被写入

```bash
mount | grep vdc1

```

- **理想状态**：未挂载
- 如果已挂载，务必只读卸载：

```bash
umount /dev/vdc1

```

---

### 2️⃣ 确认分区信息

```bash
lsblk -f /dev/vdc

```

---

## 二、安装必需工具（Ubuntu 14.04 可用）

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

```

确认：

```bash
qemu-img --version

```

---

## 三、推荐方案（最优）：直接转为 VHD

### 命令（标准、安全）

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

```

说明：

<table id="bkmrk-%E5%8F%82%E6%95%B0-%E5%90%AB%E4%B9%89--p-%E6%98%BE%E7%A4%BA%E8%BF%9B%E5%BA%A6--f-raw"><thead><tr><th>参数</th><th>含义</th></tr></thead><tbody><tr><td>`-p`</td><td>显示进度</td></tr><tr><td>`-f raw`</td><td>输入是裸设备</td></tr><tr><td>`-O vpc`</td><td>输出为 VHD（Hyper-V）</td></tr><tr><td>`/dev/vdc1`</td><td>整个分区</td></tr><tr><td>`vdc1.vhd`</td><td>目标文件</td></tr></tbody></table>

---

## 四、如果你想“更稳妥”（推荐生产）

### 方案：raw → vhd（两步）

#### 1️⃣ 先做 raw 镜像

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

```

#### 2️⃣ 转换为 VHD

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

```

完成后可删除 raw：

```bash
rm -f /home/shuncom/vdc1.raw

```

---

## 五、校验与确认（必须做）

### 1️⃣ 查看 VHD 信息

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

```

应看到：

```text
file format: vpc
virtual size: XXXG

```

---

### 2️⃣ （可选）做 hash 校验

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

```

---

## 六、常见问题与坑

### ❗ XFS / ext4 都支持

- ext4：完全没问题
- XFS：**必须卸载或只读**

---

### ❗ 空间不足

VHD 虽然是稀疏文件，但仍需：

- 至少 **10–20% 剩余空间**
- 用 `df -h` 提前确认

---

### ❗ 分区 vs 整盘区别

你现在导出的是：

```text
/dev/vdc1   ← 分区（常用，正确）

```

如果你想要 **MBR/GPT + 全盘**，应使用：

```bash
/dev/vdc

```

---

## 七、导入 Hyper-V 的注意事项（提前提醒）

- 建议用 **Generation 1**（尤其是老系统 / BIOS）
- Linux 内核 3.x（14.04）兼容性更好
- 启动失败时检查：
    
    
    - grub
    - fstab 中 UUID

---

## 八、我可以继续帮你

如果你后续是要：

- 导入 Hyper-V 无法启动
- 要合并系统盘 + 数据盘
- 转 VHDX / QCOW2 / VMDK
- 写自动化脚本

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