磁盤陣列是把多個磁盤組成一個陣列,當作單一磁盤使用,它將數據以分段(striping)的方式儲存在不同的磁盤中,存取數據時,陣列中的相關磁盤一起動作,大幅減低數據的存取時間,同時有更佳的空間利用率。磁盤陣列所利用的不同的技術,稱為RAIDlevel,不同的level針對不同的系統及應用,以解決數據安全的問題。目前業界公認的標準是RAID0~RAID5。這個level并不代表技術的高低,level5并不高于level3,level1也不低過level4,至于要選擇那一種RAIDlevel的產品,純視用戶的操作環境(operatingenvironment)及應用(application)而定,與level的高低沒有必然的關系。 RAID1 RAID1是使用磁盤鏡像(diskmirroring)的技術。
磁盤鏡像應用在RAID1之前就在很多系統中使用,它的方式是在工作磁盤(workingdisk)之外再加一額外的備份磁盤(backupdisk),兩個磁盤所儲存的數據完全一樣,數據寫入工作磁盤的同時亦寫入備份磁盤。磁盤鏡像不見得就是RAID1,如NovellNetware亦有提供磁盤鏡像的功能,但并不表示Netware有了RAID1的功能。一般磁盤鏡像和RAID1有二點最大的不同: RAID1無工作磁盤和備份磁盤之分,多個磁盤可同時動作而有重疊(overlaping)讀取的功能,甚至不同的鏡像磁盤可同時作寫入的動作,這是一種最佳化的方式,稱為負載平衡(load-balance)。例如有多個用戶在同一時間要讀取數據,系統能同時驅動互相鏡像的磁盤,同時讀取數據,以減輕系統的負載,增加I/O的性能。
RAID1的磁盤是以磁盤延伸的方式形成陣列,而數據是以數據分段的方式作儲存,因而在讀取時,它幾乎和RAID0有同樣的性能。從RAID的結構就可以很清楚的看出RAID1和一般磁盤鏡像的不同。 RAID2 RAID2是把數據分散為位(bit)或塊(block),加入海明碼HammingCode,在磁盤陣列中作間隔寫入(interleaving)到每個磁盤中,而且地址(address)都一樣,也就是在各個磁盤中,其數據都在相同的磁道(cylinderortrack)及扇區中。RAID2的設計是使用共軸同步(spindlesynchronize)的技術,存取數據時,整個磁盤陣列一起動作,在各作磁盤的相同位置作平行存取,所以有最好的存取時間(accesstime),其總線(bus)是特別的設計,以大帶寬(bandwide)并行傳輸所存取的數據,所以有最好的傳輸時間(transfertime)。在大型檔案的存取應用,RAID2有最好的性能,但如果檔案太小,會將其性能拉下來,因為磁盤的存取是以扇區為單位,而RAID2的存取是所有磁盤平行動作,而且是作單位元的存取,故小于一個扇區的數據量會使其性能大打折扣。RAID2是設計給需要連續且大量數據的電腦使用的,如大型電腦(mainframetosupercomputer)、作影像處理或CAD/CAM的工作站(workstation)等,并不適用于一般的多用戶環境、網絡服務器(networkserver),小型機或PC。 RAID2的安全采用內存陣列(memoryarray)的技術,使用多個額外的磁盤作單位錯誤校正(single-bitcorrection)及雙位錯誤檢測(double-bitdetection);至于需要多少個額外的磁盤,則視其所采用的方法及結構而定,例如八個數據磁盤的陣列可能需要三個額外的磁盤,有三十二個數據磁盤的高檔陣列可能需要七個額外的磁盤。 RAID3 RAID3的數據儲存及存取方式都和RAID2一樣,但在安全方面以奇偶校驗(paritycheck)取代海明碼做錯誤校正及檢測,所以只需要一個額外的校檢磁盤(paritydisk)。奇偶校驗值的計算是以各個磁盤的相對應位作XOR的邏輯運算,然后將結果寫入奇偶校驗磁盤,任何數據的修改都要做奇偶校驗計算 如某一磁盤故障,換上新的磁盤后,整個磁盤陣列(包括奇偶校驗磁盤)需重新計算一次,將故障磁盤的數據恢復并寫入新磁盤中;如奇偶校驗磁盤故障,則重新計算奇偶校驗值,以達容錯的要求.
較之RAID1及RAID2,RAID3有85%的磁盤空間利用率,其性能比RAID2稍差,因為要做奇偶校驗計算;共軸同步的平行存取在讀檔案時有很好的性能,但在寫入時較慢,需要重新計算及修改奇偶校驗磁盤的內容。RAID3和RAID2有同樣的應用方式,適用大檔案及大量數據輸出入的應用,并不適用于PC及網絡服務器。 RAID4 RAID4也使用一個校驗磁盤,但和RAID3不一樣。RAID4是以扇區作數據分段,各磁盤相同位置的分段形成一個校驗磁盤分段(parityblock),放在校驗磁盤。這種方式可在不同的磁盤平行執行不同的讀取命今,大幅提高磁盤陣列的讀取性能;但寫入數據時,因受限于校驗磁盤,同一時間只能作一次,啟動所有磁盤讀取數據形成同一校驗分段的所有數據分段,與要寫入的數據做好校驗計算再寫入。即使如此,小型檔案的寫入仍然比RAID3要快,因其校驗計算較簡單而非作位(bitlevel)的計算;但校驗磁盤形成RAID4的瓶頸,降低了性能,因有RAID5而使得RAID4較少使用。 RAID5 RAID5避免了RAID4的瓶頸,方法是不用校驗磁盤而將校驗數據以循環的方式放在每一磁盤中。磁盤陣列的第一個磁盤分段是校驗值,第二個磁盤至后一個磁盤再折回第一個磁盤的分段是數據,然后第二個磁盤的分段是校驗值,從第三個磁盤再折回第二個磁盤的分段是數據,以此類推,直到放完為第一個parityblock是由A0,A1...,B1,B2計算出來,第二個parityblock是由B3,B4,...,C4,D0計算出來,也就是校驗值是由各磁盤同一位置的分段的數據所計算出來。這種方式能大幅增加小檔案的存取性能,不但可同時讀取,甚至有可能同時執行多個寫入的動作,如可寫入數據到磁盤1而其parityblock在磁盤2,同時寫入數據到磁盤4而其parityblock在磁盤1,這對聯機交易處理(OLTP,On-LineTransactionProcessing)如銀行系統、金融、股市等或大型數據庫的處理提供了最佳的解決方案(solution),因為這些應用的每一筆數據量小,磁盤輸出入頻繁而且必須容錯。
事實上RAID5的性能并無如此理想,因為任何數據的修改,都要把同一parityblock的所有數據讀出來修改后,做完校驗計算再寫回去,也就是RMWcycle(Read-Modify-Writecycle,這個cycle沒有包括校驗計算);正因為牽一而動全身,所以: R:N(可同時讀取所有磁盤) W:1(可同時寫入磁盤數) S:N-1(利用率) RAID5的控制比較復雜,尤其是利用硬件對磁盤陣列的控制,因為這種方式的應用比其他的RAIDlevel要掌握更多的事情,有更多的輸出入需求,既要速度快,又要處理數據,計算校驗值,做錯誤校正等,所以價格較高;其應用最好是OLTP,至于用于圖像處理等,不見得有最佳的性能。 RAID0及RAID1適用于PC及PC相關的系統如小型的網絡服務器(networkserver)及需要高磁盤容量與快速磁盤存取的工作站等,比較便宜;RAID3及RAID4適用于大型電腦及影像、CAD/CAM等處理;RAID5多用于OLTP,因有金融機構及大型數據處理中心的迫切需要,故使用較多而較有名氣,RAID2較少使用,其他如RAID6,RAID7,乃至RAID10等,都是廠商各做各的,并無一致的標準.