混合閃存系統(tǒng)是以接近傳統(tǒng)全磁盤陣列的成本提供高性能存儲的一種流行選擇。這些(系統(tǒng))主要是包含硬盤驅(qū)動器和具有在閃存層保存數(shù)據(jù)功能的緩存或者分層軟件層的NAND閃存的存儲系統(tǒng)(基于區(qū)塊或者文件)。
但是,所謂的閃存丟失,即當數(shù)據(jù)被請求時,緩存或閃存數(shù)據(jù)缺失,其結(jié)果要比傳統(tǒng)磁盤陣列上數(shù)據(jù)缺失的情況更加糟糕。原因在于:使用混合閃存陣列的應(yīng)用程序在設(shè)計上需要閃存的性能。用戶體現(xiàn)的整體性能取決于應(yīng)用程序軟件和CPU之間高速的交互,這需要一致的存儲延時過程。
值得一提的是,盡管在應(yīng)用程序請求之前,閃存緩存和閃存層使用不同機制將正確的數(shù)據(jù)放入閃存,但閃存丟失的影響基本上是相同的。當數(shù)據(jù)被請求卻不存在于閃存時,存儲性能就變得不可預(yù)測。突然以磁盤驅(qū)動器延時(這是一個更大的數(shù)量級)取代閃存延時的閃存丟失能夠使存儲性能更加不可預(yù)測。這種不一致顯著影響了整體應(yīng)用程序的性能,而并非源于較慢的存儲。
混合閃存陣列和全硬盤驅(qū)動器(HDD)陣列的不同是由大多數(shù)混合存儲系統(tǒng)使用數(shù)量較少的較高容量的磁盤驅(qū)動器和傳統(tǒng)的高性能磁盤陣列在設(shè)計上通常使用數(shù)量較多的磁盤軸和較快的驅(qū)動器共同造成的。因此,當真正出現(xiàn)閃存丟失的時候,應(yīng)用程序要經(jīng)受混合系統(tǒng)的磁盤層較大的延時。
為什么會出現(xiàn)丟失?
簡單來說是:閃存區(qū)太小,不足以保留用戶或者應(yīng)用程序正在請求的數(shù)據(jù)。這是一個經(jīng)濟問題;更多的閃存加重了陣列的成本,使混合陣列比磁盤陣列昂貴的多。而這也縮小了混合閃存陣列和全閃存系統(tǒng)之間的差異,當然,后者沒有閃存丟失的后顧之憂。
如果我們進一步探討的話,會發(fā)現(xiàn):有些緩存或者分層系統(tǒng)的效率低于其它(系統(tǒng)),這意味著它們實際上正在浪費閃存容量。有時,它們判定某些數(shù)據(jù)對象是否“值得使用閃存”不太有效。或者這可能是由于正被保存的數(shù)據(jù)不可預(yù)測、高度隨機或者連續(xù),以致軟件無法確定其是否“值得使用閃存”。
然而,混合陣列制造商是能夠有所作為的,把閃存丟失的機會降到最低。顯然,這些是在評估混合閃存的時候應(yīng)該考慮的設(shè)計方面的事情。
增大閃存區(qū)
制造商可以增大閃存區(qū),或者還可以更好支持擴展閃存容量。這允許用戶訂制他們的閃存-磁盤驅(qū)動器混合體,更好地滿足他們的工作負載。這也允許用戶混合部署閃存類型,例如:將數(shù)量較少的高速、高耐久性的SLC閃存用于數(shù)據(jù)的初始創(chuàng)建,以及比較便宜的、更大的MLC閃存區(qū)。
讓閃存區(qū)更智能
緩存和分層利用了如今正在開發(fā)的一些最成熟的軟件算法,而那些算法與正被用于混合閃存陣列的軟件有著顯著的區(qū)別。必須理解緩存和分層軟件作用方式,尤其是對最有可能被保存的特定數(shù)據(jù)類型作用方式,因為該軟件的有效性是數(shù)據(jù)相關(guān)的。
有些陣列具有特定于應(yīng)用程序的進程或者軟件模塊,能夠了解在某款應(yīng)用程序中何種數(shù)據(jù)對象最重要,例如數(shù)據(jù)庫的索引或者日志文件。通過賦予這些數(shù)據(jù)優(yōu)先權(quán),可以確保它們(數(shù)據(jù))在需要的時候就在閃存中。作為最后的手段,系統(tǒng)應(yīng)該允許用戶把某些數(shù)據(jù)集“壓進”閃存,以確保為任務(wù)關(guān)鍵型應(yīng)用程序提供一致的性能。
混合陣列控制器正肩負艱巨的任務(wù),因為它們除了為系統(tǒng)提供整體的存儲I/O性能以外,還在不斷地評估并且把數(shù)據(jù)移進或者移出閃存區(qū)。因此,陣列處理數(shù)據(jù)分析和數(shù)據(jù)移動的整個進程應(yīng)該盡可能的有效率。優(yōu)化閃存控制器代碼以及實施特殊的元數(shù)據(jù)處理程序都可以提高效率。
改善效率的另外一個方法是減小數(shù)據(jù)對象,這樣將減少緩存或者分層進程對無用數(shù)據(jù)的處理。例如,有些緩存軟件可以緩存單個VMDK文件,完全不同于以虛擬磁盤級別進行緩存,而且還有其它的(軟件)可以在VMDK內(nèi)緩存數(shù)據(jù)。
閃存優(yōu)先
有些分層系統(tǒng)先向磁盤寫入新數(shù)據(jù),然后在數(shù)據(jù)訪問達到某個臨界值的時候?qū)⑵涮嶂灵W存。這意味著:最新被寫入系統(tǒng)的重要數(shù)據(jù)在較長的時間里并不存在于閃存。而反過來,新數(shù)據(jù)首先被寫入閃存然后再存入磁盤,那么“閃存預(yù)熱”(flash warm-up)期會被忽略,減少了閃存丟失的機率。
混合閃存陣列使用某種緩存或分層軟件,以確保應(yīng)用程序請求的數(shù)據(jù)存在于閃存,從而達到閃存性能最大化。但是,當請求數(shù)據(jù)不在閃存時,由此造成的閃存丟失會顯著影響需要最佳存儲性能的應(yīng)用程序。為了解決這個問題,混合存儲陣列采取了幾個方法提升它們的閃存命中率。
增大閃存容量將有所幫助,但是通過將重復(fù)數(shù)據(jù)刪除和壓縮等數(shù)據(jù)縮減技術(shù)納入到存儲系統(tǒng)中來增大其有效容量也可實現(xiàn)。利用對常見應(yīng)用程序和平臺的認識或使用更特定的緩存或者分層程序使系統(tǒng)更有效率都能夠帶來類似的效果。最終,新數(shù)據(jù)先寫入閃存而非硬盤的系統(tǒng)設(shè)計能夠確保重要的數(shù)據(jù)對象在最快的時間內(nèi)出現(xiàn)在閃存上。