NFS 概觀
在選擇 HPC 儲存體解決方案的內容中,我們想要討論一些重要的 NFS 概念。 使用 NFS 時的主要挑戰是判斷您的目標 HPC 儲存體環境是否需要設定元素、網路連線能力或特定 NFS 版本專屬的安全性功能。 如果您將這其中一些概念收集到您的選取準則,它可以幫您評估各種可用的解決方案。 至少,由於這些項目可消除任何不符合您 NFS 需求的内容,從而節省您的時間。
NFS 考量
NFS 通訊協定有兩個主要版本:NFSv3 與 NFSv4.x (v4.1 與 v4.2)。 這兩個版本之間的完整差異範圍已超出此課程模組的目標。 但我們在此識別了不少與驗證和授權相關的問題。 我們不需要討論這兩個通訊協定的歷程或為什麼有兩個。 我們只需知道,許多使用者仍在其環境中執行 NFSv3。
讓我們從使用 NFSv3 的特定考慮開始。
NFSv3 與群組
NFSv3 是一個簡單的檔案系統通訊協定,會將 API 要求傳遞給 NFS 用戶端與伺服器。 我們稍早提到 UID 代表使用者,且使用者具有主要群組 GID 關聯。 此外,我們也提及使用者可以與大量群組產生關聯。 基於 NFS 的目的,這些群組指派稱為「輔助群組」。 UID 與 GID 資訊會隨著要求傳遞,NFS 伺服器會使用這些資訊來判斷適當的存取層級。
NFSv3 對它所傳遞的 GID 值總數有限制。 NFSv3 只支援針對任何指定的 UID 傳遞 16 個輔助群組。 如果您以有意義的方式使用 16 個以上的群組指派 (例如,更精細的存取管理),您可能會受到此限制所影響。 NetApp 等 NAS 廠商已將延伸模組新增至支援所有群組對應通訊的 NFS 通訊協定。 此延伸模組稱為「擴充群組」支援。 如果您要評定 HPC 儲存體並使用大量 GID 指派,您應該確認提議的解決方案是否支援此功能。
NFSv3 與網路安全性
NFSv3 在安全性方面也有限制。 NFSv3 真的沒有很多安全性功能。 例如,它不支援資料加密或 Kerberos 驗證。 NFSv3 環境中提供的主要機制,涉及使用「匯出規則與原則」來限制對 NFS 伺服器的網路層級存取。 「匯出」是 NFS 伺服器用來向用戶端公開特定目錄的機制。 匯出規則會設定為根據用戶端的 IP 網路位址來允許或禁止用戶端。 您可以在匯出規則中定義主機項目 (例如 1.1.1.1) 或網路 (例如 1.1.1.0/24),以及允許或拒絕存取匯出。 匯出規則會收集到與 NFS 伺服器上特定匯出相關聯的匯出原則。
NFSv3 與網路連接埠
NFSv3 的一個挑戰是,它不會使用標準 TCP 通訊埠來進行所有通訊。 這個連接埠彈性讓透過 WAN 允許 NFSv3 存取變得更具挑戰性,假設儘管有標準連接埠 (針對 RPC 為 111,針對 NFS 則為 2049),但其他用於掛接匯出的連接埠均為隨機指派的連接埠。
只有當您需要虛擬網路外之資源的存取權,而且需要封鎖 TCP 通訊埠的安全性設定時,Azure 中的 NFSv3 網路才會成為一個挑戰。 但是,選擇提供匯出原則設定的解決方案將可協助您直接封鎖 NFS 解決方案 (無論網路邊緣的設定為何)。
壓縮
「壓縮」指的是 NFS 伺服器強制使用特定 UID 來存取檔案或資料夾的能力。 例如,建議系統管理員控制要針對特定的匯出資料夾使用哪一個 UID。 Linux NFS 伺服器環境支援壓縮對非根 UID 進行根存取的能力。 NAS 產品支援根據傳入用戶端網路/位址與 UID 值進行特定壓縮。 壓縮的主要用途之一是確保透過遠端連線進行非根存取。
如果您計劃在 Azure 中複寫檔案系統,並預期會有這個相同行為,請記住,並非每個解決方案都能以完全相同的方式支援壓縮。
NFSv3 與加密
NFSv3 不支援資料加密。 它原本就是設計來在信任的企業環境中使用。 您的網路加密解決方案必須加密離開信任網路的流量。
NFSv3 和檔案鎖定
「鎖定」指的是用戶端防止其他用戶端更新特定檔案或檔案區段的能力。 NFSv3 沒有自己的鎖定機制。 稱為網路鎖定管理員 (NLM) 與網路狀態監視器 (NSM) 的網路服務會執行不存在的鎖定。 這些服務會在用戶端與伺服器上執行,並管理所有鎖定互動。 它們在 NFS 服務外部執行,而且會產生自己的網路通訊協定流量。 這些鎖定並非強制性。 它們稱為「諮詢鎖定」。 系統會加以追蹤,但不會強制執行。 應用程式預期會處理競爭和鎖定問題。
NFSv4.x
NFSv4.x 引進了 NFS 的一些重要改進。 我們會將重點放在主要改進。
NFSv4 與 Kerberos
NFSv4 引進了使用 Kerberos 進行使用者驗證及加密所有 NFS 流量的完整支援。 已嘗試將 Kerberos 與 NFSv3 整合,但因為使用了 NLM/NSM 和其他外部通訊協定,所以只會加密資料承載。
除非匯出原則明確封鎖,否則 NFSv3 中的所有存取都會受到信任。 透過使用 Kerberos,您現在可以根據信任的機器進行驗證。
支援加密所有 NFS 流量。 您可以加密從 NFS 用戶端到 NFS 伺服器 (而不只在特定網路區段上) 的所有流量。
若要透過 Kerberos 使用驗證與加密,您需要部署 Kerberos 環境。
其中一個重要考量是,並非所有 NFSv4 相容服務都支援 Kerberos。 在沒有 Kerberos 的情況下,您仍然可以使用 NFSv4 的其他功能,但無法驗證或加密資料。 當您選擇解決方案時,請務必檢查您是否需要此功能,以及選項是否支援 Kerberos。
NFSv4 與網路連接埠
相較於 NFSv3,NFSv4 的優點之一是,NFSv4 會針對所有流量使用單一 TCP 通訊埠 (連接埠 2049)。 如果您在 Azure 虛擬網路中有 NFSv4 環境或其位於您的資料中心,當您支援 NFSv4 時,可更輕鬆地提供防火牆之間的存取。
NFSv4 與 ACL
假設您有一個檔案或資料夾,而且想要將讀取/寫入存取權提供給群組 1、將唯讀存取權提供給群組 2,並將附加資料存取權提供給特定機器帳戶。 NFSv3 權限 (模式位元) 無法滿足這些需求,因為 v3 權限沒有所需的細微性層級。
NFSv4 引進了存取控制清單 (ACL)。 每個檔案/資料夾都可以套用 ACL。 每個 ACL 都由一或多個存取控制項目 (ACE) 所組成。 Windows NTFS 系統管理員很熟悉這種方法,因為 NTFS 遵循相同模型。
如果您的環境使用 NFSv4 ACL,則您必須判斷哪一個儲存體解決方案最符合此需求。
摘要
我們已簡要介紹了 NFS 通訊協定考量。 我們所討論的項目代表您選擇儲存體解決方案時要考慮的關鍵因素。
您需要評估目前的環境,以及群組管理、網路與安全性需求,以判斷適當的儲存體解決方案。
下表提供的比較均以先前的討論為依據:
功能 | NFSv3 | NFSv4 |
---|---|---|
檔案/資料夾權限 | 模式位元 | 模式位元和/或 ACL |
加密 | 無 | Kerberos |
網路連接埠 | TCP 或 UDP,需要連接埠對應程式 | TCP 通訊埠 2049 |
檔案鎖定 | 諮詢 NLM | 主動鎖定支援 |