寫快取目標¶
寫快取目標將寫入快取到持久記憶體或 SSD 上。它不快取讀取,因為讀取通常被快取在普通 RAM 的頁快取中。
構造裝置時,第一個扇區應清零,或者第一個扇區應包含上次呼叫的有效超級塊。
建構函式引數
- 快取裝置型別 - “p” 或 “s”
p - 持久記憶體
s - 固態硬碟 (SSD)
將被快取的底層裝置
快取裝置
塊大小 (推薦 4096;最大塊大小為頁大小)
可選引數的數量 (帶引數的引數計為兩個)
- start_sector n (預設值: 0)
從快取裝置開始處的偏移量,以 512 位元組扇區為單位
- high_watermark n (預設值: 50)
當已用塊數量達到此水印時,開始回寫
- low_watermark x (預設值: 45)
當已用塊數量低於此水印時,停止回寫
- writeback_jobs n (預設值: 無限制)
限制回寫過程中正在傳輸的塊的數量。設定此值會降低迴寫吞吐量,但可能會改善讀取請求的延遲。
- autocommit_blocks n (預設值: 持久記憶體為 64,固態硬碟為 65536)
當應用程式寫入此數量的塊而未發出 FLUSH 請求時,這些塊將自動提交
- autocommit_time ms (預設值: 1000)
自動提交時間,以毫秒為單位。如果此時間過去且未收到 FLUSH 請求,資料將自動提交
- fua (預設啟用)
僅適用於持久記憶體 - 將資料從持久記憶體回寫到底層裝置時使用 FUA 標誌
- nofua
僅適用於持久記憶體 - 回寫資料時不使用 FUA 標誌,並在之後傳送 FLUSH 請求
有些底層裝置使用 fua 效能更好,有些則使用 nofua。使用者應進行測試
- 清理器
當此選項被啟用(無論是透過建構函式引數還是透過訊息)時,快取將不會提升新的寫入(但是,對已快取塊的寫入會得到提升,以避免因寫入順序錯誤導致的資料損壞),並且它將逐漸回寫所有快取的資料。使用者空間隨後可以透過“dmsetup status”監控清理過程。當快取塊的數量降至零時,使用者空間可以解除安裝 dm-writecache 目標並將其替換為 dm-linear 或其他目標。
- max_age n
指定塊的最大年齡,以毫秒為單位。如果一個塊在快取中儲存時間過長,它將被寫入底層裝置並被清理。
- 僅元資料
只有元資料被提升到快取。此選項可提高處理更重度的 REQ_META 工作負載的效能。
- pause_writeback n (預設值: 3000)
如果在過去的 n 毫秒內有寫入 I/O 重定向到原始卷,則暫停回寫
狀態
錯誤指示器 - 如果沒有錯誤則為 0,否則為錯誤號
塊的數量
空閒塊的數量
正在回寫的塊的數量
讀取塊的數量
命中快取的讀取塊的數量
寫入塊的數量
命中未提交塊的寫入塊的數量
命中已提交塊的寫入塊的數量
繞過快取的寫入塊的數量
在快取中分配的寫入塊的數量
在空閒列表中被阻塞的寫入請求數量
重新整理請求的數量
丟棄塊的數量
- 訊息
- flush
重新整理快取裝置。如果快取裝置成功重新整理且無錯誤,則訊息返回成功
- flush_on_suspend
在下次暫停時重新整理快取裝置。當您要移除快取裝置時使用此訊息。移除快取裝置的正確步驟是
傳送“flush_on_suspend”訊息
載入一個非活動表,其線性目標對映到底層裝置
暫停裝置
請求狀態並驗證沒有錯誤
恢復裝置,以便它將使用線性目標
快取裝置現在處於非活動狀態,可以刪除
- 清理器
請參閱上面“清理器”建構函式文件。
- clear_stats
清除狀態行上報告的統計資訊