mdadm管理軟體RAID陣列

來源:互聯網
上載者:User

mdadm程式是一個獨立的程式,能完成所有的軟體RAID管理功能,主要有7種使用模式:
模式名字               主要功能
Create  使用閒置裝置建立一個新的陣列,每個裝置具有中繼資料塊。
Assemble  將原來屬於一個陣列的每個塊裝置群組裝為陣列。
Build  建立或組裝不需要中繼資料的陣列,每個裝置沒有中繼資料塊
Manage 管理已經存放裝置陣列的裝置,比如增加熱備磁碟或者設定某個磁碟失效,然後從陣列中刪除這個磁碟。
Misc 報告或者修改陣列中相關裝置的資訊,比如查詢陣列或者裝置的狀態資訊
Grow 改變陣列中每個裝置被使用的容量或陣列中的裝置的數目
Monitor  監控一個或多個陣列,上報指定的事件。

 

 

 

為磁碟劃分分區
    如果MD驅動被編譯到核心中,當核心調用執行MD驅動時會自動尋找分區為FD(Linux raid autodetect)格式的磁碟。所以一般會使用fdisk工具將HD磁碟或者SD磁碟分割,再設定FD的磁碟。
    如果MD驅動是模組形式載入,需要在系統運行時由使用者層指令碼控制RAID陣列啟動運行。如系統中在/etc/rc.d/rc.sysinit檔案中有啟動 RAID陣列的指令,若RAID的設定檔mdadm.conf存在,則調用mdadm檢查設定檔時的先項,然後啟動RAID陣列。

建立新的陣列
    mdadm使用--create(或其縮寫-C)參數來建立新的陣列,並且將一些重要陣列的標識資訊作為中繼資料可以寫在每一個底層裝置的指定區間。
    --level(或者其縮寫-l)表示陣列的RAID層級,--chunk(或者其縮寫-c)表示每個條帶單元的大小,以KB為單位,預設為64KB,條帶單元的大小配置對不同負載下的陣列讀寫效能有很大影響。--raid-devices(或其縮寫-n)表示陣列中活躍的裝置個數,而--spare-devices(或其縮寫-x)表示陣列中熱備盤的個數,一旦陣列中的某個磁碟失效,MD核心驅動程式自動用將熱備磁碟加入到陣列,然後重構丟失磁碟上的資料到熱備磁碟上。

 

 

 

建立一個RAID0裝置
mdadm –-create /dev/md0 –-level=0 –-chunk=32 –-raid-devices=3 /dev/sd[i-k]1

 

 

建立一個RAID1裝置
mdadm –C /dev/md0 –l1 –c128 –n2 –x1 /dev/sd[i-k]1

建立一個RAID5裝置:
mdadm –C /dev/md0 –l5 –n5 /dev/sd[c-g]1 –x1 /dev/sdb

建立一個RAID10裝置
mdadm –C /dev/md0 –l10 –n6 /dev/sd[b-g] –x1 /dev/sdh1

建立一個RAID0+1裝置
mdadm –C /dev/md0 –l1 –n2 /dev/sdb1 /dev/sdc1
mdadm –C /dev/md1 –l1 –n2 /dev/sde1 /dev/sdf1
mdadm –C /dev/md2 –l1 –n2 /dev/sde1 /dev/sdg1
mdadm –C /dev/md3 –l0 –n3 /dev/md0 /dev/md1 /dev/md2

 

    當 RAID1/5/10等建立成功後,需要計算每個條帶的校正和資訊並寫入到相應磁碟上,所以RAID陣列有一個冗餘組資料同步的初始化過程(resync)。但是MD裝置只是建立成功後即可以外被上層主主應用讀寫使用,當然由於上層資料讀寫降低資料同步的效能。初始化的時間長短和磁碟陣列自身效能以及讀寫的應用負載相關,使用cat /proc/mdstat資訊查詢RAID陣列當前重構的速度和預期的完成時間。
    如果一個塊裝置已經正在被其他的MD裝置或者檔案系統使用,則不能用來建立新的MD裝置。會出現以下這樣情況
