顯示具有 磁碟陣列 標籤的文章。 顯示所有文章
顯示具有 磁碟陣列 標籤的文章。 顯示所有文章

2010年5月25日 星期二

磁碟陣列-何謂stripe size

Stripe Width 是由陣列(Array) 的硬件組成部份來決定,陣列的其中一個特點就是可把數據代整為零,把一個大數據細分成多份小數據同時存入硬盤中以提升整體讀寫效能,Stripe Width 的數值就相當於數據初分開的份數,這個數值是由硬件(或硬盤)來決定的,在建立陣列時就已被確定下來,除非重新建立陣列否則這個數值不會被改動。
例如 73GB HDD x 4 Raid 0 時 Stripe Width 的數值就是4,而 300GB HDD x 8 Raid 0 時Stripe Width 的數值就是8
Stripe Size 在不同的廠商間又被稱為 Block Size,Chunk Size 或 Stripe Length,這個數值的大小與陣列的硬件無關,是一個可讓用戶自定的參數,Stripe Size 的大小就是陣列中每一顆硬盤存放數據時的最小單位。
以一個 73GB HDD x 4 Raid 0,Stripe Size = 128KB 的陣列為例,假設現在要把1MB (1024KB)的數據寫入這個陣列,數據會如下分配:
1.因Stripe Width 為4,所以首先會把1024KB的數據分為4份,每份大小為1024KB /4 = 256KB,即陣列中的每顆硬盤將會被寫入256KB的數據
2.由於陣列中每顆硬盤的Stripe Size 被設定為128KB,因此256KB的數據會被分為256KB / 128KB =2 Block (單位) 後才寫入硬盤
結論
●在不同的陣列模式及硬碟顆數下(取決你要的是效能還是容錯),有不同的Stripe Width
如果是raid0的話(即要效能不要容錯),四顆硬碟Stripe Width的值就是4
而raid
●在不同的使用模式下有不同的Stripe Size設定技巧

幾種常用的磁碟陣列

前言:
  現在己經有很多主機板都內建了IDE RAID晶片,除了提供ATA/133功能外,也提供了磁碟陣列功能,給使用者一個完整的IDE周邊解決方案。不過,應該還有很多人弄不清楚磁碟陣列是什麼,對磁碟陣列的使用及工作原理也有很多疑問。在這裏我們就來介紹一下磁碟陣列(RAID)的概念與工作原理,相信對各位會有所幫助。
什麼是磁碟陣列?
  磁碟陣列簡稱RAID(Redundant Arrays of Inexpensive Disks),有”價格便宜且多餘的磁碟陣列”之意。其原理是利用陣列方式來作磁碟組,配合資料分散排列的設計,提升資料的安全性。磁碟陣列主要針對硬碟,在容量及速度上,無法跟上CPU及記憶體的發展,提出改善方法。磁碟陣列是由很多便宜、容量較小、穩定性較高、速度較慢磁碟,組合成一個大型的磁碟組,利用個別磁碟提供資料所產生的加成效果來提升整個磁碟系統的效能。同時,在儲存資料時,利用這項技術,將資料切割成許多區段,分別存放在各個硬碟上。
  磁碟陣列還能利用同位元檢查(Parity Check)的觀念,在陣列中任一顆硬碟故障時,仍可讀出資料,在資料重建時,將故障硬碟內的資料,經計算後重新置入新硬碟中。
磁碟陣列的由來:
  由美國柏克萊大學(University of California-Berkeley)在1987年,發表的文章:”A Case for Redundant Arrays of Inexpensive Disks”。文章中,談到了RAID這個字彙,而且定義了RAID的5層級。柏克萊大學研究其研究目的為,反應當時CPU快速的性能。CPU效能每年大約成長30~50%,而硬磁機只能成長約7%。研究小組希望能找出一種新的技術,在短期內,立即提升效能來平衡電腦的運算能力。在當時,柏克萊研究小組的主要研究目的是效能與成本。
  另外,研究小組也設計出容錯(fault-tolerance),邏輯資料備份(logical data redundancy),而產生了RAID 理論。研究初期,便宜(Inexpensive)的磁碟也是主要的重點,但後來發現,大量便宜磁碟組合並不能適用於現實的生產環境,後來Inexpensive被改為independence,許多獨立的磁碟組。
