如今SDS領(lǐng)域玩家眾多,技術(shù)流派也很多,有開源的、有閉源的;有對稱結(jié)構(gòu)、有非對稱結(jié)構(gòu);有叫SDS的、也有叫HCI(Hyper-Converged Infrastructure)、還有叫ServerSAN、云存儲的,令人眼花繚亂、摸不清頭腦。
應(yīng)該說SDS還處在發(fā)展的初期階段,相應(yīng)的技術(shù)和測試標準都還不完善,客戶對其技術(shù)了解的深度也不夠。兩大因素綜合起來造成客戶選擇SDS的時候會感覺無從下手。
三類SDS應(yīng)用場景的三大關(guān)鍵指標
SDS按照提供的數(shù)據(jù)組織方式分為塊存儲、文件存儲和對象存儲三類。按照交付模式又分成獨立存儲形態(tài)和HCI形態(tài)(也就是把SDS、計算和網(wǎng)絡(luò)集成在一個系統(tǒng)里)兩種。本文僅以SDS的塊存儲類別為例,從企業(yè)用戶的角度如何選擇一款適合自己的SDS。
SDS塊存儲的主要應(yīng)用場景和傳統(tǒng)的SAN設(shè)備類似,主要應(yīng)用在需要提供裸磁盤(塊設(shè)備)的場景,例如:服務(wù)器虛擬化、桌面虛擬化、數(shù)據(jù)庫等。當然SDS塊存儲提供出的塊設(shè)備也可以格式化成本地文件系統(tǒng),存放一些非結(jié)構(gòu)化數(shù)據(jù),但這不是主要應(yīng)用場景。
建議客戶選擇SDS的時候,首先需要問一下自己兩個問題:1、主要應(yīng)用場景是什么?2、最關(guān)注的前三位的技術(shù)指標是什么?而且還要清楚SDS發(fā)展在什么階段(目前SDS還處在社會主義的初級階段),把預期和現(xiàn)實拉得近一些,有些過高的要求在這個階段SDS還不能提供。
關(guān)于SDS技術(shù)評價通常包括以下7個維度:可靠性、穩(wěn)定性、擴展性、功能、性能、易用性、兼容性。
針對SDS塊存儲前三位技術(shù)指標維度為:
三大應(yīng)用場景都把可靠性和穩(wěn)定性排在了前兩位,之所以這樣排列因為存儲是IT系統(tǒng)的基石。所謂的可靠性就是局部故障不會導致數(shù)據(jù)丟失和業(yè)務(wù)中斷,這一點理所應(yīng)當排在第一位;穩(wěn)定性是指不會因為局部故障造成性能大幅抖動,給業(yè)務(wù)響應(yīng)造成影響,比如說看個小電影中途老卡誰受得了。
說到這有人會問,這兩點對于傳統(tǒng)陣列是必須和默認的要求?我想說,傳統(tǒng)陣列都是昂貴、專用的硬件堆起來,發(fā)生硬件故障的概率很低,而SDS大都部署在廉價的標準x86服務(wù)器上,x86服務(wù)器發(fā)生硬件故障的概率要高很多;并且SDS都是分布式系統(tǒng),要管理幾十臺、乃至成千上萬臺x86服務(wù)器上,這樣發(fā)生硬件故障的概率會呈數(shù)量級的上升。如何保證大規(guī)模分布式系統(tǒng)的可靠性和穩(wěn)定性也正是SDS首要解決的難點。
Amazon的S3系統(tǒng)由上百萬臺服務(wù)器組成,每分鐘都會有很多設(shè)備下線和上線,能保證這樣大規(guī)模集群的可靠性和穩(wěn)定性,應(yīng)該沒幾個廠家有這樣的技術(shù)吧?
另外還別忘了,SDS還處在“社會主義初級階段”并不是拿出來一個廠家就能保證幾千臺服務(wù)器的SDS系統(tǒng)可靠和穩(wěn)定的。
VSI和VDI環(huán)境通常規(guī)模很大,而且規(guī)模增長的速度也較快,所以把擴展性放在了第三位。對于數(shù)據(jù)庫應(yīng)用,性能是毋容置疑非常重要的一個指標,所以排在了第三位。
眼見未必為實,測試中的那些“貓膩”
終于想清楚我要的SDS長什么樣了,忽然又想起一件大事“誰家的產(chǎn)品能達到我的要求呢?”
一個最直接的辦法就是拿測試來說吧(測試還是蠻麻煩的一件事,準備測試環(huán)境、編寫測試規(guī)范、查看測試結(jié)果……);蛟S還有一個偷懶的辦法,就是“你們有和我的需求差不多的案例嗎?我去問問那家企業(yè)用的咋樣啊”,但耳聽為虛眼見為實,聽一面之詞總是不踏實。
相比之下測試是一個較為讓人放心的辦法,但如果你不熟悉SDS的水,同樣有些坑你也發(fā)現(xiàn)不了,嘿嘿。
好了,下面這一段就是從測試和技術(shù)構(gòu)架角度幫助客戶判斷關(guān)鍵技術(shù)指標優(yōu)劣。
1、B域、C域,1/3節(jié)點損壞和RTO為0
可靠性在SDS上主要體現(xiàn)在兩個方面,當集群中磁盤或節(jié)點發(fā)生故障時,數(shù)據(jù)會不會丟失?業(yè)務(wù)會不會中斷?中斷的時長是多少?
這里有兩個指標需要關(guān)注:1、容錯度,2、故障恢復時間。
先說一下容錯度這個指標。
因為主流的SDS都采用副本技術(shù),以三副本為例,丟失1份數(shù)據(jù),應(yīng)該還有2份數(shù)據(jù)存在,數(shù)據(jù)不會丟,也就是容錯度為1/3個節(jié)點。但如果超過1/3的節(jié)點同時down機,集群還能工作嗎?這個不一定所有廠家都能做到。
很多SDS的容錯域都是提前配置好的。以3副本9個節(jié)點為例,通常會配置3個容錯域A\B\C、每個容錯域各3個節(jié)點,每個容錯域保存獨立的副本數(shù)據(jù)。例如當以一個容錯域A的3臺機器都故障時,還有兩2個副本存在,數(shù)據(jù)不會丟失,業(yè)務(wù)照常運行,這就是通常所說的能容忍1/3節(jié)點宕機。這樣的要求大多數(shù)廠家都能做到,但如果同時B域或者C域也有機器down機呢?這時候多半會出現(xiàn)兩副本都丟失情況,系統(tǒng)異常了。
故障恢復時間這個指標也很關(guān)鍵。當系統(tǒng)中發(fā)生節(jié)點宕機,故障恢復的時間當然越快越好了,最高的要求是故障恢復時間等于0。要實現(xiàn)這個指標很不容易,因為當SDS系統(tǒng)中節(jié)點發(fā)生故障時,要恢復這個故障,需要做很多事:第一步,發(fā)現(xiàn)這個故障;第二步,選出一個節(jié)點接替故障節(jié)點,并進行數(shù)據(jù)重構(gòu);第三步,重新刷新尋址空間,讓客戶機能獲取數(shù)據(jù)位置的變化。每一步都需要時間花費,特別對大規(guī)模集群來講,想把故障恢復時間控制得很小更是難上加難。宣稱故障恢復時間為零的SDS廠家并不多。
所以故障恢復時間的數(shù)量級是衡量一個SDS可靠性等級的一個非常重要的因子。用戶可以根據(jù)前端業(yè)務(wù)對故障恢復時間的敏感程度,設(shè)立相應(yīng)的要求標準。
2、Ceph性能抖動的問題
對于SDS來講,它的穩(wěn)定性主要關(guān)注點在:當系統(tǒng)發(fā)生磁盤/節(jié)點故障,恢復數(shù)據(jù)而產(chǎn)生數(shù)據(jù)遷移時,前端的性能表現(xiàn)是否穩(wěn)定。
在前面可靠性段落中談到了,SDS故障恢復有三個步驟,每一步處理不好都會影響性能表現(xiàn)。特別是數(shù)據(jù)重構(gòu)和重新尋址這兩個環(huán)節(jié),會對性能穩(wěn)定性造成很大的影響。
例如著名的開源產(chǎn)品Ceph,不止一個客戶反映當系統(tǒng)中出現(xiàn)節(jié)點宕機的情況下,性能下降和波動很厲害,對業(yè)務(wù)影響很大。只所以出現(xiàn)這個問題首先是和它元數(shù)據(jù)管理和尋址的方式(Crush算法)有關(guān),即在節(jié)點動蕩時,元數(shù)據(jù)(其實是ceph內(nèi)部保存的資源列表)發(fā)生變化,從而導致數(shù)據(jù)的地址發(fā)生變化,最終導致大量的沒有必要的數(shù)據(jù)遷移,規(guī)模越大,這個問題暴露的越明顯。其次是它數(shù)據(jù)遷移采用整盤拷貝的方式,會有無效遷移導致的網(wǎng)絡(luò)帶寬的擁擠。
還有一個坑透露一下,有些SDS系統(tǒng)在拔盤或者宕節(jié)點時,可以不發(fā)生數(shù)據(jù)重構(gòu),當磁盤或者節(jié)點重新上線或歸位時才重構(gòu)。因此,穩(wěn)定性測試時最好觀察一下,磁盤或者節(jié)點歸位后的表現(xiàn)。甚至建議,用頻繁的節(jié)點上/下線來測試它的穩(wěn)定性,因為節(jié)點抖動還是會時常發(fā)生的。
3、VSAN的局限
擴展性很難測試,因為你要準備幾百臺、上千臺的服務(wù)器環(huán)境是不可能,除非你是土豪,那怎么辦?沒辦法,看構(gòu)架吧。市場上主流SDS分為有中央元數(shù)據(jù)管理節(jié)點的非對稱構(gòu)架和無中央管理節(jié)點的全對稱構(gòu)架兩大類,前者相比后者擴展性受限。簡單的理解就是“非對稱構(gòu)架”中好比有個指揮官,一個指揮官能管的人比較有限的。“全對稱構(gòu)架”中是沒有指揮官的,全憑自覺性,像是一大堆人在干活,一個病了,無需向領(lǐng)導請假,會有另外一個人立馬自動接替他的工作。舉例證明:VSAN是有中央管理節(jié)點的,它官方宣稱的單集群支持最大節(jié)點數(shù)64個;鵬云網(wǎng)絡(luò)的ZettaStor是無中央節(jié)點的,能支持萬級的節(jié)點數(shù)量。因此從具體實例上也能看出,構(gòu)架決定了其擴展能力。
4、SSD緩沖擊穿
目前閃存技術(shù)發(fā)展得很快,性能比傳統(tǒng)磁介質(zhì)硬盤高了幾個數(shù)量級,正是因為閃存技術(shù)的發(fā)展也給SDS造就了可以在性能上PK傳統(tǒng)陣列的基礎(chǔ)。
如果你很有錢的話完全可以用SSD做主存。但目前SSD價格還較貴,性價比較高的方式是用SSD做緩存,通常一個存儲節(jié)點上配個幾百GB-1TB的SSD做緩存。SSD緩存對性能的貢獻在小數(shù)據(jù)量時會表現(xiàn)的非常好,一旦數(shù)據(jù)量足夠大,SSD被穿透,那就實打?qū)嵉乜绰浔P(寫到硬盤持久化層)的性能表現(xiàn)了。如果你的系統(tǒng)數(shù)據(jù)量很小,SSD緩存的容量足夠你支持業(yè)務(wù)峰值,那可以多些關(guān)注SDS緩存加速的性能表現(xiàn)。如果你的系統(tǒng)數(shù)據(jù)量很大,那SSD會長時間被穿透,那你就重點一下落盤的性能表現(xiàn)了。
目前SDS廠家在SSD緩存利用效率上,水平都差不太多,沒有太多很獨到的算法出現(xiàn)。倒是落盤這個環(huán)節(jié),因為選擇的技術(shù)路線不同,表現(xiàn)不一。有的就是差不多發(fā)揮原有磁盤的性能,甚至還低;有的利用一些IO算法,把普通磁盤的性能表現(xiàn)提升幾倍,像鵬云網(wǎng)絡(luò)的ZettaStor在落盤時采用了“變隨機為半順序”的IO優(yōu)化算法,把隨機IO裸盤的速度提升了3-5倍。鵬云網(wǎng)絡(luò)之所以能做這樣的IO優(yōu)化,因為ZettaStor是完全自主開發(fā)的。采用開源方案的廠家要實現(xiàn)起來估計會很難,這是要動到其核心文件系統(tǒng)層的。
有些廠家在性能測試時會用很小的卷、很小的數(shù)據(jù)去測試,看上去IOPS會很高,但真實環(huán)境不會是這么小的負載,所以一旦多創(chuàng)建些大卷,進行長時間大數(shù)據(jù)量的性能測試,SSD被寫穿透時,性能立馬一落千丈,鳳凰變?yōu)蹼u了。
不記得那位大咖說過一句話,“不談延遲的性能測試都是耍流氓”。
看一個系統(tǒng)的延遲小不小,一個是實測,另外從構(gòu)架上也能看出些端倪。就是看一下它的IO路徑是否夠短。例如,直接寫裸磁盤的總比經(jīng)過文件系統(tǒng)層轉(zhuǎn)換再寫裸磁盤的IO路徑短很多吧,這就是為什么Ceph想降低延遲很難的原因所在。眾所周知,Ceph的塊存儲不是直接訪問裸磁盤的,而是通過文件系統(tǒng)把裸磁盤轉(zhuǎn)換成塊設(shè)備給應(yīng)用的。
小結(jié)
看到了這些問題,是不是讓你對SDS望而卻步了?如果這樣,你就把孩子、臟水一起潑掉了。
就像改革開放,陽光和蒼蠅總會一起進來,良莠不齊,這是目前SDS市場的正,F(xiàn)象,鵬云網(wǎng)絡(luò)之所以把些傷疤揭開,是因為相信,真金不怕火煉!用戶可以不選擇鵬云網(wǎng)絡(luò),但一定要爭取選擇正確!這是寫作本文所期待的!