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
# 利用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
# 查看鏡像分區使用情況
$ 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%
管理鏡像[可直接跳過]
# 使用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
可使用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
遷移步驟
# 使用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、導入完成開啟虛擬機驗證虛擬機是否正常,數據是否正常。