磁碟陣列,時事所趨:
  自有PC以來,硬碟是最常使用的儲存裝置。但在整個電腦系統架構中,跟CPU與RAM來比,硬碟的速度是PC中最弱的設備之一。所以,為了加速電腦整體的資料流量,增加儲存的吞吐量,進階改進硬碟資料的安全,磁碟陣列的設計因應而生。
  硬碟隨著科技的日新月異,現在其容量已達40GB以上,轉速到了1萬轉,甚至15000轉,而且價格實在是很便宜,再加現在企業流行,人力資源規畫(Enterprise Resource Planning:ERP)是每個公司建構網路的主要目標。所以,利用區域網路來傳遞資料,伺服器所使用的硬碟顯得非常重要,除了容量大、速度快之外,穩定更是基本要求。基於此因,磁碟陣列開始廣泛的應用在個人電腦上。
  磁碟陣列其樣式有三種,一是外接式磁碟陣列櫃、二是內接式磁碟陣列卡,三是利用軟體來模擬。外接式磁碟陣列櫃最常被使用大型伺服器上,具可熱抽換(Hot Swap)的特性,不過這類產品的價格都很貴。內接式磁碟陣列卡,因為價格便宜,但需要較高的安裝技術,適合技術人員使用操作。另外利用軟體模擬的方式,由於會拖累機器的速度,不適合大資料流量的伺服器。
  由上述可知,現在IDE磁碟陣列大行其道的道理;IDE介面硬碟的穩定度與效能表現已有很大的提升,加上成本考量,所以採用IDE介面硬碟來作為磁碟陣列的決解方案,可說是最佳的方式。
磁碟陣列有那些優點:
 1.傳輸速率快
 2.儲存容量可提升
 3.提升I/O每秒的數量
 4.增加資料安全性及穩定性
 5.大量資料快速及簡易管理
 6.增加可用運時間,減少維護
各階層磁碟陣列(RAID)介紹:
  磁碟陣列是由2個以上的硬碟,模擬一個邏輯硬碟出現在系統中;使用磁碟陣列控制器以達成其存在,利用不同陣列形式,模擬各種層級。現在我們先來了解磁碟陣列(RAID)到底有幾種模式,一般最常提到及應用的RAID層級分為0、1、0+1、3及5。另外還有一些極少用到的RAID 4及RAID 6在此我們就不提它了。
以下就是各個階層的介紹及圖解:
• RAID 0:Striping/Span (切分/延展)
• RAID 1:Mirroring (磁碟鏡射)
• RAID 0+1:Mirror + Striping (磁碟鏡射+切分/延展)
• RAID 3:Parallel with Parity (平行同位元檢查)
• RAID 5:Striping with Rotating Parity (切分/延展+輪轉同位元)
RAID 0:Striping/Span (切分/延展)
  RAID 0,它是將資料儲存在2個以上的硬碟機,其將全部磁碟機的儲存容量合併,藉由將資料切分到全部的磁碟機上,進行平行讀寫,而達到提高效能增加容量。但是缺點是完全沒有容錯能力,只要有一個磁碟故障,就會導致陣列磁碟的所有資料,毀於一旦無法挽回。
RAID 1:Mirroring (磁碟鏡射)
  RAID 1,必須由2個以上的硬碟所組成,由磁碟陣列(RAID)來控制,將資料同時寫入第1個與第2個硬碟,其2組硬碟上的資料完全相同,也就是其中一個硬碟是用來作備份用途;當其中有一個硬碟故障時,系統照常運作正常。RAID 1是所有RAID階層上,經濟效益最好,效能很高,極佳的資料安全性。是所有階層中使用最多最廣最符合當初RAID設計概念的一種。唯一小缺點是,其陣列磁碟容量是全部硬碟容量的一半。
RAID 0+1:Mirror + Striping (磁碟鏡射+切分/延展)
  RAID 0+1,是結合了RAID 0與1兩種模式,這個階層須具備4個或以上的雙數硬碟所組成。這個模式是由2個硬碟遵守RAID 0規範,設定成一組,再由每組間遵循RAID 1的規範,使RAID 0+1擁有容錯力及整體讀寫速度與資料安全性。不過,缺點是成本很高。
RAID 3:Parallel with Parity (平行同位元檢查)
  RAID 3,最少須3個硬碟或以上,這個階層的磁碟陣列具備了同位元高階智慧型演算法,利用一個硬碟來儲存其運算出來的同位元值的資料。當陣列磁碟中有一個硬碟發生故障時(當然不能是同位元碟),只要換上新硬碟後,磁碟陣列控制器就能利用同位元碟的資料,重新演算得到其舊有資料並回寫建立。因為其同位元檢查資料是將資料切割成數個區段,利用XOR演算法計算出同位元資料;而其區段以Bytes計算時,稱為RAID 3,如果是以Block計算時,就稱為RAID 4。所以RAID 3在整體讀寫效能會較慢較差,但在成本上會比RAID 0+1還省一點,其陣列磁碟整體容量計算公式為N-1。
