如何解決 NFS 目錄訪問被掛住的問題

2021-06-26 04:43:56 字數 1696 閱讀 7848

在fast cache工程中, 當建立 nfs mount 目錄 時, 如果 nfs 網路斷開情況時, 函式 stat/opendir/df -k 等命令被掛住. 問題產生了, 如何在程式中檢查 nfs mount 目錄的可訪問性而程式又不被掛住?

解決思路:

1, mount 採用 soft 方式, 當 乙個 major timeout 到達後, stat 能返回給呼叫者. 但如果是 hard方式, 當乙個 major timeout 到達後, 僅在 console 上報告乙個錯誤, 並不返回. 測試展示: soft方式在建立後幾分鐘後, timeout時間並不准, 後面遠遠大於實際計算出來的時間值.

major timeout 計算公式: 如果 retry = 1, 則 timeout = timeo + 2 * timeo. 如果retry = 2, 則 timeout = timeo + 2*timeo + 4*timeo. 下面是 mount 命令:

mount -t nfs -o rw,tcp,soft,rsize=8192,wsize=8192,timeo=100,intr,retry=1 135.251.208.34:/vol/vol1 /nfs

2, 採用訊號方式. 由於 hard 方式在設定 intr 選項後, 可以被訊號中斷. 可以在另外乙個執行緒中檢查 stat 命令的時間, 一旦時間超過閥值, 則傳送 sigint 訊號.

但在測試中展示, 在多執行緒環境下, 採用 pthread_kill (tid, sigint) 傳送 sigint 到指定的執行緒去試圖中斷stat, 測試展示失敗. 但卻可以顯著的中斷 sleep 這樣的操作. 看樣子, stat與sleep 可以在核心層面上並不一樣. 但在單執行緒環境下, 採用 kill(pid, sigint) 是可行的, 對於這點一直理解不了為什麼.

3, 開闢單調的執行緒去做 stat 操作, 也就是它將檢查結果返回給工作執行緒使用, 工作執行緒並不作stat 操作. 這種方式不能完全防止被掛住這種情況發生, 因為後面的目錄訪問可能被掛住, 也就是在兩個檢查週期之間nfs發生異常, fast cache切換正好發生在這兩個檢查週期內.

*****

每當乙個客戶向nfs伺服器傳送了乙個請求,它就期望操作在一給定的時間間隔內(由timeo選項指定)完成。如果在該時間內沒有收到確認,就會發生乙個所謂的次超時(minor timeout),操作被重試並且超時間隔時間翻倍。在到達60秒鐘的最大超時時間或者達到retrans次數,就發生乙個主超時(major timeout)。

對於hard方式:乙個major timeout會導致客戶程式在控制台上列印出一條訊息並且再次重新開始,它將一直繼續下去。

對於soft方式,乙個major timeout就會為呼叫程序生成乙個i/o出錯資訊,並立即返回。

下面是乙個例子: mount -t nfs -o rw,tcp,soft,rsize=8192,wsize=8192,retry=1,timeo=10,intr 135.251.208.34:/vol/vol1 /nfs

(上面超時立即返回的超時值的計算:timeo/10 + 2*timeo/10, 由於retry=1,表示只重試一次,其超時值為3秒,其中timeo單位為0.1秒)

在測試時,可以使用下面辦法去試圖禁掉ip位址以達到ipc訪問失敗的情況. iptables -a input -s 135.251.208.34 -j reject。

然後通過 iptables -f 命令去開啟

******************************=

如何解決 github 訪問慢的問題

為什麼 github 會訪問慢?假如解析出的 ip 有問題,或者解析的過程有問題,那麼自然訪問不了這個網域名稱 由於 github 的加速分發 cdn 網域名稱 assets cdn.github.com 遭到 dns 汙染,導致我們無法連線使用 github 的加速分發伺服器,才使得中國大陸訪問速...

如何解決外網訪問公司內網難題?

解決外網訪問內網伺服器erp?erp企業資源計畫系統,是現代企業管理活動當中不可缺少的東西,erp系統可以幫助企業更好的管理和規劃自身現有的資源,包括財務 鏈 銷售 採購 市場營銷等等模組。特別是進入到網際網路時代,電子商務化更加普遍,不僅是大公司,連一些小規模的公司也在不斷的部署erp系統。隨著全...

如何解決div層被flash遮蓋的問題

對於flash遮擋的問題,首先來了解一些wmode的一些屬性值。預設情況下的顯示模式,在這種模式下 flash player 有自己的視窗控制代碼,這就意味著 flash 影片是存在於 windows 中的乙個顯示例項,並且是在瀏覽器核心顯示視窗之上的,所以 flash 只是貌似顯示在瀏覽器中,但這...