RAID
RAID提供幾個功能,提高效率、容錯,整核磁碟空間等等。
RAID模式
RAID-0
Striping Mode,等量模式。由至少兩個以上磁碟組成,總容量為組成的硬碟相加,假設我有兩顆80G硬碟,做RAID-0的話容量就變成160G了。當有資料要寫入時,會依其資料大小平均分給各個磁碟存入,藉以提升磁碟效能,所以組成的磁碟越多,效能就越好。而它的缺點就是缺乏容錯的功能,只要有一個磁碟壞了,整個RAID就掛了。
RAID-1
Mirroring Mode,鏡射模式。由兩個以上磁碟組成,此模式較浪費空間,總容量為 1/n(n為磁碟數量),假設我有兩顆80G硬碟,做RAID-1的話,容量還是80G。RAID-1做好的功能就是容錯,當有一顆硬碟故障,還有一顆硬碟可以繼續運作,只要不是兩顆硬碟一起故障的話。
RAID-5
結合0與1的優點,由至少三個磁碟組成。簡單說它與RAID-0相似,但它在寫入磁碟時會先算出每份資料的同位元檢查碼,當磁碟故障時就會藉由這個同位元檢查碼計算出故障的資料。由於它需要計算同位元檢查碼,這需要使用到CPU的效能因而會降低系統效能。
先介紹簡單的軟體RAID,這功能一樣是需要核心支援才能動作,
Linux的RAID
一般RAID分為兩種,Linux也是一樣,分別是:
Hardward RAID,硬體磁碟陣列。這種RAID會有專用的RAID控制卡來控制RAID,Linux只要能抓到控制卡就可以管理RAID。一般來說硬體磁碟陣列效能較好,相對也比較貴。
Software RAID,軟體磁碟陣列。這種RAID需要Linux的kernel支援,只要核心支援就可以直接使用。軟體的效能沒有硬體式的好,但相對就便宜,因為它是Linux本身就提供的功能。
RAID建立的三步驟(軟體)
產生單元
配置磁碟裝置
設定/etc/mdadm.conf
產生單元
Linux的磁碟陣列式由多個分割區組成,在分割磁碟時,須注意將System Id設為 "fd - Linux raid autodetect"
建立多重磁碟
做完磁碟分割後,在來就要建立多重磁碟,這個動作會用到mdadm這個指令:
mdadm RAID名稱 RAID等級 要用來建制RAID的裝置名稱
option
-a:yes 如果沒有在執行
-C:create
-l:level
-n:設備數量
mdadm -C /dev/rd1 -a yes -l 5 -n 2 /dev/sdb1 /dev/sdb2
以這個例子來看,使用-C 來建立一個RAID位置為 /dev/rd1,-a yes意思為如果沒有這個RAID的話在建立,-l 5 就是建立RAID-5,-n 2 由兩個分割區組成分別為 /dev/sdb1 /dev/sdb2
設定/etc/mdadm.conf
這是mdadm預設的設定檔,當系統啟動時,會根據這個設定檔來啟用多重磁碟,也會根據這個多重磁碟來啟動軟體磁碟陣列監控伺服器。這個設定檔其實可以省略,不過如果你想要開機時就啟動磁碟軟體,那就要設定這個檔案。
預設這個檔案也不存在,必須要自己新增,這個檔案的語法如下:
DEVICE devicename
ARRAY raiddevice devices
例如:
DEVICE /dev/sdb1 /dev/sdb2
ARRAY /dev/md0 devices=dev/sdb1,/dev/sdb2
檢視多重磁碟狀況
主要有兩個方法可以檢視目前多重磁碟的狀況:
/proc/mdstat 直接讀取這個檔案
[root@fedora8VM ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md2 : active raid1 sdb3[0] sdb2[1]
497856 blocks [2/2] [UU]
unused devices: <none>
mdadm --detail device 使用mdadm的--detail參數來達成:
[root@fedora8VM ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Sat Mar 14 09:03:05 2009
Raid Level : raid0
Array Size : 995776 (972.60 MiB 1019.67 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Sat Mar 14 09:03:05 2009
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
UUID : cb07d9a0:2d487fb0:dca26a00:0e7dddb5
Events : 0.1
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
線上新增/移除磁碟
這個功能只適用在有容錯的RAID上(RAID 1、5),在沒有在容錯的RAID上就沒辦法使用了。其實這個也可以看做是磁碟的故障處理,因為方法差不多。步驟如下:
1. 移除故障的磁碟
2. 安裝新的磁碟
其實非常的簡單,主要也是使用mdadm這個指令。
你可以先使用 mdadm --detail /dev/md2 最下面的狀態來看看是哪顆磁碟壞了,故障的磁碟會標示為 faulty
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 faulty /dev/sdb2
接著使用 mdadm /dev/md2 --remove /dev/sdb2 來移除壞掉的磁碟
在使用 mdadm /dev/md2 --add /dev/sdb3 來加入新的磁碟,這樣就完成了
啟用與停用多重磁碟
啟用
mdadm --assemble MD_DEVICE
停用
mdadm --stop MD_DEVICE
刪除多重磁碟
萬一不要RAID,或是建立裝置時有錯誤,可能需要刪除多重磁碟,步驟如下:
1. 停用多重磁碟,也就是 mdadm --stop MD_DEVICE
2. 使用 mdadm --zero-superblock DEVICE ,這個指令會將磁碟的superblock
留言列表