QEMU/KVM镜像操作指南
QEMU镜像挂载方法
在Linux中,可以通过libguestfs-tools工具挂载qcow2类型的镜像(QEMU/KVM使用)。
安装工具
apt-get install libguestfs-tools
查看镜像分区
virt-filesystems -a CentOS-7-x86_64-GenericCloud.qcow2
挂载镜像分区
基本语法:
guestmount -a [镜像文件] -m [分区] [挂载点]
示例命令:
# 挂载CentOS镜像
guestmount -a CentOS-7-x86_64-GenericCloud.qcow2 -m /dev/sda1 ./fix
# 挂载Debian镜像
guestmount -a debian-12-genericcloud-amd64.qcow2 -m /dev/sda1 ./fix
# 挂载Rocky镜像
guestmount -a Rocky-8-GenericCloud-Base.latest.x86_64.qcow2 -m /dev/sda1 /mnt
参数说明:
-a
指定镜像文件-m
指定镜像文件需要挂载的分区/mnt
指定本地的挂载点
卸载镜像
umount ./fix
虚拟机配置示例
Ubuntu 20.04+ 配置示例
timezone: Asia/Shanghai
packages:
- qemu-guest-agent
runcmd:
- sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
- locale-gen
- update-locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8
- systemctl start qemu-guest-agent.service
- sed -i 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/' /etc/sudoers
通用cloud-init配置
#cloud-config
timezone: Asia/Shanghai
locale: zh_CN.UTF-8
镜像处理工具使用
virt-sysprep - 重置清理镜像
virt-sysprep -d rhel7
virt-sparsify - 减少镜像大小
virt-sparsify --compress rhel7.qcow2 rhel7-cloud.qcow2
检查安装必要组件
rpm -qa | grep growpart
rpm -qa | grep growroot
# 安装缺少的组件
rpm -ivh https://example.com/path/to/cloud-utils-growpart-0.27-10.el6.x86_64.rpm
rpm -ivh https://example.com/path/to/dracut-modules-growroot-0.20-2.el6.noarch.rpm
文件传输示例
使用rsync同步镜像
基本语法:
rsync -avz [源文件] [目标路径]
示例命令:
# 同步Ubuntu镜像
rsync -avz focal-20.04-server-cloudimg-amd64.img root@192.168.1.100:/home/update/Cloud-images/
# 同步Rocky镜像
rsync -avz ./Rocky-8-* root@example.com:/home/update/Cloud-images/rocky-cloud-img/8/
PVE虚拟机导出指南
1. 查找虚拟机磁盘
find / -name vm-[ID]-disk*
2. 查看磁盘信息
qemu-img info <设备>
3. 转换磁盘格式
qemu-img convert -f <原格式> -O <目标格式> <原文件路径> <目标文件路径>
示例:将raw格式转换为vmdk
qemu-img convert -f raw -O vmdk /dev/dm-94 /dev/vm219-0.vmdk
4. 传输虚拟机镜像
转换完成后,可以通过scp或其他方式传输到目标服务器。
使用现有QCOW2镜像创建Libvirt虚拟机
- 准备XML配置文件示例:
<domain type='kvm'>
<name>CentOS-VM</name>
<memory unit='KiB'>2097152</memory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
<boot dev='hd'/>
</os>
<devices>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/path/to/image.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
</devices>
</domain>
- 定义并启动虚拟机:
virsh define /path/to/vm.xml
virsh start CentOS-VM