先决条件:您需要确保在 Synology 上启用了 SSH,然后在客户端计算机上加载了 PuTTy 等终端应用程序以进行连接。加载后,打开与设备的 SSH 连接。

在终端中,输入 sudo cat /proc/mdstat

此命令将为您提供磁盘阵列列表,稍后我们将再次使用它来监控重建/扩展速度。从这个列表中,您需要确定哪个是您的阵列。它通常是顶部的那个,在我的情况下是 md2。

接下来,我们将增加修复/扩展的最低速度限制。默认情况下,Synology 对这些值非常保守,因为他们希望在进行这项工作时这些设备仍处于完全生产使用状态。我可以接受这种打击,老实说,没有注意到系统响应时间的差异,但其他人可能没有,所以如果您在业务期间做这项工作,请留意用户的投诉小时。

首先我们需要提升到root,然后我们可以更新限速值。继续在 PuTTy 窗口中,运行命令

sudo su

echo 100000 > /proc/sys/dev/raid/speed_limit_min

如果您已经在进行重建/扩展,您现在可以cat /proc/mdstat再次运行命令以查看速度是否有所提高。在我的例子中,我通过运行这个命令从 10MB/s 到 12MB/s。所以,是的,更快,但不是很多。

像网上的许多其他人一样,我发现真正的关键是将 stripe_size_cache 增加到更高的值。默认情况下,Synology 使用值 256。这非常小,很可能是重建/扩展的瓶颈。您当然可以增加此值,但是,我发现 Synology 会积极地恢复该值,因此它几乎没有影响……直到您将其放入循环中。在终端窗口中,运行命令while true; do cat /sys/block/md2/md/stripe_cache_size; echo 16384 > /sys/block/md2/md/stripe_cache_size; sleep 2; done

如果您的值与之前的 /proc/mdstat 不同,则将其中的 md2 替换为不同的值

这将做两件事:

  1. 回显/sys/block/md2/md/stripe_cache_size的当前值

  2. 将值设置回 16384

我喜欢拥有 echo 值,既可以向我表明它一直在变化,也可以证明循环仍然运行良好,但这不是必需的。如果你不关心回显值,运行这个也可以。

while true; do echo 16384 > /sys/block/md2/md/stripe_cache_size; sleep 2; done

请注意,stripe_cache_size 的增加伴随着 Synology 的 RAM 损失,因此较低的 RAM 单元(例如只有 1GB 的那些)可能需要更保守的值,例如 8192。一些网上已经上升到 32768,但报告说它会扼杀在浏览器中使用 Synology UI 的能力,所以我不想冒险。16384 的值对我来说非常有用。

如果此时您还没有,请从 Synology Storage Manager 开始修复/扩展。

在我自己的系统上再次检查 cat /proc/mdstat,我现在达到了 35 到 40MB/s 的写入速度,并且在我上次修复期间能够在 22 小时内完全修复 4TB 驱动器,而不是最初估计的 48 小时!

最后,要在修复/扩展阵列时监控系统,请打开与该设备的第二个 SSH 连接,并使用以下命令——

sudo su

while true; do cat /proc/mdstat; sleep 10; done

扩展完成后,只需按 Ctrl+C 即可中断循环,您可以关闭终端窗口。

享受!

PS 这些值将在下次重新启动 Synology 时恢复为默认值。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注