如何使用 zdb 或其他 zfs 命令来告诉我它现在正在做什么?

如何使用 zdb 或其他 zfs 命令来告诉我它现在正在做什么?

我不断看到间歇性的 z_wr_iss 内核线程消耗了我所有的 CPU。我不知道 ZFS 在做什么:可能是快照,但为什么占用这么多 CPU?这不是一个 cron 作业。

我在其他地方读过(从 2013 年起https://github.com/zfsonlinux/zfs/issues/1637),但我不知道快照为什么要进行压缩。我确实有 gzip 和 lz 压缩文件系统。我真的想具体地告诉 ZFS 在做什么,以及理想情况下它接触了哪些文件导致了这个问题。

我已经阅读了 zfs、zpool 和 zdb 手册页,并尝试过: zdb -Gv qpool 但这并没有提供任何调试信息。

我正在使用 bionic 内核 (4.15.0-13-generic) 和 ZFS (0.7.5-1ubuntu14)。我有一个纯 nvme 池和一个带有 SSD 日志和缓存的旋转池。我甚至不知道我的两个池中的哪一个被访问导致了这个问题。几个月前这不是一个问题,恐怕我不知道这是什么时候开始的。

如果您能提供任何关于如何诊断甚至直接解决我的问题的建议,我将不胜感激。

答案1

我担心这毕竟是一项 cron 作业,而 CPU 流失是因为 rsync 在 gzip-9 压缩文件系统上运行。由于文件系统上的变化很小,我仍然对 rsync 差异很小或为零的负载如此之大感到惊讶。我已经切换到更合理的压缩算法,速度加快了即使我没有重新压缩数据. 也许源文件系统中的 rsync 临时文件导致了问题?

相关内容