使用基于鏡像的存儲后端掛載Xen虛擬機
在本文中,TechTarget中國的特約虛擬化作者Sander van Vugt將介紹如何在使用文件作為其存儲后端的虛擬機上執(zhí)行相同的操作。
掛載基于鏡像的虛擬磁盤
掛載在鏡像文件里的虛擬磁盤比掛載位于物理存儲設(shè)備的虛擬磁盤困難得多。不像物理設(shè)備,為了掛載鏡像文件你需要知道回環(huán)設(shè)備。這個回環(huán)設(shè)備由內(nèi)核模塊(叫做回環(huán))組成,確保對于每個你想掛載的文件,就會創(chuàng)建一個回環(huán)設(shè)備。這些回環(huán)設(shè)備按順序編號,第一個的名字在/dev/loop0。
你可能已經(jīng)熟悉文件系統(tǒng)上的回環(huán)設(shè)備進程。例如,你能使用這個技術(shù)掛載.ISO文件。使用以下命令:
mount -o loop /bestand.iso /mnt
不過,如果你需要訪問Xen虛擬磁盤文件里的分區(qū),這個步驟幫不了你。你不想掛載文件,只想首先訪問里面的分區(qū),那么你需要在回環(huán)設(shè)備和你想訪問的鏡像文件之間使用losetup命令建立連接。在連接之前,輸入下面的命令查看正在使用的回環(huán)設(shè)備:
losetup –a
假定沒有回環(huán)設(shè)備正在使用,可以使用/dev/loop0作為回環(huán)設(shè)備,連接到Xen鏡像文件。如果鏡像文件的名字是/var/lib/xen/images/vm1/disk0,使用下面命令建立連接:
losetup /dev/loop0 /var/lib/xen/images/vm1/disk0
如果你再次使用losetup,你將發(fā)現(xiàn)已創(chuàng)建的回環(huán)設(shè)備,在回環(huán)設(shè)備和鏡像文件之間存在連接?,F(xiàn)在可以使用下面命令開始分析鏡像文件里的分區(qū):
fdisk -l: fdisk -l /dev/loop0
基于fdisk -l顯示給你的信息。你應(yīng)該能辨別哪個設(shè)備宿主根文件系統(tǒng)。發(fā)現(xiàn)后,你需要確保你有相同的設(shè)備文件用于鏡像文件里的分區(qū),以便掛載它們。如果安裝了多路徑工具包,使用下面命令:
kpartx -a /dev/loop0
由于鏡像文件使用loop0設(shè)備,這個創(chuàng)建的設(shè)備文件的名字是/dev/mapper/loop0p1、/dev/mapper/loop0p2,以此類推。你現(xiàn)在能使用這些文件掛載文件系統(tǒng),這些系統(tǒng)上安裝了操作系統(tǒng)的根。這可以是Linux或Windows操作系統(tǒng),因為你能在虛擬主機操作系統(tǒng)上掛載它們。一旦對這個文件系統(tǒng)作出必要的修改,輸入下面命令正確卸載:
umount /mnt
kpartx -d /dev/loop0
losetup -d /dev/loop0
處理基于Linux虛擬機主機里的本地卷
在上面討論的步驟中,我已經(jīng)假定你的虛擬操作系統(tǒng)使用通用分區(qū)。不過,如果虛擬機使用Linux的話,情況就不同了。你可能使用本地卷管理(LVM)而不是分區(qū)。這讓情況變得有點復(fù)雜,因為你不能通過簡單的激活分區(qū)激活本地卷。
通常,當服務(wù)器啟動時,將為每個可用設(shè)備掃描本地卷。不過由于虛擬機磁盤文件里的設(shè)備在啟動時不可用,你需要自己掃描本地卷。
如果fdisk——我建議在存儲后端文件上顯示分區(qū)——是type 8e,你需要執(zhí)行專門的步驟。在下面步驟中,我假定通過/dev/mapper/loop0p2設(shè)備,這個分區(qū)是可用的。
你需要確保這個分區(qū)由LVM子系統(tǒng)作為物理設(shè)備。只知道這個分區(qū)是type 8e是不夠的,你需要告訴LVM子系統(tǒng)它是可用的,能作為物理設(shè)備,并且LVM能使用它。使用下面命令這樣做:
pvscan /dev/loop0p2
接下來,你將被告知LVM卷組在物理設(shè)備里被發(fā)現(xiàn)了,但是你需要通過使用下面命令初始化這個卷組:
vgscan
為了完成LVM架構(gòu)的重新配置,你需要在卷組里的本地卷使用下面命令:
lvscan
盡管你現(xiàn)在能再次訪問本地卷,你將發(fā)現(xiàn)所有本地卷都沒活動。你需要在掛載本地卷時修復(fù)這個問題。通過使用vgchange命令更改卷組的狀態(tài)。這個命令將更改所有在volume group vm1vg的卷的狀態(tài),并激活它們:
vgchange /dev/vm1vg
LVM本地卷現(xiàn)在是激活的,并準備好掛載。例如,如果你想使用名稱/dev/lvm1vg/root掛載本地卷,就該使用以下命令:
mount /dev/vm1vg/root /mnt
這時,你對本地卷里的所有文件有完全訪問權(quán)。你現(xiàn)在能作出你需要的所有修改。
總結(jié)
在本文中,我們介紹了如果虛擬機本身不能啟動時如何訪問Xen虛擬機的所有文件。這能幫助你修復(fù)發(fā)生在虛擬機里的問題,在最糟的情形下,能幫助你回復(fù)失敗的虛擬機。
【編輯推薦】