Libguestfs提供了一个简单地访问虚机磁盘镜像文件的方法,即使是在虚机无法启动的情况下。Libguestfs是由一组丰富的工具集组成,可以让管理员访问虚机文件,甚至调整和挽救文件。
Libguestfs流行的原因之一是它可以访问所有通过libvirt管理的虚机文件,也就是说您可以管理KVM、Xen、QEMU和其它类型的虚机。它还可以支持访问很多类型的文件系统,包括Linux文件系统、Windows文件系统、MAC OS X和很多其它裸文件格式。
在Linux系统上安装完Libguestfs包之后,可以通过两种方式获得对虚机的访问。您可以使用guestfish,它是一个shell环境提供了很多可以调整虚机磁盘文件的命令。或者可以使用某个以二进制方式安装到宿主机操作系统的工具。
我们从一个简单的例子开始。Virt-df工具可以显示虚机中可用的磁盘空间。您可以在运行中的虚机或未启动的虚机上使用。要获取关于某个活动域的信息,使用virt-df -d sleslibguestfs –h命令,以可阅读的方式(-h)提供了域sleslibguestfs的相关信息。这种方式包括其它Libguestfs工具的优势是可以像访问本地挂载的文件系统一样访问虚机的文件。
除了以虚机的名字来访问文件,您还可以直接对镜像文件做操作。尽管这种虚机访问方式更为直接,发生错误的概率也高。如果之前例子中的虚机是使用位于on/dev/vgvms/lvsleslibguestfs-1的后端存储,您还可以使用命令virt-edit -a /dev/vgvms/lvsleslibguestfs-1 /etc/hosts来直接访问和调整文件。这种对虚机文件的访问为您提供了很多灵活方式可修复损坏的虚机。
virt- in Libguestfs最初的出发点是为了开发一种易于访问虚机的方式,面向于特殊的任务,您可以看到工具virt-edit和 virt-df。如果需要更为直接的虚机磁盘镜像内部文件访问方式,您还可以使用guestfish或guestmount来代替。
通过guestfish,您可以打开一个到虚机磁盘文件的交互式shell,可以直接对虚机文件工作,但是只能从Libguestfs环境的工具进行。这也就是说在guestfish环境中,您不能直接使用类似ls之类的通用Linux工具来显示文件列表。而在guestmount中,您可以向计算机的文件系统挂载非本地工作虚机的磁盘镜像,这使得类似于在宿主机和客机之间拷贝文件之类的任务变得简单。
无论guestfish 还是guestmount,都可以支持对整个虚机或某个特定的磁盘镜像文件做操作。您可以使用guestfish -i -a /dev/vgvms/lvsleslibguestfs-1命令来访问位于lvslesslibguestfs-1 镜像上的文件,或guestmount -i -a /dev/vgvms/lvsleslibguestfs-1 /mnt,把lvsleslibguestfs01磁盘镜像上的文件挂载到/mnt目录。这里您可以执行任何虚机管理任务,即使无法启动该虚机。
***一个值得一提的工具是virt-rescue。通过virt-rescue,您可以在虚机上开启一个修复模式。它的工具模式和其它的Libguestfs工具类似,或者通过-d选项直接在域上工作,或者用-a选项对镜像文件操作。在启动进入修复模式后,您首先需要挂载虚机的分区,使用 mount-rootfs-and-do-chroot.sh命令。一旦完成,所有虚机上的文件都可在修复shell中使用,你可以开始分析和修复他们。
Libguestfs工具提供了简单和便捷地直接访问虚机磁盘镜像文件的方式。使用这些工具使得执行通用任务更为简单,而且避免了麻烦,还支持修复无法启动的虚机。