基於SSD的使用並廣泛應用於儲存系統的提高效能的技術早已被發明。 首先,是採用SSD作為儲存空間,100%有效,但價格昂貴。 因此,使用了疲勞和快取技術,其中SSD僅用於最受歡迎(「熱」)的數據。 分層適用於長期(數天至數週)使用「熱」資料的場景。 相反,快取是供短期(分鐘到小時)使用的。 這兩個選項都在儲存系統中實現
SSD快取技術的本質是利用SSD作為硬碟和控制器RAM之間的中間快取。 SSD的效能當然低於控制器自備快取的效能,但體積卻高出一個數量級。 因此,我們在速度和體積之間取得了一定的折衷。
使用SSD快取讀取的說明:
- 讀取操作優於寫入操作(最常見的是資料庫和 Web 應用程式);
- 硬碟陣列的效能存在瓶頸;
- 所需資料量小於SSD快取的大小。
使用讀取+寫入 SSD 快取的指示是相同的,除了操作的性質 - 混合類型(例如檔案伺服器)。
大多數儲存供應商在其產品中使用唯讀 SSD 快取。 根本區別
XCubeSAN 中的 SSD 快取在實體上以單獨的 SSD 快取池的形式實作。 系統中最多可以有四個。 當然,每個池都使用自己的一組 SSD。 我們已經在虛擬磁碟的屬性中確定了它是否將使用快取池以及使用哪個快取池。 可在線上啟用和停用磁碟區的快取使用,而無需停止 I/O。 您也可以將 SSD 熱新增至池中並將其從池中刪除。 建立 SSD 池快取時,您需要選擇其運作模式:唯讀或讀+寫。 它的物理組織取決於此。 由於可以有多個快取池,因此它們的功能可以不同(即係統可以同時擁有讀取和讀取+寫入快取池)。
如果使用唯讀快取池,則可以由1-8個SSD組成。 磁碟不必具有相同的容量和相同的供應商,因為它們組合成 NRAID+ 結構。 池中的所有 SSD 都是共享的。 系統獨立嘗試並行處理所有 SSD 之間的傳入請求,以實現最佳效能。 如果其中一個 SSD 發生故障,也不會發生任何不良情況:畢竟,快取僅包含硬碟陣列上儲存的資料的副本。 只是可用的 SSD 快取數量會減少(如果使用一個磁碟機的原始 SSD 緩存,則變為零)。
如果快取用於讀取 + 寫入操作,則池中 SSD 的數量應為 1 的倍數,因為內容鏡像在成對的磁碟機上(使用 NRAID 1+ 結構)。 複製快取是必要的,因為它可能包含尚未寫入硬碟的資料。 在這種情況下,快取池中的 SSD 發生故障將導致資訊遺失。 在 NRAID XNUMX+ 的情況下,SSD 發生故障只會導致快取轉為唯讀狀態,未寫入的資料將轉儲到硬碟陣列上。 更換故障SSD後,快取將恢復到原來的運作模式。 順便說一下,為了提高安全性,您可以將專用熱備件分配給讀取+寫入快取。
在XCubeSAN中使用SSD快取功能時,對儲存控制器的記憶體量有許多需求:系統記憶體越多,可用的快取池就越大。
與大多數儲存系統製造商只提供開啟/關閉 SSD 快取的選項不同,QSAN 提供了更多選項。 特別是,您可以根據負載的性質選擇快取操作模式。 預置了三個與對應服務的作業最接近的範本:資料庫、檔案系統、Web 服務。 此外,管理員可以透過設定所需的參數值來建立自己的設定檔:
- 區塊大小(快取區塊大小) – 1/2/4 MB
- 讀取區塊以便將其複製到快取的請求數(讀取時填充閾值) – 1..4
- 寫入區塊以便將其複製到快取的請求數(寫入時填充閾值) – 0..4
設定檔可以即時更改,但是,當然,隨著快取重置的內容及其新的「預熱」。
考慮到SSD快取的工作原理,我們可以重點介紹使用它時的主要操作:
當數據不在快取時讀取數據
- 來自主機的請求到達控制器;
- 由於請求的資料不在SSD快取中,因此從硬碟中讀取;
- 將讀取到的資料傳送給主機。 同時,檢查這些塊是否“熱”;
- 如果是,則將它們複製到 SSD 快取以供進一步使用。
當數據存在於快取中時讀取數據
- 來自主機的請求到達控制器;
- 由於請求的資料在SSD快取中,因此從那裡讀取;
- 將讀取到的資料傳送給主機。
使用讀取快取時寫入數據
- 來自主機的寫入請求到達控制器;
- 資料寫入硬碟;
- 向主機返回錄音成功的回應;
- 同時,檢查該區塊是否是「熱」的(比較Populate-on-Write Threshold參數)。 如果是,則將其複製到 SSD 快取以供以後使用。
使用讀+寫快取時寫入數據
- 來自主機的寫入請求到達控制器;
- 資料寫入SSD快取;
- 向主機返回錄音成功的回應;
- SSD快取中的資料在後台寫入硬碟;
檢查行動
試驗台
2 台伺服器(CPU:2 x Xeon E5-2620v3 2.4Hz / RAM:32GB)透過兩個連接埠透過光纖通道 16G 直接連接到 XCubeSAN XS5224D 儲存系統(16GB RAM/控制器)。
我們使用 16 個 Seagate Constellation ES、ST500NM0001、500GB、SAS 6Gb/s,組合成 RAID5 (15+1) 作為資料陣列,並使用 8 個 HGST Ultrastar SSD800MH.B、HUSMH8010BSS200、100b、SAS12
創建了 2 個磁碟區:每台伺服器一個。
測試 1. 1-8 個 SSD 的唯讀 SSD 緩存
固態硬盤緩存
- I/O類型:定制
- 快取區塊大小:4MB
- 讀取時填充閾值:1
- 寫入時填充閾值:0
輸入/輸出模式
- 工具:IOmeter V1.1.0
- 工人:1
- 傑出(隊列深度):128
- 存取規格:4KB、100% 讀取、100% 隨機
理論上來說,快取池中的SSD越多,效能就越高。 在實踐中,這一點已得到證實。 僅有少量卷的SSD數量大幅增加並不會帶來爆炸性的影響。
測試2. SSD快取讀+寫入模式,2-8個SSD
固態硬盤緩存
- I/O類型:定制
- 快取區塊大小:4MB
- 讀取時填充閾值:1
- 寫入時填充閾值:1
輸入/輸出模式
- 工具:IOmeter V1.1.0
- 工人:1
- 傑出(隊列深度):128
- 存取規格:4KB、100% 寫入、100% 隨機
相同的結果:隨著 SSD 數量的增加,效能呈現爆炸性成長並可擴展。
在這兩個測試中,工作資料量均小於總快取大小。 因此,隨著時間的推移,所有區塊都被複製到快取中。 事實上,這項工作已經在 SSD 上進行,幾乎沒有影響硬碟。 這些測試的目的是清楚地證明根據 SSD 數量預熱快取和擴展其效能的有效性。
現在讓我們回到現實,檢查一個更現實的情況,當資料量大於快取大小時。 為了讓測試在合理的時間內通過(快取「預熱」時間隨著磁碟區大小的增加而大大增加),我們將磁碟區大小限制為 120GB。
測試3.資料庫模擬
固態硬盤緩存
- I/O 類型:資料庫
- 快取區塊大小:1MB
- 讀取時填充閾值:2
- 寫入時填充閾值:1
輸入/輸出模式
- 工具:IOmeter V1.1.0
- 工人:1
- 傑出(隊列深度):128
- 存取規格:8KB、67% 讀取、100% 隨機
判決書
當然,顯而易見的結論是使用 SSD 快取可以提高任何儲存系統的效能。 應用於
QSAN XCubeSAN 這句話完全適用:SSD快取功能完美實現。 這涉及到對讀取和讀取+寫入模式的支援、任何使用場景的靈活設定以及整個系統的整體效能。 因此,以非常合理的成本(許可證價格相當於 1-2 個 SSD 的成本),您可以顯著提高整體效能。
來源: www.habr.com