RAID 写惩罚(Write Penalty)
raid的写惩罚是指在写入数据时,由于RAID的奇偶校验机制,需要进行额外的读写操作。
RAID 5使用的是分布式奇偶校验,数据和校验块分布在所有的硬盘上,当写入数据到RAID 5 磁盘阵列时,数据块与原来的数据不同,那么整个条带的数据以及对应的奇偶校验块都需要更新。
具体的RAID5 的写惩罚过程如下:
- 写入数据前,先读取原数据,然后与新数据进行XOR操作得到新的校验数据。
- 读取原有的校验块信息。
- 用新校验数据与原校验数据进行XOR操作得到新的校验数据。
- 将新数据写入到磁盘,将新的校验数据写入到检验磁盘。
由于这个机制,每次写入操作实际上需要两次读操作和两次写操作,因此RAID 5的写惩罚是4。
不考虑缓存和其他优化,RAID 5阵列的写入性能理论上只有单个硬盘写入性能的1/4。
不同的RAID级别的写惩罚(Write Penalty):
| RAID | Write Penalty |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 4 | 4 |
| 5 | 4 |
| 6 | 6 |
| 10 | 2 |
RAID 0 时,是把所有盘作为一块儿盘来使用,每次写入时不考虑缓存的影响,对应物理磁盘的写入也只会有一次。
RAID 1和10 时因为数据的镜像存在的,每次都是双写,故是2。
RAID 5和4时 由于要计算校验位的机制存在,需要读数据、读校验位、写数据、写校验位四个步骤,所以写惩罚值是4。
RAID 6时,需要写两个校验数据,与RAID 5相比,多了一组校验数据的读写,所以RAID 6的写惩罚值是6
计算IOPS
IOPS (Input/Output Operations Per Second ) 是衡量磁盘的读写能力的主要指标之一;单位时间内系统能处理的I/O请求数量;磁盘的IOPS 就是在一秒内,磁盘进行多少次I/O读写操作。
单块磁盘IOPS计算
传统的磁盘是机械装置,一个完整的IO操作会分为寻址,旋转等待,数据传输三步;
- 寻址即磁盘的驱动臂带读写磁头移动到要操作数据块所在磁道正上方的耗时,一般在3-15ms,一般都在10ms左右;
- 旋转等待,即在找到对应磁道后磁头要等待盘片旋转到初始数据所在扇区的正上方的过程的耗时,这个过程称为旋转延迟,这个一般取决于磁盘的转速,即我们常说的7200转,15000转等。
- 数据传输,即磁头不断读写数据块,知道完成本次IO所需操作的全部数据的耗时,这个时间去取决于数据传输速率,目前SATAII 可达到300MB/s的传输速率,这个传输时间通常远小于以上两部分的耗时,一般忽略不计。
一块磁盘的IOPS理论值计算公式:
IOPS = 1000 MS/(寻址耗时 + 旋转延迟耗时) ,不同转速的理论最大值:
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
raid组磁盘IOPS计算
在实际存储方案设计的过程中,计算实际可用IOPS的过程中必须纳入RAID的写惩罚计算。
计算公式如下:
物理磁盘总的IOPS = 物理磁盘的IOPS × 磁盘数目
可用的IOPS = (物理磁盘总的IOPS * 写百分比 ÷ RAID 写惩罚) + (物理磁盘总的IOPS × 读百分比)
8盘位7200转的raid5的读写比为4:1的理论最大值:
理论的IOPS = (140 * 7 * 80% ÷ 4) + (140 * 7 * 20%)= 392
参考文章:
https://www.dostor.com/article/2013-08-26/349588.shtml
https://www.cnblogs.com/morgan363/p/12192159.html