西瓜哥 發(fā)表于:13年08月11日 11:57 [原創(chuàng)] DOIT.com.cn
傳統(tǒng)的RAID 1.0如果改良后,變身為RAID 1.5來實現(xiàn)Tier和Thin功能。下面就以我理解的DS8870的RAID 1.5切西瓜原理為例,來幫助大家再次理解我的西瓜刀法,哈哈。
首先,DS8870按照一定的原則選擇8塊一樣的磁盤(由于DS8870后端采用FC-AL,因此選擇盤的時候最少要跨兩個環(huán)路才能保證比較好的性能)組織一個Array site。注意,必須是8塊盤。DS8870購買的時候,都是以16塊盤為單位進行購買的,SSD支持以8塊為單位購買。
這8塊盤選擇RAID級別后就組成了一個Array。這些RAID級別只能從下面的幾種6種類型里面選擇:
但是,還有很多的限制。比如SATA盤,只能支持RAID 6,當然,你可以做成RAID 10,但需要向IBM特別申請,RAID 5絕對是不允許的。原因大家都懂的,就是害怕可靠性問題。
大家可以看到,Array是有RAID屬性的。每一個RAID Array組成一個Rank,IBM然后拿出從西瓜哥購買的西瓜刀,切成1GB(嚴格來說,是1GiB)的切片Extent。每個Extent包含數(shù)據(jù)和元數(shù)據(jù)區(qū)域。然后選擇多個Rank組成Extent Pool。
如果你需要做Tier,那么你需要選擇不同類型硬盤的Rank來組成Extent Pool。比如,你需要做3層分層存儲,你需要選擇的Rank必須包含有SSD的Rank,SAS的Rank和NL-SAS的Rank。從上面分析可以看到,DS8870的Tier的粒度是1GB。
最后一步,你從Extent Pool選擇你需要的空間來組成LUN,然后分配給主機使用。這些LUN其實都在整個Pool都條帶化了(striping),因此,不管Pool是否是Tier的Pool,性能都會提高,克服了傳統(tǒng)RAID 1.0只能8塊硬盤同時讀寫的缺陷,一個LUN也可以跨越幾十塊硬盤了。不過這里再次強調,一個RANK數(shù)據(jù)丟失了,整個POOL都完了。
但大家都知道,LINUX和UNIX主機的LVM卷管理軟件也會做Striping,包括IBM自己的SVC也可以做Striping,因此,有可能存儲做了,主機(或者SVC)再做一次Striping。這種現(xiàn)象我們稱為雙重條帶現(xiàn)象。Double Striping可能會造成性能下降,下面這個示意圖就是,兩次條帶,正好相當于不做條帶,性能就會出現(xiàn)問題。大家以后在實施的時候要注意。
如果需要支持Thin LUN,本來IBM應該再從西瓜哥購買的一把小刀,把Extent再切成更小的塊的。但估計是IBM看不起西瓜哥的小刀吧,干脆不切了。直接按照1GB Extent的粒度來做分配(但好像IBM V7000就切成32K粒度,不知道DS8000以后是否要改?)這個谷粒 粒度,我感覺太大了,哈哈,一頓飯吃一幾顆就飽了。這種支持Thin的卷IBM叫ESE(extent space efficient volumes)。
這個1GB的粒度,做Thin的時候雖然有點浪費,但IBM財大氣粗,無所謂,每次多分一點空間,省事。但做快照是,這個粒度成問題了。你想象一下,數(shù)據(jù)庫的I/O典型是8K,一個8K的I/O下來,快照你需要分配1GB的空間,空間浪費好辦,但COW的原來大家都懂,整個1GB的數(shù)據(jù)塊的數(shù)據(jù)你都需要COPY到快照資源池里。這個搬運的數(shù)據(jù)量太大了,對系統(tǒng)的性能影響太大。怎么辦?IBM沒有辦法,只能再找西瓜哥購買一把小刀,把Extent切成64K的Track,這樣的卷叫TSE(track space efficient volumes),專門給快照使用。前面我們講到,TSE不能建立在SATA的RANK上,主要考慮性能問題吧。
好,最后我們再看一下DS8870的邏輯圖,大家按照箭頭再回顧一下IBM的西瓜刀法。
不過,別忘啦,RAID 1.5雖然解決了Tier和Thin的問題,但Extent Pool里面任何一個RAID Array壞了,這個Pool的數(shù)據(jù)都沒有了。這也容易理解IBM讓SATA盤必須用RAID 6的原因了。
好了,希望今天以后,很多人都說,哦,我也清楚什么是RAID 1.5,什么是LUN虛擬化了,我就覺得特別有成就感。
希望大家積極反饋你的意見和建議,微信掃描如下二維碼,關注微信公眾號“高端存儲知識”,與作者微信互動。