對于閃存系統,很多人和我一樣,最初的認知是來自筆記本電腦的SSD盤,也許你也沒有覺得SSD快了多少,但如果使用SSD后再來使用傳統磁盤,你就會發現磁盤速度難以忍受。
為了追求更高的速度,我們開始使用SSD盤,如果僅僅如此,那么我們對于閃存的認知將是不級格的,這就像使用SSD盤仍然堅持碎片整理,實際上人的認知,并沒有跟上閃存技術的步伐。企業級應用更是如此,企業級閃存應用需要關注的內容更多。
企業級可靠性和穩定性
企業級應用對于可靠性和穩定性有很高的需求,如果不能夠達到這個要求,就沒有辦法在市場普及開來。影響閃存系統可靠性和穩定性的因素,一是來閃存顆粒訪問的調度和管理,另外一個文件系統的優化;二者都將會影響到閃存系統的可靠性和穩定性。如果漠視這些重要的內容,將閃存應用理解為:“使用SSD盤”,這是非常膚淺的,也會給系統的穩定安全預埋下隱患和危機,這并不是危言聳聽。
閃存的隱患和缺陷
閃存優勢在于高I/O速度和低功耗,但也存在著耐久性、數據保持性、讀寫干擾、制造工藝等缺陷。其中,閃存耐讀,但不耐擦寫,其擦寫次數有一定的限制,此外,電子泄漏、電子輻射都可能導致干擾,造成數據錯誤或丟失;閃存讀寫,也有可能對于臨近存儲單元構成干擾,所有這些都要通過技術手段,如Error-correcting code (ECC校驗)、RAID保護機制、Wear leveling(磨損平衡)、Bad block mapping(壞塊管理)、Read/write disturb management(讀寫干擾管理)、Garbage collection(垃圾收集)等加以克服,所采用的技術手段不同,其效果也會有很大的差異。
以ECC為例,當讀取時候,系統從顆粒里面讀出數據和ECC校驗碼,如果驗證一致就送出數據,如果不一致,則需要通過ECC校驗獲得正確數據。不同的閃存控制系統設計,使用初期差別并不大。但是隨著使用時間和數據量的增長,壞塊會逐漸增加,這時就會產生大量的ECC Error,如果ECC引擎存在瓶頸,就會導致設備性能和可靠性會大幅度下降(參見:請問你用了多少ECC引擎),因此不同的設計方案對于系統性能和數據安全影響很大。
磨損平衡也是如此,由于存在擦寫次數的限制,盡可能通過算法讓每個撒謊內存塊擦寫次數相同,以增加閃存設備的壽命。如此一來,數據存儲的邏輯塊地址LBA,在不同的時間會指向不同的物理地址PBA。這是閃存不同于磁盤的地方。磨損平衡算法有動態、靜態磨損平衡以及全局磨損平衡的區分。方法不同效果會有很大的差異。
文件系統優化同樣重要
除了閃存控制器等硬件層面設計之外,文件系統對于閃存系統性能和可靠性的影響也非常大。
文件系統是一個比較復雜的系統,從文件系統到底層設備,其路徑很長,這會影響到閃存性能和延時優勢的發揮。為此, 2012年英特爾提出NVMe標準,目的就在于縮短閃存設備的訪問路徑,提升訪問堆棧性能,發揮閃存高IO性能和低延時優勢。
換句話說,文件系統存在根據閃存特性進行優化的空間。很多時候,傳統的文件管理和調度系統,以及存儲陣列管理軟件都是針對磁盤的特點而設計的,很多并不適用于閃存。因此,為了充分發揮閃存的特點,需要對于軟件進行優化,后者重寫,或者關閉掉一些不利于閃存管理的特性。
如今,Linux最新的Btrfs文件系統已經基于閃存特性做了訪問優化,而ZFS文件系統在設計之初,就考慮了通過閃存進行性能加速的方法。當前比較熱門的Ceph文件系統,更像是在底層文件系統之上的文件服務,如今也大量采用閃存進行性能加速。
不同文件系統配套,對于閃存系統的穩定性、可靠性和安全性的影響絲毫不亞于硬件。因此,需要用戶在應用中重點加以關注。小結
閃存作為存儲介質的革命,其影響將是非常深遠的。對于用戶的使用習慣也提出了非常高的要求。對此,需要用戶深入了解、區分不同技術和方法,如此才能夠興利除弊,最大程度發揮閃存科技的最新成果。
如果過于簡單化,就會給未來埋下隱患,而這是應該極力加以避免的。
今年7月,Dostor、DoIT、易會將舉辦2015年中國閃存峰會,屆時將有權威的閃存技術講解和介紹,可以全面開闊讀者和用戶的視野,歡迎參會,詳情敬請關注。