迁移步骤
查询对应的虚拟机id
关闭虚拟机
qm shutdown 102
2️⃣ 导出磁盘为文件
qm exportdisk 102 /tmp/vm102-disk0.raw local qm exportdisk 102 /tmp/vm102-disk1.raw local
3️⃣ 转换为 VMware 格式
qemu-img convert -f raw -O vmdk -o subformat=streamOptimized /tmp/vm102-disk0.raw /tmp/vm102-disk0.vmdk ``qemu-img convert -f raw -O vmdk -o subformat=streamOptimized /tmp/vm102-disk1.raw /tmp/vm102-disk1.vmdk
4️⃣ 传输到 VMware 主机
scp /tmp/vm102-disk*.vmdk root@192.168.xx.xx:/vmware/vm102/
5️⃣ 在 VMware 中新建虚拟机
- 系统类型:CentOS 7 x64
- 控制器:LSI Logic SAS
- 网卡:E1000
- 删除自动生成的虚拟磁盘,改为“使用已有磁盘”,选择你传过去的
.vmdk。
实操迁移步骤
一、关闭虚拟机
- 关机
qm shutdown 102
2. 查询虚拟机是否关闭
qm status 102
# 输出status: stopped
- 找到磁盘文件
qm config 102 | grep disk
二、挂载外部硬盘
- 插入硬盘后使用lsblk命令列出所有块设备
lsblk
- 创建挂载目录
mkdir -p /mnt/sdb
✅ 成功: 没有输出(静默执行表示成功) ❌ 失败: 若提示“权限不足”,请确认是 root 用户。
- 挂载硬盘
mount /dev/sdb1 /mnt/sdb
✅ 成功: 无输出。 ❌ 失败: 若提示 mount: unknown filesystem type,可能没格式化;执行下面命令
❌❌提示:实操中我从未执行过格式化命令,慎重操作
lsblk -f /dev/sdb1
4. 验证挂载成功
df -h | grep sdb
✅ 成功样例:
/dev/sdb1 1.8T 200G 1.6T 12% /mnt/sdb
❌ 失败: 没有任何输出,说明未挂载成功。
- 准备导出目录
mkdir -p /mnt/sdb/vm102
三、导出 PVE 磁盘为 VMware 格式
- 导出系统盘
qemu-img convert -p -f raw -O vmdk /dev/pve/vm-102-disk-0 /mnt/sdb/vm102/vm102-disk0.vmdk
- 导出数据盘
qemu-img convert -p -f raw -O vmdk /dev/pve/vm-102-disk-1 /mnt/sdb/vm102/vm102-disk1.vmdk
- 验证导出结果
ls -lh /mnt/sdb/vm102/
- 验证导出文件的逻辑容量(虚拟大小)(可选操作)
qemu-img info /mnt/sdb/vm102/vm102-disk1.vmdk
正常输出会类似:
image: /mnt/sdb/vm104/vm104-disk1.vmdk ``file format: vmdk virtual size: 100G (107374182400 bytes) ``disk size: 77G
解释:
- virtual size: VMware 看到的虚拟容量(100G)
- disk size: 实际文件大小(77G)
- file format: vmdk(没问题)
💡 所以在 VMware 里,这块盘依然会显示为 100 GB 的虚拟磁盘。
四、卸载硬盘
- 导出完成后卸载
umount /mnt/sdb
✅ 成功:无输出。
❌ 若提示 “target is busy”,执行下面命令,查看哪个进程占用后结束它。
lsof | grep /mnt/sdb
五、传输
- 拔下硬盘带去 VMware
- 或用 SCP 拷贝:
# 验证机104到192.168.65.32机器上去验证
scp -r /mnt/sdb/vm104 root@192.168.65.32:/vmfs/volumes/datastore1/
导入步骤
一、创建虚拟机
插入硬盘后,把硬盘中的要拷贝的文件复制到电脑中,下面操作不要直接选用硬盘中的文件!!!!
选择稍后安装,因为已经有PVE导出来的系统盘和数据盘文件,不需要安装操作系统
选择准虚拟化SCSI(P)
选择IDE(I)
不要直接选择硬盘中的磁盘文件,并且要保持现有格式
网络适配器->网络连接->桥接模式下,要勾选“复制物理网络连接状态”
创建好虚拟机后,右键“设置”->硬盘,选择添加,将第二个磁盘文件放进去,或者在创建虚拟机时选择添加第二块磁盘
二、固定静态ip
以固定为192.168.230.116为例
确保存在配置文件
ls /etc/sysconfig/network-scripts/ifcfg-ens33
如果不存在,就创建:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
内容如下:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.230.116
PREFIX=24
GATEWAY=192.168.230.1
DNS1=8.8.8.8
删除或备份旧的 eth0 文件:
cd /etc/sysconfig/network-scripts/ mv ifcfg-eth0 ifcfg-eth0.bak 2>/dev/null
创建/修改 ens33 配置(固定 IP 用 NetworkManager 管理):
nmcli con show # 查看当前连接名(一般是 "Wired connection 1" 或 "ens33")
nmcli con mod "有线连接 1" ipv4.addresses 192.168.230.116/24 ipv4.gateway 192.168.230.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up "有线连接 1"
nmcli con show ens33
确保 NetworkManager 自启,禁用 network 服务:
systemctl disable network
systemctl stop network
systemctl enable NetworkManager
systemctl restart NetworkManager
查看实际网卡状态
ip addr show ens33
然后查看该连接的详细 IPv4 配置:
nmcli con show "有线连接 1" | grep ipv4
关键字段:
-
ipv4.methodmanual→ 静态 IP ✅auto→ DHCP
-
ipv4.addresses→ 显示分配的 IP,例如192.168.230.116/24 -
ipv4.gateway→ 网关,例如192.168.230.1 -
ipv4.dns→ DNS,例如8.8.8.8
如果 ipv4.method: manual 且地址为 192.168.230.116,说明 IP 已固定。