存储性能怎么判断:从介质、IO 路径到瓶颈定位

(本文含有大量AI编辑内容)

谈存储性能,最容易陷入“背参数”:某块盘多少 IOPS,某种 RAID 写惩罚多少,NVMe 比 SATA 快多少。 但真正排查问题时,光背数字并不够。更有用的方式是建立一个简单模型:

存储性能,本质上是一个 IO 在整条路径上付出的成本总和。

这个成本可能来自介质本身,也可能来自排队、缓存、网络、校验、副本复制,甚至一次 fsync

理解这件事,先抓住三个变量。

1. 存储性能只看三个核心变量

几乎所有存储性能指标,都可以围绕三个变量展开:

  • Latency:一次 IO 往返需要多久
  • Queue Depth:同时挂起多少个 IO
  • Block Size:每次 IO 搬多大的数据

两个基本关系是:

IOPS ≈ 并发数 / 单次延迟
带宽 ≈ IOPS × IO 大小

所以不同场景关注点不同。

小块随机 IO,比如 4K 随机读写,主要看 IOPS 和 latency。 大块顺序 IO,比如备份、视频文件读写,主要看 带宽。 Queue Depth 提高后,IOPS 可能会上升,但排队也会让尾延迟变差,尤其是 p99 latency。

很多时候,平均延迟看起来还可以,但业务体感很差,问题就出在尾延迟上。

2. 介质差异:关键不是参数,而是物理限制

不同存储介质的性能差距,本质上来自它们的物理结构。

HDD:瓶颈是机械动作

HDD 的随机 IO 慢,不是因为协议复杂,而是因为它真的要“动”。

一次随机访问可能需要:

  • 移动磁头
  • 等盘片旋转到目标位置

7200 RPM 的硬盘转一圈约 8.3ms,平均要等半圈,也就是约 4.2ms,再加上寻道时间,所以一次随机 IO 常见在 8~15ms。

因此 HDD 的随机 IOPS 通常只有百级:

7200 SATA HDD:约 100 IOPS
10K SAS:约 150 IOPS
15K SAS:约 200 IOPS

记住一句话:

HDD 的随机性能是百级 IOPS,瓶颈是机械动作。

SATA SSD:里面很快,但门口较窄

SSD 没有机械寻道,随机访问能力比 HDD 强很多。普通 SATA SSD 通常可以达到几万到十万级 IOPS,延迟从几十微秒到 1ms 不等。

但它的顺序带宽通常在 500MB/s 左右。

原因不是闪存本身只能这么快,而是 SATA 6Gbps 接口的限制。理论上限约 600MB/s,实际可用更低。

可以这样理解:

SATA SSD 是里面快,但门口窄。

NVMe:为闪存重新设计的高速通道

NVMe 快,不只是因为盘快,还因为整条路径都更适合闪存:

  • 走 PCIe,带宽更高
  • 协议开销更低
  • 支持多队列
  • 更适合高并发

典型 NVMe SSD 可以达到几十万到百万级 IOPS,延迟常见在 10~100us,顺序带宽从数 GB/s 到十几 GB/s 不等。

所以不要把 NVMe 理解成“更快的 SATA SSD”。更准确地说:

NVMe 是高并发闪存通道。

3. RAID:并行带来加速,冗余带来成本

RAID 不只是“写惩罚”。它有两个面:

一面是多盘并行,能提高读性能和顺序吞吐; 另一面是镜像或校验,会增加小块随机写的成本。

常见 RAID 可以这样记:

RAID 0:只条带化,无冗余,性能好,但坏一块全坏
RAID 1:镜像,读可加速,写要写两份,容量利用率 50%
RAID 10:条带 + 镜像,读写都较好,写惩罚约 2,容量利用率 50%
RAID 5:条带 + 单校验,可坏 1 块,小随机写惩罚约 4
RAID 6:条带 + 双校验,可坏 2 块,小随机写惩罚约 6

估算小块随机写时,可以用这个公式:

随机写 IOPS ≈ 总物理 IOPS / 写惩罚

例如 8 块 10K SAS 盘,每块约 150 IOPS,总物理 IOPS 约 1200。

那么:

RAID10:1200 / 2 ≈ 600 IOPS
RAID5:1200 / 4 ≈ 300 IOPS
RAID6:1200 / 6 ≈ 200 IOPS

一句话总结:

RAID 的加速来自多盘并行,代价来自镜像和校验;读看并行,写看惩罚。

4. 缓存:它是前台柜台,不是永久仓库

缓存能让存储系统看起来很快,但要分清楚:它快的是“命中缓存”,不是后端介质真的变快了。

Page Cache、控制器缓存、Write-back Cache,都可以理解为“前台柜台”。

缓存命中时,请求不用访问后端磁盘,延迟很低。 缓存未命中时,最终还是要走到磁盘。 如果缓存里积累了大量脏页,后续集中回刷时,还可能造成突发的延迟抖动。

