設計
dm-cache設計成由3個物理存儲設備來混合成一個邏輯卷的形式。操作模式和快取策略決定了快取數據的性能。這三個物理設備分別為:
•原始設備:提供主要的慢速存儲(通常是一個硬碟或者SAN)
•快取設備:提供高速原始設備數據的快取(通常是一個SSD)
•元數據設備:記錄硬碟塊在快取中的位置,髒標誌以及執行快取策略所需的內部數據。通常採用能夠隨機訪問的PRAM作為其載體。現有的PRAM有BBU-DIMM,PCM,MRAM。NVDIMM比起其他PRAM,速度快,容量高,是現今的最佳選擇。
塊大小值快取的最小單位,在創建混合卷的時候配置。推薦大小為256到1024KB,但必須是64的倍數。採用塊大小大於硬碟扇區是綜合考慮了元數據大小和快取空間浪費兩方面的因素。過小的塊會極具增加元數據在核心空間和元數據設備中占據的空間。太大的塊又會造成快取空間的浪費,因為大的數據塊往往只有一部分有較高的快取命中率。
dm-cache支持寫回,寫通和旁路三種模式。在寫回模式中,寫操作僅僅將數據寫入快取,並將其標記為髒數據,然後在適當的時機由後台的核心執行緒寫入硬碟。寫通模式則將更新的數據寫入硬碟才結束本次I/O操作。旁路模式將所有讀寫操作不經過快取設備,直接作用於原始設備。該模式允許混合卷在快取設備與原始設備狀態不一致的情況下被激活,適用於執行第三方快照功能的情形。
快取策略
多佇列
這種策略開闢了兩組各16佇列的數據結構。一組用於記錄等待被快取的塊,一組記錄已經位於快取的塊,並按照相關的邏輯時間計算壽命。需要選擇塊進行遷移時,塊的選擇根據可變的閥值,而佇列的選擇則根據命中的次數。這種策略考慮了快取未命中付出的代價,並能自動地適應不同的載入開銷。
相關的命令行參數為
‘sequential_threshold <#nr_sequential_ios>’ and
‘random_threshold <#nr_random_ios>’.
順序I/O門限作為連續數據流的判斷依據。隨機I/O正好相反,作為連續數據流再次成為隨機數據流的依據。大量順序I/O操作可以直接作用於原始設備,因為不需要額外的尋道工作,硬碟也能提供不錯的頻寬。
清理
該策略將快取中所有的髒數據寫入硬碟。執行後,混合卷可以被停止運行,或者更換快取設備
構造命令
構造混合卷
該命令用於創建一個由NVDIMM,SDD,HDD組成的混合硬碟。容量是41943040個扇區。快取模式是寫回。多佇列被使能,順序I/O門限為512,隨機I/O門限為8。