mdadm –C /dev/md1 –l0 –n2 /dev/sdh1 /dev/sdi1
mdadm:Cannot open /dev/sdh:Device or resource busy
mdadm:create aborted

build模式可以用來建立沒有中繼資料的RAID0/1裝置,不能建立RAID4/5/6/10等帶有冗餘層級的MD裝置
mdadm –BR /dev/md0 –l0 –n6 /dev/sd[b-g]1
mdamd –BR /dev/md0 –l1 –n2 /dev/sd[b-c]1

使用陣列和停止正在啟動並執行陣列
MD裝置可以像普通裝置那樣直接讀寫,也可以做檔案系統格式化。
#mkfs.ext3 /dev/md0
#mkdir –p /mnt/md-test   #mount /dev/md0  /mnt/md-test

當陣列沒有檔案系統或者其他儲存應用以及進階裝置使用的話,可以使用-stop(或者其縮寫-S)停止陣列;如果命令返回裝置或者資源忙類型的錯誤,說明/dev/md0正在被上層應用使用,暫時不能停止,必有要首先停止上層的應用,這樣也能陣列上資料的一致性。
#umount /dev/md0

#mdadm –stop /dev/md0

組裝曾建立過的陣列
    模式--assemble或者其縮寫(-A)主要是檢查底層裝置的中繼資料資訊,然後再組裝為活躍的陣列。如果我們已經知道陣列由那些裝置群組成,可以指定使用那些裝置來啟動陣列。
mdadm –A /dev/md0 /dev/sd[d-h]1
    如果有設定檔(/etc/mdadm.conf)可使用命令mdadm –As /dev/md0

    mdadm先檢查mdadm.conf中的DEVICE的資訊,然後從每個裝置上讀取中繼資料資訊,並檢查是否和ARRAY資訊一致,如果資訊一致則啟動資訊。如果沒有配置/etc/mdadm.conf檔案,而且又不知道陣列由那些磁碟組成,則可以使用命令--examine(或者其縮寫 -E)來檢測當前的塊裝置上是否有陣列的中繼資料資訊。

設定檔
    /etc/mdadm.conf作為預設的設定檔,主要作用是方便跟蹤RAID的配置,尤其是可以配置監視和事件上報選項。Assemble命令也可以使用--config(或者其縮寫-c)來指定設定檔。我們通常可以如下命令來建立設定檔。
#echo DEVICE /dev/sd[b-h]1 /dev/sd[i-k]1 >/etc/mdadm.conf
#mdadm –Ds >>/etc/mdadm.conf
#cat /etc/mdadm.conf
使用設定檔啟動陣列時,mdadm會查詢設定檔中的裝置和陣列內容,然後啟動運行所有能運行RAID陣列。如果指定陣列的裝置名稱字,則只啟動對應的陣列。

 

查詢陣列的狀態
我們可以通過 cat /proc/mdstat資訊查看所有啟動並執行RAID陣列的狀態,我們也可以通過mdadm命令查看指定陣列的簡要資訊(使用--query或者其縮寫-Q)和詳細資料(使用--detail或者其縮寫-D)詳細資料包括RAID的版本、建立的時間、RAID層級、陣列容量、可用空間、資料數量、超級塊狀態、更新時間、UUID資訊、各個裝置的狀態、RAID演算法層級類型和布局方式以及塊大小等資訊。裝置狀態資訊分為 active,sync,spare,faulty,rebuilding,removing等等。
#mdadm –-query /dev/md0

