Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

FlexCache 回寫式架構

貢獻者

FlexCache 的周遭寫入功能、在設計上都有強烈的一致性。ONTAP 9.15.1 採用的傳統寫入操作模式和新的回寫操作模式、都能保證存取的資料永遠保持 100% 一致、一致、最新且一致。

以下概念詳述 FlexCache 回寫作業的方式。

委派

鎖定委派和資料委派有助於 FlexCache 保持寫入和寫入快取資料的一致性、一致性和最新狀態。來源協調兩個委派。

鎖定委派

鎖定委派是一種通訊協定層級的鎖定權限、原始伺服器會根據每個檔案授予快取、以視需要向用戶端發出通訊協定鎖定。其中包括 獨家鎖定委派( XLD )共用鎖定委派( SLD )

XLD 和回寫

為了確保 ONTAP 永遠不需要協調衝突的寫入、會將 XLD 授予用戶端要求寫入檔案的快取。重要的是、任何檔案都只能有一個 XLD 、這表示每次只能有一個寫入檔案的寫入器。

當寫入檔案的要求進入啟用回寫的快取時、會執行下列步驟:

  1. 快取會檢查它是否已有 XLD 用於要求的檔案。如果是這樣、只要另一個用戶端未寫入快取的檔案、它就會將寫入鎖定授予用戶端。如果快取沒有 XLD 可用於要求的檔案、它會向來源要求一個。這是一個專屬的呼叫、會穿越叢集間網路。

  2. 從快取接收 XLD 要求時、原始伺服器會檢查另一個快取中的檔案是否有未處理的 XLD 。如果是這樣、它將會回收該檔案的 XLD 、這會觸發從該快取中的任何快取項目清除 不良資料 回原始伺服器。

  3. 一旦從該快取中清除髒資料、並將其歸入原始伺服器的穩定儲存設備、原始伺服器就會將該檔案的 XLD 授予要求的快取。

  4. 收到檔案的 XLD 後、快取會將鎖定授予用戶端、並開始寫入。

順序圖中會說明一些步驟的高階順序圖 [write-back-sequence-diagram]

從用戶端的角度來看、所有鎖定都會像寫入標準 FlexVol 或 FlexGroup 一樣運作、而且在要求寫入鎖定時可能會有小延遲。

在目前的迭代中、如果啟用回寫的快取保留檔案的 XLD 、 ONTAP 會在其他快取中封鎖 * 任何 * 對該檔案的存取、包括 READ 作業。

註 每個原點組成的 XLDs 上限為 170 個。

資料委派

資料委派是原始伺服器提供的每個檔案保證、該檔案的資料快取是最新的。只要快取具有檔案的資料委派、它就能將該檔案的快取資料提供給用戶端、而無需聯絡來源。如果快取沒有檔案的資料委派、則必須聯絡來源、以接收用戶端要求的資料。

在回寫模式中、如果在另一個快取或來源中為檔案取得 XLD 、則檔案的資料委派將會撤銷。如此可有效地從所有其他快取和原始伺服器的用戶端關閉檔案、即使是讀取也沒問題。這是一項交易、必須確保永遠不會存取舊資料。

在啟用回寫式快取中讀取通常會像在寫入快取中讀取一樣運作。在具有寫入和回寫功能的快取中、當要求的檔案在啟用回寫功能的快取上具有專屬寫入鎖定、而非發出讀取的快取時、可能會發生初始 READ 效能受限。必須撤銷 XLD 、而且必須先將髒資料提交至來源、才能在其他快取中進行讀取。

追蹤不良資料

