基本概念RAID使用主要原因高可靠性、高資料轉送率。位級分散:在多個磁碟上分散每個位元組的各個位。塊級分散:一個檔案的塊可分散在多個磁碟上,對於n個磁碟,一個檔案的塊i可存在磁碟(i mod n)+1
RAID層級RAID 0:指塊層級分散的磁碟陣列,但沒有冗餘RAID 1:指磁碟鏡像,在0層級基礎上多了一組鏡像磁碟RAID 2:又稱為記憶體方式的差錯糾正代碼結構。記憶體系統一直實現基於奇偶位的錯誤偵測。記憶體系統的每個位元組都有一個相關奇偶位,以記錄位元組中位置為1的個數是偶數(parity=0)或奇數(parity=1)。如果位元組的1個位損壞(0變1或1變0),那麼位元組的奇偶也將改變。RAID 3:又稱位交織奇偶結構,它對2層級做了改進,與記憶體系統不同,磁碟控制卡能檢測到一個扇區是否正確讀取,這樣單個奇偶位就可用於差錯檢測和差錯糾正。方案如下:如果一個扇區損壞,那麼知道是哪個扇區,通過計算其他磁碟的扇區相應位的奇偶值可得出損壞位是1還是0。如果其他位的奇偶值等於儲存奇偶值,那麼缺少位就是0,否則為1。RAID 4:又稱塊交織奇偶結構,採用與層級0一樣的塊級分散,另外在一獨立磁碟上儲存其他N個磁碟相應的塊奇偶塊RAID 5:又稱塊交織分布奇偶結構,不同於層級4,它將資料和奇偶分布在所有N+1塊磁碟上,而不是將資料存放在N塊磁碟上而奇偶存放在單個磁碟上。對於每一塊,一個磁碟儲存奇偶,而其他存放資料。例如對於5個磁碟陣列,第n塊的奇偶儲存在磁碟(n mod 5)+1,其他4個磁碟第n塊儲存該奇偶塊對應的真正的資料。RAID 6:又稱P+Q冗餘方案,與層級5相似,但是儲存了額外冗餘的資訊以防止多個磁碟出錯。它不是使用奇偶檢驗,而是使用差錯糾正碼RAID 0+1:指的是0層級和1層級組合,先0層級再1層級RAID 1+0:指的是1層級和0層級組合,先1層級再0層級
RAID層級選擇RAID層級0應用於資料損失並不關鍵的高效能應用RAID層級1應用於需要高可靠性和快速回複應用RAID層級5應用於儲存大量資料RAID 層級0+1/1+0 應用於效能和可靠性都很重要應用
軟體和硬體磁碟陣列區別硬體磁碟陣列是透過磁碟陣列卡來達成數組的目的。磁碟陣列卡上面有一塊專門的晶片在處理RAID的任務,因此效能方面會比較好。軟體磁碟陣列是透過軟體來模擬數組的任務,因此會損耗較多的系統資源。
軟體磁碟陣列應用注意:這裡使用linux作業系統提供軟體磁碟陣列軟體——mdadm軟體硬體磁碟陣列裝置檔案名稱為/dev/sd[a-p],軟體磁碟陣列裝置檔案名稱/dev/md[0-N]mdadm [參數]選項與參數:--create:建立RAID選項--auto=yes:決定建立後面接軟體磁碟陣列裝置即/dev/md0--raid-devices=數字:使用幾個磁碟作為磁碟陣列裝置--spare-devices=數字:使用幾個磁碟作為備用裝置--level=數字:設定這組磁碟陣列的等級,一般建議用0,1,5--detail 後接磁碟陣列裝置名稱:輸出磁碟陣列詳細資料--manage:管理RAID選項--add:將後面的裝置加入到md中--remove:將後面的裝置從md移除--fail:將後面的裝置設定為出錯狀態RAID5環境: 每個磁碟大小為5G 利用3個磁碟組成RAID5 利用2個磁碟設定為spare disk 將此RAID5掛載到/mnt/raid目錄下建立磁碟裝置[root@localhost ~]# fdisk /dev/sdf (磁碟裝置名稱)Command (m for help): n省去中間內容,詳細見fdisk用法Command (m for help): w用mdadm建立RAID[root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=3 --spare-devices=2 /dev/sd{b,c,d,e,f}查看RAID資訊[root@localhost ~]# mdadm --detail /dev/md0 (建raid需要一段時間哦)省略中間內容 State : clean Active Devices : 3Working Devices : 5 Failed Devices : 0 Spare Devices : 2查看RAID狀態[root@localhost ~]# cat /proc/mdstatPersonalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd[2] sdf[3](S) sde[4](S) sdc[1] sdb[0] 10485632 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>第二行:指出md0為raid5,而且使用sdb,sdc,sdbd等三顆磁碟裝置。每個裝置後面的中括弧[]內的數字為磁碟在raid中的順序,sdf,sde後面括弧中的S代表spare第三行:此磁碟陣列擁有10485632個block(每個block單位為1k),所以總量為10G,(只有用2個磁碟,還有有一個磁碟作為奇偶檢驗使用)使用RAID等級5,寫入磁碟小區塊大小為64k,使用algorithm 2磁碟陣列演算法,[m/n]代表此數組需要m個裝置,且n個裝置正常運行,後面的[uuu]代表3個所需要的裝置(就是[m/n]裡面的m)的啟動情況,U代表正常,若為_則代表不正常格式化與掛載使用RAID[root@localhost ~]# mkfs -t ext3 /dev/md0 格式化[root@localhost ~]# mkdir /mnt/raid [root@localhost ~]# mount /dev/md0 /mnt/raid 掛載開機自動啟動RAID並自動掛載[root@localhost ~]# mdadm –detail /dev/md0|grep –i uuid顯示UUID資訊[root@localhost ~]# vim /etc/mdadm.conf 添加如下內容ARRAY /dev/md0 UUID=換成相應的標識號[root@localhost ~]#vim /etc/fstab 添加如下內容/dev/md0 /mnt/raid ext3 default 1 2關閉[root@localhost ~]# mdadm --stop /dev/md0類比磁碟出錯[root@localhost raid]# mdadm --manage /dev/md0 --fail /dev/sdb