Loading...

文章背景图

五种磁盘控制器深度对比:IDE - SATA - SCSI - VirtIO Block - VirtIO SCSI 性能与选型指南

2026-08-17
1
-
- 分钟

引言:为什么磁盘控制器如此重要

很多人在 PVE 上装完系统后发现「能用,但就是感觉慢」——数据库查询卡顿、文件复制缓慢、CPU 使用率居高不下,却找不出原因。问题往往出在创建虚拟机时随手选的那个磁盘控制器类型上。

磁盘控制器是虚拟机与底层存储之间的一座桥。它的实现方式决定了每次磁盘读写要经过多少层软件模拟、触发多少次 CPU 上下文切换(vm-exit)。在虚拟化世界里,控制器可以分为两大类:

  • 模拟(Emulated)设备:QEMU 用软件逐条指令模拟真实硬件(IDE、SATA、模拟 SCSI 卡)。兼容性极好,任何系统都能识别,但每次 I/O 都要经过 QEMU 的软件模拟层,CPU 开销巨大、性能受限。

  • 半虚拟化(Paravirtualized,VirtIO)设备:虚拟机里的驱动「知道」自己在虚拟环境里,直接与宿主机通过高效的 VirtIO 队列通信,跳过繁琐的硬件模拟。性能逼近裸机,但需要客户机安装对应驱动。

理解了这条分界线,下面的选型逻辑就一目了然了。


一、五种控制器逐一详解

1. IDE —— 只属于古董系统的「化石级」控制器

IDE(Integrated Drive Electronics)是 QEMU 中最古老的磁盘控制器,基于 Intel PIIX4 芯片组模拟而来。

性能参数

  • 一个 IDE 控制器含 2 个通道,共 4 个设备槽位(ide0 ~ ide3)

  • 纯软件模拟,无 DMA 优化(QEMU 中 IDE 采用 PIO 模式),顺序读写通常只有几十到上百 MB/s,随机 4K IOPS 极低

  • CPU 开销在五种控制器中最高

优势

  • 兼容性无与伦比:几乎所有操作系统(包括 Windows 9x/XP、上古 Linux)都内置 IDE 驱动,无需任何额外驱动即可识别

劣势

  • 性能垫底,CPU 占用高

  • 不支持热插拔、不支持 NCQ、不支持 TRIM/Discard

  • 设备数量受限(最多 4 个)

适用场景

  • CD-ROM/DVD 光驱挂载

  • 极老的操作系统(仅当没有其他选择时)

  • 作为安装 VirtIO 驱动前的「临时引导盘」

⚠️ 一个常见误区:很多人习惯把 Windows 的系统盘设成 IDE「图省事」,结果性能极差。PVE 官方明确建议——不要用 IDE 作为系统盘,它是给古董系统准备的

2. SATA —— 兼容与性能的折中之选

SATA 控制器模拟的是 Intel ICH9 的 AHCI(Advanced Host Controller Interface)控制器。

性能参数

  • 最多 6 个端口(sata0 ~ sata5)

  • 支持 NCQ(原生命令队列)与热插拔

  • 性能明显优于 IDE,但仍是软件模拟,CPU 开销中等偏高

  • 实测参考值(NVMe 后端,fio 基准):顺序读约 650 MB/s、顺序写约 520 MB/s,4K 随机读约 35,000 IOPS、随机写约 30,000 IOPS

优势

  • 兼容性好:Windows 7 及以后的系统、几乎所有现代 Linux 都内置 AHCI 驱动,无需额外装驱动

  • 比 IDE 快,支持热插拔与 NCQ

劣势

  • 仍是模拟设备,性能与 VirtIO 存在明显差距(顺序带宽只有 VirtIO 的一半左右)

  • QEMU 的 AHCI 模拟对 TRIM/Discard 支持有限,SSD 空间回收效果差

适用场景

  • 需要兼容性、又不方便装 VirtIO 驱动的场景(例如某些精简版系统、嵌入式 Linux)

  • 不追求极致性能的普通工作负载

3. SCSI(模拟)—— 经典但已显老态

这里的 SCSI 指 QEMU 模拟的传统 SCSI 控制器,PVE 提供多种型号:LSI 53C895A(默认老款)、LSI SAS 2008/1078MegaRAID SAS 9240-8i 等。

性能参数

  • LSI 53C895A:单通道,7 个 SCSI 目标(ID 0~6)

  • LSI SAS / MegaRAID:最多可挂 14 个磁盘

  • 性能中等偏低,CPU 开销高(尤其是老款 LSI 53C895A)

优势

  • 兼容性好:Windows 2000/XP/Server 时代就内置了 SCSI 驱动

  • 设备数量比 IDE/SATA 更多(SAS 卡可到 14 个)

