需求

由于服务器迁移,为维护方便,将统一使用vmware 平台管理虚拟机,因此需将kvm 虚拟机统一迁至vmware

kvm 磁盘镜像转换

  • 查看虚拟机
# virsh list --all
 Id    Name                           State
----------------------------------------------------
 180   CentOS7.8-x86_64-10.65.6.61    running
  • 虚拟机镜像使用qcow2格式,进入虚拟机配置文件编辑模式:定位到磁盘节点,在type节点中就是磁盘的格式:主要查看file文件位置,有的可能分系统盘和数据盘,要注意看有几块磁盘文件,以下虚拟机有两个磁盘镜像文件
# virsh edit  CentOS7.8-x86_64-10.65.6.61
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/export/kvm_images/volume-3cd374e0-bdd0-43d9-b1d3-edc694a05b13.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/export/kvm_images/volume-3cd374e0-bdd0-43d9-b1d3-edc694a05b13-1.qcow2'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </disk>
  </devices>
  • 在将KVM虚拟机镜像迁移至esxi之前需要先转换格式,将kvm虚拟机由qcow2转换成vmdk格式,以下是两个磁盘文件,分别是系统盘和数据盘,为了防止镜像被拆分为2GB的小块,需要增加compat6的选项。登录kvm 宿主机操作:
# mkdir /export/covert-test 
# cd /export/covert-test
# qemu-img convert -f qcow2 /export/kvm_images/volume-3cd374e0-bdd0-43d9-b1d3-edc694a05b13.qcow2   -O vmdk test-91-61-os.vmdk -o  compat6   
# qemu-img convert -f qcow2  /export/kvm_images/volume-3cd374e0-bdd0-43d9-b1d3-edc694a05b13-1.qcow2  -O vmdk  test-91-61-data.vmdk -o  compat6
  • 将生成的 vmdk传到vmware服务器上,前提是vmware 先开发ssh 22端口,此演示中 10.65.0.90 为vmware esxi 虚拟化宿主机,登录vmware 创建存放vmdk 的数据目录 /vmfs/volumes/SATA/convert-test,登录kvm 宿主机操作:
# scp test-91-61-os.vmdk  test-91-61-data.vmdk 10.65.0.90:/vmfs/volumes/SATA/convert-test
  • vmware虚拟机上进行磁盘第二次转换,登录vmware 宿主机操作:
# cd /vmfs/volumes/SATA/convert-test

# vmkfstools -i test-91-61-os.vmdk  -d thin   test-91-20-os-v1.vmdk
Destination disk format: VMFS thin-provisioned
Cloning disk 'test-91-61-os.vmdk'...
Clone: 100% done.

# vmkfstools -i test-91-61-data.vmdk -d thin  test-91-20-data-v1.vmdk
Destination disk format: VMFS thin-provisioned
Cloning disk 'test-91-61-data.vmdk'...
Clone: 100% done.

# ls /vmfs/volumes/SATA/convert-test
test-91-20-data-v1-flat.vmdk  test-91-20-os-v1-flat.vmdk    test-91-61-data.vmdk
test-91-20-data-v1.vmdk       test-91-20-os-v1.vmdk         test-91-61.vmdk
  • 后在vmware上创建虚拟机选择test-91-20-os-v1.vmdk 为系统启动盘、test-91-20-data-v1.vmdk 为数据盘

创建vmware 虚拟机并解决启动过程中的报错

  • 新创建自定义虚拟机
  • kvm 导出虚机机 kvm迁移到vmware_ios

  • 启动虚拟机,但是提示报错信息,解决dracut=initqueue timeout - starting timeout scripts
  • kvm 导出虚机机 kvm迁移到vmware_kvm 导出虚机机_02

  • 加载iso 镜像,然后重启,目标是进入系统的救援模式
  • kvm 导出虚机机 kvm迁移到vmware_重启_03

  • 系统重启后无法进入安装系统界面,无法进入救援模式,需要调整bios,将启动项修改为 CD-ROM Drive启动
  • 重启虚拟机后发现vmware 平台虚拟机重启速度太快,无法进入bios 修改启动项,因此需要修改虚拟机文件配置,登录vmware 宿主机,找见此虚拟机配置文件,登录vmware 宿主机操作:
# cd /vmfs/volumes/SATA/10.16.91.20-test-91-20
# vi 10.16.91.20-test-91-20.vmx
  bios.forceSetupOnce = "TRUE"
  bios.bootDelay = "10000"
  • 重启vmware虚拟机,将 CD-ROM Drive 设置为启动第一项
  • kvm 导出虚机机 kvm迁移到vmware_d3_04

  • 重启后依次选择 Troubleshooting-->Rescue a Centos system --> 1-->执行下面的命令重新生成initramfs,如果不知道虚拟机密码,可在此模式下直接修改root 密码,方便后续再次重启进入单用户修改密码。登录此虚拟机操作:
chroot /mnt/sysimage 
dracut --regenerate-all -f && grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

kvm 导出虚机机 kvm迁移到vmware_d3_05

kvm 导出虚机机 kvm迁移到vmware_kvm 导出虚机机_06


kvm 导出虚机机 kvm迁移到vmware_ios_07


kvm 导出虚机机 kvm迁移到vmware_重启_08

  • -------------------------进行重启!----------------------------------------------------
  • 此时需要在控制台界面将iso 镜像移除,继续修改bios 将磁盘启动设置为第一位。刚开始时候是添加了两块硬盘,如果重启后找不到系统,需要进入bios 调整硬盘启动顺序即可
  • kvm 导出虚机机 kvm迁移到vmware_ios_09

  • 启动虚拟机,需要输入root 密码,有一个continue 的界面,进入系统后,配置网络发现重启网卡系统也会重启,这是因为 /etc/fstab 的问题,数据盘盘符已经更改,修改盘符 /dev/sdb1 后,执行挂载操作,确认挂载正常后重启系统。

kvm 导出虚机机 kvm迁移到vmware_d3_10

  • 配置网卡
此次从kvm 迁移至vmware 后发现网卡名成为了 ens192,修改网卡配置文件后重启网卡,网络正常。

至此。KVM虚拟机迁移至VMWare ESXi 施工完成。