管理陣列
mdadm可以在Manage模式下,對運行中的陣列進行添加及刪除磁碟。常用於標識failed磁碟,增加spare(熱備)磁碟,以及從陣列中移走已經失效的磁碟等等。使用—faill(或者其縮寫-f) 指定磁碟損壞。
#mdadm /dev/md0 –fail /dev/sdb1
當磁碟已經損壞時,使用 –removie(或者其縮寫 –f)參數將這個磁碟從磁碟陣列中移走;但如果裝置還正在被陣列使用,則不能從陣列中移走。
#mdadm /dev/md0 –remove /dev/sdb1
如果陣列帶有spare磁碟,那麼自動將損壞磁碟上的資料重構到新的spare磁碟上;如果陣列沒有熱備磁碟,可以使用—add(或者其縮寫-a)參數增加熱備磁碟
Mdadm /dev/md0 –add  /dev/sdh

擴充陣列
如果在建立陣列不想使用整個塊裝置,可以指定用於建立RAID陣列每個塊裝置使用的裝置大小
mdadm –CR /dev/md0 –l5 –n6 /dev/sd[b-g]1 x1 /dev/sdh –size=102400
然後在陣列需要擴充大小時,使用模式—grow(或者其縮寫-g)以及—size參數(或者其縮寫-z)在加上合適的大小數值就能分別擴充陣列所使用每個塊裝置的大小
Mdadm還提供增加或減少陣列中裝置個數的功能,使用模式--grow和--raid-disks(或者其縮寫-n)參數再加上合適的裝置個數。擴充後陣列中原來的熱備盤變為活躍磁碟,所以陣列的裝置個數增加,陣列的大小也相應增加。
#mdadm –grow /dev/md0 –raid-disks=7

 

RAID0
添加硬碟
RAID 裝置的成員是硬碟分區,需先對硬碟分區,分區不能在同一物理硬碟上
#fdisk /dev/sdb    n 建立主要磁碟分割,t 分區類型fd,w 寫儲存
#fdisk /dev/sdc
#mdadm –Cv /dev/md0 –l0 –n2 /dev/sdb1 /dev/sdc1
-C,--create 建立一個新的陣列 -v,verbose 顯示細節
/dev/md0 陣列裝置的名稱 -l,--level= 陣列層級,如0,1,4,5,6
-n,--raid-devices= 陣列活動數目
/dev/sd[bc]1 陣列包含的裝置列表
#more /proc/mdstat 查看陣列狀態
#mkfs.ext3 /dev/md0 建立檔案系統
#mount /dev/md0 /mnt/raid
讓系統自動掛載,修改/etc/fstab,添加 /dev/md0 /mnt/raid ext3 defaults 0 0

RAID5 故障類比
前面已建立了一個RAID5 裝置md0
#mdadm –Cv /dev/md0 –l5 –n3 –x1 –c128 /dev/sd[b,c,d,e]1
1.將/dev/sdb1 標記為已損壞的裝置
#mdadm /dev/md0 –f /dev/sdb1
這時陣列開始重構和恢複資料
查看損壞資訊 cat /proc/mdstat  F表示壞的
2.移除損壞的裝置
#mdadm /dev/md0 –r /dev/sdb1
3.將新裝置添加到陣列
注意,一:對硬碟正確分區,二:添加裝置名稱要與被移除的一致,如sdb1
#mdadm /dev/md0 –a /dev/sdb1
組建組態檔案/etc/mdadm.conf
格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md10 level=raid10 num-devices=4
UUID=12334343dkfj
其中UUID 資訊通過#mdadm –D /dev/md10 得到
#mdadm –Ds 掃描該檔案資訊

 

 

 

other:

1.虛擬機器上添加5塊新磁碟
2.fdisk /dev/sdb,添加三個1G的分區,類型設為fd(linux raid autodetect)
3.dd if=/dev/sdb of=/dev/sdx bs=1024 count=1(將sdb的分區表複製到其它磁碟上去)
fdisk /dev/sdx然後按w儲存(不然/dev/sdxx這些分區的裝置檔案不存在)
4.建立一個raid0
mdadm -C /dev/md0 -l0 -n2 /dev/sdb1 /dev/sdc1
禁用md0
mdadm -S /dev/md0
啟用md0
mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1
5.建立raid1
mdadm -C /dev/md1 -l1 -n2 /dev/sdb2 /dev/sdc2
cat /proc/mdstat
Personalities : [raid0] [raid1]
   md1 : active raid1 sdc2[1] sdb2[0]
        987904 blocks [2/2] [UU]
   md0 : active raid0 sdb1[0] sdc1[1]
        1975680 blocks 64k chunks
       unused devices: <none>
