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