Linux软件-RAID4/RAID5和CPU使用率

Linux软件-RAID4/RAID5和CPU使用率

对于 RAID4 或 RAID5,对于每个数据位条带,都会存储一个奇偶校验位。例如,如果我将 0 写入驱动器 A,将 1 写入驱动器 B,则奇偶校验位 1 会存储到驱动器 C。对于 Linux 软件 RAID,如果对于每个数据位,都需要计算一个奇偶校验位,这是否会给 CPU 带来巨大的负载?例如,如果我将 1GB 文件写入 RAID5 阵列,则 CPU 需要执行 8000000000 次 XOR 计算?

答案1

正如 TomTom 所说,现在的情况已经不像以前那么残酷了;但是磁盘驱动器变得越来越大,而 CPU 的速度却越来越快。

这就是为什么不是除非您真的不在乎性能,否则最好在软件中实现 RAID-5。硬件中的 RAID-5 至少可以确保有一个保留的处理器,其唯一工作就是执行奇偶校验计算;此外,硬件通常会具有 NVRAM 之类的功能以防止阵列损坏,并具有优化计算的能力,例如,通过了解正在写入整个条带并跳过(巨大地我们可以使用一个更复杂的(昂贵的)读取-修改-写入循环来代替简单的奇偶校验重新计算。

即使使用硬件 RAID 加速,每次修改非常小的数据块的应用程序(尤其是数据库)在 RAID-5(以及 RAID-6,后者在奇偶校验计算方面甚至更昂贵)上的表现也非常糟糕。对于这种应用程序,只需把手伸进口袋,拿出额外的磁盘,然后执行 RAID-1+0 即可。

答案2

您的意思是,具有 6-8 个内核的现代 CPU 的性能比 RAID 卡上的 CPU 强大很多倍?

现在不是了,现在是 2013 年了。如今的 CPU 可以处理很多东西。除非您在 RAID 中运行大量 SSD,否则您将无法用尽单核的功率。

答案3

从 3.12 内核开始(参见提交 851c30c9badfc6b294c98e887624bff53644ad21)现在有一个参数/sys/block/mdX/md/group_thread_cnt(其中 X 是您的 raid 设备的块设备号),它控制内核可以用来执行奇偶校验计算的线程数。echo将一个大于 1 的数字放入该文件中(例如,4如果您想要使用 4 个 CPU)当您拥有极快的磁盘(例如 NVMe)时会特别有用。

注意:此选项仅存在于正在计算奇偶校验的 RAID5/6 设置中。

相关内容