一、KVM 常见网络模式
本质是 Linux 网桥、NAT、路由、OVS 等实现,libvirt 把它封装成网络类型
1. NAT(默认网络,virbr0)
- 原理:虚拟机网卡→libvirt 虚拟交换机 (virbr0)→iptables 做源地址转换
- 虚拟机:内网 IP(如 192.168.122.0/24)
- 访问外网:✅ 可访问宿主机外网
- 宿主机访问虚机:❌ 默认不能主动访问虚拟机(虚机在 NAT 后面)
- 虚机互访:✅ 同一 NAT 网络内虚拟机互通
- 适用场景:单机测试,虚拟机不需要被外部机器访问
- 缺点:性能有损耗,不能直接对外提供服务
2. Bridge 桥接(br0,最常用生产模式)
- 原理:宿主机物理网卡加入网桥,虚拟机和宿主机处在同一个局域网
- IP:和宿主机同网段,可被局域网其他机器直接访问
- 访问外网:✅
- 宿主机访问虚机:✅
- 局域网其他主机访问虚机:✅
- 虚机互访:✅
- 适用场景:虚拟机需要对外提供服务、多机集群、生产环境
注意:桥接不要用物理网卡本身,要新建网桥,把 eth0/enp0s3 加入网桥
3. Host‑only(仅主机)
- 原理:虚拟网桥,没有 NAT 转发
- 虚拟机只能和宿主机、同网络虚拟机通信,不能访问外网
- 适用场景:纯内网隔离环境,测试集群、不能上网的环境
4. 路由模式 (Routed)
- 虚拟机网段≠宿主机网段,宿主机充当路由器转发,不做 SNAT
- 需要手动配置路由,较少使用
5. Open vSwitch(OVS)
- 高级虚拟交换机,支持 VLAN、QoS、端口镜像、bond
- 适合多租户、云计算、复杂网络隔离场景
6. Macvtap / Passthrough(网卡直通)
(1) macvtap
- 虚拟机直接使用物理网卡,宿主机和虚拟机二层隔离
- 宿主机不能直接访问虚拟机,虚拟机可访问外网
- 优点:性能接近物理网卡,不用网桥
(2) PCI‑Passthrough 网卡直通
- 把整块物理网卡直接分配给虚拟机,宿主机不能再使用该网卡
- 性能最好,无虚拟化开销
网络模式速记: NAT:能上外网,外面找不到它;桥接:局域网可见;仅主机:只能内网互访;直通:独占物理网卡
二、KVM 磁盘模式(磁盘镜像格式 + 缓存 / IO 模式)
1. 镜像文件格式(最核心)
① raw(裸格式)
- 原始镜像,非稀疏文件,创建多大就占多大磁盘空间
- 优点:性能最高;可直接挂载、dd 读写;不需要转换就能给 vmware/xen 用
- 缺点:占用空间大,不支持快照,不支持差分镜像
- 后缀:
.img
② qcow2(最推荐,libvirt 默认)
- QEMU Copy‑On‑Write,写时复制、稀疏文件
- 特性:
- 按需分配磁盘空间(创建 100G 磁盘,实际只占用已写入数据大小)
- ✅ 支持快照(snapshot)
- ✅ 支持差分镜像(base 镜像 + 增量子镜像)
- ✅ 支持 AES 加密、压缩
- 缺点:性能略低于 raw,现代硬件差距很小
生产首选 qcow2
③ qcow(老版本,qcow1)
旧格式,已经淘汰,不要使用
④ vmdk
VMware 镜像格式,KVM 可读写,多用于迁移
⑤ vdi
VirtualBox 镜像格式
⑥ lvm 裸块设备
直接给虚拟机分配 LVM 分区 / 块设备,不使用镜像文件
- 性能高,适合数据库高 IO 业务
- 缺点:不能直接快照(需要 lvm 快照)
2. 磁盘缓存模式(cache 参数,xml 中配置)
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
</disk>
- cache=none(生产推荐)
- 关闭宿主机 page cache;QEMU 使用 O_DIRECT
- 数据直接落盘,崩溃一致性最好,安全
- 性能适中,数据库虚拟机首选
- cache=writethrough(直写)
- 写同时写入宿主机缓存 + 磁盘;读走缓存
- 安全,写性能较差
- cache=writeback(回写)
- 写入宿主机缓存即返回成功,后台异步刷盘
- 性能高;宿主机断电容易丢数据,不安全,谨慎使用
- cache=unsafe
- 不做刷新,性能最高;风险最大,宿主机断电极易损坏磁盘
- 仅临时测试环境
3. IO 模式(io)
io='threads':线程模式,默认,通用性好io='native':使用 AIO 异步 IO,配合 cache=none,高性能,推荐块设备 / LVM 使用
4. 磁盘总线(disk bus,磁盘控制器类型)
xml 配置 <target dev='vda' bus='virtio'/>
- virtio‑block(virtio):半虚拟化驱动,性能最好,推荐
- ide:老式模拟磁盘,兼容性好,性能差;老系统用
- scsi:模拟 SCSI 控制器
- sata:模拟 SATA 磁盘
virtio 磁盘需要虚拟机内部安装 virtio 驱动,Windows 需要手动加载,Linux 内核自带。
生产最佳实践总结
网络
- 单机测试:NAT
- 需要局域网访问:Bridge 桥接
- 高性能网络:virtio 网卡 + macvtap / 网卡直通
磁盘
- 镜像:qcow2
- cache:none
- 磁盘总线:virtio
- 高 IO 数据库:LVM 裸块设备