也许没有多少人知道 libguestfs,一个用 C 编写的库和一组工具,允许您访问和修改虚拟机中使用的虚拟磁盘映像. 此外,您将能够使用多个基于 Linux KVM 的虚拟化平台,并且 VM 映像将使用 FUSE 模块和 guestmount/guestunmount 工具直接安装在主机上。
关于 libguestfs 的另一个好处是 几乎可以访问任何 FS,或文件系统,其中包括所有 Linux(ext2、ext3、ext4、XFS、btrfs、...)、MS Windows(VFAT 和 NTFS)、macOS(HFS 和 HFS+),以及 BSD,甚至 LVM2 卷管理。 所有这些都在 MBR 和 GPT 中。
至于 虚拟磁盘类型 您可以访问的内容可以是:
- qcow2
- 虚拟盒子.vdi
- 虚拟机.vmdk
- Hyper-V .vhd 和 .vhdx
您还可以访问和修改文件、本地设备、ISO 映像、SD 存储卡,或者通过远程操作 协议 如:
- 则fTP
- HTTP
- SSH的
- iSCSI
- 新开发银行
- Gluster文件系统
- 头孢
- 牧羊犬
- 等等
此外, libguestfs 不需要特权,这也很有趣。 感谢这个项目,您将拥有各种命令行工具,如 guestfish、guestmount、guestunmount、virt-rescue 来修复无法启动的 VM、virt-cat、virt-tar 等。
libguestfs 还充当 API 能够链接各种编程语言的管理程序:
- C
- C + +中
- Perl的
- 蟒蛇
- 红宝石
- 爪哇岛
- PHP
- 哈斯克尔
- Erlang
- LUA
- C#
- 等等
您也可以 从脚本中使用它,这在管理系统时非常实用。 此外,Richard Jones 的这个项目可以通过这种方式从许多知名发行版的存储库中安装:
- Debian / Ubuntu及其衍生版本
sudo apt install libguestfs-tools
- Fedora/CentOS/RHEL 及其衍生产品
sudo dnf install libguestfs
- Arch Linux及其衍生产品
sudo pacman -Sy libguestfs
顺便说一句,如果你是 使用 libvirt 如果您尝试调用 libguestfs 中包含的任何实用程序或工具,您将收到一个 错误 像这样:
libguestfs: error: could not create appliance through libvirt.
La 解 就像将变量导出为“直接”一样简单,如下所示:
export LIBGUESTFS_BACKEND=direct
更多信息 - 官方网站