眾所周知,最常用的磁盤存儲陣列配置等級分別是RAID-0、RAID-1、RAID-5。這三種磁盤存儲陣列等級針對數(shù)據(jù)的傳輸速度和保護程度都有所不同:RAID-0(數(shù)據(jù)條帶化存儲陣列)旨在提供速度,在所有RAID中速度最快,但是提供的保護最少;RAID-1(透明或條帶化存儲鏡像)這種磁盤存儲陣列能夠提供最好的數(shù)據(jù)保護;而RAID-5(磁盤陣列,奇偶校驗散布)能夠同時提供良好的速度和保護,使得RAID-5在所有磁盤存儲陣列中使用最為廣泛。
不過,我們發(fā)現(xiàn)了一個普遍性的現(xiàn)象,那就是:采用RAID-5(ZCR)的服務(wù)器,在測試中的表現(xiàn)(一個可靠MySQL資料庫測試項目),遠不及采用HostRAID-1的系統(tǒng),而且測試表明,就算同樣的RAID-1,采用獨立磁盤存儲陣列控制器的效果,竟然還不如最簡單的集成的HostRAID-1,令人頗感意外。
一、尋找原因
確實,為什么采用低價磁盤存儲陣列控制器的RAID-5的性能會不盡理想?要明白這一切,我們先要弄清楚RAID-5的運作原理。RAID-5是經(jīng)過XOR運算比對各硬盤寫入資料,再將所得到的奇偶校驗的信息分散到陣列中的每個硬盤中。這樣可以進行獨立或者并行的數(shù)據(jù)讀寫操作,可以在提高數(shù)據(jù)訪問速度的同時實現(xiàn)數(shù)據(jù)冗余性。
RAID-5將數(shù)據(jù)交錯存儲在多個磁盤上(類似RAID0),同時維護著一個奇偶校驗塊(parityblocks)系統(tǒng),由此使整個磁盤存儲陣列清楚每一個物理磁盤上所存儲的數(shù)據(jù),即使某個磁盤出現(xiàn)了故障也不會對訪問產(chǎn)生影響。
采用這樣的模式需要至少三塊物理磁盤。此外,為了存儲奇偶校驗數(shù)據(jù)以及在故障中進行數(shù)據(jù)恢復(fù)還會損失一部分的磁盤空間。對于RAID5模式而言,通常需要基于硬件的磁盤存儲陣列控制器。絕大多數(shù)的服務(wù)器已經(jīng)具備了SCSI控制器,這也是RAID-5在企業(yè)服務(wù)器中被廣泛采用的原因,尤其對大多數(shù)只能安裝三個硬盤的1U服務(wù)器而言,更是相當理想。
不過從中我們可以明白:磁盤存儲陣列控制器的XOR運算能力與快取記憶體的容量,對RAID-5的性能就有著舉足輕重的影響。從測試結(jié)果顯示,采用IntelRAID控制器的服務(wù)器,相較于采用Adaprec120ZCR控制器的服務(wù)器,RADI-5在性能上更享有相當程度的優(yōu)勢,但都不如運算原理最簡單的HostRAID-1。就算是RAID-1,獨立磁盤存儲陣列控制器也都不如集成的HostRAID。
另一個值得注意的地方是,太大的硬盤分割區(qū)對于RAID-5的能性也有不利的影響。比方將三個73GB硬盤所組成的146GBRAID-5容量,全數(shù)作為一個超大的作業(yè)系統(tǒng)分割區(qū),MySQL的測試效果只能以“慘絕人寰”來比擬,但將測試用分割區(qū)縮小到36GB,效果就瞬間成長五倍之多。這主要是磁盤存儲陣列控制器卡快取記憶體容量不足之故,因為測試數(shù)據(jù)顯示,同樣的情況并沒有發(fā)生在內(nèi)建設(shè)256MBRAID快取記憶體的服務(wù)器上。
如果要同時解決磁盤存儲陣列控制器的XOR運算能力與快取記憶體的容量給RAID-5所帶來的限制,惟有購買高檔的磁盤存儲陣列控制卡,也就是單通道/多通道SCSIRAIDHBA。一般一塊高檔SCSIRAIDHBA約售20000至30000元,再加上三至四個SCSI硬盤約售10000元左右。大多數(shù)企業(yè)是難以承受如此高額的費用。
二、HostRAID可取?
不過,這是不是意味著,我們只需要采用最便宜的HostRAID,再也不需要獨立的磁盤存儲陣列控制器?答案絕對是否定的。首先,HostRAID并無法提供Hotfix之類的可靠性機制(平時多安裝一臺硬盤作為應(yīng)急之用,如果發(fā)生硬盤損壞,就立即補救),歷史的教訓(xùn)也證明了,在同一臺服務(wù)器上的硬盤是很有可能連續(xù)陣亡的。
另外,采用HostRAID-1時,在更換硬盤后,由于必須從一臺硬盤完全轉(zhuǎn)移資料到另一臺硬盤上,加上因缺乏輔助控制器和獨立快取記憶體,必須以來處理器進行這個工作,所以進行恢復(fù)作業(yè)時的時間會相當?shù)拈L,也會大幅度降低系統(tǒng)的性能,對于某些高負載的服務(wù)器而言,在絕對是難以忍受的,尤其目前節(jié)節(jié)高升的硬盤容量,更會突顯這個問題的嚴重性。
隱而不顯的是,HostRAID-1因以來處理器之故,會有著較高的處理器及系統(tǒng)主記憶體利用率。比方采用兩個硬盤組成的HostRAID-1,其效率明顯就會落后于單硬盤的情況。換言之,如果日后持續(xù)增加硬盤數(shù)量,HostRAID的擴充性就會相當?shù)牟焕@也就是不如獨立磁盤存儲陣列控制器之處。
其實在表現(xiàn)方面,HostRAID-0及HostRAID-1并不需要太多的系統(tǒng)資源,但在重建損壞了的RAID(DegradedMode)或是碰上大量運算資源的RAID-5(需于每次寫入時計算Parity),HostRAID未必是一個良好的選擇,加上HostRAID須依賴操作系統(tǒng),如Windows2000、Solaris或Linux等先啟動,所以操作系統(tǒng)并未能受到RAID的保護。HostRAID只需兩塊SCSI硬盤的價錢便可以完成,甚至可以是免費,但除非是用RAID-1(鏡像),否則RAID-0有任何差錯,資料盡毀!
三、結(jié)論
事實上,磁盤存儲陣列并不能完全保障硬盤自身的安全,就算是看起來很安全、能兼顧性能的RAID0+1和1+0,只要兩個硬盤位于不同的RAID-0區(qū)域的硬盤接連損壞,資料照樣全軍覆沒,而RAID-5也無法承受一顆以上的硬盤損壞。更重要的是,在預(yù)算有限的前提下,企業(yè)不見得有能力采購昂貴的高檔磁盤存儲陣列控制卡和那么多的硬盤去構(gòu)建RAID0+5或者RAID5+0。