120 Star 1 Fork 48

src-openEuler/libguestfs

libguestfs无法完成qcow2镜像文件增加尺寸以及修改文件系统内的文件

待办的
缺陷
创建于  
2022-04-05 08:10

【标题描述】能够简要描述问题:说明什么场景下,做了什么操作,出现什么问题(尽量使用正向表达方式)

virt-resize无法完成文件系统扩容。 virt-customize无法修改qcow2镜像文件。

  1. 下载qcow2镜像文件,

wget http://dl.rockylinux.org/pub/rocky/8.5/images/Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2

  1. 拷贝qcow2镜像文件

cp Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2 Rocky8.default.qcow2

  1. 增加qcow2镜像文件尺寸

export LIBGUESTFS_BACKEND=direct LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
qemu-img resize Rocky8.default.qcow2 +10G
cp Rocky8.default.qcow2 Rocky8.default.orig.qcow2
virt-resize --expand /dev/sda1 Rocky8.default.orig.qcow2 Rocky8.default.qcow2

运行结果:

virt-resize --expand /dev/sda1 Rocky8.default.orig.qcow2 Rocky8.default.qcow2

[ 0.0] Examining Rocky8.default.orig.qcow2
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_backend "direct"
libguestfs: trace: set_backend = 0
libguestfs: create: flags = 0, handle = 0x5643e77e14c0, program = virt-resize
libguestfs: trace: add_drive "Rocky8.default.orig.qcow2" "readonly:true" "protocol:file"
libguestfs: creating COW overlay to protect original drive content
libguestfs: trace: get_tmpdir
libguestfs: trace: get_tmpdir = "/tmp"
libguestfs: trace: disk_create "/tmp/libguestfsbyAs7m/overlay1.qcow2" "qcow2" -1 "backingfile:/var/lib/libvirt/images/Rocky8.default.orig.qcow2"
libguestfs: command: run: qemu-img
libguestfs: command: run: \ create
libguestfs: command: run: \ -f qcow2
libguestfs: command: run: \ -o backing_file=/var/lib/libvirt/images/Rocky8.default.orig.qcow2
libguestfs: command: run: \ /tmp/libguestfsbyAs7m/overlay1.qcow2
qemu-img: /tmp/libguestfsbyAs7m/overlay1.qcow2: Backing file specified without backing format
Detected format of qcow2.libguestfs: trace: disk_create = -1 (error)
libguestfs: trace: add_drive = -1 (error)
virt-resize: error: libguestfs error: qemu-img:
/tmp/libguestfsbyAs7m/overlay1.qcow2: qemu-img exited with error status 1,
see debug messages above

If reporting bugs, run virt-resize with debugging enabled and include the
complete output:

virt-resize -v -x [...]
libguestfs: trace: close
libguestfs: closing guestfs handle 0x5643e77e14c0 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsbyAs7m

修改qcow2镜像文件:

export LIBGUESTFS_BACKEND=direct LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
virt-customize -a Rocky8.default.qcow2 --root-password password:StrongRootPasswd

运行结果:

virt-customize -a Rocky8.default.qcow2 --root-password password:StrongRootPasswd