格式化掛載,在掛載了/dev/md1的情況下執行換盤操作
   mdadm /dev/md0 -f /dev/sdb2 (設定sdb2失效)
   mdadm /dev/md0 -r /dev/sdb2 (移除sdb2)
   mdadm /dev/md0 -a /dev/sdb3 (添加sdb3)
   cat /proc/mdstat
6.建立raid5
mdadm -C /dev/md5 -l5 -n3 /dev/sdd1 /dev/sde1 /dev/sdf1 -x1 /dev/sdc3
mdadm /dev/md5 -f /dev/sdd1
mdadm /dev/md5 -r /dev/sdd1
cat /proc/mdstat (sdc3自動加入到raid5)
mdadm /dev/md5 -a /dev/sdd1 (sdd1成為熱備盤)
7.儲存所有配置
echo DEVICE /dev/sd*[1-9] > /dev/mdadm.conf
mdadm -D -s >> /dev/mdadm.conf
mdadm 使用參考(轉)
mdadm是linux下用於管理軟體 raid 的工具
以下內容來自 manpage 頁:
基本文法 : mdadm [mode] [options]
[mode] 有7種:
Assemble:將以前定義的某個陣列加入當前在用陣列。
Build:Build a legacy array ,每個device 沒有 superblocks
Create:建立一個新的陣列,每個device 具有 superblocks
Manage: 管理陣列,比如 add 或 remove
Misc:允許單獨對陣列中的某個 device 做操作,比如抹去superblocks 或 終止在用的陣列。
Follow or Monitor:監控 raid 1,4,5,6 和 multipath 的狀態
Grow:改變raid 容量或 陣列中的 device 數目
可用的 [options]:
-A, --assemble:加入一個以前定義的陣列
-B, --build:Build a legacy array without superblocks.
-C, --create:建立一個新的陣列
-Q, --query:查看一個device,判斷它為一個 md device 或是 一個 md 陣列的一部分
-D, --detail:列印一個或多個 md device 的詳細資料
-E, --examine:列印 device 上的 md superblock 的內容
-F, --follow, --monitor:選擇 Monitor 模式
-G, --grow:改變在用陣列的大小或形態
-h, --help:協助資訊,用在以上選項後,則顯示該選項資訊
--help-options
-V, --version
-v, --verbose:顯示細節
-b, --brief:較少的細節。用於 --detail 和 --examine 選項
-f, --force
-c, --config= :指定設定檔,預設為 /etc/mdadm/mdadm.conf
-s, --scan:掃描設定檔或 /proc/mdstat以搜尋丟失的資訊。設定檔/etc/mdadm/mdadm.conf
create 或 build 使用的選項:
-c, --chunk=:Specify chunk size of kibibytes. 預設為 64.
--rounding=: Specify rounding factor for linear array (==chunk size)
-l, --level=:設定 raid level.
--create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build可用:linear, raid0, 0, stripe.
-p, --parity=:設定 raid5 的同位規則:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.預設為left-symmetric
--layout=:類似於--parity
-n, --raid-devices=:指定陣列中可用 device 數目,這個數目只能由 --grow 修改
-x, --spare-devices=:指定初始陣列的富餘device 數目
-z, --size=:組建RAID1/4/5/6後從每個device擷取的空間總數
--assume-clean:目前僅用於 --build 選項
-R, --run:陣列中的某一部分出現在其他陣列或檔案系統中時,mdadm會確認該陣列。此選項將不作確認。
-f, --force:通常mdadm不允許只用一個device 建立陣列,而且建立raid5時會使用一個device作為missing drive。此選項正相反。
-a, --auto{=no,yes,md,mdp,part,p}{NN}:

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/nhczp/archive/2009/05/26/4216692.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.