從快取回寫至原始伺服器的作業會非同步進行。這表示不實的資料不會立即寫回來源。ONTAP 採用不乾淨的資料記錄系統來追蹤每個檔案的不乾淨資料。每個髒資料記錄( DDR )代表特定檔案的約 20MB 髒資料。當檔案正在主動寫入時、 ONTAP 會在填入兩個 DDP 並寫入第三個 DDR 之後、開始將髒資料重新排清。這會在寫入期間、在快取中留下大約 40MB 的髒資料。對於有狀態的通訊協定( NFSv4.x 、 SMB )、其餘 40MB 的資料會在檔案關閉時重新排清至來源。對於無狀態通訊協定( NFSv3 )、當要求在不同的快取中存取檔案、或在檔案閒置兩分鐘以上(最多五分鐘)後、 40MB 的資料將會重新排清。如需計時器觸發或空間觸發的不乾淨資料排清的詳細資訊,請參閱 快取 Scubers

除了 DDP 和 Scubers 之外、某些前端 NAS 作業也會觸發檔案的所有髒資料清空:

  • SETATTR

    • SETATTRs:只有 mtimeatime`或 `ctime 修改會在快取中處理。

  • CLOSE

  • OPEN 在另一個快取中

  • READ 在另一個快取中

  • READDIR 在另一個快取中

  • READDIRPLUS 在另一個快取中

  • WRITE 在另一個快取中

中斷連線

當檔案的 XLD 存放在繞過寫入快取中、且快取從來源中斷連線時、其他快取和來源仍允許讀取該檔案。當 XLD 被啟用回寫式快取所保留時、此行為會有所不同。在這種情況下、如果快取中斷連線、對檔案的讀取將會隨處掛起。這有助於確保 100% 一致性、貨幣和一致性得以維持。寫入模式允許讀取、因為原始伺服器保證有所有已寫入確認給用戶端的可用資料。在中斷連線期間的回寫模式中、原始伺服器無法保證寫入啟用回寫式快取的所有資料、都會在中斷連線發生之前、將資料寫入原始伺服器。

如果檔案的 XLD 快取已長時間中斷連線、系統管理員可以手動撤銷來源的 XLD 。如此可讓 IO 傳至檔案、在存續的快取和原始伺服器上繼續執行。

警告 手動撤銷 XLD 會導致檔案在中斷連線的快取中遺失任何髒資料。只有在快取和原始伺服器之間發生災難性中斷時、才應手動撤銷 XLD 。

快取 Scubers

ONTAP 中有 Scubers 會針對特定事件執行、例如計時器過期或空間臨界值遭到違反。清理程序會對正在清理的檔案進行專屬鎖定、有效地將 IO 凍結至該檔案、直到清理完成為止。

洗滌器包括:

  • * 快取記憶體上的時間型 Scrub橡膠 : * 這種 Scrubrub 每五分鐘啟動一次、並將任何未經修改的檔案擦去兩分鐘。如果檔案的任何髒資料仍在快取中、該檔案的 IO 將會靜止、並觸發回寫。IO 將在回寫完成後恢復。

  • * 基於時間的來源 Sc橡膠 : * 與快取中的 mtime 型 Sc橡膠 非常相似、這種情形也會每五分鐘執行一次。不過、它會將未經修改的任何檔案擦去 15 分鐘、並叫出 inode 的委派。此 Sc橡膠 不會啟動任何回寫。

  • * 來源上的 rw 限制型 Scr橡膠 : * ONTAP 會監控每個來源組成的 RW 鎖定委派數量。如果這個數字超過 170 、 ONTAP 就會開始以最少使用( LRU )為基礎來執行資料清理寫入鎖定委派。

  • * 快取上的空間型 Scruber:* 如果 FlexCache 磁碟區達到 90% 滿、快取會被擦洗、以 LRU 為基礎。

  • * 來源上的空間型 Scruber:* 如果 FlexCache 原始磁碟區滿 90% 、快取會被擦洗、以 LRU 為基礎。

序列圖

這些順序圖描述了繞寫模式和回寫模式之間的寫入確認差異。

繞過寫入

FlexCache 繞過寫入順序圖表

回寫

FlexCache 回寫順序圖表