什么是好的存儲?
好的存儲就是“無論我要寫什么,都能快速的寫進(jìn)去;無論我要讀什么,都能快速的讀出來?!?/p>
在過去的SAS時代,由于單塊磁盤性能有限,于是人們發(fā)明了壓縮、去重、分層、存儲網(wǎng)絡(luò)等一系列技術(shù)。但即便是使用這一系列的技術(shù),存儲的性能和可管理性仍然很成問題。
而后來,性能更高的SSD出現(xiàn)了。
于是很多公司開始布道:如果全換成SSD,你的問題就解決了。
確實(shí),如果全換成SSD,問題確實(shí)能夠得到解決。但問題是,我們真的能夠舍棄所有之前的投資和經(jīng)驗(yàn)、頭也不回的全面轉(zhuǎn)向SSD嗎?成本不會允許、老板也不會允許。
于是,SSD在現(xiàn)時更像是一個加速器。同樣由于成本的限制,如何把這個加速器用對位置,還要用好就成了實(shí)際的問題。而問題的關(guān)鍵便是“軟件定義存儲”
做好一個足夠創(chuàng)新的點(diǎn)
身處互聯(lián)網(wǎng)時代,我們見過太多的“顛覆式創(chuàng)新”。但對于企業(yè)來說,很多時候他們需要的其實(shí)就是一個點(diǎn),一個能將企業(yè)已有的系統(tǒng)和新技術(shù)聯(lián)系在一起并且行之有效、立竿見影的點(diǎn)。
因?yàn)镾SD的性能可以支撐很多更高級的業(yè)務(wù)形態(tài)。所以SSD對于很多企業(yè)來說就是整個存儲系統(tǒng)的一根橫梁。但就像所有的建筑一樣,在這根橫梁的下面還需要有很多柱子做支撐。
凱翔是一家初創(chuàng)企業(yè),而這家企業(yè)找到的點(diǎn)就是要幫助企業(yè)用好、用對SSD。當(dāng)然,SSD的硬件架構(gòu)都是業(yè)界標(biāo)準(zhǔn),不能動也動不起;所以凱翔的思路就是改變軟件,通過凱翔NeuStor軟件來重新定義SSD的應(yīng)用。
讓壓縮和去重更有效
既然SSD的空間很寶貴,那么用計(jì)算能力來換空間就變成了一種現(xiàn)實(shí)的需求。壓縮和去重就是這么個思路。
雖然市面上很多企業(yè)都能夠提供壓縮和去重功能,但這些功能往往不是在線和實(shí)時的。因此用戶需要等到業(yè)務(wù)壓力最小時或?qū)⒋鎯氐纂x線再進(jìn)行這些工作。這就給企業(yè)IT的發(fā)展平添了很多限制。
而為了解決這兩大難題,NeuStor所使用的算法充分調(diào)動了英特爾至強(qiáng)處理器中內(nèi)置的AVX2指令集,令去重和壓縮的效率大大提升。同時,NeuStor也將去重塊的大小從過去的固定式改為了動態(tài)自動判斷。如果發(fā)現(xiàn)了大段的重復(fù)數(shù)據(jù),那么凱翔NeuStor會自動將去重的塊大小從4K、8K增加到16K或更高。在實(shí)際的應(yīng)用中,對于虛擬機(jī)鏡像這種重復(fù)度很高的數(shù)據(jù)來書NeuStor所節(jié)省的計(jì)算資源和時間都是可觀的。
更聰明的分層技術(shù)
好鋼用在刀刃上的道理誰都懂。因此,只有那些經(jīng)常需要被讀取的數(shù)據(jù)才是真正需要放到SSD上的數(shù)據(jù)。而這也是分層存儲的核心思想。
但在實(shí)際的應(yīng)用中,很多分層技術(shù)雖然能夠提高所謂熱數(shù)據(jù)甚至溫?cái)?shù)據(jù)的讀取性能,但對于大量存放在機(jī)械硬盤中的數(shù)據(jù)仍然無能為力。
NeuStor的方法則更加先進(jìn)。通過把機(jī)械硬盤的元數(shù)據(jù)(也就是文件的目錄信息)放在SSD當(dāng)中,整個系統(tǒng)的尋址時間就被極大的縮短了。這對于高并發(fā)、小文件的應(yīng)用場景效果非常明顯。當(dāng)然,為了在實(shí)現(xiàn)功能的前提下保證整個存儲系統(tǒng)的兼容性,凱翔專門開發(fā)了新的文件系統(tǒng),并重寫了多個版本的部分Linux核心。
容錯與還原
在提倡分布式存儲的時代,一份數(shù)據(jù)通常會在不同的地方保存多個副本。這樣既提高性能也保證可靠性。但這樣做的缺點(diǎn)也非常明顯,那就是浪費(fèi)存儲空間。此時,傳統(tǒng)陣列在實(shí)現(xiàn)數(shù)據(jù)的冗余時所表現(xiàn)出的空間節(jié)省優(yōu)勢便重新被認(rèn)識到。
NeuStor在分布式存儲的環(huán)境中同樣實(shí)現(xiàn)了類似磁盤陣列的冗余保護(hù)機(jī)制,只不過這種數(shù)據(jù)保護(hù)形式并不以磁盤數(shù)量為限。通過自主的LRC算法,NeuStor可以將12個區(qū)塊數(shù)據(jù)編為一個大組,提供2個區(qū)塊的全局冗余;同時,這12個區(qū)塊還可以被分為6+6的小組,每個小組單獨(dú)配備一個額外的冗余區(qū)塊。