物理Linux服务器转虚拟机有四种方法:一、用Clonezilla克隆磁盘并转qcow2;二、用dd+qemu-nbd复制磁盘后转换格式;三、用virt-p2v在线热迁移;四、用rsync增量同步构建虚拟机根文件系统。

如果您需要将运行中的物理Linux服务器转换为虚拟机镜像,以便在虚拟化平台中继续运行,则需采用特定的迁移流程。以下是实现此目标的步骤:
一、使用Clonezilla进行磁盘克隆
Clonezilla是一款开源的磁盘克隆与备份工具,支持从物理设备直接创建可引导的镜像文件,并兼容多种虚拟化格式。该方法适用于无网络依赖、对停机时间要求较低的场景。
1、下载Clonezilla Live ISO并制作可启动U盘或光盘。
2、将物理服务器从U盘或光盘启动,进入Clonezilla Live环境。
3、选择“device-image”模式,指定外部存储设备作为镜像保存位置。
4、选择待克隆的系统磁盘(如/dev/sda),确认分区表类型(MBR或GPT)。
5、选择压缩方式(推荐gzip),开始克隆过程,等待完成。
6、使用qemu-img将生成的Clonezilla镜像转换为qcow2格式:qemu-img convert -f raw -O qcow2 /path/to/clonezilla.img /path/to/output.qcow2。
二、使用dd命令配合qemu-nbd挂载转换
该方法通过原始块复制保留全部磁盘结构,包括引导扇区和LVM配置,适合需要精确复现物理磁盘布局的环境。
1、在物理服务器上安装qemu-utils:apt install qemu-utils(Debian/Ubuntu)或yum install qemu-img(RHEL/CentOS)。
2、使用dd将整块磁盘读取为镜像文件:dd if=/dev/sda of=/backup/sda.img bs=4M conv=noerror,sync。
3、加载nbd内核模块:modprobe nbd max_part=8。
4、将镜像映射为网络块设备:qemu-nbd --connect=/dev/nbd0 /backup/sda.img。
5、验证分区识别:fdisk -l /dev/nbd0,确认各分区可见。
6、卸载nbd设备并转换格式:qemu-nbd --disconnect /dev/nbd0,然后执行qemu-img convert -f raw -O qcow2 /backup/sda.img /vm/sda.qcow2。
三、使用virt-p2v工具在线迁移
virt-p2v是Red Hat官方提供的P2V迁移工具,支持在物理机运行状态下将系统热迁移到KVM宿主机,无需关机且自动适配虚拟硬件驱动。
1、在目标KVM宿主机上安装virt-v2v及相关依赖:dnf install virt-v2v libguestfs-tools-c。
2、在物理Linux服务器上下载并安装virt-p2v-maker,生成可启动ISO镜像。
3、重启物理服务器并从virt-p2v ISO启动,进入图形化向导界面。
4、输入目标KVM宿主机的IP地址、root凭证及目标存储池名称。
5、选择要迁移的根文件系统和交换分区,勾选“自动安装virtio驱动”选项。
6、点击“Start Migration”,等待进度条完成,系统将自动关闭物理机并启动虚拟机实例。
四、使用rsync增量同步构建虚拟机
该方法不依赖专用工具,通过文件级同步构造虚拟机根文件系统,适用于定制化强、需排除特定路径或调整内核参数的场景。
1、在虚拟化平台中创建空白虚拟机,安装相同发行版的最小Linux系统(如CentOS Stream 9 minimal)。
2、启动虚拟机并配置SSH访问,确保与物理服务器网络互通。
3、在物理服务器上执行rsync排除临时目录与设备节点:rsync -aAXH --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / root@vm-ip:/mnt/。
4、在虚拟机中chroot至新根目录:chroot /mnt /bin/bash。
5、重新安装GRUB至虚拟磁盘:grub2-install /dev/vda(根据实际虚拟磁盘名调整)。
6、更新initramfs并生成GRUB配置:dracut -f 和 grub2-mkconfig -o /boot/grub2/grub.cfg。


















