怎麼說呢,最近遇上了一個神必的問題。
不知名的某工程師通過cifs掛載了遠端的Windows Server上(不要問我爲什麼是Windows Server,我也不知道)的硬盤,由於「不知名」的原因,這顆cifs硬碟有時候會出現明明顯示掛載着點進去卻被阻塞住,過一會兒後跳connection refused的問題。
初步判定可能...應該是Windows Server上有超時等待的問題,連接不活躍達到一個時間就會主動斷開連接。
但按這個推論的話,照理來講,如果連接被斷開應該是會主動進行一個unmount的動作,我點進去應該會是本地目錄而不是嘗試重新去連接掛載的目錄才對...
老實講我也不確定是不是這樣,因爲按照我自己的情況,我自己家也是通過cifs分享AP上的硬盤,如果AP斷電下線了,我下載機(Debian)那邊的掛載點就會直接變成本地目錄,並沒有“嘗試”重新往遠端目錄上放。哦對,此時此刻下載機是沒有斷網的先申明一下(因爲下載機是直連主路由的),只是掛載了硬盤的AP下線了而已。也就是說如果遠端硬碟下線,這邊確確實實主動進行了一個unmount的動作。
不過由於我是掛載在AP上,怎麼說路由器也是Linux系統,和「Windows Server」不一樣,所以我懷疑是Windows Server在搞什麼鬼。
嘛不管怎麼說,既然都找到我頭上了,那就來嘗試解決一下問題吧。
根據猜想,解決方式應當是關閉超時時間的設定,但是我沒辦法去改變Windows Server端的設定(雖然我也不知道在哪邊設就是了),那首先得想到「維持」住連線活躍的方式。
要怎樣讓連線活躍呢?第一個想法是「隔一段時間就在遠端硬盤做一次寫入刪除」,但轉念一想這勢必會影響到io性能,雖然你echo一句話在rm掉老師講我是覺得不會怎麼佔用到io資源就是了(應該)
在想了一會兒突然靈光一現——「那我做ls的操作不也是一種保持連接活躍的手段?而且ls也不用進行寫的操作理論上應該對io影響更小吧?」
未完待續···我寫了個腳本去嘗試了,未來再更新
叨叨幾句... NOTHING