Filesystems

什麼程序偶爾訪問掛載的文件系統?

  • July 22, 2018

我有一個安裝了 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解除安裝它。但它不會保持打開狀態,因此使用lsofor不可見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

參考

引用自:https://unix.stackexchange.com/questions/82577