Linux虚拟机文件系统访问工具-libguestfs
2013-09-12 22:27:44 阿炯

本站赞助商链接,请多关照。 libguestfs 是一个用于访问和修改虚拟机(VM)磁盘映像的工具。你可以用libguestfs查看和编辑文件,可以改变脚本为VMS,监控磁盘使用状况统计,P2V,V2V,执行部分备份,克隆VMs等等。它同时提供与Perl语言绑定。采用GNU LGPLGPL双授权。


tools for accessing and modifying virtual machine disk images.

libguestfs is a set of tools for accessing and modifying virtual machine (VM) disk images. You can use this for viewing and editing files inside guests, scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V, performing partial backups, cloning VMs, and much else besides.

libguestfs can access nearly any type of filesystem including: all known types of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, Hyper-V VHD/VHDX, on files, local devices, CD and DVD ISOs, SD cards, or remotely over FTP, HTTP, ssh, iSCSI, NBD, Gluster, Ceph, Sheepdog, and much much more. libguestfs doesn't need root permissions.

All this functionality is available through a convenient shell called guestfish, or use virt-rescue to get a rescue shell for fixing unbootable virtual machines.

libguestfs 运行时不需要root权限,可以访问和支持的文件系统包括:
all known types of Linux filesystem (ext2/3/4, XFS, btrfs, etc.), any Windows filesystem (VFAT and NTFS), any Mac OS X and BSD filesystems, LVM2 volumes, MBR and GPT disk partitions, raw disks, qcow2, CD and DVD ISO images, SD cards, and dozens more. libguestfs doesn't need root permissions.

它可以帮助你访问和修改虚拟机磁盘镜像,有大量命令可用,帮助你管理虚拟机镜像文件。

在后端,libguestfs帮助你访问多数常见的linux文件系统,如ext2/3和4、btrfs和ntfs。更为重要的是你也能使用它管理多种常见的镜像文件类型,如kvm环境里的qcow2,以及vmware磁盘文件使用的vmdk。在使用libguestfs时,使用以下命令让镜像文件可访问:
guestfish --ro -i freeoa.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的出现使其变得轻松,它提供了各种方法打开虚拟机磁盘文件,不管使用的是什么虚拟化方式创建的虚拟机,或者虚拟机里使用什么文件系统。


最新版本:1.22
virt 检查员可以从VMs中提取OS图标。
VIRT 可以使用btrfs调整文件大小。
Guestfish 可以附加到文件中。
virt-LS 支持输出格式virt - WIN- REG和HKEY_USERS。

官方主页:http://libguestfs.org/