什么进程偶尔访问已安装的文件系统?

什么进程偶尔访问已安装的文件系统?

我有一台带有 autofs 安装主目录的 Solaris 10 服务器。在一台服务器上,10 分钟超时后它们不会被卸载。我们已经进入AUTOMOUNT_TIMEOUT=600/etc/default/autofs我运行automount -t 600、禁用并重新启用svc:/system/filesystem/autofs:default服务,但似乎没有任何效果。

我的怀疑是某物系统上的文件系统定期访问所有已安装的文件系统,可能会检查它们是否可访问,从而重置自动安装程序超时,而该超时又永不过期。我刚刚做的一个测试支持了这一点 - 如果我将超时设置为 10 秒,则挂载点将被卸载,看起来 10 秒比该时间短某物正在执行检查,计时器有机会到期。

问题是我如何才能找到正在执行此操作的进程?该服务器是一个被大量使用的生产系统,我不能在它上面做任何危险的实验。

请注意,文件系统是不是保持打开状态,可以手动卸载。那某物可能会逐个安装点,cd in,cd out,继续,经常足以防止automount卸载它。但它不会使其保持打开状态,因此使用lsof或 时不可见fuser -c。我想在它访问挂载点时立即捕获或记录它,以了解它在做什么。

FWIW 它是相当强大的 Solaris 10 主机 (Sparc / M5000) 上的 Solaris 10 区域。

答案1

你可以尝试 rwsnoop (http://dtracebook.com/index.php/File_System:rwsnoop) 使用 dtrace 监视 i/o 访问:

# rwsnoop - snoop read/write events.
#           Written using DTrace (Solaris 10 3/05).
#
# This is measuring reads and writes at the application level. This matches
# the syscalls read, write, pread and pwrite.

祝你好运!

答案2

您可以使用该工具lsof来确定哪个进程正在访问文件系统上的特定文件。在这种情况下,您可以使用它来检测哪个进程正在访问自动挂载的挂载点。

例子

automount我的目录有以下内容/vz_backups

$ showmount -e krycek
Export list for krycek:
/export/raid1/vz_backups 192.168.1.0/24

现在 cd 到挂载点下的自动挂载:

$ cd /vz_backups/images

看到我们已经安装了它:

$ mount | grep /vz
krycek:/export/raid1/vz_backups/images on /vz_backups/images type nfs (rw,intr,tcp,rsize=16384,wsize=16384,addr=192.168.1.4)

然后您可以使用以下命令询问文件访问lsof

$ lsof -l | grep /vz
automount  3359        0   16r      DIR       0,24           0      11960 /vz_backups
bash      28635        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
lsof      31040        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
grep      31041        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
lsof      31042        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)

现在cd退出该目录,以便没有任何东西可以访问它,并且等待自动挂载超时,或者手动umount它,然后再次检查:

$ cd ~
$ umount /vz_backups/images

$ lsof -l | grep /vz
automount  3359        0   16r      DIR       0,24           0      11960 /vz_backups

参考

答案3

您可能正在运行监视软件,该软件以低于自动安装程序超时的时间间隔运行“df”命令。在 Solaris 上,statvfs 系统调用将文件系统标记为正在使用。解决办法:使用df -l

相关内容