談到數據中心,就離不開可靠性的問題,當可靠性陷入死局,又如何重生?
12月12日,在2018中國存儲與數據峰會——超融合技術與應用論壇上,先智數據中國區總經理董唯元發表主題為“可靠性的死局和重生”為題發表主題演講。經過深入思考,董唯元反復推導了針對分布式存儲和超融合系統的可靠性計算公式,并用這個公式描繪出影響可靠性的幾大因素曲線,作為基礎架構來說,在核心場景里首要過關的就是可靠性,性能次之,作為論壇出品人的他,闡述了“服務于關鍵業務場景的超融合”這一論壇主題的精髓,精彩演講令聽眾受益匪淺。
先智數據中國區總經理董唯元
所謂死局,就是在傳統磁盤故障率前提下,用傳統副本機制,從原理上就沒辦法實現大規模的可靠系統。而重生,是指用故障預測這種新機制可以突破限制,并大幅度提升大系統的可靠性。
以下為演講實錄:
今天論壇主題是關鍵場景應用這個大方向,超融合這個概念其實已經很長時間了,它不算是一個新的概念了,在今年其實大部分用戶都多多少少聽說過,甚至已經嘗試過這樣新的技術,現在其實更多的是面對的不是有和沒有的問題,從是0到1的問題,面臨著從關鍵場景到核心場景、關鍵業務的這種應用切換。當然這個過程不像我剛才一句話說過去那么簡單,因為我們整個大的IT框架都在發生著大的變革,我們原來的這種核心應用,包括它跟邊緣應用的關系,包括整個的架構都在做各種各樣的轉型,而且這個轉型中間還是有不同的行業,不同的場景,還有不同的節奏,有不同的特點。所以切換過程其實是一個非常復雜的,這里面可討論的事情就太多了,就像我們看天上的幾大行星在天上走的節奏軌跡是一樣的,不是簡單的從東到西這么一個方向走過去,它在天空中會停下往回走再往前走,超融合也有這種遲滯,這種遲滯是正常的,第一批超融合產品在實際場景中碰撞產生的各種各樣的摩擦,這種摩擦是一種經驗,正好能幫助我們后面利用更好的新技術取代傳統技術,或者推進傳統IT的建設。
所以我們定的這么一個主題,要把這個技術,不是當作一個新技術,而是當做一個怎么能切換到關鍵業務中的場景中去。
今天大家會看到整個分論壇各個環節的主題都多多少少跟核心業務、關鍵業務是相關的,相反在初步概念介紹上面,在篩選內容的時候可能會少一些,可能比較少的從ABC101介紹這個概念,我相信大部分的人其實不太需要做這種概念普及,什么叫超融合,有什么好處,這已經不是談論這個話題的年代了,我們這個年代談論的是我們知道超融合是什么,也知道它的架構優勢是什么,但是在落地的過程中還是有很多更具體的問題,結合關鍵業務場景,怎么能把超融合用得更好,超融合技術本身還有哪些未來的發展的方向和空間,這是一些我想討論的話題。
我自己也是準備了一些可靠性方面的討論,因為我覺得新的技術進入到關鍵業務這個過程,其實我們很多的應用都是這樣的,從邊緣應用進入到關鍵應用,都要面臨這個過程,性能比重會下降,但是對可靠性方面的考量會提升。在座很多都是接觸過傳統系統的,都知道一個簡單的實實在傳統存儲系統里面,中低端存儲更多是拼性能,可靠性比拼相對少一些,或者比重少一些,但是越到高端存儲,越到核心業務方面的存儲,性能所占的比重越來越低,但是他們也會強調性能,但是比重會占很低,更多是強調可靠性,高端產品只有可靠性變高才是高端,我們說其實這是一個整個基礎架構的特點。作為基礎架構來說你在核心場景里面用要過關的就是可靠性,性能不是那么重要的問題,不是第一等重要的問題。
可靠性也是一個非常大的話題,我們從哪兒開始說呢,就從最基本的概念來說。其實可靠性這個詞本身就是一個有一點模糊的地方,如果大家不做細的區分的話,就會發現兩個人在討論可靠性,說的半天發現說的不是同一件事,其實我們計算機里面有好多這樣的東西好多概念不說細了,你都發現不了這里面的差別。我們就說數據存儲,落到設備上面,不管是分布式存儲還是傳統存儲,落到設備上面,它的可靠性到底是什么,到底是數據不丟是算可靠,還是說數據一直都可以訪問,這兩個就不是同一個概念,當然還有其他的部分。所以你會看到像AWS我們去申請它的云存儲的時候,S3提供這樣的一個說明頁面,你會發現原來存儲可靠性有兩塊,一塊是叫持久性,一塊叫可用性,還是用的可用性這個詞,Availability,業界有不同的用法,AWS用的是這個可用性,至少持續性和可用性我們在AWS網站上看到是不一樣的東西。因為指標不一樣,這么多的9,11個9,可用性才4個9,持續性11個9,我們知道是不同的東西。
具體是什么,簡單來說,系統正常工作是在線,這個系統有一個設備壞了但是數據都還能在線,不耽誤用,比如說做了什么副本都是這樣的,有東西壞了不耽誤用,只是容災率低,如果你有這個能力你的可用性是OK的。比如說超過這個,比如說這里面盤壞了,或者沒有做副本數據不可訪問了離線了,這個可用性就不在了。但是如果你有備份,你可以通過備份離線把數據找回來,至少可用性是在的,只要數據還有辦法找回來,雖然不保證持續在線,但只要保證數據在線,這個持久性還在。我們做運維經常說,死了,數據丟了找不回來。像我做存儲做了近20年,見過各種各樣的“死人”的場景,我說最小的就是一個,大概早先年前磁盤戰略,投影設備很小,里面8G的磁盤壞了,數據也不大,但是那堆數據剛好是工作小組大概70人用了將近一年的時間做的各種各樣辛苦工作的結果,70個人滿滿一屋子做各種各樣的分析、統計、計算,所有的結論、過程、結果都在這個小陣列上面,到年頭的時候設備壞了數據讀不出來了。在我們做存儲的人看來這么一個小設備一兩塊盤壞了不是什么大事,當時沒什么錢買,對做數據的人來說真是壞了,辛辛苦苦干了一年的活沒了,再做一遍再用一年,這個成本打了。所以發生這種事的時候用戶都是一腦袋汗。
還有更接近要命的,更接近物理的“要命”,就是股票,其實這些數據也不大,股票交易廳,交易系統還沒有做雙機,在1997、1998年的時候,很多沒做雙機系統一宕機,很快,能砸屏的都砸碎了。我那會兒其實還在大學念書,兼職給人裝個雙機干點私活,掙點外快,直接出來就是纏著繃帶胳膊吊著這么出來,就是股民打的,交易系統交易不了你就想吧。丟數據對用戶來講是很要命的事。
最早只要數據不丟,能找得回來,稍微停一會兒還可以理解,但是有一些業務,漸漸像股票這種業務停都不準停,停就壞事了,你讓我稍微卡頓一點都會是事故,有問題,其實對雙機系統要求越來越高了。
我們今天至少在討論可靠性這個概念的時候,大家說的更多的還是更基本,不丟,在線性,不掉線,這兩個層面的東西是相對基本的。其實從可靠性來講還有更高的,比如說變慢算不算是一種可靠性的損傷,業務角度來講一定是,甚至業務系統變慢比徹底斷了還可怕,因為變慢你不知道是哪兒的問題,一個東西壞了其實到你這兒到發現找到問題在哪兒,用的時間還短一點,因為容易找,找到哪兒壞了,該通的通了。如果一個比較復雜的業務系統某一個地方變慢了,找出問題到底在哪兒,真的有的時候花一兩個月找不出來,因為這個系統太復雜了,但是變慢也是一個系統可靠性的影響。
今天我們所說的可靠性涵蓋的更多還是持久性和可用性這兩個更頂級的層面,AWS里面討論的,我們看到很多業界的說法里面沒有放到可靠性這個范圍里面來,我相信未來可能會有比較可量化的整體的系統可靠性的評估方式、評估方法論,會把SLO,甚至更高層系統配備變更能力,其實這些東西都是對基礎架構可靠性的要求。我剛才說起來就有四個層面,可能會有若干層面的這種對可靠性更細的拆解在基礎架構的要求里面。這更多是方法論層面的事,今天不講太多方法論層面的事,稍微介紹一點具體的東西。具體的東西大家看得見摸得著。
數據中心里面什么最容易出現故障,如果各位有做過運維或者在機房里面做過IT的管理者,就會有一個感覺,你的數據中心三樣東西常年壞,硬盤、風扇、電源,CPU、內存、主板、機箱蓋都不壞,就是這三樣東西特別容易壞。而這三樣東西里面風扇、電源壞了相對來說沒有那么可怕,硬盤是最可怕的,因為數據直接在上面,數據整個系統的可靠性、可用性等等,最直接的就是跟硬盤有關系,所以別的不看,就是硬盤的故障是整個系統可靠性最可行的地方。硬盤我們都知道又不是一個平行的分布,也就是這個系統里面硬盤不是隨時都有的概率的磁盤故障存在,如果實施過IT系統的會由直觀的感覺,一個新東西上來頭三個月是最麻煩的,新布一個系統一會兒這兒懷了,那兒有故障了,如果把故障全都解決了3個月沒有什么事,6個月沒有什么事基本上可以放心使用,一年兩年沒有問題,中間故障率是越低,等到到快到壽命的時候,四年、五年看你附載的輕重,如果輕就是長壽一點,重就短壽一點。今天有點問題,你就會知道在接下來兩年陸陸續續都會有問題,就是這個設備的壽命差不多到了。
整個故障分布是一個U型分布,如果再拆開由三部分組成,一個是先天不足造成的,一上線就出問題的就是先天缺陷,硬盤在生產線上該封閉的沒有封閉嚴,該搞平整的沒搞平整,先天不合格,一到系統上就暴露問題。很快這部分篩掉就是正常的,正常使用中又在壽命之內就是環境隨機故障,就看機房溫度等等。到一定壽命的時候其實就是各種各樣元器件的老化造成的后面的那部分。這三部分,主要是三種不同的因素造成的。這里面最好玩的就是廠商跟你講的它的故障率跟用戶自己體驗到的故障率永遠不一樣,而且差別巨大,都知道硬盤的不可靠性有一個上下指標叫MTBS,就是平均無故障時間,這個概念以前還經常被拿出來說,但是現在已經沒有人說這個東西了,因為太不靠譜了,廠商居然說我的自己的MTBS 200多萬小時,你年化以后算算什么概念,我這個硬盤差不多可以從恐龍滅絕之前用到現在,這簡直是太不靠譜了。所以現在更多是看一些,廠商會有自己的返修率統計報告,那個MTBS已經不是計算你硬盤故障率的一個指標了,那個完全忽略,那個東西你就當不存在。真正廠商嘴里說的認的自己的磁盤故障率是他每年告訴你的那個報告,他每年賣出去多少盤,有多少的返修,這個百分比是多少,即便按照那個比例是0.4%-1.2%這樣的一個比例。當然廠商有時候不愿意承認都是故障。什么叫故障,什么叫非故障,中間是有灰色地帶的。不管怎么說,這些設備我們姑且把它算作故障比例,0.4%-1.2%這是廠商基本上認可的磁盤的年故障率,但這個比例在用戶感受來講還是偏低。
谷歌曾經在2006年/2007年的時候,發過一篇論文,論文統計了谷歌自己用過所有的硬盤,把硬盤的年故障率拿出來統計出來,谷歌報告里面大概是5-8%,故障率非常高。當然我們可以有理由認為谷歌用磁盤用的太狠了,有的沒有那么長,總的來說是3-8%這樣一個范圍,還是遠大于廠商統計的故障率。
我們知道幾件事,第一件事,好象不是所有的故障盤都返到廠商去了;第二件事可能統計的口徑不一樣,統計的視角不一樣,數據不一樣。真正問我磁盤的故障率到底有多少,我還真是沒法用一個數據告訴你,只能說不同的角度不同的視角數據不一樣,但是這不訪問我們做一些基本的推算。
這里跟大家分享一下可靠性計算的模型,我相信這么一大早起來如果給大家一步一步推公式的話,推到第三頁大家開始下面打呼嚕了。簡單介紹一下,這是一個簡單的軟件式存儲也好分布式存儲也好,它里面有故障,有跨節點這不叫故障。這種情況叫故障,剛才這種情況是兩個副本,這就叫故障了,對三個副本來說就是故障了,而且這個故障我們經常說兩個節點同時故障叫丟數據,其實什么叫“同時”,沒有那么嚴格精確的同時,其實是一個東西壞了之后有一個修復時間,在這個修復時間之內不能有第二個東西壞,或者不能有太多的東西壞了,太多的東西壞了這個數據會丟。我們所謂的“同時”,故障的間隔小于我們說的設備更換和修復窗口,當相鄰故障小于這個窗口的時候這就是我們一般意義所講的“同時故障”。簡單來說這個公式就是這樣的一個公式,為什么要自己推這個公式,我發現網上有一些是錯的,我去網上找現成的,誰也不會沒事自己虐自己自己推這個公式的,都是自己去找一個現成算了,但是我發現網上都是錯的,自己推了一個東西。單磁盤的故障概率放到剛才說的分布式的系統里面,它的可靠性是怎樣計算來的。看著很復雜亂七八糟一大堆,其實挺容易的。我把大的推演過程放到PPT里面,會后資料會分享給各位。
簡單來說就是概率要先做年化,把一年里面比如說一個硬盤在一年里的故障概率,轉化成t+π數據修復這樣的一個時間窗口,你需要做指數化的轉換,你根據一個硬盤的故障率,這些推導過程不細講了,估計再細講各位都要睡著了,大概了解一下。從硬盤的故障概率推導到節點的故障概率,從節點的故障概率再轉化回年化的可靠性。我說的錯都是在這兒,網上很多的東西忘了年化,得出來的結論不能做量化計算,你量化計算會有問題。整個系統的可靠性隨著指標變化的趨勢,這個n是集群里的節點數,m是每個節點硬盤的數量,這個是中間的窗口,隨著窗口期系統的可靠性的變化。
評論