今天是七夕節(jié),雖然有傳聞由于兩地分居,織女和牛好上了,七夕取消。但神仙哪里懂單身狗的痛,不少含蓄的單身狗還是去購買了六神磊磊今天推薦的浪漫一生,琴瑟和諧的白色浪琴表送給女神,可惜不是所有女神都懂這個是“表白”的意思,結(jié)果很多“白表”了,哎。。。。。。
人類都在為脫單忙碌,而存儲也不例外。
存儲脫單的高級形式,就是雙活。雖然有人說雙活它是個坑,但多數(shù)人還是選擇了往下跳,就像婚姻是愛情的墳?zāi)挂粯?,我們多?shù)人還是選擇了婚姻,因為婚姻經(jīng)營得好,其實也是愛情的保鮮劑。六神磊磊今天說金庸小說里面最和諧的愛情——郭靖和黃蓉,就是婚姻的典范。
存儲脫單(雙活)有很多形式,古代比較常見的是媒婆(網(wǎng)關(guān))形式,如EMC VPLEX,IBM SVC,華為VIS等等。也就是脫單的主動權(quán)都在媒婆手里,所有的溝通都通過媒婆,這種脫單形式的好處是選擇比較多(支持存儲異構(gòu)),不好的地方是媒婆的能力決定了婚姻的質(zhì)量,這個對高富帥(高端存儲)來說是不能接受的。因為高富帥的能力、眼界和視野絕非媒婆能比,因此,高富帥現(xiàn)在的潮流是主動尋找自己的愛情(雙活),不再需要媒婆。
西瓜哥研究的傳統(tǒng)的高端存儲廠商里面,HDS(GAD)是第一家實現(xiàn)存儲雙活的,后來華為(HyperMetro)也實現(xiàn)了,EMC(SRDFMetro)也宣傳這個季度支持。
HDS的陣列雙活技術(shù)叫Global-active device (GAD),首先在高端存儲VSP G1000上支持,但HDS后來采用SVOS統(tǒng)一了高中端平臺,因此,GAD在G200,G400,G600和G800上都得到了支持。
今天,利用這個機會,我們來簡單了解一下HDS的GAD脫單大法。雖然西瓜哥前面介紹過很多GAD一些內(nèi)容,但GAD的功能在不斷完善,特別是延伸到了中端。因此,今天西瓜哥還是重新學(xué)習(xí)整理了一下,把學(xué)習(xí)心得分享給大家。
【GAD原理】
其實,所有的陣列雙活原理都類似。
HDS引入了一個概念,虛擬存儲機VSM(virtual storage machine)。簡單點說就是第二臺存儲使用第一臺存儲的一樣的信息來欺騙服務(wù)器,讓服務(wù)器以為是一臺設(shè)備。假設(shè)你有兩個雙胞胎兒子,你總是先給哥哥打扮好后,然后給弟弟穿一樣的衣服,讓外面的人根本區(qū)別不出他們誰是哥哥,隨是弟弟。在HDS GAD里,這個一樣的衣服就是LDEV ID,主卷(P-VOL)和從卷(S-VOL)的LDEV number是一樣的。
當(dāng)然,對內(nèi)的話,HDS GAD通過復(fù)制、同步技術(shù)保持兩邊設(shè)備是完全一致的。真正的雙活陣列,兩邊都可以同時對同一個卷進(jìn)行讀寫,無需轉(zhuǎn)發(fā)寫I/O。業(yè)界有一些假雙活陣列的實現(xiàn)方式,包括HDS早期的方案HAM,都不是真正的雙活,但一般也包裝成雙活去賣。這種假雙活方案一般有兩種方式:
1、主從方式:
主陣列可以讀寫,從陣列不能寫,只能讀。主機通過多路徑軟件把所有的寫I/O全部送給主陣列。
2、代理方式:
主從陣列都可以接收主機的讀寫請求,但從陣列實際不能寫,而只是作為一個寫的proxy,把主機的寫I/O轉(zhuǎn)發(fā)給主陣列。
這種實現(xiàn)方式比較簡單,因為實際上只有主陣列真正去寫存儲,無需解決鎖的問題。但這種假雙活的方式,使得從站點寫I/O不能就近落盤,而需要多一次遠(yuǎn)程轉(zhuǎn)發(fā),效率就差多了(陣列間的復(fù)制同步真雙活和假雙活都是一樣的)。一般用戶如果不了解這些細(xì)節(jié),可能以為這些雙活方式都一樣的。其實不然。特別是代理方式更具欺騙性,因為主機看到兩邊陣列都是可寫的。
【應(yīng)用場景】
存儲容錯
平時,服務(wù)器對兩邊的存儲都可以讀寫,當(dāng)任何存儲出現(xiàn)問題,另外一個存儲會接管所有的I/O。
數(shù)據(jù)中心容錯
這樣場景應(yīng)用最普遍,服務(wù)器也是集群方式,一般服務(wù)器處于不同的數(shù)據(jù)中心。當(dāng)服務(wù)器集群軟件切換的時候,存儲無需掛起和重新同步。
數(shù)據(jù)中心負(fù)載均衡
這種場景在現(xiàn)在虛擬化的數(shù)據(jù)中心越來越多。比如主站點的服務(wù)器和存儲負(fù)載都很大,怎么辦?
有了陣列雙活的支持,可以非常方便把一部分VM遷移到從站點,而底層存儲無需做任何數(shù)據(jù)遷移操作,可以快速實現(xiàn)負(fù)載均衡。
【組網(wǎng)拓?fù)洹?/strong>
單機雙陣列組網(wǎng)
這種情況需要在服務(wù)器上安裝廠商的多路徑軟件,通過多路徑軟件的自動切換來完成存儲的容錯。目前所有陣列雙活的廠商都需要用自己的多路徑軟件,而不用第三方或者操作系統(tǒng)自帶的,主要是雙活有非常復(fù)雜的切換邏輯,只有自己的多路徑軟件才能和自己的陳列完成高效復(fù)雜的溝通,做出最適合的切換判斷。這是更多從可靠性的角度來考慮。
外部存儲作為仲裁盤,防止腦裂,后面我們再講。
雙機雙陣列組網(wǎng)
這種組網(wǎng)需要服務(wù)器安裝集群軟件,來實現(xiàn)業(yè)務(wù)的切換。一般業(yè)界最常用的集群軟件是ORACLE RAC,VMWARE metro cluster和微軟的Multi-site Cluster / Stretch Cluster for Application Servers。
交叉組網(wǎng)
這種方式是推薦的組網(wǎng)方式,也就是服務(wù)器都可以看到所有的存儲,服務(wù)器同時采用集群軟件和多路徑軟件來完成故障的切換,切換的方式更加合理,比如存儲故障,服務(wù)器集群可以不切換,只需要多路徑軟件切換存儲就可以了。
GAD的狀態(tài)有很多種,比如Mirroring,Mirrored,Suspended,Blocked等等。一種狀態(tài)滿足條件就轉(zhuǎn)換為另外一種狀態(tài),如果你做售后,你要非常清楚這些轉(zhuǎn)換關(guān)系,如果你只是做售前方案,大概了解一下也就可以了。下面列出GAD的狀態(tài)轉(zhuǎn)換圖,感興趣自己下去研究研究。
【仲裁盤】
雙活方案,都需要仲裁機制。仲裁主要用于兩個存儲的通訊鏈路故障時,防止腦裂的方法。仲裁的方式有很多種:
1、采用優(yōu)先級方式。
這種方式最簡單,但如果低優(yōu)先級的站點出現(xiàn)故障就麻煩了,因此一般低端方案才這么做;
2、采用軟件仲裁方式。
這種方式應(yīng)用比較普遍,采用專門的仲裁軟件來實現(xiàn),仲裁軟件放在第三站點,可以跑在物理服務(wù)器上,也可以跑在VM上,甚至可以部署到公有云上去。
3、采用陣列仲裁盤方式。
這種方式傳統(tǒng)的廠商喜歡用,即在第三站點采用另外一臺陣列來做鎖盤。這種方式成本高,靈活性不如第二種,但穩(wěn)定性應(yīng)該高一些,因為仲裁軟件還是容易受病毒和黑客攻擊,而仲裁盤是專用設(shè)備,安全性相對高點。
HDS GAD采用的就是仲裁盤的方式。
GAD的仲裁機制原理是這樣的:
1、主存儲發(fā)現(xiàn)數(shù)據(jù)鏈路故障,然后把這個狀態(tài)寫到仲裁盤里;
2、當(dāng)從存儲檢測到仲裁盤里有路徑故障信息,它停止讀寫;
3、從存儲把自己的狀態(tài)寫到仲裁盤,說它不能接受讀寫請求了;
4、當(dāng)主存儲檢測到從存儲不再接受讀寫請求后,掛起GAD pair,主存儲繼續(xù)保持讀寫。這個超時時間是5秒,如果時間到主存儲也沒有收到從存儲的相關(guān)信息,也會直接掛起GAD pair,然后讀寫繼續(xù)。
那么問題來了,如果通訊故障,兩個存儲都同時寫仲裁盤怎么辦?HDS的工程師按照日常生活的例子,讓小的贏。即看那個陣列的序列號小,序列號小的來宣稱通訊中斷,也就是他最終來接收腦裂后的業(yè)務(wù)。就如日常生活里雙胞胎都搶一個西瓜,一般父母就要求哥哥讓給弟弟,O(∩_∩)O哈!所以說存儲就是生活。
我們看到,其實仲裁盤是當(dāng)通訊鏈路故障是主從陣列用來溝通用的。但是可笑的是HDS網(wǎng)站上面有一個ESG寫的GAD的評估白皮書報告,里面說仲裁盤是作為鏈路故障時數(shù)據(jù)Cache使用,西瓜哥認(rèn)為是不正確的,因為仲裁盤的距離可能在上千公里外,肯定不如緩存在本地效率高啊。
【一致性組】
我們知道,陣列的遠(yuǎn)程復(fù)制有一個特性叫一致性組,這個在數(shù)據(jù)庫的場景下一般是必須的特性。因為多個卷如果沒有這個特性,可能復(fù)制過去的數(shù)據(jù)不同的卷時間點是不同的,對于數(shù)據(jù)庫要求強一致性的應(yīng)用來說就是一個災(zāi)難。昨天有一個用戶還向西瓜哥抱怨,說測試某國產(chǎn)高端存儲的時候,居然發(fā)現(xiàn)沒有這個特性。
對于雙活陣列來說,這個一致性組的支持更加重要。舉個例子,兩個應(yīng)用是緊密關(guān)聯(lián)的,他們要求跑在同一個數(shù)據(jù)中心,甚至在同一臺主機上。如果沒有一致性組,某個應(yīng)用的存儲出了問題,這兩個應(yīng)用都分別跑在不同的數(shù)據(jù)中心了,這種場景不是用戶希望看到的。
但有了一致性組,邏輯上把他們的卷放在一起,任何一個卷出現(xiàn)問題,所有的應(yīng)用都一起進(jìn)行切換,如下圖所示。
【雙活兩地三中心】
能否把傳統(tǒng)的兩地三中心方案和雙活結(jié)合起來?答案是肯定的。HDS VSP G1000采用GAD來實現(xiàn)雙活,采用UR(Universal Replicator)實現(xiàn)第三站點遠(yuǎn)程異步復(fù)制。
不過,從HDS的文檔,西瓜哥看到HDS還是建議三個數(shù)據(jù)中心都在一個城市。我們看上圖,兩個雙活的站點建議是園區(qū)范圍,而第三站點建議是同城范圍。按理來說,UR對距離沒有要求,可能是雙活對資源要求比較高吧。
【GAD的一些關(guān)鍵規(guī)格】
GAD的組件有下面這些:
GAD的一些關(guān)鍵規(guī)格,西瓜哥挑幾個重要的講一下:
1、GAD支持型號從VSP G200到G1000,也就是HDS G系列都支持,這個全面說過了。但GAD需要單獨購買License,而且價格不菲。西瓜哥就了解到去年某金融客戶購買了兩套G1000,本來以后想上雙活,后來發(fā)現(xiàn)GAD許可價格太貴,因此現(xiàn)在一直沒有做雙活。
2、內(nèi)存需求:除了G200,其他型號都需要額外的內(nèi)存。也就是GAD很耗Cache資源的。
3、雙活的兩地三中心(GAD+UR)方案,只有高端存儲G1000支持。
4、仲裁盤的最大距離是1500KM,最多支持32個仲裁盤,每個仲裁盤根據(jù)型號支持不同數(shù)量的GAD pair。仲裁盤最少需要12,292MB容量。陣列每隔500ms就檢查一次仲裁盤,超時時間是1s。
5、數(shù)據(jù)鏈路G1000只能用FC,而中端存儲可以用FC,也可以用iSCSI。最大的物理鏈路是8條,距離是100KM。
6、每個陣列支持最大的VSM個數(shù)是8個;
7、目前只有高端存儲G1000才支持雙活一致性組,支持的數(shù)量是256個。
8、所有型號都支持Universal Volume Manager管理的外部卷做仲裁盤,但只有高端存儲G1000支持采用外部卷做P-VOL和S-VOL。也就是只有G1000支持(異構(gòu))虛擬化做雙活,這樣可以利舊老的第三方存儲,但上面的數(shù)據(jù)不能保留,要重新格式化,作為pool volume來使用才可以。
【西瓜哥觀點】
1、雙活雖然是坑,但好處太多了。因此雙活的實施案例會越來越多,主流廠商紛紛采用無網(wǎng)關(guān)方式的陣列雙活方式,組網(wǎng)復(fù)雜度大大減低;
2、陣列雙活還是比較復(fù)雜,各家實現(xiàn)的差距很大。用戶不能簡單了解是否支持雙活,還應(yīng)該了解實現(xiàn)的是真雙活還是假雙活、支持哪些仲裁方式,是否支持一致性組、兩地三中心這些高級特性;
3、陣列雙活還是比較新的事物,廠商的規(guī)格更新也很快,盡量找最新的的主流廠商資料來了解業(yè)界實現(xiàn)的程度。討論一下老的資料可能一樣不大,因為隨著方案的成熟,很多限制都慢慢取消了。
昨天沒有寫文章,主要是GAD的資料沒有研究完,沒法動筆。其實看了很多文檔,但有些內(nèi)容太細(xì)節(jié)了,西瓜哥覺得適合在微信分享的就是這些了。不說了,我要過七夕節(jié)去了,什么,你問我七夕節(jié)怎么過?還能怎么過,只能,一笑而過,O(∩_∩)O哈!
分享到微信 ×
打開微信,點擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。