KVM 网络模式 & 磁盘模式详解

一、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>
  1. cache=none(生产推荐)
    • 关闭宿主机 page cache;QEMU 使用 O_DIRECT
    • 数据直接落盘,崩溃一致性最好,安全
    • 性能适中,数据库虚拟机首选
  2. cache=writethrough(直写)
    • 写同时写入宿主机缓存 + 磁盘;读走缓存
    • 安全,写性能较差
  3. cache=writeback(回写)
    • 写入宿主机缓存即返回成功,后台异步刷盘
    • 性能高;宿主机断电容易丢数据,不安全,谨慎使用
  4. cache=unsafe
    • 不做刷新,性能最高;风险最大,宿主机断电极易损坏磁盘
    • 仅临时测试环境

3. IO 模式(io)

  • io='threads':线程模式,默认,通用性好
  • io='native':使用 AIO 异步 IO,配合 cache=none,高性能,推荐块设备 / LVM 使用

4. 磁盘总线(disk bus,磁盘控制器类型)

xml 配置 <target dev='vda' bus='virtio'/>

  1. virtio‑block(virtio):半虚拟化驱动,性能最好,推荐
  2. ide:老式模拟磁盘,兼容性好,性能差;老系统用
  3. scsi:模拟 SCSI 控制器
  4. sata:模拟 SATA 磁盘

virtio 磁盘需要虚拟机内部安装 virtio 驱动,Windows 需要手动加载,Linux 内核自带。


生产最佳实践总结

网络

  • 单机测试:NAT
  • 需要局域网访问:Bridge 桥接
  • 高性能网络:virtio 网卡 + macvtap / 网卡直通

磁盘

  • 镜像:qcow2
  • cache:none
  • 磁盘总线:virtio
  • 高 IO 数据库:LVM 裸块设备
上一篇
下一篇