信息伴隨互聯網的快速發展,無論是企業還是個人的數據量都呈現幾何增長,數據的價值也越來越凸顯。隨著備份的數據量越來越大、數據類型越來越復雜,在這個大背景下,CDP(Continuous Data Protection,持續數據保護)技術開始誕生并刮起了一股數據保護的熱潮。與傳統的備份與恢復方式不同,CDP技術通過記錄每一個IO變化,將數據所有變化以實時、“錄像”的方式進行保存,這種方式對用戶最有價值的部分就是其快速恢復性,當災難發生之后,通過CDP的I/O記錄回滾技術,可以回滾到過去任意指定時間點的數據狀態,而且恢復速度極為快速,遠非傳統的磁帶備份或者VTL所能比擬。
這個時候人們可能產生一個疑問,如果要實現任意時間點的歷史數據回滾支持,為每個IO變化進行記錄,IT系統硬件軟件是否能滿足其性能,或者說起存儲系統性能是否受到影響?本篇文章以火星艙為例,說明火星艙寫入隊列緩沖是如何解決IO級CDP對系統性能影響的。
我們曾經介紹過,火星艙CDP(持續數據保護)的一大優勢特色是數據塊級I/O記錄技術。也就是對鏡像寫入到火星艙中的數據,為每個I/O打上時間戳,在需要的時候可以回滾到任意歷史數據狀態,甚至1毫秒(ms)內的多次寫操作都會被標記下來。
熟悉存儲的朋友可能會問,這樣的I/O級CDP是否會對性能產生不利影響呢?從常理來看,可回滾的顆粒精細度,和應用存儲訪問性能之間是魚與熊掌難以兼顧。那火星艙是如何解決這一問題的?
首先,火星艙CDP可選分鐘級快照,以及I/O記錄兩種保護方式。對于回滾精度和一致性要求相對不高的用戶,可以選擇快照方式以降低處理開銷。
至于I/O記錄方面,火星艙專門打造了被稱為“多級緩存隊列”的技術來優化性能。
把固態硬盤當作讀/寫緩存,能夠為 I/O 密集型應用優化,從而提升存儲系統的性能。可以自動將“熱數據”工作負載分擔到SSD上,如隨機讀寫,從而獲得更高的性能。
首先,每一臺火星艙(不只是CDP)都支持SSD讀/寫緩存功能,針對同步數據寫入可以先寫到高速的SSD日志緩存中,再選擇時機刷新至硬盤。該選項可對CDP等I/O密集型應用的性能帶來幫助。
為了進一步應對業務數據的集中突發寫入,火星艙CDP在SSD寫緩存之上又增加了一層--那就是內存緩沖。我們知道傳統磁盤陣列都是有DRAM寫緩存來改善性能的,而且這個容量隨著存儲系統檔次的提高而增加。內存在寫入性能特別是延時表現方面是閃存無法相比的。火星艙CDP配置的32GB-256GB甚至更大的內存,在這里派上了用武之地。
火星艙采用基于數據塊的CDP功能,直接運行在邏輯卷管理器層面上,提供了系統內核 I/O 級別的保護。當數據塊寫入生產存儲設備時,CDP分流器實時捕獲數據并將其同時寫入到火星艙中。
對于DRAM存儲介質的斷電易失性,火星高科持有這樣的觀點:首先火星艙在這里是作為后備存儲設備出現;其次,CDP設備應對的漸進式數據破壞不包括停電,即使停電火星艙丟失的也只是緩存中有限的臨時寫入數據;在有更高要求的場合,可以選配UPS。
筆者不是程序設計方面的專家,這里簡單談下。代碼在操作系統的內核態執行,不會像基于用戶態那樣要做反復的地址空間映射,因此效率會高出很多。
但是有許多廠商的CDP產品,其代碼都是執行在用戶態的。這是由于Linux的GPL開源協議,如果編程時對內核模塊做了改動,就必須公開所有源代碼。火星艙存儲及CDP能做到內核態,且擁有完全自主知識產權的原因是,其底層操作系統基于CDDL開源協議的Unix定制開發而來。這樣就能更高效地優化數據讀寫性能。
可以看出通過對SSD、內存緩存的合理應用以及操作系統內核態執行,火星艙CDP(持續數據保護)數據塊級I/O記錄技術,在最大限度保護用戶數據的同時,還充分考慮優化了應用存儲性能。