【TechTarget中国原创】假设由于虚拟机里的大量配置文件损坏了,导致虚拟机不能启动。那么你要访问和修复那些配置文件会非常困难,尤其是因为虚拟机镜像文件的创建没有一个标准。在本文中,TechTarget中国的特约专家Sander van Vugt将介绍使用libguestfs搞定Linux虚拟机文件系统的访问。
libguestfs是一个目录,帮助你访问和修改虚拟机磁盘镜像。你可以轻松安装此软件到Fedora 11或更高版本,二进制软件包可以用于其它Linux版本。安装后(运行YUM和在Fedora 11上安装'*guestfs*' guestfish),你有大量命令可用,帮助你管理虚拟机镜像文件。
在后端,Libguestfs帮助你访问多数常见的Linux文件系统,如 Ext2/3和4、Btrfs和NTFS。更为重要的是你也能使用它管理多种常见的镜像文件类型,如KVM环境里的qcow2,以及VMware磁盘文件使用的vmdk。
【TechTarget中国原创】假设由于虚拟机里的大量配置文件损坏了,导致虚拟机不能启动。那么你要访问和修复那些配置文件会非常困难,尤其是因为虚拟机镜像文件的创建没有一个标准。在本文中,TechTarget中国的特约专家Sander van Vugt将介绍使用libguestfs搞定Linux虚拟机文件系统的访问。
libguestfs是一个目录,帮助你访问和修改虚拟机磁盘镜像。你可以轻松安装此软件到Fedora 11或更高版本,二进制软件包可以用于其它Linux版本。安装后(运行YUM和在Fedora 11上安装'*guestfs*' guestfish),你有大量命令可用,帮助你管理虚拟机镜像文件。
在后端,Libguestfs帮助你访问多数常见的Linux文件系统,如 Ext2/3和4、Btrfs和NTFS。更为重要的是你也能使用它管理多种常见的镜像文件类型,如KVM环境里的qcow2,以及VMware磁盘文件使用的vmdk。
在使用libguestfs时,使用以下命令让镜像文件可访问:
guestfish --ro -i server.img
接下来,将打开libguestfs shell,你将识别到它的<fs>提示符。从这个shell,你能运行任何常见的Linux命令,如lvdisplay命令,显示镜像文件里的逻辑卷,或者其它常见Linux工具,如cat和vi。不过,使用guestfish shell不是{wy}的访问方法。相反,你能使用来自主机操作系统的libguestfs命令。其中最有用的是guestmount命令。使用这个命令,FUSE文件系统习惯于从主机操作系统直接访问镜像文件。但从正在运行的虚拟机做这个不太合适,因为可能会在磁盘访问里遇到冲突。例如,如果你想直接在Windows子机上访问文件,可以使用下面的guestmount命令:
guestmount -a windows.img -m /dev/sda1 --ro /mnt
在这个命令中,Windows镜像是作为输入镜像文件的。在这里,{dy}个硬盘上的{dy}个分区加载为mnt目录上只读模式。你能删除--ro标记让其加载到read/write模式,但是如果你加载一个处于read/write模式的活动虚拟机的文件系统,你可能面临损坏虚拟机镜像的风险。
除了guestfish和guestmount命令,ibguestfs包还带有许多命令。这些命令多数用于特定任务,如virt-edit,允许你从主机操作系统直接编辑镜像文件。其他有用的命令是virt-win-reg,帮助你输出和合并Windows注册码,而virt-rescue能打开救援模式的镜像文件,因此允许你在镜像文件里做出修改,帮助你让其能再次访问。
Libguestfs代码
这样的高级工具存在问题,你会发现在libguestfs里,命令非常高级和有用,因此很难使用。libguestfs提供了说明书帮助你。通过使用它们,你能按照列表里的步骤执行困难的任务,如tar2vm.sh脚本,帮助你将虚拟机写入原始码。因为它们都是shell脚本,所以能做出修改。
从主机操作系统访问虚拟机子机文件一直很难。Libguestfs使其变得轻松,它提供了各种方法打开虚拟机磁盘文件,不管使用的是什么虚拟化方式创建的虚拟机,或者虚拟机里使用什么文件系统。目前,libguestfs只能用于Fedora和Ubuntu,相信不久之后,我们就能在其他版本里看见它的身影了。