对于RAID4或RAID5,对于每条数据位,存储一个奇偶校验位。例如,如果我写0驱动A和1驱动B,那么奇偶校验位1被存储在驱动C上。如果每一位数据都需要计算奇偶校验位,这难道不是Linux软件RAID的一个巨大的CPU负载吗?例如,如果我将1GB文件写入RAID5数组,那么8000000000 XOR计算需要由CPU执行吗?
发布于 2014-03-11 13:31:07
正如TomTom所说,它不再像以前那样残酷了;但是当CPU越来越快的时候,磁盘驱动器变得越来越大。
这就是为什么在软件中执行RAID-5并不是一个好主意,除非您真的不关心性能。RAID-5在硬件中至少确保保留处理器的唯一工作是执行这些奇偶校验计算;此外,硬件通常具有类似NVRAM这样的功能,以防止阵列损坏,以及优化计算的能力,例如知道正在编写整个条带,并跳过(非常昂贵的)读修改-写入周期,以支持简单的奇偶重新计算。
即使硬件RAID加速,一次修改非常小的数据块的应用程序--尤其是数据库--在RAID-5 (和RAID-6,这在奇偶计算方面甚至更昂贵)的性能也会非常糟糕。对于这种应用程序,只需把你的手放在你的口袋,得到额外的光盘,并执行RAID-1+0。
发布于 2014-03-11 13:22:57
你的意思是说对于一个拥有6-8个核心的现代CPU来说,所有的CPU都比RAID卡上的CPU强大很多倍?
今天不是,这是2013年。现在CPU可以处理很多东西。除非您运行了相当多的SSD来执行RAID,否则使用单个内核的能力会有问题。
发布于 2021-04-20 17:00:51
由于3.12内核(请参阅badfc6b294c98e887624bff53644ad21提交851c30c9),现在有一个参数/sys/block/mdX/md/group_thread_cnt (其中X是raid设备的块设备号),它控制内核可以用来执行奇偶校验计算的线程数。将一个大于一个的数字放入该文件中(例如,如果您希望使用4个CPU),当您有非常快的磁盘(例如echo)时,4会特别有用。
注:此选项仅适用于正在计算奇偶校验的RAID5 5/6设置。
https://serverfault.com/questions/581271
复制相似问题