mdadm 用于建設(shè),管理和監(jiān)控RAID陣列
用法:
mdadm --create device options...
用未使用的設(shè)備,創(chuàng)建raid選項(xiàng),
mdadm --assemble device options...
合并先前創(chuàng)建的raid陣列。
mdadm --build device options...
創(chuàng)建或合并沒有元數(shù)據(jù)的一個(gè)raid。
mdadm --manage device options...
對(duì)現(xiàn)有陣列進(jìn)行更改
mdadm --misc options... devices
報(bào)告或修改各種MD相關(guān)設(shè)備的。
mdadm --grow options device
調(diào)整以激活的raid陣列
mdadm --incremental device
從一個(gè)raid中,添加/刪除設(shè)備
mdadm --monitor options...
監(jiān)視一個(gè)或多個(gè)raid陣列的變化
mdadm device options...
--manage的簡(jiǎn)寫
mdadm --create 主要參數(shù)
--auto=yes :決定建立后面接的軟體磁盤陣列設(shè)備,亦即/ dev/md0的,/ dev/md1上...
--raid-devices=N :使用幾個(gè)磁盤 (partition) 作為磁盤陣列的設(shè)備
--spare-devices=N :使用幾個(gè)磁盤作用磁盤陣列的備用設(shè)備
--level=[015] :設(shè)置磁盤陣列的等級(jí),常用0,1,5
mdadm --manage 主要參數(shù)
--add :會(huì)將后面的設(shè)備加入到這個(gè)MD中!
--remove :會(huì)將后面的設(shè)備由這個(gè)MD中移除
--fail :會(huì)將后面的設(shè)備設(shè)定成為出錯(cuò)的狀態(tài)
一、在linux系統(tǒng)中目前以MD(Multiple Devices)虛擬塊設(shè)備的方式實(shí)現(xiàn)軟件RAID,利用多個(gè)底層的塊設(shè)備虛擬出一個(gè)新的虛擬設(shè)備,并且利用條帶化(stripping)技術(shù)將數(shù)據(jù)塊均勻分布到多個(gè)磁盤上來提高虛擬設(shè)備的讀寫性能,利用不同的數(shù)據(jù)冗祭算法來保護(hù)用戶數(shù)據(jù)不會(huì)因?yàn)槟硞€(gè)塊設(shè)備的故障而完全丟失,而且還能在設(shè)備被替換后將丟失的數(shù)據(jù)恢復(fù)到新的設(shè)備上.
目前MD支持linear,multipath,raid0(stripping),raid1(mirror),raid4,raid5,raid6,raid10等不同的冗余級(jí)別和級(jí)成方式,當(dāng)然也能支持多個(gè)RAID陳列的層疊組成raid1 0,raid5 1等類型的陳列,
本文主要講解用戶層mdadm如何管理軟件RAID及使用中經(jīng)常遇到的問題及解決辦法.現(xiàn)流行的系統(tǒng)中一般已經(jīng)將MD驅(qū)動(dòng)模塊直接編譯到內(nèi)核中或編譯為可動(dòng)態(tài)加載的驅(qū)動(dòng)模塊,我們可以在機(jī)器啟動(dòng)后通過cat /proc/mdstat看內(nèi)核是否已經(jīng)加載MD驅(qū)動(dòng)或者cat /proc/devices是否有md塊設(shè)備,并且可以使用lsmod看MD是否可以模塊加載到系統(tǒng)中.
代碼如下:
[root@testggv ~]# cat /proc/mdstat
Personalities :
unused devices:
[root@testggv ~]#
[root@testggv ~]# cat /proc/devices | grep md
1 ramdisk
9 md
254 mdp
[root@testggv ~]#mdadm --version
[root@testggv ~]# mdadm --version
mdadm - v2.5.4 - 13 October 2006
[root@testggv ~]#
二、mdadm管理軟raid陳列
mdadm程序是一個(gè)獨(dú)立的程序,能完成所有的軟件raid管理功能,主要有7種使用模式:
Create
使用空閑的設(shè)備創(chuàng)建一個(gè)新的陣列,每個(gè)設(shè)備具有元數(shù)據(jù)塊
Assemble
將原來屬于一個(gè)陣列的每個(gè)塊設(shè)備組裝為陣列
Build
創(chuàng)建或組裝不需要元數(shù)據(jù)的陣列,每個(gè)設(shè)備沒有元數(shù)據(jù)塊
Manage
管理已經(jīng)存儲(chǔ)陣列中的設(shè)備,比如增加熱備磁盤或者設(shè)置某個(gè)磁盤失效,然后從陣列中刪除這個(gè)磁盤
Misc
報(bào)告或者修改陣列中相關(guān)設(shè)備的信息,比如查詢陣列或者設(shè)備的狀態(tài)信息
Grow
改變陣列中每個(gè)設(shè)備被使用的容量或陣列中的設(shè)備的數(shù)目
Monitor
監(jiān)控一個(gè)或多個(gè)陣列,上報(bào)指定的事件
如果MD驅(qū)動(dòng)被編譯到內(nèi)核中,當(dāng)內(nèi)核調(diào)用執(zhí)行MD驅(qū)動(dòng)時(shí),會(huì)自動(dòng)查找分區(qū)為FD(linux raid autodetect格式的磁盤。所以一般會(huì)使用fdisk工具將HD磁盤或者SD磁盤分區(qū),再設(shè)置為FD的磁盤。
代碼如下:
[root@testggv ~]# fdisk /dev/hdc
The number of cylinders for this disk is set to 25232.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-25232, default 1):
Using default value 1
Last cylinder or size or sizeM or sizeK (1-25232, default 25232):
Using default value 25232
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or
busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@testggv ~]#