跳到主要内容

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虚拟机

  1. 准备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>
  1. 定义并启动虚拟机:
virsh define /path/to/vm.xml
virsh start CentOS-VM