遷移Xen虛擬機(jī)到KVM的六大步驟
如果是在Linux上使用虛擬化技術(shù)的話,就會(huì)有基于Xen Hypervisor部署一個(gè)系統(tǒng)的機(jī)會(huì)。因?yàn)榛趦?nèi)核的虛擬機(jī)(KVM:Kernel-Based Virtual Machine)已經(jīng)逐漸成為L(zhǎng)inux上面虛擬化的主流,用戶也有可能會(huì)希望把基于Linux的虛擬化工作環(huán)境從Xen轉(zhuǎn)換到KVM。本篇文章給出了把基于Xen的虛擬機(jī)遷移到KVM上的六步方針。
到目前為止,還沒(méi)有成熟的管理產(chǎn)品可以自動(dòng)地把Xen虛擬機(jī)轉(zhuǎn)換為KVM。但是現(xiàn)在卻有一項(xiàng)技術(shù)解決方案可以輔助把Xen上面安裝的虛擬機(jī)轉(zhuǎn)換到KVM上。下面的幾個(gè)步驟將會(huì)介紹針對(duì)Linux虛擬機(jī)需要如何實(shí)施。我盡可能從不基于任何發(fā)行版的高度來(lái)描述這個(gè)流程,但是需要注意的是對(duì)于特定步驟,所有的工具是和Linux發(fā)行版相關(guān)的。
1. 確保在宿主工作環(huán)境(即可以看做是Dom0工作環(huán)境)中安裝了parted和kpartx實(shí)用程序。Parted可以輔助分區(qū);kpartx完成掛載分區(qū),這個(gè)分區(qū)在虛擬機(jī)內(nèi)定義。
2. 啟動(dòng)要遷移的虛擬機(jī),安裝GRUB引導(dǎo)裝載程序。默認(rèn)情況下,Xen虛擬機(jī)內(nèi)沒(méi)有安裝引導(dǎo)裝載程序,因?yàn)樵摮绦蛴蒟en虛擬工作環(huán)境自身提供。因此需要在遷移之前確保該程序已經(jīng)安裝。
3. 關(guān)閉Xen虛擬機(jī),把整個(gè)虛擬機(jī)復(fù)制到一個(gè)鏡像文件。開(kāi)始之前需要確保系統(tǒng)有足夠的磁盤空間,這里需要很多GB的空間;同時(shí)確保使用的是正確的流程。例如,Xen后端虛擬存儲(chǔ)可以已經(jīng)是一個(gè)鏡像文件,但是也可以是使用設(shè)備安裝的,如一個(gè)分區(qū)或者一個(gè)邏輯卷管理器(LVM:Logic Volume Manager)卷作為一個(gè)后端存儲(chǔ)設(shè)備。例如,如果使用“/dev/images/xenvm1” LVM邏輯卷作為Xen后端存儲(chǔ)設(shè)備的話,可以使用下面的這個(gè)命令寫入鏡像文件:
dd if=/dev/images/xevvm1 f=xen.img bs=1M
注意:如果在虛擬機(jī)內(nèi)有復(fù)雜的分區(qū),就需要為每一個(gè)分區(qū)創(chuàng)建一個(gè)鏡像文件。該流程假定虛擬機(jī)內(nèi)的一切信息都位于一個(gè)大根分區(qū)中。
4. 為KVM虛擬機(jī)創(chuàng)建一個(gè)新鏡像文件。該鏡像文件應(yīng)該和為要遷移的虛擬機(jī)所創(chuàng)建的鏡像文件一樣大小。在下面的例子中,我將會(huì)假定使用的是一個(gè)10GB的Xen鏡像;在實(shí)際部署中注意把這個(gè)值調(diào)整為虛擬機(jī)實(shí)際占用的空間大?。?/p>
dd if=/dev/zero f=kvm.img bs=1M count=10240
5. 在上述步驟所創(chuàng)建的KVM鏡像文件中創(chuàng)建分區(qū)。創(chuàng)建分區(qū)的唯一方法就是使用parted命令行實(shí)用程序。下面這幾個(gè)步驟將會(huì)創(chuàng)建一個(gè)9GB的根分區(qū)和一個(gè)1GB的交換分區(qū)。需要在根特權(quán)下才可以執(zhí)行這幾個(gè)命令:
parted kvm.img mklabel msdos
parted kvm.img mkpart primary ext2 0 9000
parted kvm.img mkpart primary linux-swap 9000 10000
parted kvm.img set 1 boot on
6. 把Xen鏡像文件拷貝到KVM鏡像文件中。以根權(quán)限執(zhí)行下述命令:
following commands:
modprobe dm-mod
losetup /dev/loop kvm.img
kpartx -a /dev/loop0
dd if=xen.img f=/dev/mapper/loop0p1 bs=1M
fsck.ext3 -f /dev/mapper/loop0p1
到此為止,就已經(jīng)把原來(lái)鏡像中的所有文件拷貝到了新鏡像中。接下來(lái)需要進(jìn)行測(cè)試,使用下面的這個(gè)命令:
qemu kvm.img
小結(jié)
目前,還沒(méi)有工具可以很好地完成從Xen虛擬機(jī)到KVM虛擬機(jī)的轉(zhuǎn)換。但是如果虛擬機(jī)使用Linux的話,可以使用命令行實(shí)用程序完成該轉(zhuǎn)換。本文雖然介紹了如何實(shí)施,但是也存在一些局限性,如主要問(wèn)題是該方法僅僅適用于Linux虛擬機(jī)。鑒于當(dāng)前Linux工作環(huán)境中到KVM虛擬化的轉(zhuǎn)換,更多適用工具的問(wèn)世只是一個(gè)時(shí)間上的問(wèn)題了。