運用OS內建的Flash記憶體快取

近兩年來,Flash記憶體快取解決方案的發展可說是方興未艾,目前已有10多種快取軟體技術、近20種快取產品可供選擇。不過除了採購這些現成的快取產品外,若作業系統能內建快取軟體,將能讓用戶更方便的完成SSD快取功能的建置,只要自行購置、安裝好SSD,然後在作業系統中啟用,並完成快取區域設定即可。

事實上,早在2008年時, Solaris作業系統的ZFS檔案系統,便能提供這種功能。ZFS可透過混合磁碟架構,利用系統內安裝的SSD來加速讀寫作業,針對讀取與寫入I/O,ZFS分別採取不同的運作機制。

針對讀取I/O,ZFS原本就擁有利用DRAM的自適應更替快取(Adaptive Replacement Cache,ARC)功能,可利用伺服器主記憶體(DRAM)中部份區域充當快取緩衝區。不過系統記憶體容量有限,以致在許多情況下限制了快取命中率,為解決這個問題,ZFS提供了L2ARC功能,可利用主記憶體外的高速儲存裝置(如SSD),充當第2層的ARC快取緩衝區,透過擴大ARC快取緩衝區容量來提高快取命中率。

針對寫入I/O,ZFS是利用ZIL(ZFS Intend Log)機制來確保寫入作業的可靠性與效能,因此資料寫入ZIL區域的速度,將會直接影響寫入效能,故ZFS提供將ZIL存放到指定儲存裝置上的功能,避免ZIL區域負擔過重而影響到寫入效能。可選擇將ZIL存放在高速儲存裝置如SSD上,成為log專用儲存裝置,如此便能加速寫入作業。

除了Solaris,其他採用ZFS的作業系統如OpenSolaris、NexentaStor等,也都能提供同樣的L2ARC/ZIL加速功能。

另外微軟在Windows Vista/7/8上提供的ReadyBoost功能,其實也是一種Flash記憶體快取功能,只是支援的Flash記憶體裝置不是採用SATA/SAS/PCIe等介面的SSD,而是USB隨身碟。

只要用戶的USB隨身碟能支援ReadyBoost,便能將USB隨身碟內的Flash記憶體空間,設定為硬碟存取用的快取記憶體緩衝區,從而利用高速的Flash記憶體來加速磁碟存取I/O效能。

ReadyBoost設定十分簡便,先將USB隨身碟安插到系統中,然後在磁碟圖示上按右鍵,點選ReadyBoost標籤頁設定即可,可將最低256MB、最大256GB的USB Flash記憶體空間,設定為快取緩衝區。Vista只能使用1個USB Flash隨身碟作為ReadyBoost快取裝置,Windows 7則增加到8個USB Flash隨身碟。

在Windows Vista與Windows 7發布的2007與2009年,由於當時的USB隨身碟性能不足,因此ReadyBoost這項功能的實用性也有限(微軟要求4K隨機存取速率2.5MB/s以上、512K隨機存取速率1.75MB/s以上的USB隨身碟才能啟用ReadyBoost)。不過當前的USB 3.0隨身碟大多已能達到ReadyBoost的要求,也讓這項功能邁向實用化。

顯然的,只要將ReadyBoost這項功能略作沿伸,使其能支援SATA/SAS/PCIe等介面的Flash記憶體儲存裝置,便能取代Nvelo DataPlex、Condusiv ExpressCache或Intel SRT這類必須另外購買或安裝軟體的SSD快取產品。

因此長遠來看,SSD快取功能日後很可能會被併入作業系統,成為基本服務的一部分,讓用戶能更方便的取得加速I/O的效益。

相關報導請參考「Flash記憶體的快取應用」

熱門新聞

Advertisement