Migration

NFS v4、HA 遷移和客戶端上的陳舊句柄

  • September 11, 2012

我正在使用 Pacemaker/OpenAIS 管理執行 NFS v4 的伺服器。NFS 配置為使用 TCP。當我將 NFS 伺服器遷移到 Pacemaker 集群中的另一個節點時,即使保留了元數據,來自客戶端的連接也會“掛起”並最終在 90 秒後超時。90 秒後,舊的掛載點變為“陳舊”,無法再訪問掛載的文件。

90 秒的寬限期似乎是伺服器配置的一部分,而不是客戶端配置。我在伺服器上看到這條消息:

核心:NFSD:開始 90 秒的寬限期

如果我在遷移後(解除安裝然後重新安裝共享)在客戶端節點上重新啟動 NFS 客戶端,那麼我不會遇到問題,但連接和文件傳輸仍然中斷。

三個問題:

  1. 什麼是 90 秒寬限期?它有什麼用?
  2. 在將 NFS 伺服器遷移到另一個節點後,如何在不重新啟動客戶端的情況下防止文件在客戶端上過時?
  3. 是否真的可以在沒有大文件上傳失去的情況下遷移 NFS 伺服器?

NFS 在伺服器上儲存了大量客戶端的狀態。Pacemaker/OpenAIS 無法彌補 NFS 在這方面的不足。寬限期用於伺服器和客戶端重新擷取狀態。它是協議的一部分。

無論如何,您似乎並沒有完全移動客戶端狀態(例如 /var/lib/nfs 內容)。有關想法以及需要在伺服器端進行狀態同步的內容, 請參閱此內容。

使用 NfSv3,您可以為掛載指定 UDP 傳輸以實現即時故障轉移,並且客戶端/伺服器不會更明智,而 NFSv4 使它變得更加棘手。最重要的是,因為 TCP 是唯一可用的傳輸方式,並且 TCP 的本性不是從腳下撕下連接並像往常一樣繼續進行。

您可以縮短傳輸時間。特別是如果您遵循有關公共伺服器狀態目錄和維護 FSID 的建議。嘗試在停止 NFS 之前拉出監聽介面,並確保掛載未被收回 ( exportfs -ua)。但它永遠不會是絕對即時的。

您還應該記住,從一台伺服器切換然後再直接返回是一個禁忌。以前的伺服器仍然可以保持以前打開的連接處於打開TIME_WAIT狀態,並且會拒絕新連接長達 20 分鐘。

這個Heartbeat wiki 頁面上的許多細節有點老派,但仍然相關。

引用自:https://serverfault.com/questions/20465