物理机无损迁移至PVE-用qemu-img制作qcow2 镜像

本教程适合希望将现有物理机(无论是 Linux 还是 Windows)制作成虚拟机镜像的用户。
我们将使用 Ubuntu 安装盘的「Try Ubuntu without installing」模式,通过 qemu-img 安全地导出整块硬盘为 .qcow2 文件。


一、准备工作

1. 下载 Ubuntu 安装盘

前往 Ubuntu 官网,下载 Ubuntu 22.04 LTS ISO。

2. 制作启动盘

使用 Rufus 或 balenaEtcher 制作启动 U 盘。

3. 准备目标硬盘

准备一个足够大的外接硬盘或移动 SSD,用于保存 .qcow2 镜像。
建议使用 ext4 或 NTFS 格式,不要用 exFAT(速度慢且不稳定)。


二、启动「Try Ubuntu」环境

  1. 插入启动盘,开机进入 BIOS,选择从 USB 启动。
  2. 在安装界面选择:
    「Try Ubuntu without installing」(试用 Ubuntu,不安装)。
  3. 进入桌面后按 Ctrl + Alt + T 打开终端。

此时,你已经在一个不会修改任何硬盘内容的安全环境中。


三、确认设备

在终端输入:

lsblk -f

你会看到类似:

NAME   FSTYPE LABEL UUID                                 SIZE MOUNTPOINTS
sda    ext4         1234-5678                            1.9T 
├─sda1 vfat         AB-CD                                 512M
└─sda2 ext4         5678-ABCD                             1.9T
sdb3   ext4         9abc-def0                             476G
  • /dev/sda → 系统所在的源盘
  • /dev/sdb3 → 目标外置硬盘(用于保存镜像)

四、(可选但强烈推荐)清理空闲空间:zerofree

清零空闲块能让 .qcow2 压缩得更小(通常能减半),否则磁盘上被标记为删除但还占用存储块的内容依旧会占用虚拟磁盘的空间。

sudo apt update
sudo apt install -y zerofree
sudo mount -o ro /dev/sda2 /mnt/sda2
sudo zerofree -v /dev/sda2
sudo umount /mnt/sda2

五、挂载目标硬盘

sudo mkdir -p /mnt/backup
sudo mount -o rw,async,noatime /dev/sdb3 /mnt/backup

检查挂载结果:

df -h /mnt/backup

六、正式转换:qemu-img convert

安装工具:

sudo apt install -y qemu-utils

开始转换整盘:

sudo qemu-img convert -p -O qcow2 /dev/sda /mnt/backup/mycomputer-$(date +%F).qcow2

参数解释:

参数含义
-p显示进度条
-c(可选)启用压缩(zlib 单线程压缩)
-O qcow2指定输出格式
/dev/sda源盘
/mnt/backup/...qcow2输出路径,文件名可以自己定义

📈 提示:

  • -c 压缩模式较慢,但体积更小。
  • 若追求速度,可去掉 -c

七、验证结果

转换完成后:

sudo qemu-img info /mnt/backup/XXX.qcow2

输出示例:

image: XXX.qcow2
file format: qcow2
virtual size: 1.9T
disk size: 138G
cluster_size: 65536
compression type: zlib

说明镜像制作成功 ✅

最后同步缓存并卸载:

sudo sync
sudo umount /mnt/backup

八、在 Proxmox 中导入镜像或临时测试

直接测试

将文件传到 Proxmox 主机后执行:

qm importdisk 102 /path/to/syna3090-2025-11-07.qcow2 local

或导入到 LVM-Thin 存储:

qm importdisk 102 /path/to/syna3090-2025-11-07.qcow2 local-lvm

再在虚拟机设置中:

  • 添加该磁盘到 SATA0 或 SCSI0;
  • 设置启动顺序;
  • 开机启动系统。

临时导入另一台机器测试(挂载外部存储并测试 .qcow2 镜像)

有时我们只想快速验证一个 .qcow2 镜像能否启动,不想先导入到 local-lvm
这种情况下,可以在 Proxmox 中临时注册外部移动硬盘,直接挂载并运行测试虚拟机,
测试完成后再干净删除配置。


1️⃣ 注册外部存储

假设移动硬盘已挂载到 /mnt/sdb3

pvesm add dir extern-hdd --path /mnt/sdb3 --content images --is_mountpoint yes

这一步只是在 /etc/pve/storage.cfg 写入一条记录,不会改动磁盘数据。

注册成功后:

pvesm status

会出现一行:

extern-hdd  dir  active  ...

2️⃣ 将镜像放入正确目录结构

Proxmox 要求目录型存储中的虚拟磁盘路径格式如下:

/mnt/sdb3/images/<VMID>/vm-<VMID>-disk-0.qcow2

所以:

mkdir -p /mnt/sdb3/images/102
mv /mnt/sdb3/3090-ubuntu22-251031.qcow2 /mnt/sdb3/images/102/vm-102-disk-0.qcow2

3️⃣ 创建并挂载测试虚拟机

qm create 102 --name qcow2-test --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0 --bios ovmf --machine q35
qm set 102 --sata0 extern-hdd:102/vm-102-disk-0.qcow2
qm set 102 --boot order=sata0
qm start 102

此时即可在 Proxmox Web Console 中直接启动并测试该 .qcow2 系统。


4️⃣ 测试完毕后清理环境

先销毁测试虚拟机:

qm destroy 102

然后移除临时存储定义(不会删除硬盘上的镜像):

pvesm remove extern-hdd
umount /mnt/sdb3

总结

操作命令说明
注册外部存储pvesm add dir extern-hdd --path /mnt/sdb3 --content images可在 Proxmox 中识别移动硬盘
创建/挂载 VMqm create + qm set + qm start直接运行外部 qcow2 镜像
测试完删除 VMqm destroy 102移除测试虚拟机
清理存储定义pvesm remove extern-hdd完全回退配置,不改动数据

💡 这种方法非常适合「验证镜像是否可启动」「快速迁移验证」「外部调试系统」等场景。
Proxmox 只需几条命令即可在不导入镜像的情况下直接运行外部系统盘,非常高效。


九、FAQ

问题说明
为什么进度一直 0.00%?前期在扫描映射表,属于正常现象,耐心等待。
压缩模式太慢?去掉 -c,速度会提升多倍。
文件比实际使用空间大?运行 zerofree 再转换,可大幅减小体积。
能备份 Windows 吗?可以,效果同理(系统盘完整封装)。

结语

通过 Ubuntu 安装盘的 Live 模式 + qemu-img convert
你可以在不破坏源系统的前提下,安全地将整块物理磁盘打包成 .qcow2 虚拟机镜像。

这一方法简单、安全、跨平台,非常适合:

  • 系统迁移(P2V)
  • 数据备份
  • 云环境或 Proxmox 虚拟化部署

作 者:motorbottle
链 接: https://blog.motorbottle.site/archives/657
来 源:Motor's Blog
版 权 声 明:本博客所有文章除特别声明(如【转载】)外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