常见的两类 IO 是:

Buffered IO:经过操作系统 Page Cache
Direct IO:绕过 Page Cache,直接和文件系统/块设备交互

对普通应用来说,Buffered IO 很有价值:应用不用自己管理缓存,读过的数据留在 Page Cache 里,下次命中就很快。

但数据库通常已经有自己的缓存系统,比如 InnoDB Buffer Pool、PostgreSQL Shared Buffers。它们更清楚哪些是热点页、索引页、脏页,哪些数据不该污染缓存。

如果数据库再依赖 Page Cache,容易出现“双重缓存”:同一份数据同时存在于数据库缓存和操作系统缓存中,浪费内存。

更关键的是,数据库需要控制写入顺序和落盘时机,比如 WAL、redo log、checkpoint。Direct IO 可以减少 Page Cache 对缓存淘汰和回写节奏的干扰。

写缓存也有两种模式:

Write-back:写到缓存就返回,快,但需要断电保护
Write-through:真正写到后端才返回,更安全,但更慢

fsync 的含义是:不要只停在前台柜台,必须真正落到可靠介质上。

所以带 fsync 的写入通常延迟更高。很多数据库和日志系统的性能差异,背后都和同步落盘有关。

5. SSD 为什么会突然变慢?

SSD 虽然快,但它不是原地覆盖写。

一次写入背后,可能会触发:

  • 垃圾回收 GC
  • 磨损均衡
  • 数据搬迁
  • 块擦除
  • 映射表更新

这些内部动作会造成写放大。

盘越满,可用空闲块越少,垃圾回收越频繁,尾延迟也越容易变差。 这也是为什么 SSD 长期高水位使用时,性能可能突然抖动。

TRIM / discard 的作用,就是告诉 SSD:哪些块已经不用了,可以提前回收。

一句话理解:

SSD 快,但它内部也要整理仓库;空间越紧,整理成本越高。

6. 网络存储:本地 IO 变成了跨机器链路

本地盘的 IO 路径相对短。 网络存储的路径要长得多:

应用
→ 客户端协议栈
→ 网络
→ 服务端
→ 元数据处理
→ 副本或纠删码
→ 后端磁盘
→ 返回确认

如果是同步复制,一次写延迟至少包括:

本地处理 + 网络 RTT + 远端写入 + ACK

所以,单盘 NVMe 很快,不代表分布式存储也一定低延迟。 网络、复制、元数据、后端盘,任何一个环节都可能成为瓶颈。

常见的数据保护方式有两类。

三副本:

写入逻辑简单
延迟相对较低
空间利用率约 33%

纠删码,比如 EC 4+2:

空间利用率约 66.7%
小 IO 写入更复杂
计算、网络、修复成本更高

可以这样记:

三副本用空间换简单,纠删码用复杂度换空间。

7. 排查存储慢:沿 IO 路径找堵点

业务说“存储慢”,不要第一反应就去看磁盘。

先问几个问题:

是读慢还是写慢?
是平均慢,还是 p99 慢?
是所有请求慢,还是部分请求慢?
是本地盘、网络、文件系统、缓存,还是后端副本慢?

如果看 Linux 的 iostat,常用指标包括:

r/s、w/s:IOPS
rkB/s、wkB/s:吞吐
await:平均等待时间
aqu-sz:队列长度
%util:设备忙碌程度

但要注意,尤其是 NVMe 场景下,%util=100% 不一定表示设备已经被打满。

它更多表示“总有 IO 在路上”,不等于“NVMe 的所有并行能力都用满了”。

判断是否真正到瓶颈,需要结合:

IOPS
latency
带宽
Queue Depth
业务请求模式

磁盘可能只是“没闲着”,不一定是“已经榨干”。

8. 最后记住这些数量级

这些不是精确参数,而是用于快速判断的记忆锚点。

单盘性能:

7200 HDD:约 100 IOPS,延迟 10ms 级
10K SAS:约 150 IOPS
15K SAS:约 200 IOPS
SATA SSD:几万到十万 IOPS,顺序带宽约 500MB/s
NVMe SSD:几十万到百万 IOPS,顺序带宽数 GB/s

RAID 小块随机写惩罚:

RAID10:约 2
RAID5:约 4
RAID6:约 6

空间利用率:

三副本:约 33%
EC 4+2:约 66.7%

总结:存储瓶颈分析,就是追踪 IO 路径上的成本

如果只记一句话,可以记这个:

看存储,就是看 IO 在哪里等待、排队、复制、校验,或真正落盘。

更实用的四步分析法是:

介质是什么?
IO 类型是什么?
路径经过哪里?
成本付在哪里?

先看底层介质,再看随机/顺序、读/写、小块/大块、同步/异步,然后沿 IO 路径找等待、排队、复制、校验、网络和落盘成本。

存储性能不是一个单点指标,而是一条路径的结果。 理解这条路径,才能真正判断性能瓶颈在哪里。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务