IOPS vs 吞吐:买盘、看跑分,到底盯哪个数字

磁盘跑分里IOPS和MB/s两个数字,很多人只看大的那个。小够讲清两者的区别、分别对应什么场景,以及商家宣传时最爱拿哪个忽悠人。

我是小够。fio那篇讲了4K随机和顺序读写,这篇把另一个维度讲透:IOPS和吞吐(MB/s)到底是什么关系,看跑分时盯哪个。

两个数字,一种换算

吞吐(Throughput):单位时间搬了多少数据,MB/s。IOPS:单位时间完成了多少次IO操作,次/秒。两者换算公式:吞吐 = IOPS × 每次IO的大小。

所以4K随机读IOPS 10000,吞吐只有约40MB/s;1M顺序读IOPS 3000,吞吐能到3000MB/s。同一个盘,块越大,吞吐数字越好看,IOPS反而可能越低——这就是为什么商家宣传永远报大块顺序读:数字最大。

分场景看

  • 建站/博客/数据库:小文件随机读写为主,盯IOPS(4K随机)。读IOPS过万是合格线,写IOPS更重要,数据库重度依赖随机写。
  • 下载站/备份/传文件:大文件顺序读写,盯吞吐。1Gbps带宽也就125MB/s,盘的顺序读超过200MB/s就不会成为瓶颈。
  • 系统盘:开机、装软件、日志写入,随机读写混合,IOPS优先。

一句话:日常用看IOPS,搬运看吞吐。商家只报吞吐不提IOPS的,多半是IOPS拿不出手。

看跑分的三个提醒

  1. 队列深度:fio的iodepth=32和iodepth=1,IOPS能差几倍。对比两份跑分,参数必须一致。
  2. 读写混合:纯读IOPS最好看,randrw(混合读写)更接近真实。只报纯读的,自动打七折看。
  3. 持续 vs 瞬时:有些盘前30秒IOPS爆表,之后掉一半(SLC缓存写满)。fio跑60秒以上、time_based模式,才能看出持续性能。

一句话总结

IOPS是次数,吞吐是总量,块大小决定换算;建站盯IOPS,下载盯吞吐。看到商家报"3000MB/s"先别激动,问一句:4K随机IOPS多少?下一篇讲Speedtest数字和实际下载的差距:为什么测出来800M,下载只有50M?