首页/云/云平台与虚拟化速查/virtio-blk 与 virtio-scsi 选型对比
虚拟化基础63 条

virtio-blk 与 virtio-scsi 选型对比

两种 virtio 磁盘控制器各有适用面:virtio-blk 路径短、单盘延迟低;virtio-scsi 支持更多设备与 SCSI 语义(如 TRIM、热插拔),多盘与 IO 线程场景更常用。

云平台与虚拟化速查云更新于 2026-10-13

两种磁盘接入方式的区别

virtio-blk 与 virtio-scsi 是 KVM 虚机接入磁盘的两种方式。virtio-blk 把磁盘直接以块设备形式暴露给 guest,路径更短、单盘延迟更低;virtio-scsi 通过一层 SCSI 控制器接入,牺牲少量开销换来更多设备、热插拔、discard/TRIM 与 iothread 等能力。选哪种取决于虚机要挂多少盘、是否需要 SCSI 语义。

基本信息

guest 设备名virtio-blk 为 vda/vdb,virtio-scsi 为 sda/sdb
单盘开销virtio-blk 较低,virtio-scsi 多一层控制器
设备数virtio-blk 受 PCI 槽位约束,virtio-scsi 单控制器可挂较多盘
高级特性virtio-scsi 支持热插拔、discard/unmap、多队列与 iothread
配置位置域 XML 中的 controller 与 disk 元素

典型使用场景

  • 单盘、追求低延迟的数据库类虚机用 virtio-blk
  • 需要挂载多块数据盘的虚机用 virtio-scsi 避免 PCI 槽位不够
  • 需要在 guest 内做 TRIM/discard 的轻量置备盘用 virtio-scsi
  • 需要在线热插拔磁盘时选 virtio-scsi 获得标准 SCSI 语义
  • 为磁盘分配独立 iothread 提升并发吞吐时用 virtio-scsi

选型对比

维度virtio-blkvirtio-scsi
单盘开销较低略高(多一层控制器)
设备数受 PCI 槽位约束单控制器可挂较多盘
热插拔与 SCSI 语义有限支持
discard/TRIM依赖驱动与配置,能力有限支持 unmap,配合精简存储可回收空间
典型场景单盘低延迟多盘、iothread、TRIM

virtio-scsi 磁盘 XML 片段

virtio-scsi 磁盘 XML 片段
<controller type='scsi' model='virtio-scsi'/>
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' discard='unmap'/>
  <source file='/var/lib/libvirt/images/vm1.qcow2'/>
  <target dev='sda' bus='scsi'/>
</disk>
切换控制器类型相当于换总线:guest 内设备名会从 vda 变成 sda,需要同步调整挂载配置与 fstab,否则重启后无法进入系统。
discard=unmap 只有底层存储支持回收才有意义(如精简置备存储、LVM thin pool、支持 TRIM 的 SSD),底层不支持时丢弃操作可能被忽略,白白增加一次 I/O 开销。

选型判断顺序

  • 先数盘:盘数多或需要频繁增减盘,virtio-scsi 更省心
  • 再看是否需要热插拔:需要在线增删磁盘就选 virtio-scsi
  • 再看是否需要 TRIM:用精简置备且希望回收空间的场景选 virtio-scsi
  • 最后看性能敏感度:单盘低延迟场景优先 virtio-blk,并用压测确认差值
  • 已经上线的虚机改总线前,先确认 guest 内是否有对应驱动与 fstab 是否用设备名
多块盘共用同一个 virtio-scsi 控制器时,控制器本身也可能成为瓶颈,高并发场景可考虑多控制器或配合 iothread 分散处理。

易错点

  • 随意切换总线类型:guest 内 sda 与 vda 名称变化导致挂载失败
  • 为传统厚置备盘开启 discard,回收动作对空间没有帮助还增加开销
  • virtio-blk 挂盘过多,PCI 槽位耗尽后无法继续添加设备
  • 忽略驱动差异:老系统缺少 virtio-scsi 驱动,切换总线后磁盘不可见

数据来源与参考

  • libvirt 文档:磁盘与控制器
  • QEMU 文档:virtio-scsi 设备
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