劣势

  • 性能平庸,CPU 开销大

  • 已属于历史遗留方案,PVE 默认早已不再优先推荐

适用场景

  • 需要挂载大量磁盘、且无法使用 VirtIO 的老旧系统

  • 特定需要 SCSI 语义的应用

💡 关键提醒:在 PVE 里,当你在「磁盘总线」选择 SCSI 时,控制器类型是可以单独指定的。默认的「LSI 53C895A」性能较差,若用 SCSI,应把 SCSI 控制器换成「VirtIO SCSI」——这又是另一番天地(见下文)。

4. VirtIO Block —— 半虚拟化的「老兵」

VirtIO Block 是半虚拟化块设备,虚拟机驱动(virtio_blk / Windows 的 viostor.sys)直接与宿主机通信。

性能参数

  • 每块磁盘独占一个 virtio-blk 设备(一个 PCI 槽位),一卡一盘

  • 性能极高、CPU 开销极低

  • 实测参考值:顺序读约 1150 MB/s、顺序写约 920 MB/s,4K 随机读约 82,000 IOPS、随机写约 75,000 IOPS

  • 受 PCI 槽位限制,单机最多约 30 个设备

优势

  • 性能逼近裸机,CPU 开销低

  • 实现简单、稳定

劣势

  • 一卡一盘的架构导致扩展性差:磁盘多时会耗尽 PCI 槽位

  • 使用私有块设备语义,而非标准 SCSI 命令集,不支持 SCSI 直通

  • 对新功能(如多队列、TRIM)支持不如 VirtIO SCSI

适用场景

  • 磁盘数量少、追求单盘性能的场景

  • 部分老版本 QEMU / 特定兼容性需求

VirtIO Block 与 VirtIO SCSI 的性能差距很小,但 VirtIO Block 在架构上已被 VirtIO SCSI 全面取代。除非有特殊理由,否则不再推荐新部署使用 VirtIO Block。

5. VirtIO SCSI —— 当前的首选方案

VirtIO SCSI 是 VirtIO Block 的「进化版」,一个半虚拟化 SCSI 控制器可挂载多个磁盘,同时保留 VirtIO 的低 CPU 开销。

性能参数

  • 单控制器可挂大量磁盘(理论上支持数百个 target,远高于 VirtIO Block 的约 30 个)

  • 性能最高、CPU 开销最低

  • 实测参考值:顺序读约 1250 MB/s、顺序写约 980 MB/s,4K 随机读约 85,000 IOPS、随机写约 78,000 IOPS(五种控制器中最优)

  • 支持多队列(Multi-Queue),高并发随机 I/O 下表现稳定

两种模式

  • VirtIO SCSI(默认):一个控制器 + 多队列,所有磁盘共享该控制器

  • VirtIO SCSI single:每块磁盘各自拥有一个独立控制器(独立队列),避免队列争用,性能略优,是 PVE 官方推荐的高性能模式

优势

  • 性能天花板最高、CPU 开销最低

  • 标准 SCSI 命令集:设备命名为标准的 sdX,与裸机一致,便于物理↔虚拟迁移

  • 完整支持 TRIM/Discard、SCSI 直通(SCSI passthrough)、多队列

  • 可扩展性强,一个控制器可挂载大量磁盘

劣势

  • Windows 需要额外安装 VirtIO 驱动(vioscsi.sys)

  • 相对 VirtIO Block 略复杂(差异极小)

适用场景

  • 几乎所有新部署虚拟机的默认首选,尤其适合数据库、文件服务器、高并发应用等对 I/O 敏感的工作负载


二、横向对比总览

2.1 核心参数对比表

特性

IDE

SATA

SCSI(模拟)

VirtIO Block

VirtIO SCSI

类型

模拟

模拟

模拟

半虚拟化

半虚拟化

每控制器磁盘数

4

6

7~14

1(一盘一卡)

数百(single 为一盘一卡)

相对性能

★☆☆☆☆

★★★☆☆

★★☆☆☆

★★★★★

★★★★★

CPU 开销

极高

中高

极低

极低

热插拔

⚠️ 有限

NCQ

TRIM/Discard

⚠️ 有限

⚠️ 有限

⚠️ 有限

SCSI 直通

需额外驱动

(现代系统)

(现代系统)

2.2 性能基准数据(fio,PVE 7.4 + CentOS 7.9 + NVMe 后端)

控制器类型

顺序读 (MB/s)

顺序写 (MB/s)

4K 随机读 (IOPS)

4K 随机写 (IOPS)

VirtIO SCSI

1250

980

85,000

78,000

VirtIO Block

1150

920

82,000

75,000

SATA

650

520

35,000

30,000

IDE 与模拟 SCSI 的实测数据更低,故未列入同表。从上表可以直观看出:VirtIO 系控制器的顺序带宽约为 SATA 的两倍,随机 IOPS 约为 SATA 的 2.4~2.6 倍。这正是「选错控制器、性能掉一半」说法的由来。


