CentOS7.0关于libguestfs的bug

libguestfs,libguestfs-tools是用来在不启动虚拟机的情况下,快速简单访问虚拟机磁盘的工具。

 

今天在CentOS7.0系统上通过guestmount命令去mount虚拟机磁盘的时候,突然报出了如下错误:

libguestfs: error: supermin-helper exited with error status 1.
To see full error messages you may need to enable debugging.
See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs

查看具体出错原因,可以在guestmount命令后加上 -v 参数,表示输出debug信息,如下:

libguestfs: launch: backend=libvirt
libguestfs: launch: tmpdir=/tmp/libguestfsMYtoWx
libguestfs: launch: umask=0022
libguestfs: launch: euid=0
libguestfs: libvirt version = 1001001 (1.1.1)
libguestfs: [00000ms] connect to libvirt
libguestfs: opening libvirt handle: URI = NULL, auth = virConnectAuthPtrDefault, flags = 0
libguestfs: successfully opened libvirt handle: conn = 0x7feab79698b0
libguestfs: [00004ms] get libvirt capabilities
libguestfs: [00017ms] parsing capabilities XML
libguestfs: [00018ms] build appliance
libguestfs: command: run: supermin-helper
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ -f checksum
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ x86_64
supermin helper [00000ms] whitelist = (not specified), host_cpu = x86_64, kernel = (null), initrd = (null), appliance = (null)
supermin helper [00000ms] inputs[0] = /usr/lib64/guestfs/supermin.d
checking modpath /lib/modules/3.10.0-123.el7.x86_64 is a directory
picked vmlinuz-3.10.0-123.el7.x86_64
supermin helper [00000ms] finished creating kernel
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/base.img.gz
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/daemon.img.gz
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/hostfiles
supermin helper [00031ms] visiting /usr/lib64/guestfs/supermin.d/init.img
supermin helper [00031ms] visiting /usr/lib64/guestfs/supermin.d/udev-rules.img
supermin helper [00031ms] adding kernel modules
supermin helper [00068ms] finished creating appliance
libguestfs: checksum of existing appliance: c44bb96b2258e5c160495e5fb32bc79b970b92768e64efca76f989f00fb830b7
libguestfs: [00104ms] begin building supermin appliance
libguestfs: [00104ms] run supermin-helper
libguestfs: command: run: supermin-helper
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ --copy-kernel
libguestfs: command: run: \ -f ext2
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ x86_64
libguestfs: command: run: \ /var/tmp/guestfs.9MdTWL/kernel
libguestfs: command: run: \ /var/tmp/guestfs.9MdTWL/initrd
libguestfs: command: run: \ /var/tmp/guestfs.9MdTWL/root
supermin helper [00000ms] whitelist = (not specified), host_cpu = x86_64, kernel = /var/tmp/guestfs.9MdTWL/kernel, initrd = /var/tmp/guestfs.9MdTWL/initrd, appliance = /var/tmp/guestfs.9MdTWL/root
supermin helper [00000ms] inputs[0] = /usr/lib64/guestfs/supermin.d
checking modpath /lib/modules/3.10.0-123.el7.x86_64 is a directory
picked vmlinuz-3.10.0-123.el7.x86_64
supermin helper [00011ms] finished creating kernel
supermin helper [00267ms] finished mke2fs
supermin helper [00268ms] visiting /usr/lib64/guestfs/supermin.d
supermin helper [00268ms] visiting /usr/lib64/guestfs/supermin.d/base.img.gz
supermin helper [03388ms] visiting /usr/lib64/guestfs/supermin.d/daemon.img.gz
supermin helper [03405ms] visiting /usr/lib64/guestfs/supermin.d/hostfiles
supermin-helper: ext2: parent directory not found: centos-release: File not found by ext2_lookup
libguestfs: error: supermin-helper exited with error status 1, see debug messages above
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /var/tmp/guestfs.9MdTWL
libguestfs: clear_socket_create_context: setsockcreatecon failed: NULL: Invalid argument [you can ignore this UNLESS using SELinux + sVirt]
libguestfs: closing guestfs handle 0x7feab7969240 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsMYtoWx

从输出中可以找到具体出错原因,原来是由于在visit /usr/lib64/guestfs/supermin.d/hostfiles文件时,centos-release: File not found by ext2_lookup。

那么就可以有两种解决办法:

1、第一种是最直接简单的办法,可以先将/usr/lib64/guestfs/supermin.d/hostfiles文件备份一份到其他目录下,然后直接将/usr/lib64/guestfs/supermin.d/hostfiles文件中的所有有centos-release的行全部删除。

2、第二种就是升级libguestfs,supermin软件包。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。