FreeBSD 10 跟踪磁盘活动

o_0*_*o_0 9 freebsd zfs lsof trace disk

有什么方法可以在 FreeBSD 10 上使用 ZFS 找到一些定期写入磁盘(根据 hdd led)的进程(也许将 ZFS 转换为详细日志记录模式)?

lsof 由于磁盘访问时间很短,其他即时聚合统计实用程序似乎无法捕获任何内容。

Mat*_*att 9

DTrace能够报告 FreeBSD 中的 vfs 信息(以及大量其他探测器)。DTrace 在 10 内核中默认启用,因此您需要做的就是加载模块然后运行 ​​dtrace 脚本。

加载 DTrace 模块

kldload dtraceall
Run Code Online (Sandbox Code Playgroud)

从 FreeBSD 论坛获取vfssnoop.d脚本。在整个主题是磁盘监控的宝库。

运行:

./vfssnoop.d
Run Code Online (Sandbox Code Playgroud)

查看输出以了解访问的内容:

# ./vfssnoop.d 
cc1: warning:  is shorter than expected
TIMESTAMP           UID    PID PROCESS          CALL             SIZE PATH/FILE
1555479476691083      0   1225 nfsd             vop_getattr         - /share/netboot
1555479478601010      0   1225 nfsd             vop_inactive        - /share/netboot
1555479482457241      0   1225 nfsd             vop_getattr         - /share/wpad.dat
1555480557262388      0   1432 cron             vop_getattr         - /var/cron/tabs
1555480557302178      0   1432 cron             vop_inactive        - /var/cron/tabs
1555480557336414      0   1432 cron             vop_inactive        - /etc
1555480557346224      0   1432 cron             vop_getattr         - /etc/crontab
Run Code Online (Sandbox Code Playgroud)


小智 7

跑: top -m io -o write -s 1

这将打印出进程列表,按写入磁盘的数量排序,每 1 秒更新一次