guestfish --rw -a qcow2
#镜像文件绝对路径 (例子:guestfish --rw -a /home/kvm/images/CentOS-7.8.2003-x64.qcow2)
进入后先执行run;
随后执行list-filesystems 查看分区信息;
以魔方centos7.8镜像为例,分区信息为 /dev/sda1: ext4 ,执行mount /dev/sda1 / 进行分区挂载;
接下来可以修改任意文件,例如操作ssh登录提示 vi /etc/motd
执行exit 退出
目前发现一个重点问题:在挂载xfs分区时会出现分区格式不兼容的情况。例如CentOS8官方的云镜像,默认是xfs分区格式,CentOS8与CentOS7的xfs格式不相同,会出现兼容问题 运行不成功或挂载不成功,请注意区分。
1.另外一种挂载到宿主机目录方式
guestmount -a qcow2 -m 分区 /宿主机目录
#镜像文件绝对路径 (例子:guestmount -a /home/kvm/images/CentOS-7.8.2003-x64.qcow2 -m /dev/sda1 /mnt)
#卸载命令
guestunmount /mnt
二、 清除磁盘空洞
virt-sparsify -x 原qcow2镜像文件路径 --convert qcow2 新qcow2镜像文件路径
(例子:virt-sparsify -x /home/kvm/images/CentOS-7.8.2003-x64.qcow2 --convert qcow2 /home/kvm/images/tmp.qcow2)
如果出错提示tmp不足可以参考下面这个文章
[post cid="134" /]
操作完成后,可先进行重装验证是否可以正常引导启动,最后修改新qcow2镜像文件名称
三、对qcow2镜像文件进行打包压缩
qemu-img convert -c -O qcow2 需要压缩的镜像文件路径 压缩后的镜像文件路径
(例子:qemu-img convert -c -O qcow2 /home/kvm/images/tmp.qcow2 /home/kvm/images/CentOS-7.8.2003-x64.qcow2)
]]>