是否可以更改现有设备的 Raid5 块大小?

是否可以更改现有设备的 Raid5 块大小?

我有一个现有的 raid5 设备,它是我在 Linux 上使用 mdadm 创建的。

当我创建设备时,我将块大小设置为 64,但我想测试各种大小的性能,但我不想为此重建整个系统。

如果无法实时执行此操作,那么是否可以通过使用救援磁盘启动来完成此操作?

如果您能提供关于如何执行此操作的步骤的任何建议(无论是现场还是使用救援磁盘),我们将不胜感激。

答案1

这个问题相当老了,wzzrd 的答案在撰写本文时是正确的。然而,对重塑 MD 数组的支持已经添加同时。

现在,可以通过运行以下命令更改现有 RAID 阵列的块大小

mdadm --grow --chunk=128 /dev/md0

在此示例中,块大小/dev/md0将更改为 128 KiB。请注意,更改块大小是一个非常缓慢的过程,因为这涉及重写存储在 RAID 阵列中的所有数据。由于这样做是为了确保即使在系统崩溃的情况下数据安全,因此实际上必须将每条数据写入两次。因此,您应该预计这个过程会花费相当长的时间(以天为单位)。

答案2

“chunk” 是写入单个磁盘的条带的一部分。您当前的设置写入磁盘的方式与此类似(假设是三磁盘 RAID5):

| data   | data   | parity |
| parity | data   | data   |
| data   | parity | data   |

在您的情况下,每个“数据”或“奇偶校验”部分(即“块”)为 64KiB,这为您提供了 192KiB 的条带宽度,这是相当正常的。

此时,我认为您无法切换块大小。

但是,您可以做的是找出系统的最佳块大小,而不必测试所有可能的选项。如果您使用 sar 监视系统一段时间,您应该能够找到所谓的“平均请求大小”。这个数字(sar 以 512 字节扇区显示,irc)是条带组合“数据”部分的最佳大小。

因此,举例来说,如果您的平均请求大小为 64KiB(即 128 个 512 字节扇区),则您需要将条带的“数据”部分的总大小设为 64KiB。如果是三磁盘 RAID5 组,则块大小最好为 32kiB。

相关内容