Linux 软件 Raid 5 上的 mkfs 操作需要很长时间

Elm*_*ber 10 linux raid performance software-raid

我已经设置了一个由 4 * 2 TB 磁盘组成的 Linux 软件 raid 级别 5。磁盘阵列是使用 64k 条带大小创建的,没有其他配置参数。在初始重建之后,我尝试创建一个文件系统,这一步需要很长时间(大约半小时或更长时间)。我尝试创建一个 xfs 和 ext3 文件系统,都花了很长时间,使用 mkfs.ext3 我观察到以下行为,这可能会有所帮助:

  • 写inode表运行很快,直到达到1053(~1秒),然后写了大约50,等待两秒,然后写下50(根据控制台显示)
  • 当我尝试使用 Control+C 取消操作时,它会在真正取消之前挂起半分钟

单个磁盘的性能非常好,我分别在每个磁盘上运行 bonnie++,写入/读取值约为 95/110MB/s。即使我在每个驱动器上并行运行 bonnie++,这些值也仅减少了大约 10 MB。因此,我通常将硬件/I/O 调度排除在问题来源之外。

我为 stripe_cache_size 和 readahead size 尝试了不同的配置参数,但没有成功,但我认为它们与文件系统创建操作无关。

服务器详细信息:

  • Linux 服务器 2.6.35-27-generic #48-Ubuntu SMP x86_64 GNU/Linux
  • mdadm - v2.6.7.1

有没有人有关于如何进一步调试的建议?

mal*_*pdx 6

我怀疑您遇到了典型的 RAID5 小写问题。对于低于条带大小的写入,它必须对数据和奇偶校验进行读-修改-写。如果写入的大小与条带的大小相同,则它可以简单地覆盖奇偶校验,因为它知道该值是什么,并且不必重新计算它。


dto*_*lis 4

我同意,这可能与条纹对齐有关。根据我的经验,在 3*2TB RAID-0 上创建未对齐的 XFS 大约需要 5 分钟,但如果它与条带大小对齐,则大约需要 10-15 秒。以下是将 XFS 与 256KB 条带大小对齐的命令:

mkfs.xfs -l internal,lazy-count=1,sunit=512 -d agsize=64g,sunit=512,swidth=1536 -b size=4096 /dev/vg10/lv00
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在我的例子中,条带宽度是 3 个单位,这对于有 4 个驱动器但在 raid-5 中的您来说是相同的。

显然,这也提高了 FS 性能,因此您最好保持一致。

  • agsize 在这里并不是真正必要的 - mkfs 会自动计算它(可能将卷的大小除以逻辑 CPU 的数量)。它是我自己的设置的剩余部分 - 我创建此卷时对未来的配置更改有一些期望。 (2认同)