简而言之,具有 n+1 个磁盘的 Raid 5 是否可以获得与具有 n 个磁盘的 Raid 0 类似的性能?
如果没有,有人可以解释一下原因吗?
如果我理解正确的话,Raid 5 还会将异或数据分布在所有磁盘上,因此我期望性能相似
答案1
为了读访问,RAID5 预计具有与 RAID0 类似的性能,理论上如果访问受到寻道时间限制,甚至会更好一些。
为了写以随机模式进行访问,RAID5 的性能预计会比 RAID0 差很多 - 原因如下:考虑在 n+1 RAID5 中更改单个块,并且由于访问的随机性,该条带中的其他块都不在缓存中。现在 RAID 控制器必须
- 读取该条带中的所有其他数据块(n-1 个块)
- 计算新的奇偶校验块
- 写入新的数据块和新的奇偶校验块
即,对于总缓存未命中,RAID0 中的一次写入将转换为 RAID5 中的 n-1 次读取和 2 次写入。即使整个条带都在缓存中,每次逻辑写入仍然会有 2 次物理写入。
RAID 控制器尝试通过将奇偶校验块保存在电池供电的 RAM 中来缓解这种情况,这样当另一个写入到达同一条带时,奇偶校验块只会被写入一次。如果访问模式非常随机,这仍然会导致严重的性能损失。
编辑
从评论中我发现,我没有充分阐述编写奇偶校验块所固有的问题:这些问题有两个重点
- 为了使不一致窗口尽可能小,写入更改的数据块和写入更改的奇偶校验块必须尽可能紧密地结合在一起 - 这大大减少了可能的优化量。
- 虽然奇偶校验块和数据块被写入不同的磁盘,因此可以并行执行,但奇偶校验磁盘也用于其他请求。因此,虽然它可以与当前请求并行执行,但它将与下一个和上一个请求串行执行。另一个条带可能使用另一个奇偶校验磁盘,这并不重要 - 在这种情况下,一个请求的奇偶校验写入与另一个请求中的数据访问串行执行。