为什么“zfs scrap”每 5 秒写入磁盘一次?

为什么“zfs scrap”每 5 秒写入磁盘一次?

我的 NAS 正在运行 zfs,并且时不时地进行清理。

当它运行时,它会读取所有数据(如预期),但它也会在运行期间写入一点数据(大约 0.5%):

Device       rkB/s     wkB/s  %util
sda       13628.80     69.60  58.04
sdb       13625.60     73.60  59.48
sdc       13625.60     70.80  58.96
sdd       13625.60     68.40  58.24
sde       13625.60     69.60  60.00

这可以通过使用它的其他系统来解释。但是没有使用 NAS 的系统,也没有在服务器上运行的用户进程来访问 NAS。此外,速率在数小时内保持恒定:完全读取 4.5 秒,然后写入 0.5 秒。它是固定的节奏:沉默4.5秒,然后是写字时的DRRRDRRD寻找声。

但为什么这么写任何事物当没有客户也没有什么可纠正的时候?

我的印象是,只要所有数据都是干净的、一致的并且自上次清理以来没有变化,就不需要写入任何数据。

答案1

这不是一个答案——甚至不是一个解决方法,但它使问题变得更小。

我可以通过以下方式将 5 秒调整为 30 秒:

echo 30 > /sys/module/zfs/parameters/zfs_txg_timeout

它现在仍然无法解释为什么要写入任何东西。我能想到的唯一办法就是写入进度,这样如果断电,scrub 就可以从它到达的地方继续。但这似乎浪费了大量 IO,而这不太可能发生,而且只能节省几秒钟。

从 5 秒更改为 60 秒,平均 IO 从 16200 提高到 18000 - 大约提高了 12%。

相关内容