将 mdadm 切换为外部位图

将 mdadm 切换为外部位图

我刚刚读到另一篇关于提高 RAID5/6 写入速度的文章

增加条带缓存并切换到外部位图后,我的写入速度为 160 Mb/s,读取速度为 260 Mb/s。:-D

我已经找到了如何增加条带缓存的方法,而且效果很好,但我想了解更多关于外部位图的信息。我有一个速度非常快(540MB/s)的 RAID0 SSD,如果位图按照我的想法运行,它会运行得很好,但我仍然非常不确定。我只知道它们,只要我知道这个帖子

几个问题:

  • 什么是位图(就 mdadm 而言)?
  • 内部位图与外部位图相比有哪些优势?
  • 外部位图与内部位图相比有哪些优势?
  • 如何在两者之间切换?

我应该补充一点,虽然这是一个“我很无聊,让我们打破一些东西”的主题,但我确实很重视存储在 RAID 阵列上的数据。如果这样做会将数据置于重要的有风险,请告知我。

答案1

什么是位图:

mdadm 位图(也称为“写入意图位图”)是一种在异常关机或移除并重新添加磁盘后加速 RAID 重建的机制。

使用位图将数据写入 RAID 的过程如下:

  • 更新位图:将您要写入的 RAID 块标记为脏。
  • 将数据写入 RAID。
  • 更新位图:将刚刚写入的 RAID 块标记为干净。

位图的优点是,如果系统在写入过程中出现故障,重建只需检查标记为脏的区块,而不是整个多 TB RAID。这可以将重建过程从几个小时缩短到几秒钟即可完成。

缺点是在正常使用(重建之外)下写入性能较低,因为 mdadm 需要进行额外的磁盘访问来更新位图。

外部与内部:

  • 外部的:以文件形式存储在 RAID 之外的磁盘上。与内部位图相比,其优势在于正常使用期间(重建之外)的写入性能更佳。
  • 内部的:存储为 RAID 元数据。与外部位图相比,其优势在于您不需要非 RAID 磁盘,并且可以节省一些配置(位图的路径)。

根据 mdadm 手册页:

Note:  external bitmaps are only known to work on ext2 and ext3.
       Storing bitmap files on other filesystems may result in  serious
       problems.

根据作者:Neil Brown,mdadm 作者,外部位图也应该在 ext4 上工作:

I haven't looked inside ext4 but I am fairly confident that external bitmaps 
will work properly.

如何:

使用 添加和删除位图mdadm --grow --bitmap=XXX ...,其中 XXX 是以下之一:

  • --bitmap=internal:创建内部位图。
  • --bitmap=/var/my_bitmap.bin:在指定路径处创建外部位图。路径必须位于 RAID 之外。bitmap=...必须将参数添加到 中的 ARRAY 条目/etc/mdadm/mdadm.conf,并且--bitmap=...如果您从命令行组装 RAID,则必须传递该参数。
  • --bitmap=none:删除/禁用任何位图。

参考:

评论:

在我看来,位图可能主要对 RAID 级别 5 和 6 感兴趣,因为它们的重建速度最慢。

我从 RAID 5 切换到RAID 10我自己;重建速度如此之快,以至于我觉得不需要位图,而且 RAID 10 似乎首先需要更少的重建。

我的 RAID 5 设置过去每月都会丢失一次磁盘,导致重建需要 12-14 小时。RAID 10 在半年内只丢失过一次磁盘,重建时间不到一小时。

我不知道我遇到的频繁磁盘丢失是否是由 RAID 级别以外的其他原因造成的,但 RAID 10 更加稳定,重建速度不再是一个大问题。

答案2

我已经使用 md RAID 5 一段时间了,从未出现过任何磁盘丢失的情况。我很想知道添加外部位图存储会给我带来什么好处。

我当前的设置包括一个启动盘,然后是 4 个 3TB 磁盘作为 RAID 5。昨晚我又添加了一个 3TB 磁盘,经过 20 多个小时,它已经完成了 70% 的重塑。自从阅读这篇文章以来,我决定在重塑完成后,我一定会将外部位图添加到启动盘(1TB)。

我有 md RAID 5 基础层、其上的 LVM2 以及一些 ISCS 目标,这些目标指向一些 LVM2 分区,并且在 ISCSI 上测试了各种虚拟机。

我做了一堆基准图像,发布这里如果你有兴趣的话。

相关内容