熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

磁盤陣列(Disk Array)原理

2022-06-13   來源: Oracle 

  為什麼需要磁盤陣列?
  
  如何增加磁盤的存取(access)速度如何防止數據因磁盤的故障而失落及如何有效的利用磁盤空間一直是電腦專業人員和用戶的困擾;而大容量磁盤的價格非常昂貴對用戶形成很大的負擔磁盤陣列技術的產生一舉解決了這些問題
  
  過去十年來CPU的處理速度增加了五十倍有多內存(memory)的存取速度亦大幅增加而數據儲存裝置主要是磁盤(hard disk)的存取速度只增加了三四倍形成電腦系統的瓶頸拉低了電腦系統的整體性能(throughput)若不能有效的提升磁盤的存取速度CPU內存及磁盤間的不平衡將使CPU及內存的改進形成浪費
  
  目前改進磁盤存取速度的的方式主要有兩種一是磁盤快取控制(disk cache controller)它將從磁盤讀取的數據存在快取內存(cache memory)中以減少磁盤存取的次數數據的讀寫都在快取內存中進行大幅增加存取的速度如要讀取的數據不在快取內存中或要寫數據到磁盤時才做磁盤的存取動作這種方式在單工環境(singletasking envioronment)如DOS之下對大量數據的存取有很好的性能(量小且頻繁的存取則不然)但在多工(multitasking)環境之下(因為要不停的作數據交換(swapping)的動作)或數據庫(database)的存取(因為每一記錄都很小)就不能顯示其性能這種方式沒有任何安全保障
  
  其二是使用磁盤陣列的技術磁盤陣列是把多個磁盤組成一個陣列當作單一磁盤使用它將數據以分段(striping)的方式儲存在不同的磁盤中存取數據時陣列中的相關磁盤一起動作大幅減低數據的存取時間同時有更佳的空間利用率磁盤陣列所利用的不同的技術稱為RAID level不同的level針對不同的系統及應用以解決數據安全的問題
  
  一般高性能的磁盤陣列都是以硬件的形式來達成進一步的把磁盤快取控制及磁盤陣列結合在一個控制器(RAID controler)或控制卡上針對不同的用戶解決人們對磁盤輸出入系統的四大要求:
  ()增加存取速度
  ()容錯(fault tolerance)即安全性
  ()有效的利用磁盤空間;
  ()盡量的平衡CPU內存及磁盤的性能差異提高電腦的整體工作性能
  
  磁盤陣列原理
  
  磁盤陣列中針對不同的應用使用的不同技術稱為RAID levelRAID是Redundent Array of Inexpensive Disks的縮寫而每一level代表一種技術目前業界公認的標准是RAID ~RAID 這個level並不代表技術的高低level 並不高於level level 也不低過level 至於要選擇那一種RAID level的產品純視用戶的操作環境(operating environment)及應用(application)而定與level的高低沒有必然的關系RAID 及RAID 適用於PC及PC相關的系統如小型的網絡服務器(network server)及需要高磁盤容量與快速磁盤存取的工作站等因為比較便宜但因一般人對磁盤陣列不了解沒有看到磁盤陣列對他們價值市場尚未打開;RAID 及RAID 適用於大型電腦及影像CAD/CAM等處理;RAID 多用於OLTP因有金融機構及大型數據處理中心的迫切需要故使用較多而較有名氣但也因此形成很多人對磁盤陣列的誤解以為磁盤陣列非要RAID 不可;RAID 較少使用因為兩者有其共同之處而RAID 有其先天的限制其他如RAID RAID 乃至RAID 都是廠商各做各的並無一致的標准在此不作說明介紹各個RAID level之前先看看形成磁盤陣列的兩個基本技術:
  
  磁盤延伸(Disk Spanning):
  
  譯為磁盤延伸能確切的表示disk spanning這種技術的含義如下圖所示OAraid 磁盤陣列控制器聯接了四個磁盤:
  
  磁盤 磁盤 磁盤 磁盤
  
  這四個磁盤形成一個陣列(array)而磁盤陣列的控制器(RAID controller)是將此四個磁盤視為單一的磁盤如DOS環境下的C:盤這是disk spanning的意義因為把小容量的磁盤延伸為大容量的單一磁盤用戶不必規劃數據在各磁盤的分布而且提高了磁盤空間的使用率OAraid的SCSI磁盤陣列更可連接幾十個磁盤形成數十GB到數百GB的陣列使磁盤容量幾乎可作無限的延伸;而各個磁盤一起作取存的動作比單一磁盤更為快捷很明顯的有此陣列的形成而產生RAID的各種技術我們也可從上圖看出inexpensive(便宜)的意義因為四個MBbytes的磁盤比一個GBytes的磁盤要便宜尤其以前大磁盤的價格非常昴貴但在磁盤越來越便宜的今天inexpensive已非磁盤陣列的重點雖然對於需要大磁盤容量的系統仍是考慮的要點
  
  磁盤或數據分段(Disk Striping or Data Striping):
  
  磁盤
  AA
  BB
  CC
  DD
  
  磁盤
  AA
  BB
  CC
  DC
  
  磁盤
  AA
  BB
  CC
  DD
  
  磁盤
  AA
  BB
  CC
  DD
  
  因為磁盤陣列是將同一陣列的多個磁盤視為單一的虛擬磁盤(virtual disk)所以其數據是以分段(block or segment)的方式順序存放在磁盤陣列中如下圖:
  
  數據按需要分段從第一個磁盤開始放放到最後一個磁盤再回到第一個磁盤放起直到數據分布完畢至於分段的大小視系統而定有的系統或以KB最有效率或以KB或以KB甚至是MB或MB的但除非數據小於一個扇區(sectorbytes)否則其分段應是byte的倍數因為磁盤的讀寫是以一個扇區為單位若數據小於bytes系統讀取該扇區後還要做組合或分組(視讀或寫而定)的動作浪費時間從上圖我們可以看出數據以分段於在不同的磁盤整個陣列的各個磁盤可同時作讀寫故數據分段使數據的存取有最好的效率理論上本來讀一個包含四個分段的數據所需要的時間約=(磁盤的access time+數據的tranfer time)X現在只要一次就可以完成
  
  若以N表示磁盤的數目R表示讀取W表示寫入S表示可使用空間則數據分段的性能為:
  R:N(可同時讀取所有磁盤)
  W:N(可同時寫入所有磁盤)
  S:N(可利用所有的磁盤並有最佳的使用率)
  
  Disk striping也稱為RAID 很多人以為RAID 沒有甚麼其實這是非常錯誤的觀念因為RAID 使磁盤的輸出入有最高的效率而磁盤陣列有更好效率的原因除數據分段外它可以同時執行多個輸出入的要求因為陣列中的每一個磁盤都能獨立動作分段放在不同的磁盤不同的磁盤可同時作讀寫而且能在快取內存及磁盤作並行存取(parallel access)的動作但只有硬件的磁盤陣列才有此性能表現
  
  從上面兩點我們可以看出disk spanning定義了RAID的基本形式提供了一個便宜靈活高性能的系統結構而disk striping解決了數據的存取效率和磁盤的利用率問題RAID 至RAID 是在此基礎上提供磁盤安全的方案
  
  RAID
  
  RAID 是使用磁盤鏡像(disk mirroring)的技術磁盤鏡像應用在RAID 之前就在很多系統中使用它的方式是在工作磁盤(working disk)之外再加一額外的備份磁盤(backup disk)兩個磁盤所儲存的數據完全一樣數據寫入工作磁盤的同時亦寫入備份磁盤磁盤鏡像不見得就是RAID 如Novell Netware亦有提供磁盤鏡像的功能但並不表示Netware有了RAID 的功能一般磁盤鏡像和RAID 有二點最大的不同:
  
  RAID 無工作磁盤和備份磁盤之分多個磁盤可同時動作而有重疊(overlaping)讀取的功能甚至不同的鏡像磁盤可同時作寫入的動作這是一種最佳化的方式稱為負載平衡(loadbalance)例如有多個用戶在同一時間要讀取數據系統能同時驅動互相鏡像的磁盤同時讀取數據以減輕系統的負載黾覫/O的性能
  
  RAID 的磁盤是以磁盤延伸的方式形成陣列而數據是以數據分段的方式作儲存因而在讀取時它幾乎和RAID 有同樣的性能從RAID的結構就可以很清楚的看出RAID 和一般磁盤鏡像的不同
  
  磁盤
  A
  A
  A
  B
  
  磁盤
  A
  A
  B
  B
  
  磁盤
  A
  A
  A
  B
  
  磁盤
  A
  A
  B
  B
  
  下圖為RAID 每一筆數據都儲存兩份:
  從上圖可以看出:
  R:N(可同時讀取所有磁盤)
  W:N/(同時寫入磁盤數)
  S:N/(利用率)
  
  讀取數據時可用到所有的磁盤充分發揮數據分段的優點;寫入數據時因為有備份所以要寫入兩個磁盤其效率是N/磁盤空間的使用率也只有全部磁盤的一半
  
  很多人以為RAID 要加一個額外的磁盤形成浪費而不看好RAID 事實上磁盤越來越便宜並不見得造成負擔況且RAID 有最好的容錯(fault tolerence)能力其效率也是除RAID 之外最好的我們可視應用的不同在同一磁盤陣列中使用不同的RAID level如華藝科技公司的OAraid系列都可同一磁盤陣列中定義八個邏輯磁盤(logic disk)分別使用不同的RAID level分為C:D:及E:三個邏輯磁盤(或LUNLUNLUN)
  
  RAID 完全做到了容錯包括不停機(nonstop)當某一磁盤發生故障可將此磁盤拆下來而不影向其他磁盤的操作;待新的磁盤換上去之後系統即時做鏡像將數據重新復上去RAID 在容錯及存取的性能上是所有RAID level之冠
  
  在磁盤陣列的技術上從RAID 到RAID 不停機的意思表示在工作時如發生磁盤故障系統能持續工作而不停頓仍然可作磁盤的存取正常的讀寫數據;而容錯則表示即使磁盤故障數據仍能保持完整可讓系統存取到正確的數據而SCSI的磁盤陣列更可在工作中抽換磁盤並可自動重建故障磁盤的數據磁盤陣列之所以能做到容錯及不停機是因為它有冗余的磁盤空間可資利用這也就是Redundant的意義
  
  RAID

From:http://tw.wingwit.com/Article/program/Oracle/201311/16968.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.