[鏡像轉換] ova文件轉換成raw文件, 導入到openstack


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、導入完成開啟虛擬機驗證虛擬機是否正常,數據是否正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM