ZFS數據緩存(Part I)

Copyright © 2009, The e. Publishing Dept. of Morpho Studio (Spruce Int. Found.® ) All rights reserved.

從硬件模擬的層面來看,ZFS能夠看作是一個功能豐富、管理操做方便的磁盤陣列卡。
磁盤陣列卡是鏈接高速的系統"總線「和低速的」磁盤「設備的橋樑,爲了平衡」總線「和」磁盤「之間的速度差別,改善磁盤存儲系統的性能,效果最顯著的解決方案莫過於在陣列卡上添加專用的高速緩存記憶體(RAM/NVRAM)。
ZFS做爲一種軟件模擬的磁盤陣列卡設備,雖然不能像物理設備那樣直接在板卡上焊接內存芯片,但設計中任然充分考慮到了這方面的需求。今天咱們就來深刻了解下ZFS 的磁盤讀寫緩存技術

本文的主要內容翻譯自SUN 工程師Claudia Hildebrandt 的一份PDF文檔

ZFS 混合存儲池(Hybrid Storage Pools)

從本質上講,混合存儲這個概念不是什麼新鮮事物,存儲池也不是什麼新鮮事物!
咱們目前所使用的電子計算機都基於馮.諾依曼提出的計算組成結構的思想,從最快速的CPU的指令寄存器到如今基本已經被淘汰的龜速軟盤,組成了一個容量和速度成反比例關係的多個階梯不一樣硬件設備和存儲介質的混合存儲系統。而池的概念能夠說是源自多線程編程中的進程數據共享技術,也能夠說是源自操做系統的硬件虛擬化技術,磁帶備份軟件中的循環介質池,應該是咱們最常常使用的一種存儲池。
因此咱們說混合存儲池的概念並不是是SUN的獨家專利,其獨到之處就在於經過將物理內存和SSD或NVRAM 用於存儲池的讀寫緩存設備,內存、SSD和普通溫切斯特硬盤巧妙得融合於單一文件系統下,提供了一種充分發揮各部分存儲介質特性、兼顧性能和容量的廉價存儲解決方案。

• Hybrid Storage Pools
> 融合 SSD
> 使用SSD做爲ZIL提供獨立的日誌設備和寫閃存加速器——又名Logzilla
> 使用SSD做爲讀閃存加速器——又名Readzilla
/*老外真是很喜歡搞怪,zilla應該是指怪獸哥斯拉吧,不過就企業級SSD以一當百(1百個15K SAS)的IOPS來講,的確可稱之爲怪獸!一開始我還覺得是用的
古吉拉 語。*/

現有OpenStorage產品的配置示例:
> 18 GB Logzilla
> 100 GB Readzilla


Logzilla
• ZFS  使用專門日誌(ZIL-ZFS Intent Log)來實現POSIX同步(寫)請求。
• ZIL 默認使用從主存儲池中分配的數據塊。
• 使用獨立的ZIL設備將得到更好的性能,例如分配SSD或NVRAM設備做爲ZIL。
•爲存儲池設置獨立ZIL設備的命令示例以下:
# zpool add <pool_name> log <log_device1>
<log_device2>
• 備註: 建議使用鏡像的日誌設備,目前尚不支持使用RAIDZ 冗餘模式


 
/* POSIXIEEE爲要在各類 UNIX 操做系統運行的軟件,而定義 API的一系列互相關聯的標準的總稱,其正式稱呼爲IEEE 1003,而國際標準名稱爲 ISOIEC 9945。此標準源於一個大約開始於1985年的項目。POSIX這個名稱是由 理查德·斯托曼應IEEE的要求而提議的一個易於記憶的名稱。它基本上是Portable Operating System Interface(可移植操做系統界面)的縮寫,而 X則代表其對 Unix API的傳承。
Linux基本上逐步實現了POSIX兼容,但並無參加正式的POSIX 認證
微軟Windows NT至少部分實現了POSIX兼容。
當前的POSIX文檔分爲三個部分:POSIX Kernel API,POSIX命令和 工具集,及POSIX一致性測試。*/

Readzilla
• 又名 L2ARC ,是位於內存緩存(ZFS ARC)和磁盤之間的第二級緩存。
ZFS ARC – ZFS 可調整替代緩存
> 在屋裏內存中存儲的ZFS數據和來自全部活動存儲池的元數據信息。默認得除了爲系統保留1GB的內存,ZFS ARC將盡量多得使用內存空間來緩存數據。
> 只要物理內存有空閒,ZFS ARC就會盡量長期得消耗空閒內存做爲數據緩存,並僅在其餘應用程序請求更多內存資源時纔會將佔有的空閒內存釋放交還給系統。
> 經過使用 Readzilla ,內存中的資料能夠被移動並儘量長時間的緩存到磁盤(SSD)上(只要磁盤還有空閒空間)

ARC 概述及用途

ZFS 不使用相似UFS系統的頁面緩存(例如:mmap(2))
• 活動替代緩存
  
> 基於FAST 2003上Megiddo & Modha (IBM)的技術論文
          – ARC:
是一種能自我校訂,低開銷的可更換高速緩存技術
     >
ZFS ARC 在技術實現上稍有不一樣
          ZFS: 緩存和數據大小可變,不會有數據溢出的狀況

• 數據管理單元(DMU)使用基於設備虛擬地址(DVA)的ARC來緩存數據對象

• 每一個系統有一個 ARC
• 2類最近最常使用(LRU)歷史數據緩存 LRU
     >
最近的(MRU) 和最頻繁的(MFU)
          ARC 數據生存期大文件掃描
      > 1c 緩存及1c歷史數據(c = 緩存大小)


可調整替換緩存 (ARC )
SPA(Storage Pool Allocator,存儲池分配器)集中內存管理
      >
能有力緩解系統處理內存
緩衝的壓力。
動態、自適應及自我調整
      >
緩存調整基於I/O 負載
• 持久掃描

arc_buf 的6種狀態
• ARC_anon :
    > 緩存與設備虛擬地址(DVA)無關
    > 保持寫入存儲設備前的藏數據塊拷貝
    > 被視爲ARC_mru的一部分
• ARC_mru : 最近使用,當前已被緩存
• ARC_mru_ghost : 最近使用的,再也不緩存
• ARC_mfu : 頻繁使用,當前已被緩存
• ARC_mfu_ghost : 頻繁被使用,再也不緩存
• ARC_l2c_only : 僅存在於L2ARC中• 影子緩存只包含ARC緩存數據結構頭部的內容
相關文章
相關標籤/搜索