【v2v遷移】Xen2kvm 遷移-Windows篇

2023-10-17 21:00:22

導讀:

本文系原創,歡迎規範轉載。
本文描述瞭如何處理window虛擬機器器從xen虛擬化遷移kvm虛擬化遇到問題,包括安裝virtio驅動等。

系列文章:

xen2kvm遷移-Windows篇
xen2kvm遷移-Linux篇

遷移環境:

源平臺:華為FusionComputeV100R006C10SPC101
目標平臺:基於KVM虛擬化的雲平臺,本文以原生的libvirt為例
虛擬機器器:Windows server 2012 R2

具體操作步驟:

本文的前3個步驟與【v2v遷移】Xen2kvm 遷移-linux篇基本一致:匯出vhd,安裝qemu-img-hw工具,轉換格式等。

注意:
匯出之前,在源Windows系統上解除安裝uvp-vmtools,否則虛擬機器器藍屏無法啟動。

1、在源平臺匯出格式為ovf的磁碟映象


匯出後,得到vhd檔案:xen_win2012_C.vhd。將該檔案傳輸到裝有libvirt和相關工具套件的Linux環境上,本文所使用的是一臺centos7.6物理機,部署了GUI介面,安裝了libvirt libvirt-client qemu-img virt-manager等工具。

2、下載華為自研的qemu-img-hw命令

解壓得到命令,為命令賦予執行許可權:

$ unzip qemu-img-hw.zip
$ cd qemu-img-hw.zip
$ chmod a+x qemu-img-hw

華為公有云檔案描述:zvhd和zvhd2是雲服務內部自研格式,qemu-img工具無法識別這兩種格式的映象檔案,需要使用qemu-img-hw:

# 使用華為提供的qemu-img-hw看到的映象格式是zvhd
[root@hyperhost ~]$ qemu-img-hw info xen_win2012_C.vhd
image: xen_win2012_C.vhd
file format: zvhd
virtual size: 20G (21474836480 bytes)
disk size: 9.2G

# 使用原生工具qemu-img看到的映象格式是raw:
[root@hyperhost ~]$ qemu-img info xen_win2012_C.vhd
image: xen_win2012_C.vhd
file format: raw
virtual size: 9.2G (9879011328 bytes)
disk size: 9.2G

3、zvhd轉換為qcow2格式:

轉換時間依資料量而定

# 這裡的目標是一個邏輯卷,需要提前建立:
# 使用qemu-img-hw info 看到的虛擬大小是,因此建立一個20GiB的映象檔案:
[root@hyperhost ~]$ lvcreate -L 20GiB -n vmpool-1/xen_win2012
  Logical volume "xen_win2012" created.

# 轉換格式:
[root@hyperhost ~]$ qemu-img-hw convert -p -f zvhd -O qcow2 xen_win2012_C.vhd /dev/vmpool-1/xen_win2012
    (100.00/100%)

# 檢查格式:
[root@hyperhost ~]$ qemu-img-hw info /dev/vmpool-1/xen_win2012
image: /dev/vmpool-1/xen_win2012
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

4、設定驅動

virtio-win下載連結

# 在宿主機上下載一個rpm包(下載最新版):
[root@hyperhost ~]$ wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240-1.noarch.rpm

# 本地安裝:
[root@hyperhost ~]$ yum localinstall virtio-win-0.1.240-1.noarch.rpm

把驅動iso設定為一個storage pool:在virt-manager上點選edit,選擇connection details,進一步選擇storage,點選左下角➕新建一個pool。型別選擇dir,路徑選擇/usr/share/virtio-win/,就可以看到virtio-win.iso了。之後新建虛擬機器器時掛載這個iso給虛擬機器器,就可以安裝驅動了。

5、部署為kvm虛擬機器器

本文使用virt-manager將qcow2磁碟部署為虛擬機器器:

如果建立虛擬機器器後直接開機,會報找不到磁碟:

這裡我們對磁碟匯流排型別做一些修改:
磁碟匯流排型別是IDE,儲存型別是raw,這裡我們修改為qcow2格式就可以啟動了。

為了安裝virtio磁碟驅動,我們為這臺虛擬機器器新增一塊1G的磁碟,匯流排型別選擇virtio,儲存型別隨意:

為了安裝virtio網路卡驅動,我們將這臺虛擬機器器的網路卡的裝置型別從e1000修改為virtio:

新增一個cdrom裝置,掛載驅動iso,匯流排型別選擇IDE或者SATA都行:

6、開機,進入裝置管理器,為裝置安裝驅動

安裝驅動:

位置選擇光碟機D槽,單擊下一步:

自動查詢驅動後提示安裝,選擇安裝:

所有驅動安裝後,就可以看到使用virtio匯流排型別的網路卡裝置和第二塊磁碟:

在OpenStack平臺,建議安裝qemu-guest-agent,Windows2008可能不支援:

7、收尾工作

關機,解除安裝網路卡,解除安裝cdrom,解除安裝磁碟等。匯出磁碟,刪除臨時虛擬機器器等。

上傳OpenStack平臺之前,可以使用工具壓縮映象大小:

[root@hyperhost ~]$ qemu-img-hw convert -p -c -O qcow2 /dev/vmpool-1/xen_win2012 win2k12r2_1.qcow2

上傳OpenStack平臺:

[root@openstack ~]$ openstack image create --file <FILE> --container-format bare --disk-format qcow2 --min-disk <disk-gb> --min-ram <ram-mb> --property os_type=windows  --property hw_qemu_guest_agent=yes --public <image-name>


--property os_type=windows      # 指明映象的作業系統型別,有助於正確顯示系統時間
--property hw_qemu_guest_agent=yes       # 表明映象安裝了qga,宿主機生成時會自動建立裝置與之連線通訊