我刚刚读到另一篇关于提高 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
:删除/禁用任何位图。
参考:
- 操作方法:加速 Linux 软件 Raid 构建和重新同步
- mdadm 手册页- 参见标志
-b, --bitmap=
- mdadm.conf 手册页- 查看选项
bitmap
评论:
在我看来,位图可能主要对 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 上测试了各种虚拟机。
我做了一堆基准图像,发布这里如果你有兴趣的话。