的手册页mdadm
显示:“[chunk] 仅对 RAID0、RAID4、RAID5、RAID6 和 RAID10 有意义。”即它不适用于 raid1。即使你传递了该值,它也会说ignoring chunk size
,在创建 raid 1 后,你会得到:
md1 : active raid1 ...
4883639488 blocks super 1.2 ...
bitmap: 0/37 pages [0KB], 65536KB chunk
由于某种原因,它对 5.6Tb 的磁盘大小使用了 65Mb。为什么?
然后,手册页mkfs.ext4
说
stride=stride-size = 使用 stride-size 文件系统块为 RAID 阵列配置文件系统。这是在移动到下一个磁盘之前读取或写入磁盘的块数,有时也称为块大小。这主要影响 mke2fs 时文件系统元数据(如位图)的放置,以避免将它们放在单个磁盘上,这可能会损害性能。块分配器也可能使用它。
stripe_width=stripe-width = 为 RAID 阵列配置文件系统,每个条带具有条带宽度的文件系统块。这通常是 stride-size * N,其中 N 是 RAID 中承载数据的磁盘数(例如,对于 RAID 5,有一个奇偶校验磁盘,因此 N 将是阵列中的磁盘数减 1)。这允许块分配器在写入数据时尽可能防止对 RAID 条带中的奇偶校验进行读取-修改-写入。
这对于 RAID1 意味着什么?我是否应该重复我得到的与上面块相同的值?并且忽略 stripe_width,因为 RAID1 不属于“如果可能”的范畴?或者不是吗?
我对 RAID1 应该做什么不是很清楚。使用我在其他教程中找到的 RAID0 和 RAID5 公式,我得到了 RAID1 阵列的那些数字,但我认为这些数字是不正确的。mkfs.ext4 -b 4096 -E stride=16384,stripe-width=16384
答案1
我认为这应该没问题,因为您没有对任何东西进行条带化。您只需要该数字来告诉下一个磁盘应在多少数据之后使用。但是,您实际上只有一个数据磁盘(以及它的一个镜像),因此控制器不需要更改磁盘,因此应该没问题。在我看来,较高的数字也是有意义的,因为控制器只会在大量数据之后询问自己要使用哪个磁盘。所以这应该会限制开销。
答案2
RAID1 实际上与单个磁盘相同,因此无法进行 RAID 优化,但仍有方法可以根据应用程序的 I/O 配置文件以及可能的底层磁盘功能(例如 SSD 擦除块大小)优化文件系统元数据位置。不久前,我写了一篇关于这个主题的文章,解释了为什么文件系统对齐您可能会发现它们很有用。