三、选型推荐

3.1 通用结论(一句话版)

默认选 SCSI + VirtIO SCSI(single)控制器,Windows 系统提前装好 VirtIO 驱动;只有装不了驱动的场景才退而求其次用 SATA,IDE 留给光驱和古董系统。

3.2 按场景细分

场景

推荐控制器

说明

Linux 虚拟机(现代发行版)

VirtIO SCSI single

内核已内置 virtio_scsi,即开即用

Windows 虚拟机

VirtIO SCSI single

安装时加载 vioscsi 驱动即可

数据库 / 高并发应用

VirtIO SCSI + 多队列 + IO Thread

随机 I/O 场景优势明显

无法安装 VirtIO 驱动的老系统

SATA(或模拟 SCSI)

兼容优先,性能妥协

光驱 / ISO 挂载

IDE

光驱无性能需求,兼容最好

磁盘数量极多(数十块)

VirtIO SCSI(而非 single)

单控制器挂多盘,避免 PCI 槽耗尽

3.3 三条必须记住的「黄金配置」

  1. 系统盘别用 IDE——它是给古董系统用的,性能垫底、CPU 开销最高。

  2. SCSI 控制器要换成 VirtIO SCSI——PVE 里 SCSI 总线的默认控制器可能是 LSI 53C895A,性能差一大截,务必改成 VirtIO SCSI single。

  3. SSD + 精简置备,记得勾选 Discard——开启 TRIM 后,VM 释放的空间才能真实回收到宿主机,否则 thin provision 的盘会越用越大。

3.4 缓存模式(Cache)与 IO Thread 补充

控制器之外,还有两个直接影响性能的选项:

  • Cache 缓存模式:PVE 默认 No cache(none)最安全但写入较慢;追求极致性能可设 Write back(unsafe 变体有断电丢数据风险,谨慎使用);Write through 与 Direct sync 偏重安全。

  • IO Thread:启用后磁盘 I/O 交由独立线程处理,在多核宿主机、多盘或高 IOPS 场景下可显著提升性能,PVE 官方最佳实践明确建议开启。


四、常见误区与排错

误区 1:「选 SCSI 就是选了 VirtIO」 错误。SCSI 只是总线类型,控制器才是关键。默认的 LSI 53C895A 是模拟卡,性能平庸。务必手动把 SCSI Controller 改为 VirtIO SCSI single。

误区 2:「Windows 装不了 VirtIO 驱动」 错误。Windows 完全支持 VirtIO,只需在安装时「加载驱动程序」选择 virtio-win ISO 中的 vioscsi\wXX\amd64 目录即可。PVE 官方 Wiki 有完整步骤。

误区 3:「VirtIO Block 和 VirtIO SCSI 性能差很多」 ⚠️ 不准确。两者性能差距很小(单盘顺序带宽差约 8%),真正的区别在扩展性功能:VirtIO SCSI 支持单控制器挂多盘、SCSI 直通、更完善的 TRIM。选 VirtIO SCSI 是「性能差不多,功能更多」。

排错速查

  • Windows 虚拟机启动蓝屏/找不到磁盘 → 系统盘换 SATA 引导进系统装好 VirtIO 驱动,再切回 VirtIO SCSI。

  • SSD 空间不回收 → 检查是否勾选 Discard,以及后端是否为精简置备。

  • 高并发下 IOPS 上不去 → 确认已启用 IO Thread,并将控制器设为 VirtIO SCSI single(或多队列)。


总结与展望

磁盘控制器的选择,本质上是「兼容性」与「性能」的权衡

  • IDE / 模拟 SCSI 代表着极致的兼容、放弃性能,只适合光驱与古董系统;

  • SATA 是折中的舒适区,能跑但不快;

  • VirtIO Block / VirtIO SCSI 代表着半虚拟化的高性能路径,其中 VirtIO SCSI 凭借更强的扩展性与功能完整性,成为当前 PVE 的绝对主流。

对绝大多数新部署,「SCSI 总线 + VirtIO SCSI single 控制器 + IO Thread + Discard + Write back 缓存」 就是一套可以闭眼抄的「标准答案」,能在兼容性几乎无损的前提下,把磁盘 I/O 性能压榨到接近裸机的水平。

随着 Proxmox VE 版本迭代(当前已进入 8.x/9.0 时代)与 virtio-win 驱动的持续更新,半虚拟化生态只会愈发成熟。掌握这一组控制器的差异,是在 PVE 上做好存储性能优化的第一课,也是最容易被忽略却收益最高的一课。


参考资料:

原创

五种磁盘控制器深度对比:IDE - SATA - SCSI - VirtIO Block - VirtIO SCSI 性能与选型指南

文章目录