借助Libguestfs簡單便捷地訪問虛機
Libguestfs提供了一個簡單地訪問虛機磁盤鏡像文件的方法,即使是在虛機無法啟動的情況下。Libguestfs是由一組豐富的工具集組成,可以讓管理員訪問虛機文件,甚至調整和挽救文件。
Libguestfs流行的原因之一是它可以訪問所有通過libvirt管理的虛機文件,也就是說您可以管理KVM、Xen、QEMU和其它類型的虛機。它還可以支持訪問很多類型的文件系統(tǒng),包括Linux文件系統(tǒng)、Windows文件系統(tǒng)、MAC OS X和很多其它裸文件格式。
在Linux系統(tǒng)上安裝完Libguestfs包之后,可以通過兩種方式獲得對虛機的訪問。您可以使用guestfish,它是一個shell環(huán)境提供了很多可以調整虛機磁盤文件的命令?;蛘呖梢允褂媚硞€以二進制方式安裝到宿主機操作系統(tǒng)的工具。
我們從一個簡單的例子開始。Virt-df工具可以顯示虛機中可用的磁盤空間。您可以在運行中的虛機或未啟動的虛機上使用。要獲取關于某個活動域的信息,使用virt-df -d sleslibguestfs –h命令,以可閱讀的方式(-h)提供了域sleslibguestfs的相關信息。這種方式包括其它Libguestfs工具的優(yōu)勢是可以像訪問本地掛載的文件系統(tǒng)一樣訪問虛機的文件。
除了以虛機的名字來訪問文件,您還可以直接對鏡像文件做操作。盡管這種虛機訪問方式更為直接,發(fā)生錯誤的概率也高。如果之前例子中的虛機是使用位于on/dev/vgvms/lvsleslibguestfs-1的后端存儲,您還可以使用命令virt-edit -a /dev/vgvms/lvsleslibguestfs-1 /etc/hosts來直接訪問和調整文件。這種對虛機文件的訪問為您提供了很多靈活方式可修復損壞的虛機。
virt- in Libguestfs最初的出發(fā)點是為了開發(fā)一種易于訪問虛機的方式,面向于特殊的任務,您可以看到工具virt-edit和 virt-df。如果需要更為直接的虛機磁盤鏡像內部文件訪問方式,您還可以使用guestfish或guestmount來代替。
通過guestfish,您可以打開一個到虛機磁盤文件的交互式shell,可以直接對虛機文件工作,但是只能從Libguestfs環(huán)境的工具進行。這也就是說在guestfish環(huán)境中,您不能直接使用類似ls之類的通用Linux工具來顯示文件列表。而在guestmount中,您可以向計算機的文件系統(tǒng)掛載非本地工作虛機的磁盤鏡像,這使得類似于在宿主機和客機之間拷貝文件之類的任務變得簡單。
無論guestfish 還是guestmount,都可以支持對整個虛機或某個特定的磁盤鏡像文件做操作。您可以使用guestfish -i -a /dev/vgvms/lvsleslibguestfs-1命令來訪問位于lvslesslibguestfs-1 鏡像上的文件,或guestmount -i -a /dev/vgvms/lvsleslibguestfs-1 /mnt,把lvsleslibguestfs01磁盤鏡像上的文件掛載到/mnt目錄。這里您可以執(zhí)行任何虛機管理任務,即使無法啟動該虛機。
***一個值得一提的工具是virt-rescue。通過virt-rescue,您可以在虛機上開啟一個修復模式。它的工具模式和其它的Libguestfs工具類似,或者通過-d選項直接在域上工作,或者用-a選項對鏡像文件操作。在啟動進入修復模式后,您首先需要掛載虛機的分區(qū),使用 mount-rootfs-and-do-chroot.sh命令。一旦完成,所有虛機上的文件都可在修復shell中使用,你可以開始分析和修復他們。
Libguestfs工具提供了簡單和便捷地直接訪問虛機磁盤鏡像文件的方式。使用這些工具使得執(zhí)行通用任務更為簡單,而且避免了麻煩,還支持修復無法啟動的虛機。