公司有部分虚拟机运行在vmware workstation上,现在需要迁移到pve上组集群运行,记一下操作的流程
导出vmware虚拟机
在vmware workstation中选中要导出的虚拟机,选择菜单栏的“文件”-“导出为OVF”,选择导出的位置
导出完成后会看到几个文件,其中以“vmdk”结尾的文件就是虚拟机的磁盘文件,把磁盘文件复制到pve节点上
导入到PVE
在PVE中创建一个空白虚拟机,不要挂载磁盘,手动导入vmware导出的磁盘文件
通过Shell登录pve,执行以下命令导入磁盘文件:
qm disk import 5001 ./pgsqlVm_old-disk1.vmdk local --format qcow2
5001是空白虚拟机的id,后面是vmdk文件的位置,local是磁盘文件导入后存储的位置,格式选qcow2
导入完成后,可以看到虚拟机多了一块未使用的磁盘
双击这块磁盘,修改参数,挂载到虚拟机内
还需要修改启动顺序,让虚拟机从我们导入的磁盘启动
修改完成后即可启动虚拟机
Linux启动失败修复
直接导入的磁盘可能会出现系统启动失败的现象:
出现这个错误的原因是原系统在vmware虚拟机内安装时,生成的initramfs镜像内不包含pve虚拟机的scsi控制器驱动,所以认不到pve挂载的虚拟硬盘,需要重新生成initramfs镜像
重启到grub界面,选择rescue模式启动
以rescue模式启动后,用原系统的帐号密码登录,输入以下命令重建initramfs镜像:
dracut -f /boot/initramfs.img kernelVersion
其中,initramfs镜像名要和/boot
下的对应,加-f
是为了直接覆盖旧有镜像,后面的kernelVersion要和/usr/lib/modules
下的版本号一致
重新生成initramfs后,重启虚拟机,顺利进入系统