ova转raw

在此之前要确保源vmware虚拟机系统支持virtio和已经安装virtio驱动[检查virtio驱动并安装]
使用工具: qemu-img、libguestfs-tools、libguestfs-winsupport # 从vmware导出ova文件, tar 解压导出来的ova文件

$ tar xvf /root/UCarApp1_clone.ova -C $(pwd)
$ ls
UCarApp1_clone-disk1.vmdk  UCarApp1_clone.mf  UCarApp1_clone.ovf
  • 1.
  • 2.
  • 3.

# 利用qemu-img将vmdk转换成raw既可以

$ qemu-img convert -f vmdk -O raw UCarApp1_clone-disk1.vmdk UCarApp1_clone-disk1.raw
$ ls 
UCarApp1_clone-disk1.raw UCarApp1_clone-disk1.vmdk  UCarApp1_clone.mf  UCarApp1_clone.ovf
  • 1.
  • 2.
  • 3.

# 查看镜像分区使用情况

$ virt-df -h UCarApp1_clone-disk1.raw
文件系统                            大小 已用空间 可用空间 使用百分比%
UCarApp1_clone-disk1.raw:/dev/sda1        497M       180M       316M   37%
UCarApp1_clone-disk1.raw:/dev/centos/home
                                          441G        49G       392G   12%
UCarApp1_clone-disk1.raw:/dev/centos/root
                                           50G       9.2G        41G   19%
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
管理镜像[可直接跳过]

# 使用guestfish管理镜像

$ guestfish -a UCarApp1_clone-disk1.raw
><fs> run
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
><fs> 
><fs> list-filesystems 
/dev/sda1: xfs
/dev/centos/home: xfs
/dev/centos/root: xfs
/dev/centos/swap: swap
><fs> list-devices 
/dev/sda
><fs> list-partitions 
/dev/sda1
/dev/sda2
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

可使用ntfsresize-size压缩镜像分区大小
ntfsresize-size /dev/sda1 15G
退出后可使用qemu-img resize -f raw UCarApp1_clone-disk1.raw压缩镜像文件

检查虚拟机状态[可直接跳过]

# 使用virt-install工具启动虚拟机看看是否正常, 正常则执行下一步进行迁移

$ virt-install --name demo-guest1 --memory 2048 --vcpus 2 --os-variant rhel8.0 --graphics vnc,listen=0.0.0.0 --import --disk UCarApp1_clone-disk1.raw,bus=ide
# 如果disk类型为sda或hda,则bus=ide
# 如果disk类型为vda,则bus=virtio
  • 1.
  • 2.
  • 3.
迁移步骤

# 使用rbd 替换块存储,完成迁移

# 1、把UCarApp1_clone-disk1.raw 传到ceph-mon节点,且服务器要有足够的可用空间。
$ scp  UCarApp1_clone-disk1.raw ceph-monNode:/root/

# 2、openstack 平台image需要注入hw_disk_bus=ide, hw_scsi_model=virtio-scsi 元数据(如vmware倒出的系统磁盘是scsi类型则需要注入元数据)。
$ openstack image set  e954deb1-a3b0-486b-917e-a4adc2307fdd --property hw_disk_bus=scsi  --property hw_scsi_model=virtio-scsi


# 3、利用上述的image, 在openstack平台创建一台虚拟机,虚拟机的磁盘大小要等同于UCarApp1_clone-disk1.raw磁盘大小,创建好后关机。
$ qemu-img info UCarApp1_clone-disk1.raw 
  virtual size: 500G (536870912000 bytes) # 磁盘大小为500G
$ 创建虚拟机步骤自己脑补

# 4、找到要替换虚拟机磁盘的id[自己找],利用rbd 找到相应的块设备。并记录起来, 后面删除块设备和导入新数据要用。
$ 本环境磁盘id=46db91bb-3786-4501-9c05-e74735942a83
$ 本环境虚拟机所在后端存储池[自己找]=pool-1e54f53e1ea64a3ebb1d9045cea154f9
$ rbd -p pool-1e54f53e1ea64a3ebb1d9045cea154f9 ls | grep 46db91bb-3786-4501-9c05-e74735942a83
   volume-46db91bb-3786-4501-9c05-e74735942a83

# 5、删除相应的rbd块设备
$ rbd -p pool-1e54f53e1ea64a3ebb1d9045cea154f9  rm volume-46db91bb-3786-4501-9c05-e74735942a83

# 5、导入新的数据
$ rbd import -p pool-1e54f53e1ea64a3ebb1d9045cea154f9 UCarApp1_clone-disk1.raw volume-46db91bb-3786-4501-9c05-e74735942a83

# 6、导入完成开启虚拟机验证虚拟机是否正常,数据是否正常。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.