一、虚拟机基础管理
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/KVMvirsh:Libvirt命令行工具Wireshark:抓包分析虚拟机网络