公司最近上馬新的ERP系統,舊的系統已經無法滿足業務迅速發展的要求,在服務器選擇方面遇到了一些技術難題。
經過長達數月的調研,最近要開始實施了,但要決定的事情還有很多,費用開銷(一次性和每個月份的)的差異性也很大,比如:軟件系統服務提供商的選擇;服務器是放在公司內部還是在數據中心?如果采用遠程數據中心的方案,是放在電信的機房,還是網通的機房?亦或是聯通的機房?在選擇服務器方面,是選擇1U的服務器,還是2U的?CPU個數,內存,儲存空間的使用,系統軟件的許可證的個數等等,都需要權衡,做出決定和取舍,要知道這些要素的組合產生的價格差異真是天壤之別!
這里就選擇磁盤陣列問題 —— 一個最具典型性的與儲存空間、效率以及可靠性相關的技術問題,就我了解到的情況列出來進行探討,期望對遇到類似問題的朋友和公司內部人士提供一些參考信息。
公司數年前已經使用了一臺著名品牌的塔式服務器作為公司內部的文件服務器和ERP數據服務器,使用兩塊完全相同的磁盤,采用RAID1結構,這臺服務器使用了5年了,基本沒有出現過數據災難,但因為頻繁的斷電和加電的不規范操作,前不久,這臺服務器的電源出現問題了,磁盤容量也幾乎消耗完了,我估計磁盤的壽命也差不多了,可能也需要升級了。
公司新上馬的ERP系統,因為要滿足各個分公司,各辦事處,銷售人員和后勤人員,服務人員甚至客戶的協同的、大量的、24小時不間斷的遠程高負荷的數據操作,在數據儲存方面需要采用更高級別的RAID磁盤陣列容錯系統。
就在此時,服務器基礎構架,型號基本定了,但是采取何種磁盤陣列,到現在為止,還無法決定,但我明白,我們只能在RAID5和RAID10二者之間做出選擇,我將我了解到的二者的區別列出來進行分析,期望從中獲得決策的靈感。
為了方便RAID10和RAID5對比,這里拿同樣多驅動器的磁盤來做對比(4個相同的磁盤),RAID5可以選擇3D+1P的RAID方案,RAID10則可以選擇2D+2D的RAID方案。
安全性方面的比較, 其實在安全性方面,勿須質疑,肯定是RAID10的安全性高于RAID5。我們也可以從簡單的分析來得出。當盤1損壞時,對于RAID10,只有當盤1對應的鏡象盤損壞,才導致RAID失效。但是對于RAID5,剩下的3塊盤中,任何一塊盤故障,都將導致RAID失效, 在恢復的時候,RAID10恢復的速度也快于RAID5。
空間利用率的比較: RAID10的利用率是50%,RAID5的利用率是75%。硬盤數量越多,RAID5的空間利用率越高。
讀寫性能方面的比較: 主要分析分析如下三個過程:讀,連續寫,離散寫。
在介紹這三個過程之前,先介紹一個特別重要的概念:cache(寫入緩存), cache已經是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的Raid cache。
Cache的主要作用是什么呢?體現在讀與寫兩個不同的方面,如果作為寫,一般存儲陣列只要求寫到cache就算完成了寫操作,所以,陣列的寫是非常快速的,在寫cache的數據積累到一定程度,陣列才把數據刷到磁盤,可以實現批量的寫入,至于cache數據的保護,一般都依賴于鏡相與電池(或者是UPS)。
Cache的讀一樣不可忽視,因為如果讀能在cache中命中的話,將減少磁盤的尋道,因為磁盤從尋道開始到找到數據,一般都在6ms以上,而這個時間,對于那些密集型IO的應用可能不是太理想。但是,如果cache能命中,一般響應時間則可以在1ms以內。兩者應該相差3個數量級(1000倍)。
RAID10可供讀取有效數據的磁盤個數為4,RAID5可供讀取有效數據的磁盤個數也為4個(校驗信息分布在所有的盤上),所以兩者的讀的性能應該是基本一致的。
在連續寫操作過程中,如果有寫cache存在,并且算法沒有問題的話,RAID5比RAID10甚至會更好一些,雖然也許并沒有太大的差別。(這里要假定存儲有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。 因為這個時候的RAID校驗是在cache中完成,如4塊盤的RAID5,可以先在內存中計算好校驗,同時寫入3個數據+1個校驗。而RAID10只能同時寫入2個數據+2個鏡相。
根據前面對緩存原理的介紹,寫cache是可以緩存寫操作的,等到緩存寫數據積累到一定時期再寫到磁盤。但是,寫到磁盤陣列的過程是遲早也要發生的,所以RAID5與RAID10在連續寫的情況下,從緩存到磁盤的寫操作速度會有較小的區別。不過,如果不是連續性的強連續寫,只要不達到磁盤的寫極限,差別其實并不是太大。
如果采用的是Oracle數據庫,每次寫一個數據塊的數據,如8K;由于每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日志看起來會像是連續寫。但是因為不保證能夠添滿RAID5的一個數據條帶塊,比如32K(保證每個盤都能寫入),所以很多時候更加偏向于離散寫入(寫入到已存在數據的條帶中)。在離散寫的時候對于RAID5,實際發生了4次I/O:但對于RAID10,同樣的操作,最終RAID 10只需要2個I/O操作,但是,在RAID5中, 如果需要讀取的數據已經在cache中,可能并不需要4個IO的。這也證明了cache對RAID5 的重要性,不僅僅是計算校驗需要,而且對性能的提升尤為重要。 當然,并不是說cache對RAID10就不重要了,因為寫緩沖,讀命中等,都是提高速度的關鍵所在,只不過RAID10對cache的依賴性沒有RAID5那么明顯而已。
假定有一個數據請求事件,其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,因為每一個寫,在RAID5中,實際發生了4個IO,所以寫的IOPS為16000個。
為了考慮RAID5在寫操作的時候,那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
可以看到,因為RAID10對于一個寫操作,只發生2次IO。所以,同樣的壓力,同樣的磁盤,每個盤的IOPS只有102個,這遠遠低于磁盤的極限IOPS。
要求較高的空間利用率,對安全性要求不是特別高、大文件存儲的系統采用RAID5比較好。相反,安全性要求很高,不計成本,小數據量頻繁寫入的系統采用RAID10的方式比較好。另外,磁盤數量增加,對電源的要求上升,能耗也加大了,且服務器散熱風扇的噪音也將急劇增大。
上一條:(轉)關于RAID 1+0和RAID 0+1的比較
下一條:安裝系統時出現安裝程序無法創建新的系統分區的解決方法 |
返回列表 |