Debian ZFS:如何降低或防止txg_同步的频率

Debian ZFS:如何降低或防止txg_同步的频率,debian,zfs,Debian,Zfs,我有一个运行Debian Buster的小型家庭服务器,其中有一个带有RAID的ZFS文件系统(ZFS:Loaded module v0.7.12-2+deb10u2,ZFS pool version 5000,ZFS filesystem version 5) 由于服务器有时几天不使用,我配置了一个自动关机脚本,如果我的两个大WD red硬盘处于待机状态超过45分钟(不是系统硬盘),该脚本将关闭服务器。现在我发现服务器不再关机了,因为两个驱动器都只有几分钟的待机时间,然后才能再次激活。我使用i

我有一个运行Debian Buster的小型家庭服务器,其中有一个带有RAID的ZFS文件系统(
ZFS:Loaded module v0.7.12-2+deb10u2,ZFS pool version 5000,ZFS filesystem version 5

由于服务器有时几天不使用,我配置了一个自动关机脚本,如果我的两个大WD red硬盘处于待机状态超过45分钟(不是系统硬盘),该脚本将关闭服务器。现在我发现服务器不再关机了,因为两个驱动器都只有几分钟的待机时间,然后才能再次激活。我使用
iotop
进行了测试,发现ZFS使用
txg_sync
命令正在唤醒他们。即使没有其他进程在驱动器上写入或读取任何内容

在切换到安装数据池的目录后,我还使用
fatrace-c
进行了检查。当命令
txg_sync
弹出并唤醒驱动器时,没有输出。更新:因为fatrace似乎不能与ZFS正常工作

我现在使用了来自的
iosnoop
,现在知道dm_crypt定期在我的磁盘上写东西。我的底层驱动器是用LUKS加密的

./iosnoop -d 8,16
Tracing block I/O. Ctrl-C to end.
COMM         PID    TYPE DEV      BLOCK        BYTES     LATms
dmcrypt_writ 1895   W    8,16     2080476248   4096    6516.10
dmcrypt_writ 1895   W    8,16     3334728264   4096    6516.14
dmcrypt_writ 1895   W    8,16     2080429048   16384      0.16
dmcrypt_writ 1895   W    8,16     3334728272   20480      0.21
dmcrypt_writ 1895   W    8,16     2080476256   20480      0.16
dmcrypt_writ 1895   W    8,16     3328225336   16384      0.20
原因是什么?我如何防止这种情况发生?

@niksfirefly如果正在写入池,那么您应该看到txg_sync线程消耗的cpu和I/O。多少取决于您的特定硬件、池配置、启用了哪些功能/属性以及您的工作负载。这在你的情况下可能是正常的

也许这个链接也有帮助:

如何检查每个进程的磁盘I/O利用率:

cut -d" " -f 1,2,42 /proc/*/stat | sort -n -k +3
这些字段是PID、命令和累计IO等待时间。这将显示您的热进程,尽管只有当它们仍在运行时。(您可能希望忽略文件系统日志线程。)

(来自)

关于ZFS的另一个说明。 我正在使用内核5.4的Manjaro 20210101,在过去几周里,txg_sync的负载很高

根据/var/log/pacman.log

[2020-12-31T08:58:24+0100][ALPM]升级zfs utils(0.8.5-2->2.0.0-2) [2020-12-31T08:58:24+0100][ALPM]升级的linux54 zfs(0.8.5-10->2.0.0-6)

从那时起,txg_同步进程也恢复了和平


在Debian下,ZFS(及其版本)的使用肯定有不同的解决方法。

现在我发现服务器不再关闭了。。。那么,发生了什么变化?可能有什么东西正在访问或更新这些驱动器上的数据-仅在文件系统中打开一个文件描述符就足以导致inode的访问时间被更新,从而导致对磁盘的写入。我不知道。它可能与任何更新有关。没有其他重大变化。我无法直接复制第一次发生这种情况的时间。我编辑了我的帖子,因为我现在甚至用
fatrace-c
进行了检查,它在磁盘被唤醒时没有显示任何内容。