我有一个小型家庭服务器运行Debian,其中我有一个带有RAID的ZFS文件系统(ZFS: Loaded module v0.7.12-2+deb10u2, ZFS pool version 5000, ZFS filesystem version 5)。
由于服务器有时几天不使用,我配置了一个自动关机脚本,如果我的2大WD红色硬盘处于待机状态超过45分钟(不是系统硬盘),它就会关闭服务器。现在我发现服务器不再关机了,因为这两个驱动器只有几分钟的待机时间,然后才能再次活动。我用iotop进行了测试,发现使用txg_sync命令的ZFS正在唤醒它们。即使没有其他进程正在写入或读取驱动器上的任何内容。
在更改到安装数据池的目录后,我还使用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原因是什么,我怎样才能防止这种情况发生?
发布于 2020-12-30 07:55:29
https://github.com/openzfs/zfs/issues/8537#issuecomment-477361010
@niksfirefly如果要写入池,那么您应该希望看到txg_sync线程消耗的cpu和I/O。在多大程度上将取决于您的特定硬件、池配置(启用了哪些特性/属性)和工作负载。这对你的情况来说可能是正常的。
如何检查每个进程的磁盘I/O利用率:
cut -d" " -f 1,2,42 /proc/*/stat | sort -n -k +3这些字段是PID、命令和累积IO-等待滴答.这将显示您的热进程,但只有当它们仍在运行时。(您可能想忽略文件系统日志线程。)
发布于 2021-01-02 06:20:44
关于ZFS的另一个说明。我使用的是Manjaro 20210101内核5.4,在过去几周中txg_sync负载很大。
根据/var/log/pacman.log
2020-12-31T08:58:24+0100升级zfs-utils (0.8.5-2 -> 2.0.0-2) 2020-12-31T08:58:24+0100升级的linux54-zfs (0.8.5-10 -> 2.0.0-6)
自那时以来,txg_sync进程也恢复了和平。
在Debian环境下,ZFS (及其版本)的使用肯定会有所不同。
https://stackoverflow.com/questions/65488188
复制相似问题