[ 0.0] Examining the guest ...
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_backend "direct"
libguestfs: trace: set_backend = 0
libguestfs: create: flags = 0, handle = 0x555c193a4600, program = virt-customize
libguestfs: trace: set_network true
libguestfs: trace: set_network = 0
libguestfs: trace: add_drive "Rocky8.default.qcow2" "readonly:false" "protocol:file" "discard:besteffort"
libguestfs: trace: add_drive = 0
libguestfs: trace: launch
libguestfs: trace: max_disks
libguestfs: trace: max_disks = 255
libguestfs: trace: get_tmpdir
libguestfs: trace: get_tmpdir = "/tmp"
libguestfs: trace: version
libguestfs: trace: version = <struct guestfs_version = major: 1, minor: 40, release: 2, extra: libvirt, >
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
libguestfs: launch: program=virt-customize
libguestfs: launch: version=1.40.2libvirt
libguestfs: launch: backend registered: unix
libguestfs: launch: backend registered: uml
libguestfs: launch: backend registered: libvirt
libguestfs: launch: backend registered: direct
libguestfs: launch: backend=direct
libguestfs: launch: tmpdir=/tmp/libguestfsA8fj1P
libguestfs: launch: umask=0022
libguestfs: launch: euid=0
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: begin building supermin appliance
libguestfs: run supermin
libguestfs: command: run: /usr/bin/supermin
libguestfs: command: run: \ --build
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ --if-newer
libguestfs: command: run: \ --lock /var/tmp/.guestfs-0/lock
libguestfs: command: run: \ --copy-kernel
libguestfs: command: run: \ -f ext2
libguestfs: command: run: \ --host-cpu x86_64
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ -o /var/tmp/.guestfs-0/appliance.d
supermin: version: 5.1.19
supermin: rpm: detected RPM version 4.17
supermin: package handler: fedora/rpm
supermin: acquiring lock on /var/tmp/.guestfs-0/lock
supermin: build: /usr/lib64/guestfs/supermin.d
supermin: reading the supermin appliance
supermin: build: visiting /usr/lib64/guestfs/supermin.d/base.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/daemon.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/excludefiles type uncompressed excludefiles
supermin: build: visiting /usr/lib64/guestfs/supermin.d/hostfiles type uncompressed hostfiles
supermin: build: visiting /usr/lib64/guestfs/supermin.d/init.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/packages type uncompressed packages
supermin: build: visiting /usr/lib64/guestfs/supermin.d/udev-rules.tar.gz type gzip base image (tar)
supermin: mapping package names to installed packages
supermin: resolving full list of package dependencies
supermin: build: 265 packages, including dependencies
supermin: build: 34399 files
supermin: build: 14156 files, after matching excludefiles
supermin: build: 14177 files, after adding hostfiles
supermin: build: 14165 files, after removing unreadable files
supermin: build: 14219 files, after munging
supermin: kernel: looking for kernel using environment variables ...
supermin: kernel: looking for kernels in /lib/modules/*/vmlinuz ...
supermin: kernel: looking for kernels in /boot ...
supermin: kernel: kernel version of /boot/vmlinuz-5.10.0-60.18.0.50.oe2203.x86_64 = 5.10.0-60.18.0.50.oe2203.x86_64 (from content)
supermin: kernel: picked modules path /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: picked vmlinuz /boot/vmlinuz-5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: kernel_version 5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: modpath /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
supermin: ext2: creating empty ext2 filesystem '/var/tmp/.guestfs-0/appliance.d.lnyi5re5/root'
supermin: ext2: populating from base image
supermin: ext2: copying files from host filesystem
supermin: ext2: copying kernel modules
supermin: *** parent directory not found ***
supermin: When reporting this error:
supermin: please include ALL the debugging information below
supermin: AND tell us what system you are running this on.
src=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/updates
dest=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/updates
dirname=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
basename=updates
supermin: ext2fs_namei: parent directory not found: /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64: File not found by ext2_lookup
supermin: failure: ext2fs_namei: parent directory not found
libguestfs: trace: launch = -1 (error)
virt-customize: error: libguestfs error: /usr/bin/supermin exited with
error status 1, see debug messages above

If reporting bugs, run virt-customize with debugging enabled and include
the complete output:

virt-customize -v -x [...]
libguestfs: trace: close
libguestfs: closing guestfs handle 0x555c193a4600 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsA8fj1P

【环境信息】
硬件信息:
1) 裸机场景提供出问题的硬件信息;

dmidecode 3.3

Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: XPS 13 9360
CPU: Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz
Mem: 16G (2x8G) LPDDR3 Samsung
Disk: Model: KXG50ZNV512G NVMe TOSHIBA 512GB (nvme)

2) 虚机场景提供虚机XML文件或者配置信息
软件信息:
1) OS版本及分支
openEuler LTS 22.03

2) 内核信息
kernel-5.10.0-60.18.0.50.oe2203.x86_64

3) 发现问题的组件版本信息
libguestfs-1.40.2-17.oe2203.x86_64

如果有特殊组网,请提供网络拓扑图
【问题复现步骤】
具体操作步骤

  1. 安装openEuler LTS 22.03 minimal install
  2. 安装UKUI
  3. 安装下列软件包:
    • bridge-utils
    • libvirt
    • libvirt-client
    • python3-libvirt
    • qemu
    • qemu-img
    • virt-install
    • virt-viewer
    • virt-manager
  4. 安装libguestfs
  5. 下载http://dl.rockylinux.org/pub/rocky/8.5/images/Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2
  6. 运行以下命令:
    export LIBGUESTFS_BACKEND=direct LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
    cp Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2 Rocky8.default.qcow2
    qemu-img resize Rocky8.default.qcow2 +10G
    cp Rocky8.default.qcow2 Rocky8.default.orig.qcow2
    virt-resize --expand /dev/sda1 Rocky8.default.orig.qcow2 Rocky8.default.qcow2

或者修改镜像文件:
virt-customize -a Rocky8.default.qcow2 --root-password password:StrongRootPasswd
virt-customize -a Rocky8.default.qcow2 --run-command 'sed -i '/SELINUX=/s/enforcing/disabled/' /etc/selinux/config'

出现概率(是否必现,概率性错误)

可以100%重复

【预期结果】
上述命令可以完成操作,没有错误出现

openEuler 21.09上没有问题。

【实际结果】

上述命令出错,未能正常完成。

【附件信息】
比如系统message日志/组件日志、dump信息、图片等

评论 (2)

linuxdav 创建了缺陷 3年前
openeuler-ci-bot 添加了
 
sig/System-tool
标签
3年前

禁用selinux之后,这个问题依然存在。

virt-customize --format qcow2 -a Rocky8.default.qcow2 --root-password password:StrongRootPasswd

[ 0.0] Examining the guest ...
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_backend "direct"
libguestfs: trace: set_backend = 0
libguestfs: create: flags = 0, handle = 0x555f6227c7b0, program = virt-customize
libguestfs: trace: set_network true
libguestfs: trace: set_network = 0
libguestfs: trace: add_drive "Rocky8.default.qcow2" "readonly:false" "format:qcow2" "protocol:file" "discard:besteffort"
libguestfs: trace: add_drive = 0
libguestfs: trace: launch
libguestfs: trace: max_disks
libguestfs: trace: max_disks = 255
libguestfs: trace: get_tmpdir
libguestfs: trace: get_tmpdir = "/tmp"
libguestfs: trace: version
libguestfs: trace: version = <struct guestfs_version = major: 1, minor: 40, release: 2, extra: libvirt, >
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
libguestfs: launch: program=virt-customize
libguestfs: launch: version=1.40.2libvirt
libguestfs: launch: backend registered: unix
libguestfs: launch: backend registered: uml
libguestfs: launch: backend registered: libvirt
libguestfs: launch: backend registered: direct
libguestfs: launch: backend=direct
libguestfs: launch: tmpdir=/tmp/libguestfsrVzpHv
libguestfs: launch: umask=0022
libguestfs: launch: euid=0
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: begin building supermin appliance
libguestfs: run supermin
libguestfs: command: run: /usr/bin/supermin
libguestfs: command: run: \ --build
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ --if-newer
libguestfs: command: run: \ --lock /var/tmp/.guestfs-0/lock
libguestfs: command: run: \ --copy-kernel
libguestfs: command: run: \ -f ext2
libguestfs: command: run: \ --host-cpu x86_64
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ -o /var/tmp/.guestfs-0/appliance.d
supermin: version: 5.1.19
supermin: rpm: detected RPM version 4.17
supermin: package handler: fedora/rpm
supermin: acquiring lock on /var/tmp/.guestfs-0/lock
supermin: build: /usr/lib64/guestfs/supermin.d
supermin: reading the supermin appliance
supermin: build: visiting /usr/lib64/guestfs/supermin.d/base.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/daemon.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/excludefiles type uncompressed excludefiles
supermin: build: visiting /usr/lib64/guestfs/supermin.d/hostfiles type uncompressed hostfiles
supermin: build: visiting /usr/lib64/guestfs/supermin.d/init.tar.gz type gzip base image (tar)
supermin: build: visiting /usr/lib64/guestfs/supermin.d/packages type uncompressed packages
supermin: build: visiting /usr/lib64/guestfs/supermin.d/udev-rules.tar.gz type gzip base image (tar)
supermin: mapping package names to installed packages
supermin: resolving full list of package dependencies
supermin: build: 265 packages, including dependencies
supermin: build: 34399 files
supermin: build: 14156 files, after matching excludefiles
supermin: build: 14177 files, after adding hostfiles
supermin: build: 14165 files, after removing unreadable files
supermin: build: 14219 files, after munging
supermin: kernel: looking for kernel using environment variables ...
supermin: kernel: looking for kernels in /lib/modules/*/vmlinuz ...
supermin: kernel: looking for kernels in /boot ...
supermin: kernel: kernel version of /boot/vmlinuz-5.10.0-60.18.0.50.oe2203.x86_64 = 5.10.0-60.18.0.50.oe2203.x86_64 (from content)
supermin: kernel: picked modules path /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: picked vmlinuz /boot/vmlinuz-5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: kernel_version 5.10.0-60.18.0.50.oe2203.x86_64
supermin: kernel: modpath /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
supermin: ext2: creating empty ext2 filesystem '/var/tmp/.guestfs-0/appliance.d.01fe84l8/root'
supermin: ext2: populating from base image
supermin: ext2: copying files from host filesystem
supermin: ext2: copying kernel modules
supermin: *** parent directory not found ***
supermin: When reporting this error:
supermin: please include ALL the debugging information below
supermin: AND tell us what system you are running this on.
src=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/updates
dest=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/updates
dirname=/lib/modules/5.10.0-60.18.0.50.oe2203.x86_64
basename=updates
supermin: ext2fs_namei: parent directory not found: /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64: File not found by ext2_lookup
supermin: failure: ext2fs_namei: parent directory not found
libguestfs: trace: launch = -1 (error)
virt-customize: error: libguestfs error: /usr/bin/supermin exited with
error status 1, see debug messages above

If reporting bugs, run virt-customize with debugging enabled and include
the complete output:

virt-customize -v -x [...]
libguestfs: trace: close
libguestfs: closing guestfs handle 0x555f6227c7b0 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsrVzpHv

登录 后才可以发表评论

状态
负责人
项目
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
预计工期 (小时)
开始日期   -   截止日期
-
置顶选项
优先级
里程碑
分支
参与者(2)
5329419 openeuler ci bot 1632792936 linuxdav-linuxdav
1
https://gitee.com/src-openeuler/libguestfs.git
git@gitee.com:src-openeuler/libguestfs.git
src-openeuler
libguestfs
libguestfs

搜索帮助