磁碟陣列(Disk array)原理(轉)
為什麼需要磁碟陣列? 如何增加磁碟的存取(acces)速度,如何防止資料因磁碟的故障而失落及如 何有效的利用磁碟空間,一直是電腦專業人員和使用者的困憂;而大容量磁碟的價 格非常昂貴,對使用者形成很大的負擔。磁碟陣列技術的產生一舉解決了這些問題。
過去十年來,CPU的處理速度幾乎是幾何級數的躍升,記憶體(memory)的 存取速度亦大幅增加,而資料儲存裝置——它要是磁碟(hard disk)——的存取 速度相較之下。較為緩慢。整個I/0吞吐量不能和系統匹配,形成電腦系統的瓶 頸,降低了電腦系統的整體效能(throughout)若不能有效的提升磁碟的存取速 度,CPU、記憶體及磁碟間的不平衡將使CPU及記憶體的改進形成浪費。
目前改進磁碟存取速度的方式主要有兩種。一是磁碟快取控制(disk cache controller),它將從磁碟讀取的資料存在快取記憶體(cache memory)中以減少磁 盤存取的次數。資料的讀寫都在cache記憶體中進行,大幅增加存取的速度,如要讀 取的資料不在cache記憶體中,或要寫資料到磁碟時,才做磁碟的存取動作。這種方 式在單工期環境(Single—tasking envioronment)如DOS之下。對大量資料的 存取有很好的效能(量小且頻繁的存取則不然)。但在多工(multi—tasking)環 境之下(因為要不停的作資料交換(swapping)的動作)或資料庫(database) 的存取(因每一記錄都很小)就不能顯示其效能。這種方式沒有任何安全保障。
其一是使用磁碟陣列的技術。磁碟陣列是把多個磁碟組成一個陣列,當作單 一磁碟使用,它將資料以分段(striping)的方式儲存在不同的磁碟中,存取資料 時,陣列中的相關磁碟一起動作:大幅減低資料的存取時間,同時有更佳的空間 利用率。磁碟陣列所利用的不同的技術,稱為RAID level,不同的level針對不 同的系統及應用,以解決資料安全的問題。
一般高效能的磁碟陣列都足以硬體的形式來達成、進—步的把磁碟cache控制 及磁碟陣列結合在—個控制器(RAID controler)或控制卡個,針對個同的使用者 解決人們對磁碟輸出/入系統的四大要求:
(1)增加存取速度。
(2)容錯(fault tolerance),即安全性。
(3)有效的利用磁碟空間。
(4)儘量的平衡CPU,記憶體及磁碟的效能並異,提高電腦的整體工作效能。
磁碟陣列原理
1987年,加州伯克利大學的一位人員發表了名為“磁碟陣列研究”的論文, 正式提到了RAID也就是滋盤陣列,論文提出廉價的5.25”及3.5”的硬碟也能如 大機器上的8”盤能提供人容量、高效能和資料的一致性,並詳述了RAIDl至5 的技術。 磁碟陣列針對不同的應用使用的不同技術,稱為RAID level,RAID是Redundant Array of Inexpenslve Disks的縮寫,而每一level代表一種技術,目前 業界公認的標準是RAID0—RAID5。這個level並個代表技術的高低,level5並不高於level3,level1也個低於level4。字於要選樣哪一種RAID level的產品,純視使用者的操作環境(Operating envir0nment)及應用(application)而定,與level 的高低沒有必然的關係。RAID0沒有安全的保障,僅其快速,所以適合高速I/0 的系統;RAIDl適用於需安全性又要兼顧速度的系統,RAID2及RAID3適用於 大型電腦及影像、CAD/CAM等處理;RAID5多用於0LTP,因有餘融機構及 大型資料處理中心的迫切需要,故使用較多而較有名氣,但也因此形成很多人對 磁碟陣列的誤解,以為磁碟陣列非要RAID5不可;RAID4較少使用、和RAID5 有其共同之處,但RAID4適合大量資料的存取。其它如RAID6,RAID7。乃至 RAIDl0、50、100等,都是廠商各做各的,並無一致的標準,在此不作說明。
RAID1
RAID1是使用磁碟映象(disk muroring)的技術,磁碟映象應用在RAIDl 之前就在很多系統中使用,它的方式是在工作磁碟(working disk)之外再加一 額外的備份磁碟(backup disk)兩個磁碟所儲存的資料安全一致。資料在寫入工 作磁碟同時也寫入備份磁碟。
RAID2
RAID2是把資料分散為位/位組(bit/byte)或塊(b1ock),加入海明碼Hamming Code、在磁碟陣列中作間隔寫入(Interleaving)到每個磁碟小。而 且地址(address)都一樣,也就是在各個磁碟中,其資料都在相同的磁軌(cylinder or track)及扇區中。RAID2又稱為並行陣列(parallel array)其設計足使 用共軸同步(spindle synchronize)的技術,存取資料時、控個磁碟陣列—起動 作,在各個磁碟的相同位置作並行存取,所以有最好的存取時間(auesstime),共 匯流排(bus)是特別的設計以大頻寬並行傳輸所存取的資料,所以有最好的傳輸時 間(transfer time)。在人型檔案的存取應用,RAID2有最好的件能,僅如果檔 案太小,會將其效能批下來。因為磁碟的存取足以期區為單位。而RAID2的存取是所有磁碟平行動作,而且是作單位或位組的存取。故小於—個扇區的資料 最會使其件能大打折扣。RAID2是設計給需要連續且大量資料的電腦使用的、如 大型電腦(mainframe to supercomputer)、作影像處理或CAD/CAM的工作站 (workstation)等,並個適用於—般的多使用者環境網路伺服器(network server)。 小型機或PC。
RAID3
RAID3的資料儲存及存取方式都和RAID2一樣,僅在安今方面以奇偶較驗 (parity check)取代海明碼做錯誤校正及檢測,所以只需要—個額外的校檢磁碟 (parity disk)。奇偶校驗值的計算足以各個磁碟的相對應位作XOR的邏輯運算, 然後將結果寫入奇偶校驗磁碟,仟何資料的修改都要做奇偶校驗計算。
RAID4
RAID4也使用一個校驗磁碟,但和RAID3不一樣,RAID4的方式是RAID0 加上一個校驗磁碟。
RAID5
RAID5和RAID4相似但避免了RAID4的瓶頸,方法是不用校驗磁碟而將校 驗資料以迴圈的方式放在每一個磁碟中,RAID5的控制比較複雜,尤其是利用硬體對磁碟陣列的控制,因為這種方式的應用比其它的RAID level要掌握更多的事情,更多的輸出/入需求,既要速度快,又要處理資料,計算校驗值,做錯誤 校正等,所以價格較高,其應用最好是0LTP,至於用於大型檔案,不見得有最 佳的效能。
RAID的對比: 下面幾個表列是RAID的一些性質:
操作 工作模式 最少硬碟量 可用容量 適用範圍
RAID0 磁碟延伸和資料分佈 2 T PC伺服器和圖形工作站
RAIDl 資料分佈和映象 2 T/2
RAID2 共軸同步,並行傳輸,ECC 3 視結構而定 大檔案且輸入輸出不頻繁的應用 如:影像處理和CAD/CAM等
RAID3 共軸同步,並行傳輸,Parity 3 Tx(n—1)/n
RAID4 資料分佈,固定Parity 3 Tx(n—1)/n
RAID5 資料分佈,分佈Parity 3 Tx(n—1)/n 銀行、金融、股市、資料庫等大 型資料處理中心OLTP應用
RAID的效能與可用性
RAID Level 使用者資料利用率 BandWidth Performance Transaction Performance 資料可用性
RAID0 1 0.25 1 0.0005
RAID1 0.5 0.25 0.85 1
RAID2 0.67 1 0.25 0.9999
RAID3 0.75 1 0.25 0.9999
RAID4 0.75 0.25 0.61 0.9999
RAID5 0.75 0.25 0.61 0.9999
以上資料基於4個磁碟,傳輸塊大小lK,75%的讀機率,資料可用性的計算 基於同樣的損壞機率。
RAID的概述
RAID0
沒有任何額外的磁碟或空間作安全準備,所以一般人不重視它,這是誤解。 其實它有最好的效率及空間利用率,對於追求效率的應用,非常理想,可同時用 其它的RAID level或其它的備份方式以補其不足,保護重要的資料。
RAID1
最佳的安全性,100%不停機,即使有一個磁碟損壞也能照常作業而不影響 其效能(對能並行存取的系統稍有影響),因為資料是作重複儲存。RAIDl的並行 讀取幾乎有RAID0的效能、因為可同時讀取相互映象的磁碟;寫入也只比RAID0略遜,因為同時寫入兩個磁碟並沒有增加多少工作。雖比RAID0要增加—倍的 磁碟做映象,但作為採用磁碟陣列的進入點,它是最便宜的一個方案,是新設磁 盤陳列的使用者之最佳選擇。
RAlD5
RAID5在不停機及容錯的表現都很好,但如有磁碟故障。對效能的影向較大, 大容量的快取記憶體有助於維持效能,但在0LTP的應用中,因為每—筆資料或記 錄(record)都很小,對磁碟的存取頻繁。故有—定程度的影響。某磁碟故障 時,讀取該磁碟的資料需把共享同一校驗值分段的所有資料及校驗值讀出來、再把故障磁碟的資料計算出來;寫入時,除了要重複讀取的程式外,還要再做校驗值的計算,然後寫入更新的資料及校驗值;等換上新的磁碟,系統要計算整個磁 盤陣列的資料以回覆故障磁碟的資料,時間要很長,如系統的工作負載很重的話, 有很多輸出/入的請求徵排隊等候時,會把系統的效能拉下來。僅如使用硬體磁 盤陣列的話,其件能就可以得到大幅度的改進,因為硬體磁碟陣列如Arena系列 本身有內建的CPU與個機系統並行運作。所有存取磁碟的輸出入工作都在磁碟陳列本身完成,不花費主機的時間,配合磁碟陳列的cache記憶體的使用,可以提高 系統的整體效能,而優越的SCSI控制更能增加資料的傳輸速率,即使枉磁碟故障 的情況下,主機系統的件能也不會有明顯的降低。RAID5要做的事情太多,所以 價格較貴。不適於小系統,但如果是大系統使用大的磁碟陣列的話,RAID5卻是 最便宜的方案。
總而言之,RAID0及RAIDl最適合PC伺服器及圖形工作站的使用者,提供 最佳的效能及最便宜的價格。以低成本符合市場的需求。RAID2及RAID3適用 於大檔案輸入輸出需求個頻繁的應用如影像處理及CAD/CAM等;而RAID5 則適用於銀行、金融、股市、資料庫等大列資料處理中心的0LTP應用;RAID4 與RAID5有相同的特件及用方式,但其較適用於大型檔案的讀取。
磁碟陣列的額外容錯功能
事實上容錯功能已成為磁碟陣列最受清睞的特性,為了加強容錯的功能以及使系統在磁碟故障的情況下能迅速的重建資料,以維持系統的效能,一般的磁碟 陣列系統都可使用熱備份(hot spare or hot standby drive)的功能,所謂熱備份是在建立(configure)磁碟陣列系統的時候,將其中一磁碟指定為後備磁碟, 此一磁碟在平常並不操作,僅若陣列中某一磁碟發生故障時,磁碟陣列即以後備 磁碟取代故障磁碟,並自動將故障磁碟的資料重建(rebuild)在後備磁碟之上, 因為反應快速,加上cache記憶體減少了磁碟的存取,所以資料重建很快即可完成,對 系統的效能影響不大。對丁要求不停機的大型資料處理中心或控制小心而言,熱 備份更是一項重要的功能,因為可避免晚間或無人守護時發生磁碟故障所引起的 種種不便。
備份盤又有熱備份與溫備份之分,熱備份稅和溫備份的不同在於熱備份盤 和陣列—起運轉,一有故障時馬上備援,而溫備份盤雖然帶電但並個運轉,需要 備援時才啟動。兩者分別在是否運轉及啟動的時間,僅溫備份並不運轉,理論上有較長的壽命。另一個額外的容錯功能是壞期區轉移(bad sector reassignment)。壞扇區是磁碟故障的主要原因,通常磁碟在讀寫時發牛壞扇區的 情況即表示此磁碟故障。不能冉作讀寫,甚至有很多系統會因為不能完成讀寫的 動作而當機,僅若因為某一扇區的損壞而使工作不能完成或要更換磁碟,則使得 系統效能大打折扣,而系統的維護成本也未免太高了,壞扇區轉移是當磁碟陣列 系統發現磁碟有壞扇區時,以另一空白的且無故障的扇區取代該扇區,以延長磁碟 的使用壽命,減少壞磁碟的發生率以及系統的維護成本。所以壞扇區轉移功能使 磁碟陣列具有更好的容錯性,同時使整個系統村最好的成本效益比。其它如可外 接電池備援磁碟陣列的快取記憶體,以避免突然斷電時資料尚未寫回磁碟而丟失; 或在RAIDl時作寫入一致性的檢查等,雖是小技術,但亦不可忽視。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-941446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 磁碟陣列(Disk array)原理陣列
- Array陣列陣列
- JavaScript Array 陣列JavaScript陣列
- JS中陣列Array的用法{轉載}JS陣列
- 磁碟陣列陣列
- JavaScript之陣列ArrayJavaScript陣列
- 磁碟陣列配置陣列
- 內建物件--Array(陣列)物件陣列
- day05陣列array陣列
- 圖解:什麼是旋轉陣列(Rotate Array)?圖解陣列
- Swift中實現Array陣列和NSArray陣列的相互轉換與遍歷Swift陣列
- Linux下RAID磁碟陣列的原理與搭建LinuxAI陣列
- RAID磁碟陣列AI陣列
- 磁碟陣列RAID陣列AI
- MegaCli管理磁碟陣列陣列
- 【轉】 js陣列 Array 交集 並集 差集 去重JS陣列
- TPU &“脈動陣列”(systolic array)陣列
- 瞭解下C# 陣列(Array)C#陣列
- JavaScript刪除array陣列元素JavaScript陣列
- Knockout Observable Array(監控陣列)陣列
- Array-like類陣列物件陣列物件
- [CareerCup] 17.6 Sort Array 排列陣列陣列
- 陣列指標:a pointer to an array,即指向陣列的指標陣列指標
- Java中 set,list,array(集合與陣列)、Map相互轉換Java陣列
- 磁碟陣列RAID概述陣列AI
- Go 基礎教程--6 陣列 ArrayGo陣列
- Go 基礎教程--5 陣列 ArrayGo陣列
- 雙陣列字典樹(Double Array Trie)陣列
- PHP陣列函式-array_mapPHP陣列函式
- javascript如何清空一個array陣列JavaScript陣列
- javascript型別系統——陣列arrayJavaScript型別陣列
- [筆記] 解碼Nginx:陣列(Array)筆記Nginx陣列
- Python Numpy的陣列array和矩陣matrixPython陣列矩陣
- Linux--PAID磁碟陣列與陣列卡LinuxAI陣列
- linux Shell 命令列-03-array Shell 陣列Linux命令列陣列
- Array · 刪除陣列中指定的元素陣列
- Array.apply生成陣列小結APP陣列
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列