共计 822 个字符,预计需要花费 3 分钟才能阅读完成。
7200 硬盘 IOPS = 1000/(3 + 1000*(7200/60)/2) = 140
10k 硬盘 IOPS = 1000/(3 + 60000/10000/2) = 167
15k 硬盘 IOPS = 1000/(3 + 60000/15000/2) = 200
其中 3 为寻道延迟,7200/10k/15k 为转速(rpm),1000*(7200/60)/ 2 为旋转延迟(旋转延迟一般用转一圈所需时间的 1 / 2 表示),结果为理论峰值,实际还会有系统延迟导致测得 IOPS 一般低于此值。
由于 RAID 组需要校验以提供恢复功能,所以会存在一定写惩罚(一个业务写操作对应实际硬盘的 I / O 操作,可以参考 https://community.emc.com/docs/DOC-26624),这个系数如下:
RAID0: 1
RAID1: 2
RAID5: 4
RAID6: 6
RAID1-0: 2
所以 RAID 组 IOPS = 硬盘写 IOPS* 硬盘数量 * 写操作百分比 / 写惩罚系数 + 硬盘读 IOPS* 硬盘数量 * 读操作百分比。
以 4 块 IOPS 为 180 的 SAS 硬盘组 RAID 6 然后百分百随机写操作为例:
IOPS = 180*4/6 = 120
由于 Ceph 存储结构不同于物理硬件,所以影响其 IOPS 的因素主要有网络、副本数量、日志、OSD(硬盘)数量、OSD 服务器数量、OSD IOPS 等,这里给出一个来自 Mirantis 的经验公式:
IOPS = 硬盘 IOPS * 硬盘数量 * 0.88 / 副本数量
其中 0.88 为 4 -8k 随机读操作占比(88%),如果 OSD 不是以硬盘为单位而是 RAID 组,则替换公式中对应参数。
关于 Ceph 的 IOPS 计算仅供参考,计算结果可能会跟物理环境实测有较大偏差。