基本介紹
歷史,套用,數據保護,磁碟快取,存儲鏈,相關技術發展,
歷史
NVDIMM由BBU(Battery Backed Up) DIMM演變而來。BBU採用含有重金屬的後備電池以維持普通揮發性記憶體中的內容幾小時之久,但不符合綠色能源的要求。由超級電容作為動力源的NVDIMM應運而生。並且NVDIMM使用非揮發性的flash存儲介質來保存數據,數據能夠保存的時間更長。
套用
數據保護
計算機系統的計算結果和服務信息皆臨時保存在記憶體中,這些數據在系統掉電後將丟失,甚至能引起整個系統的崩潰。NVDIMM可以解決系統異常掉電情況下,記憶體數據的保存工作,並且能夠在系統恢復正常運行後,繼續之前的工作。
全系統保護是NVDIMM的一個典型套用場景。在系統異常掉電後,該系統能在短時間內將整個計算機系統當前的工作狀態(包括CPU,橋接晶片,網卡等硬體設備以及系統中所有的進程)保存至NVDIMM。在系統重新上電運行後,立即恢復至之前的運行狀態,仿佛系統只是“打了個盹”。
在雲技術發展日新月異的今天,虛擬化技術作為雲的核心技術,得到了廣泛的關注與創新。與此同時,作為雲服務運行的底層載體,虛擬機的數據安全與完整是目前急需解決的重要課題。虛擬機實質為軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統,也就意味著虛擬機的所有運行狀態都在記憶體中。NVDIMM可以利用虛擬機本身的快照功能,在系統異常情況下,迅速保護存儲在記憶體中的臨時快照,達到保護整個虛擬機的目的。
磁碟快取
磁碟快取是為了減少CPU透過I/O讀寫磁碟的次數,提升磁碟I/O的效率,用一部分記憶體來儲存訪問較頻繁的磁碟內容。磁碟快取的存在對於數據訪問的一致性帶來了問題,尤其是採用write-back策略的寫快取導致異常掉電情況下記憶體中更新的數據未能及時寫入磁碟而丟失。NVDIMM是寫快取的最佳存儲介質。它的隨機訪問性質能讓CPU和作業系統直接訪問管理,並且非易失性保證數據在異常掉電情況下得以保護。
目前,針對RAID控制器的寫快取NVDIMM已逐漸被接受。對於帶有板級RAID控制晶片或者採用軟體RAID方案的計算機,缺乏寫快取,NVDIMM可以直接用做系統主存,配合作業系統,完成寫快取任務。還有一類PCIE接口的RAID控制卡,它們採用普通的帶電池後備的記憶體條作為快取使用,NVDIMM可以直接替代這些記憶體條。
存儲鏈
存儲鏈是將整個存儲系統中的數據按照安全度,性能要求以及使用頻率分層存儲在不同的非易失存儲介質中。
相關技術發展
SNIA NVM Express
SNIA在2013年底相繼發表的NVM(Non-volatile memory)的硬體接口規範和編程模型規範。定義了NVM的範圍為PCIE接口的flash存儲器,控制卡以及NVDIMM,PCM等可以隨機訪問的非易失性存儲器。SNIA 提出了block volume和persistent memory兩種模型,並給出了每種模型能夠處理的命令集以及能完成的功能。Block volume即傳統的塊設備模型,以塊為單位進行數據傳輸,採用與現有的ATA,SCSI,FC等協定具有相同的編程方式,比如PCIE SSD,PCIE RAID controller就是此類模型。Persistent memory是具有直接隨機訪問與非易失性雙重特性的編程模型,可以採用傳統虛擬記憶體管理接口,為檔案系統或者資料庫提供新的存儲行為。NVDIMM即採用此類編程模型,同樣PCIE卡如果將其存儲空間映射至PCIE存儲域,並且能夠禁止底層的flash特性,亦能採用此類模型。
Linux kernel
作業系統方面,Ric Wheeler 在2013 Linux Foundation Collaboration Summit提出了在Linux系統中支持NVM的想法,並且SNIA組織也已經給出了NVMe設備的Linux驅動。在Ric的討論中,在兼容老式編程模型的API的基礎上,定義新的適合NVM設備的API,讓檔案系統和資料庫都能更好地利用NVM的特性。
CPU