什麼程序偶爾訪問掛載的文件系統?
我有一個安裝了 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
or不可見fuser -c
。我想在它訪問掛載點後立即擷取或記錄它以了解它在做什麼。FWIW 它是相當強大的 Solaris 10 主機(Sparc / M5000)上的 Solaris 10 區域。
您可以嘗試 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.
祝你好運!
您可以使用該工具
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
參考