天天看點

RAID10和RAID5差別比較,使用率與安全的取舍

摘要:安全性方面的比較, 其實在安全性方面,勿須質疑,肯定是RAID 10的安全性高于RAID 5。我們也可以從簡單的分析來得出。當盤1損壞時,對于RAID 10,隻有當盤1對應的鏡象盤損壞,才導緻RAID失效。但是對于RAID 5,剩下的3塊盤中……

公司最近上馬新的ERP系統,舊的系統已經無法滿足業務迅速發展的要求,在伺服器選擇方面遇到了一些技術難題。

經過長達數月的調研,最近要開始實施了,但要決定的事情還有很多,費用開銷(一次性和每個月份的)的差異性也很大,比如:軟體系統服務提供商的選擇;伺服器是放在公司内部還是在資料中心?如果采用遠端資料中心的方案,是放在電信的機房,還是網通的機房?亦或是聯通的機房?在選擇伺服器方面,是選擇1U的伺服器,還是2U的?CPU個數,記憶體,儲存空間的使用,系統軟體的許可證的個數等等,都需要權衡,做出決定和取舍,要知道這些要素的組合産生的價格差異真是天壤之别!

裡就選擇磁盤陣列問題:一個最具典型性的與儲存空間,效率以及可靠性相關的技術問題,就我了解到的情況列出來進行探讨,期望對遇到類似問題的朋友和公司内部人士提供一些參考資訊。

公司數年前已經使用了一台著名品牌的塔式伺服器作為公司内部的檔案伺服器和ERP資料伺服器,使用兩塊完全相同的磁盤,采用RAID1結構,這台伺服器使用了5年了,基本沒有出現過資料災難,但因為頻繁的斷電和加電的不規範操作,前不久,這台伺服器的電源出現問題了,磁盤容量也幾乎消耗完了,我估計磁盤的壽命也差不多了,可能也需要更新了。

安全性方面的比較, 其實在安全性方面,勿須質疑,肯定是RAID 10的安全性高于RAID 5。我們也可以從簡單的分析來得出。當盤1損壞時,對于RAID 10,隻有當盤1對應的鏡象盤損壞,才導緻RAID失效。但是對于RAID 5,剩下的3塊盤中,任何一塊盤故障,都将導緻RAID失效, 在恢複的時候,RAID10恢複的速度也快于RAID5。

空間使用率的比較: RAID 10的使用率是50%,RAID 5的使用率是75%。硬碟數量越多,RAID 5的空間使用率越高。

讀寫性能方面的比較: 主要分析分析如下三個過程:讀,連續寫,離散寫。

在介紹這三個過程之前,先介紹一個特别重要的概念:cache(寫入緩存), cache已經是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的Raid cache。

Cache的主要作用是什麼呢?展現在讀與寫兩個不同的方面,如果作為寫,一般存儲陣列隻要求寫到cache就算完成了寫操作,是以,陣列的寫是非常快速的,在寫cache的資料積累到一定程度,陣列才把資料刷到磁盤,可以實作批量的寫入,至于cache資料的保護,一般都依賴于鏡相與電池(或者是UPS)。

Cache的讀一樣不可忽視,因為如果讀能在cache中命中的話,将減少磁盤的尋道,因為磁盤從尋道開始到找到資料,一般都在6ms以上,而這個時間,對于那些密集型io的應用可能不是太理想。但是,如果cache能命中,一般響應時間則可以在1ms以内。兩者應該相差3個數量級(1000倍)。

RAID 10可供讀取有效資料的磁盤個數為4,RAID 5可供讀取有效資料的磁盤個數也為4個(校驗資訊分布在所有的盤上),是以兩者的讀的性能應該是基本一緻的。

在連續寫操作過程,如果有寫cache存在,并且算法沒有問題的話,RAID 5比RAID 10甚至會更好一些,雖然也許并沒有太大的差别。(這裡要假定存儲有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。 因為這個時候的RAID校驗是在cache中完成,如4塊盤的RAID 5,可以先在記憶體中計算好校驗,同時寫入3個資料+1個校驗。而RAID 10隻能同時寫入2個資料+2個鏡相。

根據前面對緩存原理的介紹,寫cache是可以緩存寫操作的,等到緩存寫資料積累到一定時期再寫到磁盤。但是,寫到磁盤陣列的過程是遲早也要發生的,是以RAID 5與RAID 10在連續寫的情況下,從緩存到磁盤的寫操作速度會有較小的差別。不過,如果不是連續性的強連續寫,隻要不達到磁盤的寫極限,差别其實并不是太大。

如果采用的是 oracle 資料庫,每次寫一個資料塊的資料,如8K;由于每次寫入的量不是很大,而且寫入的次數非常頻繁,是以聯機日志看起來會像是連續寫。但是因為不保證能夠添滿RAID 5的一個資料條帶塊,比如32K(保證每個盤都能寫入),是以很多時候更加偏向于離散寫入(寫入到已存在資料的條帶中)。在 離散寫的時候對于RAID5,實際發生了4次i/o:但 對于RAID 10,同樣的操作,最終RAID 10隻需要2個i/o操作,但是,在RAID 5中, 如果需要讀取的資料已經在cache中,可能并不需要4個io的。這也證明了cache對RAID5 的重要性,不僅僅是計算校驗需要,而且對性能的提升尤為重要。 當然,并不是說cache對RAID10就不重要了,因為寫緩沖,讀命中等,都是提高速度的關鍵所在,隻不過RAID 10對cache的依賴性沒有RAID 5那麼明顯而已。

假定有一個資料請求事件,其iops是10000,讀cache命中率是30%,讀iops為60%,寫iops為40%,磁盤個數為120,那麼分别計算在raid5與raid10的情況下,每個磁盤的iops為多少。

Raid 5: 單塊盤的iops =(10000*(1-0.3)*0.6+4*(10000*0.4))/120=(4200+16000)/120=168

這裡的10000*(1-0.3)*0.6表示是讀的iops,比例是0.6,除掉cache命中,實際隻有4200個iops。4*(10000*0.4)表示寫的iops,因為每一個寫,在raid 5中,實際發生了4個io,是以寫的iops為16000個。

為了考慮raid 5在寫操作的時候,那2個讀操作也可能發生命中,是以更精确的計算為:單塊盤的iops = (10000*(1-0.3)*0.6+2*(10000*0.4)*(1-0.3)+2*(10000*0.4))/120=(4200 + 5600 + 8000)/120=148計算出來單個盤的iops為148個,基本達到磁盤極限。

Raid10:單塊盤的iops=(10000*(1-0.3)*0.6+2*(10000*0.4))/120=(4200+8000)/120=102

可以看到,因為raid 10對于一個寫操作,隻發生2次io,是以,同樣的壓力,同樣的磁盤,每個盤的iops隻有102個,這遠遠低于磁盤的極限iops。

要求較高的空間使用率,對安全性要求不是特别高、大檔案存儲的系統采用RAID 5比較好。相反,安全性要求很高,不計成本,小資料量頻繁寫入的系統采用RAID 10的方式比較好。另外關于限制: 在Raid 10中,四個硬碟的總空間不能大于3.8T,這樣現在的大容量磁盤: 1T的就無法使用,限制了儲存空間,而RAID 5就基本不存在這種限制。另外,磁盤數量增加,對電源的要求上升,能耗也加大了,且伺服器散熱風扇的噪音也将急劇增大。(文:Traveler行者 188688900)

本文轉自babylater51CTO部落格,原文連結: http://blog.51cto.com/babylater/1920607,如需轉載請自行聯系原作者