Debian ZFS:如何降低或防止txg_同步的频率
我有一个运行Debian Buster的小型家庭服务器,其中有一个带有RAID的ZFS文件系统(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
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
进行了检查,它在磁盘被唤醒时没有显示任何内容。