RAID 5:Striping with Rotating Parity (切分/延展+輪轉同位元)
  RAID 5,最少須3個硬碟,其工作原理與RAID 3相似,主要差別是其同位元資料沒有固定在同個硬碟,是以輪流方式儲存在每個硬碟上,故稱輪轉同位元。當磁碟陣列控制器利用XOR演算出同位元檢查資料後,會隨著資料分別寫入各台硬碟上,因此整體讀寫效能比RAID 3要好一些,當然比RAID 0要差。不過在大型資料處理時,需同時讀寫多個硬碟,而同位元檢查是由磁碟陣列控制器的XOR邏輯所控制的,所以資料處理越大越多時,一定會有所遺失,但這個階層的RAID還是可以提供很高的容錯能力。


image

適合vmware虛擬主機的磁碟陣列級別、stripe size

I’ve been setting up a new development VMware server, and I’ve learned a few things about RAID performance. Our server is a brand new 3GHz Quad core Xeon, with 10 gigs of RAM. We initially set it up with 5 disks, 4 for RAID 5, and the fifth as a spare.

VMware virtual machines tend to be huge, especially if you’re pre-allocating the disks. In my case, I’ve pre-allocated them to have 15GB hard drives. I set up a couple on my laptop, and then tried to copy them up to the development server.

Much to my surprise, the write performance was horrible. Copying one large file effectively brings the server to a halt, and the copy isn’t really that fast to begin with.

Upon further investigation, I found out that RAID 5 write performance is less than desirable. Write performance is pretty important when you’re moving around huge files.

image

This morning we decided to convert the array to RAID 10, sometimes known as raid 1+0. Write performance is great, and read performance is just as good as RAID 5. We also increased the NTFS cluster size to 64KB, to better match the types of files we’re storing (big ones).

image

The results have been excellent. I can now copy a virtual machine in 10 minutes instead of 30+. The only disadvantage is that I had to lose 143GB (1 drive in the array).

If you’re setting up a VMware server, I recommend:
●Set the NTFS cluster size high (64k), and match that to your stripe size
●Use RAID 10
我的結論:
●VMWARE出來的一包不會小的,就算用內建功能把他切4G一包4G一包還是大,所以理所當然stripe和cluster的size要大。
●raid用哪種,還是要看你虛擬出來的機器的用途,測試的就放在raid0裡,當server用的就10(不要選5)。
不過我認為就算當server我也會選0,一方面省成本,再者反正要備份也不難,就整塊給他複製一下就可以了,但是要當資料庫等具互動式的server還是有容錯能力比較好。

磁碟陣列 raid0+1和1+0不同

0+1 跟 1+0 差異?

RAID 0+1 是先 RAID 0(stripe)再 RAID 1(mirror), 如下圖:

RAID 1+0 是先 RAID 1(mirror)再 RAID 0(stripe), 如下圖:

這兩種 RAID 技術主要的差異在於 performance 及 reliability 的差別. 以下分幾種 disk failure 的 case 來討論. 每一[]表示一顆硬碟.

Case 1. 任何一顆硬碟損壞
RAID 0+1 : 另一個 stripe 可繼續運作, 但本身成為 SPOF.
RAID 1+0 : 兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)

Case 2. 兩個 stripe/segment 各損壞一顆硬碟
RAID 0+1 : 兩個 stripes 都無法繼續運作.
RAID 1+0 : 兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)

Case 3. 同一個 stripe/segment 損壞兩顆硬碟
RAID 0+1 : 另一個 stripe 可繼續運作, 但本身成為 SPOF.
RAID 1+0 : 若損壞的兩顆,屬於同一 mirror set, 則無法繼續運作(敗);若屬於不同 mirror set, 則兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)

綜合以上分析, RAID 1+0 不是在所有的情況下, 它的 reliability 都優於 RAID 0+1, 但是在大部分的情況, RAID 1+0 的 reliability 是優於 RAID 0+1 的. 所以 RAID 0+1 適用於對 performance 的需求高於 reliability 的環境;RAID 1+0 則相反.

另外在 recovery 的情況, RAID 0+1 要重新 mirror 整個 stripe; 而 RAID 1+0 只要重新 mirror 一顆硬碟即可.

除了 performance 和 reliability 上的差異, 兩者在 poor scalability 和 high cost 的特性均相同.

Related Posts Plugin for WordPress, Blogger...
// Dnow Function