我有一个现有的 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。