使用 NFS 掛載的 Blob 存儲搭配 Azure HPC 快取

你可以搭配 Azure HPC 快取來使用 NFS 掛載的 blob 容器。 想了解更多關於 Azure Blob 儲存中 NFS 3.0 協定支援 的資訊,請參考 Blob 儲存文件網站。

Azure HPC 快取在其 ADLS-NFS 儲存目標類型中使用具備 NFS 功能的 Blob 儲存。 這些儲存目標與一般 NFS 儲存目標相似,但也與一般 Azure Blob 目標有些重疊。

本文說明了使用 ADLS-NFS 儲存目標時應了解的策略與限制。

你也應該閱讀 NFS 的 blob 文件,特別是這些描述相容與不相容情境的章節,並提供故障排除建議:

了解一致性要求

HPC 快取需要 ADLS-NFS 儲存目標的強一致性。 預設情況下,啟用 NFS 的 blob 儲存不會嚴格更新檔案中繼資料,這會阻礙 HPC 快取準確比較檔案版本。

為了解決這個差異,Azure HPC 快取會自動關閉任何啟用 NFS 的 blob 容器作為儲存目標的 NFS 屬性快取。

這個設定會在容器的整個生命周期中持續,即使將其從快取中移除。

使用 NFS 協定預載資料

在支援 NFS 的 blob 容器中, 檔案只能用建立時相同的協定編輯。 也就是說,如果你使用 Azure REST API 來填充容器,就無法用 NFS 來更新那些檔案。 因為 Azure HPC 快取只使用 NFS,無法編輯用 Azure REST API 建立的任何檔案。 (了解更多 關於 BLOB 儲存 API 的已知問題)

如果您的容器是空的,或者檔案是使用 NFS 建立的,對快取都不會有問題。

如果你容器中的檔案是用 Azure Blob REST API 而非 NFS 建立的,Azure HPC 快取只能對原始檔案執行以下操作:

  • 把檔案列在目錄裡。
  • 讀取檔案(並保持在快取中以便後續讀取)。
  • 刪除檔案。
  • 清空檔案(截斷為 0)。
  • 儲存一份檔案副本。 該複製品會被標記為 NFS 建立的檔案,並可使用 NFS 進行編輯。

Azure HPC 快取無法編輯使用 REST 建立的檔案內容。 這表示快取無法將變更的檔案從用戶端儲存回儲存目標。

了解這個限制很重要,因為如果你在非 NFS 建立的檔案上使用讀寫快取使用模型,可能會造成資料完整性問題。

Tip

想了解更多關於讀寫快取的資訊,請參閱 《了解快取使用模型》。

撰寫快取應用場景

這些快取使用模型包括寫入快取:

  • 超過15%寫入
  • 超過 15% 寫入,每 30 秒檢查備份伺服器是否有變更
  • 超過 15% 寫入,每 60 秒檢查備份伺服器是否有變更
  • 寫入量超過 15% 時,每 30 秒回傳一次到伺服器

寫入快取使用模型應僅用於使用 NFS 建立的檔案。

如果你嘗試對 REST 建立的檔案使用寫入快取,檔案變更可能會遺失。 這是因為快取不會立即嘗試將檔案編輯儲存到儲存容器。

以下是嘗試快取寫入由 REST 建立的檔案時,如何使資料面臨風險:

  1. 快取接受客戶端的編輯,並在每次變更時回傳成功訊息。

  2. 快取會將變更後的檔案保存在儲存空間,並等待有更多變更。

  3. 過一段時間後,快取會嘗試將變更的檔案儲存到後端容器。 此時會收到錯誤訊息,因為它正嘗試用 NFS 寫入 REST 建立的檔案。

    已經太遲,無法告訴客戶端計算機其變更未被接受,快取也沒有辦法更新原始檔案。 所以客戶帶來的改變會被忽略。

閱讀快取情境

讀取快取場景適用於使用 NFS 或 Azure Blob REST API 建立的檔案。

這些使用模式僅使用讀取快取:

  • 讀取頻繁,寫入不頻繁
  • 用戶端會寫入 NFS 目標,繞過快取
  • 閱讀量很大,每三小時檢查一次後備伺服器

你可以用這些使用模型來搭配 REST API 或 NFS 建立的檔案。 任何從用戶端發送到 Backend 容器的 NFS 寫入仍會失敗,但會立即失敗並回傳錯誤訊息給用戶端。

讀取快取工作流程仍可涉及檔案的更動,只要這些檔案變更未被快取。 例如,客戶端可能會從容器存取檔案,但會將變更寫回新檔案,或將修改過的檔案儲存在不同位置。

認識網路鎖定管理器(NLM)的限制

支援 NFS 的 blob 容器不支援網路鎖定管理器(NLM),這是常用來保護檔案免於衝突的 NFS 協定。

如果你的 NFS 工作流程最初是為硬體儲存系統所寫,你的客戶端應用程式可能會包含 NLM 請求。 為了繞過這個限制,當你將程序移到 NFS 支援的 blob 儲存時,請確保你的客戶端在掛載快取時停用 NLM。

要停用 NLM,請在客戶端-o nolock指令中使用選項mount。 此選項可防止用戶端請求 NLM 鎖並收到錯誤回應。 這個 nolock 選項在不同作業系統中實作方式不同;詳情請參考你的客戶端作業系統文件(man 5 nfs)。

透過 HPC 快取,優化對支援 NFS 的容器的寫入過程

Azure HPC 快取可提升在包含對 ADLS-NFS 儲存目標進行寫入變更的工作負載中的效能。

Note

如果你想透過 Azure HPC 快取修改 ADLS-NFS 儲存容器的檔案,必須使用 NFS 來填充它。

NFS 啟用的 blob 效能考量文章 中提到的限制之一是 ADLS-NFS 儲存在覆蓋現有檔案時效率不高。 如果你使用 Azure HPC 快取搭配 NFS 掛載的 blob 儲存,快取會處理客戶端修改活躍檔案時的間歇性重寫。 將檔案寫入後端容器的延遲對用戶端是隱藏的。

請記得 NFS 協議中預載資料中所述的限制。

下一步