2008年9月17日 星期三

mdadm -- Raid 架構管理套件

[ 使用mdadm 來架構管理raid ]

mdadm -Cv -l 1 /dev/md0 -n2 /dev/sda2 /dev/sdb
-C是指建立
-v是指察看過程
-l是指建立的屬於level linear、0、1或5
/dec/md0是指在linux中建立的裝置名稱為RAID 0
-n 2是指幾個RAID裝置屬於建立好的RAID 0

最後接著 要被"瑞"起來的磁碟區,

也可以這樣寫 /dev/sda[1,2] - 就是指 sda1 sda2 兩個

  •     Format

mkfs.ext3 /dev/md0 用mkfs.ext3 - .(點)後面指的是類型 格式化一下

  •     mount  

最後把md0 掛載到目錄 mount -t ext3 /dev/md0 /mnt/tmpmnt/

  •     其他用途

mdadm -D /dev/md0
查詢陣列資料

mdadm -S /dev/md0
解除/dev/md0 的raid

mdadm -A /dev/md0 /dev/sda2 /dev/sdb
把之前已經建立的陣列在掛回去
sda2 跟 sbd 兩個partion

****以下未實驗****
設定備援

mdadm -Cv --level=1 /dev/md0 -n 2 /dev/hdc8 /dev/hdc9 -x1 /dev/hdc10
(-x:指定備用的硬碟,當其中一個毀損時會自動備援)
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt/md0
# cp -a /bin /mnt/md0(copy /bin中的資料做測試,-R 可以讓複製過去的資料保有相同的資料權限)

測試/dev/hdc9壞掉與替換

# mdadm /dev/md0 -f /dev/hdc9 (測試/dev/hdc9壞掉時,將/dev/hdc9標記為已損壞的設備)
# mdadm -D /dev/md0 查閱raid目前狀況一


查看當前陣列狀態二..可以看到目前正在自動恢復資料,這是抓其他地方的資料來補充,並不是原來的raid1
=================
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[4](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/2] [_UU]
[=>...................] recovery = 8.9% (3358407/37734912) finish=1.6min speed=9382K/sec
unused devices:

因為有備份設備,所以當陣列中出現設備損壞時,陣列能夠在短時間內實現重構和
資料的恢復。從當前的狀態可以看出,陣列正在重構,且運行在降級模式,
sdb1[4]的後面已經標上了(F),活動設備數也降為2個。

經過幾分鍾後,再次查看當前陣列狀態。
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[0] sdc1[1] sdb1[3](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:

此時陣列重構已經完成,資料恢復完畢,原有的備份設備sde1成為了活動設備。

恢復
/dev/hdc9
=============
# mdadm /dev/md0 --remove /dev/hdc9 移除損壞的設備
# mdadm /dev/md0 --add /dev/hdc9 將新設備添加到陣列中
# mdadm --grow /dev/md-linear --add /dev/new-device 如果使用的是 linear raid

建立RAID 5
(建立流程,並參考RAID 0之說明)
=========================================
# mdadm -C -l 5 /dev/md0 -n 3 /dev/hdc[8,9,10] -x 1 /dev/hdc11
(可加入-c128的參數,代表chunk-size為128:可以增加raid的效能,由於是軟體陣列所以是使用系統主記憶體來進行 chunk,這個數值設大一點雖然對磁碟陣列效能有幫助,但卻會耗掉系統資源,建議使用預設值就好了)

****************

  •     mdadm.conf

/etc/mdadm.conf
檔中要包含兩種類型的行:
一種是以DEVICE開頭的行,它指明在陣列中的設備列表;
另一種是以ARRAY開頭的行,它詳細地說明了陣列的名稱、模式、陣列中活動設備的數目以及設備的UUID號。
格式如下:
DEVICE /dev/sda2 /dev/sdb
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=caf727cd:15bfd240:8df403aa:f5a6660a

UUID 要用mdadm -D 來查詢

之後就可以用
mdadm -As /dev/md0
來啟動 raid (啟動而已喔,還沒mount)

PS. 開機要直接用的化一定要有這個配置檔喔!!!


  •     意外

# mdadm -As /dev/md0
# mdadm -As /dev/md1
# mdadm -A /dev/md2 /dev/md[0,1]
這樣可以跑 Raid 1+0

如果要開機就可以跑raid 的話,要有這兩行
mdadm -As /dev/md0
mount /dev/md0 /mnt/tmpmnt

可以加在
/etc/fstab
最後一行加入
/dev/md0 /mnt/md0 ext2 default 0 0
第一欄 實際的 device 名稱。
第二欄 對應到的目錄結構(mount point)。
第三欄 該分割區的檔案系統ext、ext2、msdos、iso9660、nfs、swap。
第四欄 在 mount 時的參數。
第五欄 在使用 dump 時是否記錄,不需要則輸入0。
第六欄 決定在開機時執行 fsck 的先後順序。


/etc/rc.d/rc.sysinit
/etc/rc.d/rc.local
/etc/profile.d/
裡面加上下兩行
mdadm -As /dev/md0
mount /dev/md0 /dev/md0 掛載目錄

資料參考:http://ithelp.ithome.com.tw/question/10006536
by newswind38