使用libguestfs轻松访问Linux虚拟机文件系统

日期: 2010-04-15 作者:Sander van Vugt翻译:唐琼瑶 来源:TechTarget中国 英文

假设由于虚拟机里的大量配置文件损坏了,导致虚拟机不能启动。那么你要访问和修复那些配置文件会非常困难,尤其是因为虚拟机镜像文件的创建没有一个标准。在本文中,TechTarget中国的特约专家Sander van Vugt将介绍使用libguestfs搞定Linux虚拟机文件系统的访问。   libguestfs是一个目录,帮助你访问和修改虚拟机磁盘镜像。

你可以轻松安装此软件到Fedora 11或更高版本,二进制软件包可以用于其它Linux版本。安装后(运行YUM和在Fedora 11上安装’*guestfs*’ guestfish),你有大量命令可用,帮助你管理虚拟机镜像……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

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不是唯一的访问方法。相反,你能使用来自主机操作系统的libguestfs命令。其中最有用的是guestmount命令。使用这个命令,FUSE文件系统习惯于从主机操作系统直接访问镜像文件。但从正在运行的虚拟机做这个不太合适,因为可能会在磁盘访问里遇到冲突。例如,如果你想直接在Windows子机上访问文件,可以使用下面的guestmount命令:

  guestmount -a windows.img -m /dev/sda1 --ro /mnt

  在这个命令中,Windows镜像是作为输入镜像文件的。在这里,第一个硬盘上的第一个分区加载为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,相信不久之后,我们就能在其他版本里看见它的身影了。

相关推荐