在阅读格兰特·弗里奇( Grant Fritchey )编写的服务器查询性能优化时,我发现很难理解以下部分:对于t-日志,<#>avoid RAID 5是因为,对于每个写请求,RAID 5磁盘阵列的磁盘I/O数量是RAID 1或RAID 10磁盘I/O数量的两倍。
我知道RAID 5以其奇偶特性与其他RAID不同。这意味着,如果某些驱动器发生故障,则可以从其他驱动器恢复丢失的数据。我想了解为什么不建议对事务日志文件使用RAID 5。这本书中的解释对我来说是不够的。也许有人能给我解释一下或者提供一篇好文章。
发布于 2019-10-29 02:38:07
RAID-5通过使用N-1磁盘作为数据,1磁盘用于该数据的异或来保持冗余。(它实际上不是用于所有奇偶校验的磁盘;这是RAID-4。RAID-5在所有磁盘上分发奇偶校验,在每个“条带”边界上更改。) https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5。
最大的RAID-5写入开销(读取+重写该块的奇偶磁盘)仅适用于短写。一个完整的条带写入(例如,作为大的顺序I/O的一部分,在小步骤之后没有同步/刷新)可以从数据条带中计算奇偶校验条,并并行地写入它们,而不必从磁盘读取任何东西。
正如八字胡所指出的,事务日志写入必须先命中磁盘,然后才能允许以后写入磁盘。(或者至少是RAID控制器的电池支持存储器)。This通常意味着它们不能被缓冲为一个大的连续的全条写。
在最优情况下,N磁盘RAID-5顺序写入带宽理论上等于每个磁盘带宽乘以N-1.(加上一些CPU时间,如果XOR奇偶校验计算被卸载到硬件RAID控制器,甚至不会。)
在悲观的情况下,是的,RAID-5必须做额外的磁盘I/O来读取旧数据和奇偶校验,并通过XORing将旧数据更新为奇偶校验(以删除它),然后在新数据中进行XORing。
Notice表示,不仅仅是计算 <#>the奇偶性增加了很大的开销。计算新奇偶校验所需的数据可能位于磁盘上,而不是内存中,用于小写入。
RAID-5在小写入时(非常)很差,对于大型写操作非常好(几乎和RAID-0一样好),并且一般用于读取。
历史上,有些RAID控制器会读取条的全部长度来更新奇偶校验,但至少Linux软件RAID只读取与实际小写入相对应的扇区。这对一些人有所帮助,但像32k或64k这样的小条纹大小(我认为)通常是一件好事(所以全条写更常见,而不必缓冲兆字节的数据)。
不过,与RAID10或RAID1相比,这只是从“非常糟糕”到“非常糟糕”,在这两个磁盘上都可能发生小写操作,而这两个磁盘都保存正在写入的块。
https://dba.stackexchange.com/questions/252075
复制相似问题