遷移 VMware 虛擬機到 KVMhtml
簡介: 目前 x86 平臺上最流行的虛擬化軟件是 VMware 公司的系列產品,而基於開源技術的 KVM 虛擬化軟件也獲得了普遍的應用。本文是虛擬化遷移技術系列文章的第三部分,詳細介紹瞭如何使用 virt-v2v 開源工具或者手動方法遷移建立在 VMware 軟件上的 Window 及 Linux 虛擬機到基於 KVM 的虛擬機,而且從功能上比較了虛擬機系統遷移先後的變化,最後總結了 VMware 虛擬機到 KVM 遷移的不足和注意事項。linux
前言web
隨着虛擬化技術的不斷髮展,虛擬機的應用也愈來愈普遍。平常應用中可能出現資源不足,系統管理調整或者系統備份等緣由,但願將某一虛擬機從原來物理主機遷移到另外一個物理主機上,即 V2V(Virtual-to-Virtual)遷移。虛擬機的遷移須要物理主機上 VMM(Virtual Machine Monitor)的支持。相同類型 VMM 之間,使用相同的 API 接口,一般具備強大的遷移能力。例如本系列第二篇文章介紹的 KVM 虛擬機之間的遷移,它支持三種遷移方式:離線遷移、在線共享存儲遷移和在線塊遷移。而不一樣的 VMM 之間,因爲虛擬化實現技術的不一樣、開發廠商的不一樣、API 接口的不一樣,使虛擬機遷移困難重重。本文分別介紹如何靜態遷移 VMware ESX/ESXi、VMware Workstation 及 VMware Player 上的虛擬機到 KVM 主機。編程
VMware 虛擬機遷移到 KVM 的方式ubuntu
虛擬機 V2V(Virtual-to-Virtual)遷移是在虛擬機之間移動操做系統和數據, 照顧主機級別的差別和處理不一樣的虛擬硬件。V2V 的遷移方法有兩種,靜態遷移和在線遷移。靜態遷移(offline migration)也叫作常規遷移、離線遷移。在遷移以前將虛擬機暫停,同時拷貝虛擬機鏡像和狀態到目的主機。相比較於在線遷移(online migration),其缺點是靜態遷移方式的過程須要顯式的中止虛擬機的運行,而在線遷移的過程僅有很是短暫的停機時間,保證遷移過程當中虛擬機服務的持續可用;優勢是兼容性強,不須要 VMM 的有統一的 API 接口,能夠藉助第三方工具輔助遷移。因爲目前 VMM 的開發沒有統一的標準,不一樣的虛擬化廠商,尤爲是閉源的商業廠商開發的 VMM 各成一套,靜態遷移是解決不一樣類型虛擬機之間遷移的有效辦法。本文采用 V2V 靜態遷移的方法實現 VMware 虛擬機到 KVM 的遷移,同時介紹開源遷移工具 virt-v2v 的使用。服務器
VMware 產品簡介ide
VMware 是全球虛擬化解決方案的領導廠商,提供了一套虛擬機解決方案,按產品特色可分爲以下四類。 工具
本文主要遷移建立在 VMware ESX/ESXi、VMware Workstation 和 VMware Player 上的虛擬機到 KVM 主機上,遷移後的虛擬機能夠被開源的 libvirt 軟件管理。性能
成功遷移虛擬機的一個重要的驗證標準就是文件的正確性和完整性。下圖中列出與 VMware 虛擬機相關的文件,可是遷移 VMware 虛擬機到 KVM 並不須要用到全部的文件。
VMware 虛擬機的文件主要包括 .nvram 文件,.vmx 文件,vmdk 文件,.vswp 文件,.vmss 文件,.vmsd 文件,.vmsn 文件,.log 文件,.vmxf 文件。與遷移相關的最主要的是 .vmx 文件和 .vmdk 文件。
如下的虛擬機文件有些只在虛擬機處於的某種狀態時出現,遷移過程當中不會用到。例如當虛擬機開啓時出現 .vswp 文件,當虛擬機暫停時出現 .vmss 文件。
從 RHEL6(Red Hat Enterprise Linux 6)開始,RHEL 發行版中包含了 Red Hat 公司開發的 virt-v2v 工具。它是由 perl 語言編寫的腳本,能夠自動化的將建立在 Xen,KVM 和 VMware ESX 上的虛擬機拷貝到 virt-v2v 的主機,而且自動的更改配置,使之可以被 libvirt 進行管理。目前,virt-v2v 支持靜態遷移下列虛擬機:RHEL四、RHEL5, RHEL6,Windows XP,Windows Vista, Windows 7, Windows Server 2003 和 Windows Server 2008。
圖 2. virt-v2v 遷移 VMware/Xen/KVM 虛擬機示意圖
本節中,將分別介紹如何使用 virt-v2v 工具遷移 Vmware ESXi 上的 RHEL 虛擬機和 Windows 7 虛擬機到 KVM 主機。
本文的 KVM 主機安裝最新的 RHEL6.1 操做系統(發佈於 2011 年 5 月 19 日)。這樣,最基本的支持 KVM 虛擬機的軟件 qemu-kvm、libvirt、virt-manager 和 virt-v2v 工具都在發行版中安裝了。
[root@localhost ~]# rpm -qa qemu-kvm qemu-kvm-0.12.1.2-2.160.el6.x86_64 [root@localhost ~]# rpm -qa libvirt libvirt-0.8.7-18.el6.x86_64 [root@localhost ~]# rpm -qa virt-manager virt-manager-0.8.6-4.el6.noarch [root@localhost ~]# rpm -qa virt-v2v virt-v2v-0.7.1-3.el6.x86_64 |
爲了使 virt-v2v 工具可以自動化的遷移 VMware ESX 虛擬機,儘可能減小手動干預,還須要在 KVM 主機上作一些設置。
1. 安裝支持 Windows 虛擬機遷移的軟件。
對於 Windows 虛擬機的遷移須要安裝 libguestfs-winsupport 包來支持 NTFS 文件系統和 virtio-win 包來支持 Windows para-virtualized 存儲和網絡設備驅動。
[root@victory4 v2v]# rpm -ivh libguestfs-winsupport-1.0-7.el6.x86_64.rpm \ virtio-win-1.2.0-1.el6.noarch.rpm Preparing... ########################################### [100%] 1:virtio-win ########################################### [ 50%] 2:libguestfs-winsupport ########################################### [100%] |
2. 建立 KVM 主機存儲域
virt-v2v 在遷移虛擬機的過程當中,須要拷貝被遷移虛擬機到 KVM 主機預先定義的存儲池中。存儲池能夠用 libvirt 工具建立。最簡單的方法就是使用 virt-manager 來建立新的存儲池。本文中建立了一個文件目錄類型的存儲池,位置在 KVM 主機系統的 /home/p_w_picpaths/migration 目錄。
3. 建立 KVM 主機網絡接口
虛擬機在遷移以後將鏈接 KVM 主機網絡, 所以主機必須有一個與之相匹配的網絡接口,好比說網橋。Linux 系統上有不少工具能夠建立網橋,其中 RHEL6.1 發行版上的 virt-manager 已經支持建立和管理網橋。本文建立了網橋 br0,而且綁定在 eth0 的接口上,具體配置以下圖。
4. 建立配置文件 virt-v2v.conf
在 virt-v2v.conf 文件中設置 virt-v2v 遷移的規則,包括網絡接口遷移後的映射,遷移的方式,存儲的位置,輸出的格式等等。這些規則也能以命令行參數的方式輸入,如 - - network,-o,-os,-of 等。
在 KVM 主機上完成上節的準備工做後,能夠正式開始遷移 VMware ESX 上的虛擬機了。下面是遷移的具體步驟:
1. 若是虛擬機上安裝了 VMware Tools,必須先卸載它。由於 KVM 的虛擬機不支持 VMware Tools 裏面的虛擬驅動。
2. 在 VMware ESX 上中止等待遷移的虛擬機,由於 virt-v2v 只支持靜態遷移。
3. 爲自動登陸 VMware ESX 服務器建立 .netrc 文件。VMware ESX 服務器的鏈接須要受權,virt-v2v 支持密碼方式的受權鏈接,能夠從 $HOME/.netrc 文件中讀取密碼並自動登陸。若是主機系統沒有這個文件,就手動建立它。而且 .netrc 文件須要 0600 權限,使 virt-v2v 工具能夠正確讀取它。
machine esx.example.com login root password xxxxxx |
4. 使用 virt-v2v 命令進行遷移。VMware ESX 服務器採用 HTTPS 鏈接方式,鏈接時須要配置 SSL 證書。本文經過添加'?no_verify=1'; 到 VMware 服務器的 URI 鏈接中,來關閉證書檢查。
virt-v2v -ic esx://esx.example.com/?no_verify=1 -os pool --bridge brname vm-name esx.example.com – 是 ESX 服務器主機名或 IP Address pool – 本地主機存儲池,用來保存鏡像 brname – 本地主機網橋名字,用來鏈接遷移後的虛擬機網絡 vm-name – 虛擬機的名字 |
5. 遷移成功後,虛擬機出如今 virt-manager 管理的虛擬機列表中。經過 virt-manager 工具啓動虛擬機。
6. 檢查遷移後的虛擬機的設備驅動。若是須要,從新安裝虛擬設備驅動。
7. 驗證遷移後的虛擬機的配置和系統是否和遷移以前一致。
virt-v2v 遷移實例:Linux 虛擬機 RHEL5.5
本例將遷移建立在 VMWare ESXi 服務器上的 RHEL5.5 虛擬機到 KVM 主機上,並使遷移後的虛擬機被 libvirt 管理。本例的環境中,VMware ESXi 服務器和 KVM 主機經過網絡鏈接,虛
擬機鏡像被各自的存儲管理。
下面就開始正式的遷移 :
1. 在 VMware ESXi 上檢測 RHEL5.5 虛擬機,若是安裝了 VMware Tools,先卸載它。
2. 在 VMware ESXi 上關閉 RHEL5.5 虛擬機。
3. 在 KVM 主機上建立或修改 $HOME/.netrc 文件,添加 VMware ESXi 服務器的用戶名和密碼。
[root@localhost home]# cat ~/.netrc machine 9.123.99.913 login root password xxxxxx [root@localhost home]# chmod 0600 ~/.netrc |
4. 開始遷移虛擬機。KVM 的存儲是遷移前準備好的存儲域 migration,文件格式採用 libvirt 支持的 qcow2,網絡鏈接方式與 VMware 虛擬機相同,採用網橋。
[root@localhost ~]# virt-v2v -ic esx://9.123.99.193/?no_verify=1 \ -os migration -of qcow2 --bridge br0 RHEL5.5 Using CPU model "cpu64-rhel6" RHEL5.5_RHEL5.5: 100% [=============================================]D 0h22m52s Using CPU model "cpu64-rhel6" virt-v2v: RHEL5.5 configured with virtio drivers 參數說明 -os migration: 遷移虛擬機的鏡像文件到主機上的存儲池 -of qcow2: 轉換遷移後虛擬機的文件格式 --bridge br0: 設置遷移後虛擬機的網絡映射到網橋 br0 RHEL5.5: Vmware ESXi 上虛擬機的名字,遷移後保持名字一致 |
5. 在 KVM 主機上啓動 virt-manager 軟件,就會發現遷移後的虛擬機已經被 libvirt 管理了。
圖 6. virt-manager 管理遷移後的 RHEL5.5 虛擬機
6. 深刻比較遷移前在 VMware ESXi 上的虛擬機和遷移後在 KVM 上的虛擬機。
表 1. RHEL5.5 虛擬機遷移先後在 VMware ESXi 和 KVM 上的比較
RHEL5.5 | VMware ESXi | KVM/Libvirt | 結論 |
---|---|---|---|
CPUs | Intel Xeon 5160 x2 | QEMU vCPU (cpu64-rhel6) |
數量一致,類型和轉化爲虛擬 CPU,主頻和支持的 flags 有變化 |
Memory | 1384M | 1384M | 數量一致 |
Hard Disk | 18GB, LSI Logic SCSI VMDK |
18GB virtio SCSI qcow2 |
大小一致,總線接口和文件系統轉換爲適合 libvirt 的類型 |
CDROM | IDE | IDE | 類型一致 |
Network Adaptor | MAC 00:0c:29:a9:7b:83 Type: e1000 vSwitch0 DHCP |
MAC 00:0c:29:a9:7b:83 Type: virtio bridge br0 DHCP |
Mac 相同,網卡類型和鏈接方式轉換爲適合 libvirt 的類型 |
Video Card | Vmware SVGA 4M Video RAM |
Model: Cirrus 9M RAM |
轉換爲 libvirt 支持的類型 |
系統用戶 | root/admin001 | root/admin001 | 一致 |
磁盤分區 | VolGroup00 /dev/sda |
VolGroup00 /dev/vda |
邏輯卷一致,物理盤符有變化。 |
從表中的比較看出,RHEL5.5 從 VMware ESXi 服務器遷移到 KVM 主機上後,因爲 Hypervisor 的不一樣,硬件發生了很大的變化。可是 virt-v2v 工具很好的解決的這個問題,使用 virtio 虛擬設備驅動使 RHEL5.5 系統遷移後可以流暢的運行。除了 RHEL5,virt-v2v 還支持 RHEL4 及 RHEL6 版本的遷移。
virt-v2v 遷移實例:Windows 虛擬機 WinXP,Win7
本例中將介紹如何使用 virt-v2v 工具遷移建立在 VMware ESXi 上的 Windows 虛擬機,包括 Windows XP SP3 32bit 中文版和 Windows 7 Professional 32bit 中文版。本節的環境中,KVM 主機上安裝了 virt-v2v 及相應的支持包 libguestfs-winsupport 和 virtio-win。VMware ESXi 服務器和 KVM 主機經過網絡鏈接,虛擬機鏡像被各自的存儲管理。
圖 7. virt-v2v 遷移 Windows 虛擬機的環境
下面是正式的遷移步驟:
1. 在 VMware ESXi 上檢測 WinXP 和 Win7 虛擬機,若是安裝了 VMware Tools,先卸載它。
2. 在 VMware ESXi 上關閉 WinXP 和 Win7 虛擬機。
3. 在 KVM 主機上建立或修改 $HOME/.netrc 文件,添加 VMware ESXi 服務器的用戶名和密碼。
4. 開始遷移虛擬機。KVM 的存儲是遷移前準備好的存儲域 migration,文件格式採用 libvirt 支持的 qcow2,網絡鏈接方式與 VMware 虛擬機相同,採用網橋。
[root@localhost ~]# virt-v2v -ic esx://9.123.99.193/?no_verify=1 \ -os migration -of qcow2 --bridge br0 WinXP Using CPU model "cpu64-rhel6" WinXP_WinXP: 100% [=========================================================]D 0h11m13s Using CPU model "cpu64-rhel6" virt-v2v: WARNING: There is no virtio net driver available in the directory specified for this version of Windows. The guest will be configured with a rtl8139 network adapter, but no driver will be installed for it. If the rtl8139 driver is not already installed in the guest, you must install it manually after conversion. virt-v2v: WinXP configured with virtio storage only. |
[root@localhost ~]# virt-v2v -ic esx://9.123.99.193/?no_verify=1 \ -os migration -of qcow2 --bridge br0 Win7 Using CPU model "cpu64-rhel6" Win7_Win7: 100% [==================================== =================================== =======================================]D 0h35m41s Using CPU model "cpu64-rhel6" virt-v2v: Win7 configured with virtio drivers [root@localhost ~]# |
5. 遷移完成後,在 KVM 主機上啓動 virt-manager 軟件,會發現遷移後的 Windows 虛擬機已經被 libvirt 管理了。
6. 在 KVM 上啓動虛擬機後,因爲更新了一些虛擬硬件設備,可能須要從新安裝驅動程序和重啓系統。
7. 深刻比較遷移前在 VMware ESXi 上的虛擬機和遷移後在 KVM 上的虛擬機,
表 2. WinXP 虛擬機遷移先後在 VMware ESXi 和 KVM 上的比較
WinXP | VMware ESXi | KVM/Libvirt | 結論 |
---|---|---|---|
CPUs | Intel Xeon 5160 | Intel Pentium II 處理器 | 數量一致,類型和轉化爲虛擬 CPU,主頻和支持的 flags 有變化 |
Memory | 1256M | 1256M | 數量一致 |
Hard Disk | 8GB, Vmware Virtual IDE VMDK |
8GB Virtio SCSI qcow2 |
大小一致,總線接口和文件系統轉換爲適合 libvirt 的類型 |
CDROM | VMware IDE | IDE | 類型一致 |
Network Adaptor | MAC 00:0c:29:83:86:d7 Type: PCNET vSwitch0 DHCP |
MAC 00:0c:29:83:86:d7 Type: rtl8139 bridge br0 DHCP |
Mac 相同,網卡類型和鏈接方式轉換爲適合 libvirt 的類型 |
Video Card | Vmware SVGA 4M Video RAM |
Model: Cirrus 9M RAM |
轉換爲 libvirt 支持的類型 |
系統 | Administrator/admin001 | Administrator/admin001 | 一致 |
磁盤分區 | C:\ D:\ |
C:\ D:\ |
一致 |
Win7 | VMware ESXi | KVM/Libvirt | 結論 |
---|---|---|---|
CPUs | Intel Xeon 5160 x 2 | X86 family 6 x 2 | 數量一致,類型和轉化爲虛擬 CPU,主頻和支持的 flags 有變化 |
Memory | 1024M | 1024M | 數量一致 |
Hard Disk | 24GB, LSI Logic SCSI VMDK |
24GB Virtio SCSI qcow2 |
大小一致,總線接口和文件系統轉換爲適合 libvirt 的類型 |
CDROM | VMware IDE | IDE | 類型一致 |
Network Adaptor | MAC 00:0c:29:64:de:6a Type: e1000 vSwitch0 DHCP |
MAC 00:0c:29:64:de:6a Type: virtio bridge br0 DHCP |
Mac 相同,網卡類型和鏈接方式轉換爲適合 libvirt 的類型 |
Video Card | Vmware SVGA 8M Video RAM |
Model: Cirrus 9M RAM |
轉換爲 libvirt 支持的類型 |
系統 | Administrator/admin001 | Administrator/admin001 | 一致 |
磁盤分區 | C:\ D:\ |
C:\ D:\ |
一致 |
從表中的比較看出,Windows 虛擬機從 VMware ESXi 服務器遷移到 KVM 主機上後,因爲 Hypervisor 的不一樣,硬件發生了很大的變化。Virt-v2v 工具儘可能在 KVM 虛擬機上使用 Virtio 虛擬設備加速系統的 IO 設備。WinXP 虛擬機的遷移後,使用了磁盤的 virtio 驅動而網絡設備使用默認的 rtl8139。 Win7 虛擬機的遷移後磁盤和網絡所有使用 virtio 的驅動。Virt-v2v 還支 Windows Vista,Win2003,Win2008 虛擬機從 VMware ESX/ESXi 上的遷移,步驟和 WinXP,Win7 虛擬機相似。
virt-v2v 工具自動化的解決了 VMware ESX/ESXi 服務器上的 RHEL 虛擬機和 Windows 虛擬機遷移到 KVM 主機的問題。並且在遷移的過程當中儘可能的使用 virtio 驅動提升 IO 設備的性能。可是,virt-2v2 工具也有一些侷限性。好比只支持虛擬機關機狀況下的靜態遷移;只支持 RHEL 虛擬機和 Windows 虛擬機的遷移;不支持 VMware 虛擬機快照的遷移。對於建立在 VMware Workstation/Player 上的虛擬機,目前 virt-v2v 還不支持自動遷移。可是咱們能夠用手動遷移的方法完成到 KVM 主機的遷移。請看下節:手動遷移 VMware Workstation/Player 上的虛擬機到 KVM 。
手動遷移 VMware Workstation/Player 上的虛擬機到 KVM
從物理機的文件系統看,VMware 虛擬機是由一組文件組成。這些文件可能集中存儲在存儲服務器上,如 VMware ESX/ESXi,也可能存儲在本地,如 VMware Workstation/Player。關閉虛擬機的狀況下,這些文件內容不會改變。因此咱們能夠用手動遷移的方法,拷貝這些文件到 KVM 主機而且轉換這些文件的格式或內容,使 libvirt 可以管理和識別。這樣就完成了 VMware 虛擬機的手動遷移。
在 VMware 虛擬機衆多的文件中,最重要的是虛擬機鏡像文件 .vmdk 和系統配置文件 .xml。因此手動遷移就是要分別處理這兩種文件。
下面咱們以 VMware Workstations 上的 SUSE Linux Enterprise Server 11 SP1 虛擬機和 VMware Player 上的 Windows 2008 R2 虛擬機爲例,詳細介紹遷移到 KVM 主機的步驟。
手動遷移 VMware Workstation 上的 SLES11SP1 虛擬機
VMware Workstation 軟件安裝在一個 Windows XP 系統上,而後建立 SLES11SP1 虛擬機。虛擬機的文件都存儲在本地。KVM 主機經過網絡鏈接到 Window XP 系統。
遷移的過程以下:
1. 登陸宿主機 Windows XP 系統,在 VMware Workstation 上檢查 SLES11SP1 虛擬機,若是安裝了 VMware Tools,以 root 用戶運行 vmware-uninstall-tools.pl 卸載它。
2. 關閉 SLES11SP1 虛擬機。
3. 檢查虛擬機的鏡像文件。本例中,虛擬機的鏡像存儲在多個 vmdk 文件中,因此須要在遷移前合併他們。
圖 10. 用 vmware-vdiskmanager.exe 合併多個 vmdk 文件
4. 拷貝合併後的 vmdk 文件到 KVM 主機上。本例中,拷貝文件 SLES11SP1-single.vmdk 到 KVM 主機的 /home/p_w_picpaths/migration 目錄下。而且使用 qemu-img 工具將 vmdk 文件轉換成 qcow2 格式的文件。能夠看出,轉換後鏡像文件 SLES11SP1-single.img 的實際大小 3.9G 和最大範圍 20G 沒有改變,僅僅是文件系統類型變化了。
[root@localhost migration]# qemu-img info SLES11SP1-single.vmdk p_w_picpath: SLES11SP1-single.vmdk file format: vmdk virtual size: 20G (21474836480 bytes) disk size: 3.9G [root@localhost migration]# qemu-img convert -f vmdk \ -O qcow2 SLES11SP1-single.vmdk SLES11SP1-single.img [root@localhost migration]# qemu-img info SLES11SP1-single.img p_w_picpath: SLES11SP1-single.img file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 3.9G cluster_size: 65536 |
5. 轉換 vmx 文件。本例介紹第一種方法,即手動建立 vmx 文件。首先要找出 SLES11SP1 虛擬機所有虛擬設備信息,這些信息能夠從 VMware Workstation 的管理界面和虛擬機系統的系統信息得到;而後在 KVM 主機上的 virt-manager 中,以第 4 步轉換完成的鏡像文件 SLES11SP1-single.img 爲基礎建立一個虛擬機;最後添加與 VMware 相同或相似的硬件,而且儘可能保證數量、類型和配置的一致,包括 CPU 和 MEM 數量、系統構架、網絡類型、MAC 地址等。
圖 11. VMware Workstation 上查看虛擬機的硬件信息
圖 12. 手動配置 KVM 虛擬機
6. 設置完成後,自動建立 KVM 虛擬機的配置文件 /etc/libvirt/qemu/SLES11SP1.xml,而且 virt-manager 能夠管理這個 SLES 虛擬機了。在 libvirt 上啓動虛擬機,手動配置虛擬機系統以適應新的硬件。
7. 深刻比較遷移前在 VMware Workstation 上的虛擬機和遷移後在 KVM 上的虛擬機。
表 4. SLES11SP1 虛擬機遷移先後在 VMware Workstation 和 KVM 上的比較
SLES11SP1 | VMware Workstation | KVM/Libvirt | 結論 |
---|---|---|---|
CPUs | Intel Core2 x 2 | QEMU vCPU x 2 |
數量一致,類型和轉化爲虛擬 CPU,主頻和支持的 flags 有變化 |
Memory | 768M | 768M | 數量一致 |
Hard Disk | 20GB LSI Logic SCSI VMDK |
20GB IDE qcow2 |
大小一致,總線接口和文件系統轉換爲適合 libvirt 的類型 |
CDROM | IDE | IDE | 類型一致 |
Floppy | 類型一致 | ||
USB Controller | USB 2.0 | Physical USB device | libvirt 對 USB 的支持較弱 |
Network Adaptor | MAC 00:0c:29:68:16:33 Type: PCNet NAT Virtual DHCP |
MAC 00:0c:29:a9:7b:83 Type: Virtio NAT Virtual DHCP |
Mac 相同,網卡類型和鏈接方式轉換爲適合 libvirt 的類型 |
Video Card | Vmware SVGA | Model: Cirrus 9M RAM |
轉換爲 libvirt 支持的類型 |
Audio device | ES1371 | ES1370 | 轉換爲 libvirt 支持的類型 |
系統用戶 | root/admin001 | root/admin001 | 一致 |
磁盤分區 | /dev/sda1 /dev/sda2 |
/dev/sda1 /dev/sda2 |
物理盤符及系統分區一致 |
和使用 virt-v2v 自動化遷移工具相比,手動遷移增長了不少工做和不肯定性。在本系列文章第一篇列舉了」Linux 系統在虛擬機遷移中的技術難點」,此處正好驗證了手動遷移中須要注意的問題。好比在本例中,有如下兩個問題:
實際上,手動把 SLES 虛擬機裏面關於磁盤分區的硬編碼所有改爲 UUID 後,就可使用高性能的 virtio 磁盤驅動。具體操做方法將在本系列文章的第五部分介紹。
手動遷移 VMware Player 上的 Win2008R2 虛擬機
VMware Player 軟件安裝在 Linux 系統上,而後建立了 Windows 2008 R2 虛擬機。虛擬機的文件都存儲在本地。KVM 主機經過網絡鏈接到 VMware Player 的主機系統。
遷移的過程以下:
1. 登陸宿主機 Linux 系統,在 VMware Player 上檢查 Win2008R2 虛擬機,若是安裝了 VMware Tools,必須先卸載它。
2. 關閉 Win2008R2 虛擬機,由於手動遷移必須保持虛擬機文件的一致性。
3. 檢查虛擬機的鏡像文件。若是虛擬機的鏡像存儲在多個 vmdk 文件中,須要在遷移前合併。本例的 VMware 虛擬機存儲在單獨的 vmdk 文件中,因此略過此步。
4. 拷貝 vmdk 文件到 KVM 主機上。本例中,拷貝 Win2008R2.vmdk 文件到 KVM 主機的 /home/p_w_picpaths/migration 目錄下。而且使用 qemu-img 工具將 vmdk 文件轉換成 qcow2 格式的文件。能夠看出,轉換後鏡像文件 Win2008R2.img 的實際大小 6.4G 和最大範圍 20G 沒有改變,僅僅是文件系統類型變化了。
[root@localhost migration]# qemu-img info Win2008R2.vmdk p_w_picpath: Win2008R2.vmdk file format: vmdk virtual size: 20G (21474836480 bytes) disk size: 6.4G [root@localhost migration]# qemu-img convert -f vmdk \ -O qcow2 Win2008R2.vmdk Win2008R2.img [root@localhost migration]# qemu-img info Win2008R2.img p_w_picpath: Win2008R2.img file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 6.4G cluster_size: 65536 |
5. 轉換 vmx 文件。virt-goodies/vmware2libvirt 腳本是用來作 vmx 到 xml 轉換的簡單工具。可是因爲它很長時間沒有升級,並且不一樣的 Linux 發行版對 KVM/libvirt 安裝方式不一樣,vmware2libvirt 工具轉換後的 xml 文件須要手動更改或添加某些配置。
清單 11. vmware2libvirt 轉換 vmx 文件
[root@localhost migration]# /home/vmware2libvirt \ -f Win2008R2.vmx > /etc/libvirt/qemu/Win2008R2.xml 添加 Win2008R2 到 virt-manager [root@localhost migration]# virsh -c qemu:///system \ define /etc/libvirt/qemu/Win2008R2.xml Domain Win2008R2 defined from /etc/libvirt/qemu/Win2008R2.xml |
6. 在 virt-manager 中啓動 Win2008R2 虛擬機,手動添加缺乏的硬件。
7. 啓動虛擬機,檢查系統狀態。
表 5. Win2008R2 虛擬機遷移先後在 VMware Player 和 KVM 上的比較
Win2008R2 | VMware Player | KVM/Libvirt | 結論 |
---|---|---|---|
CPUs | Intel Core Duo 2.66G x 2 | QEMU vCPU 2.66G x 2 | 數量一致,類型和轉化爲虛擬 CPU,主頻和支持的 flags 有變化 |
Memory | 1024M | 1024M | 數量一致 |
Hard Disk | 20GB, LSI Logic SCSI VMDK |
20GB IDE qcow2 |
大小一致,總線接口和文件系統轉換爲適合 libvirt 的類型 |
CDROM | VMware IDE | IDE | 類型一致 |
Network Adaptor | MAC 00:0c:29:aa:9b:a4 Type: e1000 NAT |
MAC 00:0c:29:aa:9b:a4 Type: e1000 NAT |
Mac 地址、網卡類型和鏈接方式相同 |
Video Card | Vmware SVGA | Model: Cirrus 9M RAM |
轉換爲 libvirt 支持的類型 |
系統 | Administrator/qwe123OP | Administrator/qwe123OP | 一致 |
磁盤分區 | C:\ D:\ |
C:\ D:\ |
一致 |
由上表能夠看出,Win2008R2 虛擬機遷移到 KVM 後,雖然硬件有變化,可是不影響操做系統及軟件的運行。這此遷移過程當中沒有使用任何 virtio 的驅動程序,由於 Windows 系統自己沒有 virtio 的驅動。若是想使用 virtio 來提升 KVM 虛擬機的性能,參見下節如何用 virtio 驅動光盤或軟盤手動安裝。
實際上,virtio 驅動光盤鏡像文件和軟盤鏡像文件包含在清單 2 列出的 virtio-win 包中。只須要在虛擬機的虛擬光驅或軟驅中裝載這些鏡像文件,就能夠升級磁盤和網卡驅動爲 virtio 驅動了。
[root@localhost migration]# rpm -ql virtio-win ....... /usr/share/virtio-win/virtio-win-1.2.0.iso /usr/share/virtio-win/virtio-win-1.2.0.vfd /usr/share/virtio-win/virtio-win.iso /usr/share/virtio-win/virtio-win.vfd |
下面以上一個小節中,遷移到 KVM 的 Win2008R2 虛擬機爲例,介紹如何在 Windows 虛擬機上安裝 virtio 驅動。
1. 在虛擬光驅中加載 virtio 鏡像。
2. 更改網卡的類型爲 virtio,這樣系統啓動後能夠從 virtio 光盤升級網卡驅動程序。
3. 此時不能更改磁盤的驅動類型。由於此時 virtio 驅動尚未安裝,直接更改磁盤類型會致使系統沒法啓動的錯誤。替代方法是臨時添加一塊新的磁盤,大小隨意,類型爲 virtio。
4. 啓動虛擬機並登錄系統,查看硬件設備管理器。發現缺乏了網卡和磁盤控制器的驅動。用 virtio 光盤中的驅動安裝他們。
5. 安裝完成後,關閉虛擬機。刪除臨時磁盤並把主磁盤的類型改成 virtio,而後啓動虛擬機。這時你會發現 Win2008R2 虛擬機已經用上 virtio 的磁盤和網卡設備了。
目前 virtio 光盤鏡像包含 WinXP、Win七、Win2003 和 Win2008 四個平臺的驅動程序,均可以用上面這種方法手動安裝。
以上章節詳細介紹了幾種遷移 VMware 虛擬機到 KVM 的方法,下面總結一下各類遷移方法的的優缺點。
不管是 virt-v2v 自動化工具仍是手動遷移,因爲商業軟件 VMware 開放的編程接口的限制,VMware 虛擬機到 KVM 的遷移有一些軟肋:
總的來講,VMware 虛擬機到 KVM 的遷移不夠成熟和自動化,遷移的過程須要手動干預。這要求遷移的操做人員具備相關的知識和經驗。開源工具 virt-v2v 的出現簡化了 VMware ESX/ESXi 上部分虛擬機的遷移,並且計劃未來支持 VMware Workstation/Player 上虛擬機的自動遷移。反言之,自動化的遷移工具不就是用腳本語言把手動遷移的步驟和條件程序化麼?掌握了手動遷移,才能瞭解虛擬機遷移更多的奧祕。
原文地址:http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm3/?cmp=dwskl&cpb=dw&ct=dwcon&cr=cn_swb&ccy=cn