編者按:虛擬化技術(shù)地不斷成熟,為解決傳統(tǒng)數(shù)據(jù)中心的空間、電源、網(wǎng)絡(luò)、數(shù)據(jù)存儲(chǔ)以及管理等各方面的壓力提供了可行性途徑。本文結(jié)合單位服務(wù)器虛擬化改造,對(duì)改造過(guò)程中的系統(tǒng)遷移問(wèn)題及解決方法進(jìn)行了分析。
筆者通過(guò)部署基于KVM技術(shù)的虛擬化平臺(tái)(EASTED vServer),充 分利用現(xiàn)有設(shè)備實(shí)現(xiàn)對(duì)現(xiàn)有服務(wù)器的虛擬化改造,并將原有運(yùn)行在VMware上的虛擬化機(jī)和物理機(jī)成功遷移的新的平臺(tái)。
遷移是指把源主機(jī)上的操作系統(tǒng)和應(yīng)用程序移動(dòng)到目的主機(jī),并且能夠在目的主機(jī)上正常運(yùn)行。
遷移分為物理機(jī)之間的遷移、虛擬機(jī)之間的遷移、虛擬機(jī)遷到物理機(jī)以及物理機(jī)遷到虛擬機(jī),無(wú)論哪種遷移本質(zhì)上都是基于磁盤(pán)或虛擬磁盤(pán)進(jìn)行操作,一般通過(guò)遷移工具來(lái)實(shí)現(xiàn)系統(tǒng)遷移。本文簡(jiǎn)單描述兩種遷移策略,分別是P2V和V2V遷移。
具體遷移方法有兩種,一種是熱遷移,即物理服務(wù)器或虛擬機(jī)在不停機(jī)的情況下把應(yīng)用數(shù)據(jù)從物理服務(wù)器遷移到虛擬服務(wù)器,然后納入虛擬化平臺(tái)的管理;另外一種是冷遷移,在物理服務(wù)器或虛擬機(jī)停止后,使用遷移工具將整臺(tái)物理服務(wù)器遷移為虛擬服務(wù)器,并由虛擬化平臺(tái)統(tǒng)一管理。
冷遷移與熱遷移不一樣的地方一是會(huì)遷移整個(gè)系統(tǒng)環(huán)境,二是需要關(guān)閉物理服務(wù)器,然后通過(guò)遷移工具重新引導(dǎo)源計(jì)算機(jī)。通過(guò)冷克隆,可以創(chuàng)建最一致的源計(jì)算機(jī)副本。因?yàn)樵谶w移期間源計(jì)算機(jī)上不會(huì)發(fā)生任何更改,不留任何痕跡,且遷移后虛擬服務(wù)器數(shù)據(jù)與源服務(wù)器數(shù)據(jù)最為一致。因此,在條件允許的情況下,推薦使用冷遷移方法進(jìn)行系統(tǒng)遷移。
以V2V遷移為例,冷遷移方式共分4個(gè)步驟,如圖所示。
(1)準(zhǔn)備工作
冷遷移步驟
遷移虛擬機(jī)前需要?jiǎng)?chuàng)建一個(gè)NFS導(dǎo)出域。virtv2v可以把被遷移的虛擬機(jī)直接傳輸?shù)揭粋€(gè)NFS導(dǎo)出存儲(chǔ)域中,導(dǎo)出存儲(chǔ)域中的虛擬機(jī)可以被導(dǎo)入到 EASTED vServer的一個(gè)數(shù)據(jù)中心中。這個(gè)存儲(chǔ)域必須可以被運(yùn)行virt-v2v的機(jī)器掛載,在把虛擬機(jī)導(dǎo)出到EASTED vServer的導(dǎo)出域時(shí),virtv2v命令需要以root用戶(hù)身份運(yùn)行。
(2)遷移虛擬機(jī)
在遷移主機(jī)的準(zhǔn)備工作都完成后,使用virt-v2v命令來(lái)實(shí)際執(zhí)行遷移過(guò)程。本節(jié)提供了實(shí)際遷移虛擬機(jī)的步驟,以及virt-v2v的命令語(yǔ)法。
虛擬機(jī)遷移過(guò)程需要消耗大量資源,并需要對(duì)虛擬機(jī)的整個(gè)磁盤(pán)映像進(jìn)行復(fù)制。在一個(gè)普通的環(huán)境中,遷移一個(gè)虛擬機(jī)通常會(huì)需要5~10 min來(lái)完成。一個(gè)帶有8 GB磁盤(pán)的虛擬機(jī)通過(guò)SSH在一個(gè)1GigE的網(wǎng)絡(luò)環(huán)境中進(jìn)行遷移,測(cè)試如下:
需要被復(fù)制的磁盤(pán)大小是決定遷移過(guò)程用時(shí)的主要因素。在普通硬件設(shè)備環(huán)境中遷移一個(gè)帶有小于20 GB磁盤(pán)的虛擬機(jī)的過(guò)程通常會(huì)在10 min內(nèi)完成。
virt-v2v命令可以對(duì)運(yùn)行在其它虛擬機(jī)管理程序上的虛擬機(jī)進(jìn)行遷移來(lái)在EASTED vServer上運(yùn)行。它的命令語(yǔ)法是:
注釋?zhuān)和ㄟ^(guò)virtv2v進(jìn)行虛擬環(huán)境到虛擬環(huán)境遷移。-i設(shè)置遷移輸入模式,命令中設(shè)置為libvirtxml,;-o設(shè)置遷移輸出模式,命令中設(shè)置為vServer;-os設(shè)置輸出存儲(chǔ)位置,命令中設(shè)置為storage.example.com:/exportdomain;--network設(shè)置遷移最終網(wǎng)絡(luò),命令中設(shè)置為vServerm;-ic設(shè)置libvirt的URL,命令中設(shè)置為esx://esx.example.com/?no_verify=1。
當(dāng)前,virt-v2v還不支持對(duì)帶有多于4個(gè)IDE磁盤(pán)的虛擬機(jī)進(jìn)行遷移來(lái)在EASTED vServer中運(yùn)行。遷移帶有5個(gè)或更多磁盤(pán)的虛擬機(jī)的操作將會(huì)失敗。
(3)導(dǎo)入并運(yùn)行遷移的虛擬機(jī)
在遷移過(guò)程成功完成后,virt-v2v會(huì)把導(dǎo)入的虛擬機(jī)上傳到指定的導(dǎo)出域中。執(zhí)行以下步驟來(lái)導(dǎo)入并運(yùn)行遷移的虛擬機(jī),過(guò)程如下:
①在EASTED vServer管理門(mén)戶(hù)的存儲(chǔ)標(biāo)簽頁(yè)中選擇導(dǎo)入存儲(chǔ)域。所選的導(dǎo)入存儲(chǔ)域的狀態(tài)必須是Active。
②在詳情框中選擇VM導(dǎo)入標(biāo)簽頁(yè)來(lái)列出可以被導(dǎo)入的虛擬機(jī)列表。
③選擇一個(gè)或多個(gè)虛擬機(jī)后點(diǎn)擊“導(dǎo)入”。導(dǎo)入虛擬機(jī)窗口將被打開(kāi)。
④在下拉菜單中,選擇數(shù)據(jù)中心的默認(rèn)存儲(chǔ)域、集群和集群配額。
⑤選擇Collapse快照來(lái)刪除快照的恢復(fù)點(diǎn),并包括虛擬機(jī)所基于的模板。點(diǎn)擊“確認(rèn)”導(dǎo)入虛擬機(jī)。
目前,virt-v2v還不能重新配置虛擬機(jī)的網(wǎng)絡(luò)配置。如果被遷移的虛擬機(jī)沒(méi)有連接到它們?cè)瓉?lái)的相同子網(wǎng)中,這個(gè)虛擬機(jī)的網(wǎng)絡(luò)配置就可能需要被手工更新。
本章介紹了使用易訊通Physical-to-Virtual(P2V)解決方案 -Virt P2V 把物理機(jī)遷移為虛擬機(jī)的內(nèi)容。
Virt P2V由virt-p2vserver(包括在 virt-v2v軟件包中)和P2V client(vServer-p2v.iso)組 成。vServer-p2v.iso是一個(gè)基于定制Centos6映像的可引導(dǎo)磁盤(pán)映像。為了把一個(gè)物理機(jī)遷移為一個(gè)可以在EASTED vServer或由libvirt管理的KVM上運(yùn)行的虛擬機(jī),使用vServer-p2v.iso引導(dǎo)一個(gè)機(jī)器,并把它連接到一個(gè)安裝了virt-v2v的V2V遷移服務(wù)器來(lái)進(jìn)行遷移。
請(qǐng)遵循以下規(guī)則,否則可能會(huì)造成數(shù)據(jù)丟失或磁盤(pán)損壞。
第一,Physical to Virt ual(P2V)需要一個(gè)帶有virt-v2v-0.8.7或更高版本的CentOS 6虛擬主機(jī)??梢允褂? rpm -q virt-v2v來(lái)檢查 virt-v2v 的版本。
第二,請(qǐng)注意,不能使用CentOS 5作為遷移服務(wù)器。另外,遷移服務(wù)器所帶的virt-v2v軟件包的版本也不能低于0.8.7-6.el6。
(1)準(zhǔn)備工作
在使用P2V前,需要準(zhǔn)備遷移服務(wù)器、下載并準(zhǔn)備vServer-p2v.iso引導(dǎo)介質(zhì)。請(qǐng)注意,i386和x86_64系統(tǒng)使用同一個(gè)ISO映像。
(2)在遷移服務(wù)器上安裝virt-v2v
允許ROOT通過(guò)SSH登錄。
在virt-v2v安裝完成后,遷移服務(wù)器需要被配置來(lái)接受從P2V client的連接。P2V client需要以root身份通過(guò)SSH連接到遷移服務(wù)器,因此遷移服務(wù)器需要允許root通過(guò)SSH登錄。
①以root的身份編輯sshd_config文件(/etc/ss h/sshd_config):
nano/etc/ssh/sshd_config
②在這個(gè)文件的 Authen tication數(shù)據(jù)段中添加一行PermitRootLogin yes。這行內(nèi)容可能已經(jīng)存在,如果它被注釋掉(使用“#”),只需要?jiǎng)h除 “#”。
③# Authentication:
④#LoginGraceTime 2m
⑤PermitRootLogin yes
⑥#StrictModes yes
⑦#MaxAuthTries 6
#MaxSessions 10
⑧保存修改過(guò)的/etc/ssh/sshd_config 文件。
⑨重啟SSH服務(wù)器:
service sshd restart
現(xiàn)在,可以以 root 的身份通過(guò)SSH連接到遷移服務(wù)器。
在VIRT-V2V.CONF中定義一個(gè)目標(biāo)配置集。
遷移服務(wù)器需要被預(yù)先配置來(lái)指定所創(chuàng)建虛擬機(jī)的配置。這些配置信息包括在遷移服務(wù)器的/etc/virtv2v.conf文件中的目標(biāo)配置集中。
在virt-v2v.conf中定義目標(biāo)配置集:
①以root身份編輯/etc/virt-v2v.conf:
nano/etc/virt-v2v.conf
②找到文件尾部,在最后一個(gè)前添加以下內(nèi)容:
③
④
⑤
⑥nfs.share.com:/exp ort1
⑦
⑧
⑨
⑩
其中:
Profile Name是目標(biāo)配置集的名稱(chēng)。
Method是最終虛擬機(jī)控制程序系統(tǒng)的類(lèi)型(vServer或libvirt)。
Storage Format是輸出的存儲(chǔ)格式(raw或 qcow2)。
Allocation是輸出的分配格式(preallocated或sparse)。
Network type指定了當(dāng)導(dǎo)入到EASTED vServer后網(wǎng)絡(luò)接口所連接到的網(wǎng)絡(luò)。第一個(gè)Network type項(xiàng)包括了遷移前的網(wǎng)絡(luò)配置;第二個(gè)Network type項(xiàng)映射到遷移后的網(wǎng)絡(luò)配置。在以上實(shí)例中,所有檢測(cè)到的網(wǎng)卡都被映射到名為vServerm的管理網(wǎng)絡(luò)上。
已經(jīng)創(chuàng)建了一個(gè)目標(biāo)配置集,它定義了在P2V遷移完成后虛擬機(jī)的配置。
創(chuàng)建一個(gè)可引導(dǎo)介質(zhì):
P2V使用可引導(dǎo)介質(zhì)來(lái)創(chuàng)建物理機(jī)硬盤(pán)的可引導(dǎo)映像,并把它發(fā)送到遷移服務(wù)器來(lái)導(dǎo)入到虛擬機(jī)管理程序系統(tǒng)(Hypervisor)。
vServer-p2v.iso文件可以通過(guò)3種方式使用:作為一個(gè)可引導(dǎo)磁盤(pán);作為一個(gè)PXE引導(dǎo)映像;作為一個(gè)可引導(dǎo)的USB設(shè)備。
?把ISO刻錄到一個(gè)空白的CD-ROM或DVD-ROM中,然后把它插入到要被遷移的物理機(jī)的光驅(qū)中。
?使用ISO創(chuàng)建一個(gè)可引導(dǎo)USB介質(zhì)。另外,一些BIOS并不支持從USB引導(dǎo)。P2V client磁盤(pán)映像大約有100 MB,所使用的USB設(shè)備需要有足夠的空間來(lái)容納它。
?在PXE服務(wù)器上準(zhǔn)備一個(gè) PXE 引導(dǎo)映像。
(3)遷移工作
下一步需要引導(dǎo)P2V client,把它連接到遷移服務(wù)器,并對(duì)物理機(jī)進(jìn)行遷移。
遷移過(guò)程可能會(huì)需要很長(zhǎng)時(shí)間來(lái)完成,尤其是需要遷移大容量物理磁盤(pán)的時(shí)候。
具體過(guò)程如下:
①在遷移服務(wù)器上引導(dǎo)P2V client引導(dǎo)介質(zhì)。在所創(chuàng)建的遷移服務(wù)器上引導(dǎo)P2V client引導(dǎo)介質(zhì)。因?yàn)镻2V client是在CentOS 6映像上構(gòu)建的,所以 CentOS 6 splash會(huì)在引導(dǎo)時(shí)被顯示。
②如果需要,對(duì)網(wǎng)絡(luò)進(jìn)行配置。通常情況下,P2V client使用DHCP自動(dòng)配置網(wǎng)絡(luò)。
如果不能自動(dòng)配置網(wǎng)絡(luò),需要手工配置它。需要配 置IP Address、Gateway和Prefix項(xiàng)。根據(jù)具體情況輸入相應(yīng)的值,點(diǎn)擊“Use these network settings”。
請(qǐng)注意,P2V client不支持NIC組合(NIC teaming)配置。
③連接到遷移服務(wù)器。當(dāng)配置完網(wǎng)絡(luò)后,輸入連接到遷移服務(wù)器的連接信息。
它們包括Hostname(主機(jī)名或IP地址)、Username(必須是 root)和Password。輸入相關(guān)信息后點(diǎn) Connect。
④配置目標(biāo)虛擬機(jī)并選擇要遷移的硬件。在連接到遷移服務(wù)器后,配置要被附加到被遷移物理機(jī)上的虛擬硬件,選擇要被遷移的物理硬件。
⑤在Target Properties中配置以下內(nèi)容:
從下拉菜單中選擇一個(gè)Destination Profile。這個(gè)菜單中的選項(xiàng)反映了遷移服務(wù)器上的/etc/virtv2v.conf文件中的目標(biāo)配置集。在Target Properties的Name項(xiàng)中輸入遷移所生成的虛擬機(jī)的名稱(chēng)。Target Properties中的Number of CPUs和Memory(MB)的值會(huì)被自動(dòng)生成。
如果需要在輸出的虛擬機(jī)上使用更多的CPU和(或)內(nèi)存,可以修改這兩個(gè)項(xiàng)的值。
⑥在Fixed Storage中選擇一個(gè)或多個(gè)需要被遷移的設(shè)備。最少一個(gè)包括了所需操作系統(tǒng)的固定磁盤(pán)需要被遷移。
⑦在Removable Media中選擇一個(gè)或多個(gè)需要遷移的設(shè)備。
⑧在Network Interface s中選擇一個(gè)或多個(gè)需要遷移的網(wǎng)絡(luò)接口。
⑨可選項(xiàng):如果想把調(diào)試信息輸出到一個(gè)文件中,請(qǐng)選擇 Enable server-side debugging選項(xiàng)。這會(huì)使服務(wù)器在遷移過(guò)程中寫(xiě)LIBGUESTFS_TRACE和 LIBGU ESTFS_DEBUG 輸出。
⑩點(diǎn)擊Convert。
當(dāng)遷移完成后,會(huì)顯示遷移成功,可以關(guān)閉物理機(jī)。
現(xiàn)在已經(jīng)完成了P2V遷移??梢园堰w移的虛擬機(jī)導(dǎo)入到虛擬機(jī)監(jiān)控程序系統(tǒng)中來(lái)運(yùn)行。
遷移運(yùn)行Windows的虛擬機(jī)的準(zhǔn)備工作。
virt-v2v不支持對(duì)Win dows恢復(fù)控制臺(tái)(Recovery Console) 的遷移。如果一個(gè)虛擬機(jī)安裝了恢復(fù)控制臺(tái),并且VirtIO 在遷移過(guò)程中被啟用,引導(dǎo)到恢復(fù)控制臺(tái)將會(huì)導(dǎo)致一個(gè)錯(cuò)誤。
Windows XP x86不支持VirtIO系統(tǒng)上的Windows恢復(fù)控制臺(tái)。但是,Windows XP AMD64和Windows 2003(x86和AMD64)系統(tǒng)支持它。
用戶(hù)可以在虛擬機(jī)遷移完成后重新安裝恢復(fù)控制臺(tái)來(lái)正常使用它。這個(gè)重新安裝的過(guò)程與初始安裝的過(guò)程相同,用戶(hù)也不需要先刪除恢復(fù)控制臺(tái)后再安裝它。