3 磁盘软件 RAID1E 的 Ext3 跨度/条带宽度计算

3 磁盘软件 RAID1E 的 Ext3 跨度/条带宽度计算

由于这里无法详述的原因,我在某些 Linux 系统上使用 3 磁盘 RAID1E。请参阅这里了解更多信息。

因此,我的理解是,为了优化此卷上的文件系统布局,可以使用以下计算:

chunk-size = 64kB
block-size = 4kB
stride = chunk / block = 16
stripe-width = stride * ( (numdisks)/2 ) = 16 * 1.5 = 24

然而,当我使用该计算方法来设置条带宽度时,mkfs.ext3 会发出警告,提示它应该是 2 的幂。

所以我的问题是,我做对了吗?由于条带大小相同,我是否应该将其视为标准的四磁盘 RAID10?

更新:这不是降级阵列,而是完全受支持的配置。请阅读第一段中的链接。

答案1

将条带宽度设置为高于 64kB 不是最优的。

任何大于 64kB 的写入都将导致 4 次写入 - 一次写入一个磁盘,一次写入另一个磁盘,以及两次写入一个磁盘。

只需将条带宽度设置为 64kB。

答案2

我使用 XFS 而不是 ext3 对各种大小和级别的 MD RAID 进行了一些实验。似乎以下公式适用于所有情况:

# chunk is specified in mdadm create, block in mkfs
stride = chunk / block
stripe-width = ((slices - parity) * stride

其中,RAID0/10/1E 的奇偶校验为零,RAID5 的奇偶校验为一,RAID6 的奇偶校验为二。

因此,就我最初的问题而言,条纹宽度应设置为四十八(64kB 块、4kB 块、3 个切片、零奇偶校验)。当我使用这些设置时,mkfs.ext3 不再给出有关条带宽度不能被步幅整除的警告。

答案3

你从错误的地方开始优化。你需要从你正在优化的 I/O 大小开始(例如,你的应用程序读取/写入的块大小),并为此优化整个堆栈。我写了一篇关于这个主题的文章,解释了为什么存储堆栈和文件系统对齐很重要,您可能会觉得有帮助。

相关内容