一簡介:
virt-v2v是將外部的虛擬化平台上的虛擬機轉化到可以運行的KVM平台上。它可以讀取在VMware、Xen運行Hyper-V和其他虛擬機管理程序上的Windows和Linux的虛擬機,並將其轉換為KVM的libvirt,OpenStack等幾種方式。
ESXI 平台下線,將虛機遷移至openstack 運行,但windows 虛機,大多是存在驅動問題的,因此需要先考慮驅動問題。
二、安裝軟件
# yum install -y qemu-kvm libvirt virt-manager virt-v2v
三、命令介紹
1、 查看EXSI 主機虛機列表
#virsh -c esx://root@EXSI_server_IP?no_verify=1 list --all ## EXSI_server_IP : EXSI 主機IP,需要輸入服務器的root 密碼
2、拷貝虛擬機到本地,拷貝完成后會在當前目錄生成一個xml文件和disk1磁盤文件,同樣也是需要輸入EXSI 服務器密碼
#mkdir /data #創建用於存放文件的目錄
#virt-v2v-copy-to-local -ic esx://root@EXSI_server_IP?no_verify=1 vm_name #vm_name: 需要拷貝到本地的虛機名稱(在步驟一中獲取)

3、轉換數據格式,把磁盤文件的格式轉換成OpenStack能夠識別的格式 (如果有報錯,查看最后的報錯總結)
# mkdir /data/vms #創建用於存放格式轉換后的文件
# virt-v2v -i libvirtxml vm_name.xml -o local -os vms/ -of raw # -of :轉換為row 格式 -os :指定輸出路徑 vm_name.xml:為第二步驟中生成的文件

4、將轉換完成后的 vm_name-sda 文件上傳至openstack中,啟動新的虛機。
流程:創建卷-->通過rbd 導入 vm_name-sda 的設備---> 啟動虛機
四、報錯總結:
第三步報錯:Failed to connect socket to '/var/run/libvirt/libvirt-sock'
解決:
1、# groupadd libvirtd #增加libvirtd用戶組
2、# sudo usermod -a -G libvirtd $USER #設置用戶到組
3、# vi /etc/libvirt/libvirtd.conf #取消注釋並修改為如下:

4、增加權限啟動配置
vi /etc/polkit-1/localauthority/50-local.d/50-org.libvirtd-group-access.pkla [libvirtd group Management Access] Identity=unix-group:libvirtd Action=org.libvirt.unix.manage ResultAny=yes ResultInactive=yes ResultActive=yes
5、重啟服務
# service libvirtd restart