FlexCache 回寫式架構
FlexCache 的設計具有強烈的一致性、包括兩種寫入作業模式:回寫和繞過寫入。ONTAP 9.15.1 採用的傳統寫入操作模式和新的回寫操作模式、都能保證存取的資料永遠保持 100% 一致、一致、最新且一致。
以下概念詳述 FlexCache 回寫作業的方式。
委派
鎖定委派和資料委派有助於 FlexCache 保持寫入和寫入快取資料的一致性、一致性和最新狀態。來源協調兩個委派。
鎖定委派
鎖定委派是一種通訊協定層級的鎖定權限、原始伺服器會根據每個檔案授予快取、以視需要向用戶端發出通訊協定鎖定。其中包括 獨家鎖定委派( XLD ) 和 共用鎖定委派( SLD )。
為了確保 ONTAP 永遠不需要協調衝突的寫入、會將 XLD 授予用戶端要求寫入檔案的快取。重要的是、任何檔案都只能有一個 XLD 、這表示每次只能有一個寫入檔案的寫入器。
當寫入檔案的要求進入啟用回寫的快取時、會執行下列步驟:
-
快取會檢查它是否已有 XLD 用於要求的檔案。如果是這樣、只要另一個用戶端未寫入快取的檔案、它就會將寫入鎖定授予用戶端。如果快取沒有 XLD 可用於要求的檔案、它會向來源要求一個。這是一個專屬的呼叫、會穿越叢集間網路。
-
從快取接收 XLD 要求時、原始伺服器會檢查另一個快取中的檔案是否有未處理的 XLD 。如果是這樣、它將會回收該檔案的 XLD 、這會觸發從該快取中的任何快取項目清除 不良資料 回原始伺服器。
-
一旦從該快取中清除髒資料、並將其歸入原始伺服器的穩定儲存設備、原始伺服器就會將該檔案的 XLD 授予要求的快取。
-
收到檔案的 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
-
「只修改 mtime 、 atime 和 / 或 ctime 的 ETATTR 可在快取中處理、避免 WAN 的罰則。
-
-
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 為基礎。
序列圖
這些順序圖描述了繞寫模式和回寫模式之間的寫入確認差異。