一、虚拟机基础管理

1. 启动虚拟机

# 基础启动(x86_64架构)
qemu-system-x86_64 -m 2048 -smp 2 -hda disk.img

# 启用KVM加速(Linux需硬件支持)
qemu-system-x86_64 -enable-kvm -cpu host -m 4096 -hda disk.img

# 指定ISO镜像安装系统
qemu-system-x86_64 -cdrom ubuntu.iso -boot d -hda disk.img

关键参数:

  • -m <MB>:分配内存大小(如 -m 4096 分配4GB)
  • -smp <N>:CPU核心数(如 -smp 4 分配4核)
  • -hda/-hdb/-hdc/-hdd:指定虚拟磁盘镜像
  • -cdrom:挂载ISO镜像
  • -boot <order>:启动顺序(d=光驱, c=硬盘, n=网络)

2. 虚拟机控制

操作 快捷键/命令
强制关闭虚拟机 关闭QEMU窗口或 Ctrl+C(终端)
进入命令控制台 Ctrl+Alt+2
返回虚拟机界面 Ctrl+Alt+1
安全关机 在虚拟机内执行 sudo poweroff

二、虚拟磁盘管理

1. 创建磁盘镜像

# 创建动态分配的qcow2镜像(推荐)
qemu-img create -f qcow2 disk.qcow2 20G

# 创建RAW格式镜像(性能优先)
qemu-img create -f raw disk.raw 20G

2. 磁盘格式转换

qemu-img convert -f raw -O qcow2 input.raw output.qcow2

3. 磁盘信息检查

qemu-img info disk.qcow2  # 查看镜像详细信息
qemu-img check disk.qcow2 # 检查镜像完整性

三、网络配置

1. 用户模式网络(NAT)

-netdev user,id=net0 -device e1000,netdev=net0
  • 虚拟机通过宿主机NAT上网,默认IP段 10.0.2.0/24

2. 桥接网络(直接接入物理网络)

# 宿主机创建桥接接口后启动命令:
-netdev bridge,br=br0,id=net0 -device virtio-net-pci,netdev=net0

3. 端口转发

-netdev user,id=net0,hostfwd=tcp::2222-:22
  • 将宿主机的2222端口转发到虚拟机的22端口(SSH)

四、设备模拟

1. 挂载USB设备

-device usb-host,vendorid=0x1234,productid=0x5678

2. 共享文件夹(9p virtio)

# 宿主机启动参数:
-fsdev local,id=fs1,path=/host/path,security_model=mapped \
-device virtio-9p-pci,fsdev=fs1,mount_tag=shared_folder

# 虚拟机内挂载:
mount -t 9p shared_folder /mnt -o trans=virtio

3. 显卡模拟

-vga std       # 标准VGA(默认)
-vga virtio    # VirtIO显卡(需驱动支持)
-vga none      # 无显卡(仅命令行)

五、调试与监控

1. 启用QEMU Monitor

-monitor stdio  # 启动时进入交互式监控台

常用Monitor命令:

  • info status:查看虚拟机状态
  • savevm <snapshot>:保存快照
  • loadvm <snapshot>:恢复快照
  • device_add/del:热插拔设备

2. 远程调试

# 启动GDB调试服务器(默认端口1234)
-s -S

六、高级功能

1. 多架构模拟(ARM示例)

# 模拟树莓派4B(需内核文件)
qemu-system-aarch64 -M virt -cpu cortex-a72 -m 2G \
  -kernel vmlinuz -initrd initrd.img \
  -append "root=/dev/vda2 console=ttyAMA0"

2. 热迁移(Live Migration)

# 源主机执行:
migrate -d tcp:目标主机IP:端口

3. 虚拟机快照

# 创建快照
qemu-img snapshot -c snapshot1 disk.qcow2

# 恢复快照
qemu-img snapshot -a snapshot1 disk.qcow2

七、常用问题排查命令

1. 验证KVM支持

cat /proc/cpuinfo | grep -E 'vmx|svm'  # Intel/AMD虚拟化支持
lsmod | grep kvm                      # 检查KVM模块加载

2. 网络连通性测试

# 宿主机检查虚拟机端口
telnet localhost 2222  # 测试端口转发

3. 日志记录

qemu-system-x86_64 -d guest_errors > qemu.log 2>&1

推荐搭配工具:

  • virt-manager:图形化管理QEMU/KVM
  • virsh:Libvirt命令行工具
  • Wireshark:抓包分析虚拟机网络