我用于磁盘IO的经验法则是:
SATA每个主轴75个IOP。
FC / SAS每个主轴150个IOP
用于SSD的每个主轴1500 IOP。
除了每个阵列的 IOP之外,还应考虑每TB的IOP。如果采用SATA + RAID6,以每TB的IOP比率非常糟糕的情况并不少见。这听起来可能不算太多,但是您最终会发现有人发现了阵列上的“可用空间”并想要使用它。人们通常会购买演出而忽略iops,而在大多数企业系统中情况恰恰相反。
然后增加RAID的写代价:
- 2个代表RAID1,RAID1 + 0
- 4个用于RAID5(或4个)
- RAID6为6。
在适当的情况下,可以部分减轻较大的大型写缓存的写入损失。如果您有大量顺序写入IO(例如DB日志),则可以大大减少RAID 5和RAID 6上的那些写入损失。如果您可以写一条完整的条带(例如,每个主轴一个块),则无需阅读即可计算奇偶校验。
假设设置了8 + 2 RAID 6集。在单个写入IO的正常操作中,您需要:
- 阅读“更新”块。
- 读取第一个奇偶校验块
- 读取第二个奇偶校验块
- 重新计算奇偶校验。
- 全部写入3.(6个IO)。
使用缓存的全条带写入-例如RAID条带大小的8个连续的“块”,您可以计算整个批次的奇偶校验,而无需读取。因此,您只需要执行10次写入操作-每个数据一次,两次奇偶校验。
这使您的写惩罚为1.2。
您还需要记住,写IO易于缓存-您不需要立即将其存储在磁盘上。它在软时间限制下运行-只要平均您的传入写入不超过主轴速度,它都将能够以“缓存速度”运行。
另一方面,读取IO受到时间的限制-在获取数据之前,您无法完成读取。那时,读取缓存和缓存加载算法变得很重要-可以预测和预取可预测的读取模式(例如顺序读取,例如从备份中获取),而随机读取模式则不能。
对于数据库,通常建议您假设:
两者之比很难说。取决于数据库的功能。
因为随机读取IO是缓存的最坏情况,所以SSD确实是它自己存在的地方-许多制造商都不会理会缓存SSD,因为无论如何它的速度都差不多。因此,特别是对于诸如临时数据库和索引之类的东西,SSD可提供良好的投资回报。