2009年9月11日 星期五

mdadm -- 設定RAID


mdadm7種模式

    * Assemble:加入一個以前定義的陣列
    * Build:創建一個沒有超級塊的陣列
    * Create:創建一個新的陣列,每個設備具有超級塊
    * Manage: 管理陣列(如添加和刪除)
    * Misc:允許單獨對陣列中的某個設備進行操作(如停止陣列)
    * Follow or Monitor:監控RAID的狀態
    * Grow:改變RAID的容量或陣列中的設備數目




建立 RAID 0裝置
    首先編輯 /etc/mdadm.conf
    /etc/mdadm.conf中最後面增加以下兩行
    DEVICE /dev/sd[ab]1
    ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1
    接著輸入
    mdadm -C /dev/md0 --level=raid0 --raid-devices=2 /dev/sda1 /dev/sdb1
    Continue creating array? yes
    mdadm: array /dev/md0 started.
    淡藍色字為系統顯示訊息

    增加硬碟"sdc1"進入陣列中
    mdadm --add /dev/md0 dev/sdc1  
    或是
    
    mdadm –manage /dev/md0 –add /dev/sdc1   
    

    新建 RAID 裝置的另一種寫法
    mdadm –create /dev/md0 –chunk=32 –level=0 –raid-devices=4 /dev/sd[ab]1 
    

    rebuild 一個 RAID
    mdadm –build /dev/md0 –chunk=32 –level=0 –raid-devices=4 /dev/hd[ab]1      
    
    chunk-size是指寫進一個partition的大小,
    例如RAID 0中把一個file同時寫進兩個或以上partition時,
    會把file分成多大寫進其中一個partition
    (系統記錄在/proc/mdstat) 
    

    檢視陣列細資訊
    mdadm --detail /dev/md1

    用mdadm -Ds來得到mdadm.conf文件需要的信息[1]
    mdadm -Ds

    過命令生成這個配置文件 mdadm.conf
    mdadm --detail --scan > /etc/mdadm.conf
    用此方法生成的內容並不符合所規定的格式,須手動更正

    檢視陣列運作情形
    cat /proc/mdadstat
      
    當開機找不到RAID時
    sdb1為原本陣列中任一磁區
    mdadm --examine /dev/sdb1        
    
    系統會列出"sdb1"所加入的RAID 資訊
    包括"Version"、"UUID"、"Raid Level"、"Raid Devices" 
    
    在 /etc/mdadm/mdadm.conf 中, 加上 RAID 的設定如下: 
    ARRAY /dev/md0 level=raid0 num-devices=2 metadata=00.90 UUID=****    
    
    level= "Raid Level"
    num-devices= "Raid Devices"
    UUID= "UUID" 
    metadata= "Version"

    因應系統開啟時可能會找不到RAID,而沒有自動啟動
    mdadm --detail -s 
    mdadm: metadata format 00.90 unknown, ignored.
    ARRAY /dev/md0 level=raid0 num-devices=2metadata=>00.90UUID=***   
    
    將此系統訊息備份起來 

    清除已經建立的Raid記錄資料,重新開始
    mdadm -C /dev/md0 -l5 -n3 /dev/sd{a,b,c}1 --assume-clean
    注意,如果沒有使用--assume-clean系統建立陣列後,會自動重建原有的內容!若要全新來過,一定要加此指令!

    解除RAID裝置
    mdadm -S /dev/md0

    重新啟用Raid裝置
    mdadm -A /dev/md0 /dev/sd[ab]1

    使用配置檔中的設定啟動Raid
    mdadm -As /dev/md0

    做RAID "1+0" 的啟動
    mdadm -As /dev/md0
    mdadm -As /dev/md1
    mdadm -A /dev/md2 /dev/md{0,1}

    建立RAID 1
    mdadm -Cv --level=1 /dev/md0 -n 2 /dev/hdc8 /dev/hdc9 -x1 /dev/hdc10
    -x:指定備用的硬碟,當其中一個毀損時會自動備援 
    

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

    更改磁碟陣列編號
    mdadm -S /dev/md0
    mdadm -A -U super-minor -m 6 /dev/md1

    自動偵測所有磁碟陣列
    mdadm -Es > /tmp/mdtmp
    mdadm -Asc /tmp/mdtmp
    rm -f /tmp/mdtmp

    標記/dev/sda1損壞
    mdadm /dev/md0 -f /dev/sda1
    測試/dev/hdc9壞掉時,將/dev/hdc9標記為已損壞的設備

    移除損壞的設備
    mdadm /dev/md0 --remove /dev/sda1

    查看當前陣列狀態[1]
    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個。

    清除磁碟陣列資料
    mdadm --zero-superblock /dev/sda1

    監控RAID
    mdadm --monitor --mail=eric4ever@localhost --delay=300 /dev/md0
    或是 
    nohup mdadm --monitor --mail=eric4ever@localhost --delay=300 /dev/md0 &


    參考網站
    [1][茫茫網海中的冷日,使用 mdadm 建立 RAID]
    [2][Tommy碎碎念]
    [3][鳥哥的Linux私房菜,Quota, RAID, LVM] 

    0 意見:

    張貼留言

    I'm Bboy

    我不悠閒,我趕著要畢業

      © Blogger template 'Darken' by Ourblogtemplates.com 2008

    Back to TOP