mdadm使用詳解

PartI.RAID基礎(引用)
RAID是冗餘磁盤陣列(RedundantArrayofInexpensiveDisk)的簡稱。它是把多個磁盤組成一個陣列,當作單一磁盤使用。它將數據以分段(striping)的方式分散存儲在不同的磁盤中,通過多個磁盤的同時讀寫,來減少數據的存取時間,並且可以利用不同的技術實現數據的冗餘,即使有一個磁盤損壞,也可以從其他的磁盤中恢復所有的數據。簡單地說,其好處就是:安全性高、速度快、數據容量大。
磁盤陣列根據其使用的技術不同而劃分了等級,稱爲RAIDlevel,目前公認的標準是RAID0~RAID5。其中的level並不代表技術的高低,RAID5並不高於RAID4,RAID0並不低於RAID2,至於選擇哪一種RAID需視用戶的需求而定。下面分別對常用的RAID0、RAID1、RAID5進行簡單的介紹。

1.RAID0
特點:它是將多個磁盤並列起來,成爲一個大硬盤。在存取數據時,將數據按磁盤的個數來進行分段,然後同時將這些數據寫進這些盤中。在所有的級別中,RAID0的速度是最快的。但沒有數據冗餘,陣列中任何一個磁盤壞掉,意味着所有數據丟失。

磁盤利用數:n(假設有n個磁盤)。
配置條件:最低兩塊磁盤,且分區大小盡量相同。
應用領域:對高磁盤容量及高速磁盤存取有特殊需求,而又不計較其高故障率的工作。當然,如果你正在使用集羣,RAID0無疑是提高磁盤I/O性能的最好方法,因爲在這種情況下,你就不用擔心冗餘的問題了。

2.RAID1
特點:使用磁盤鏡像(diskmirroring)的技術,在一個磁盤上存放數據的同時也在另一個磁盤上寫一樣的數據。因爲有了備份磁盤,所以RAID1的數據安全性在所有的RAID級別上來說是最好的。儘管其寫入數據的速度比較慢,但因其數據是以分段的方式作儲存,因而在讀取時,它幾乎和RAID0有同樣的性能。

磁盤利用數:n/2。
配置條件:最低兩塊磁盤,且分區大小盡量相同。
應用領域:數據庫、金融系統等一些對數據有着高可靠性要求的領域。再者就是系統中寫數據量比較少,而讀數據量又比較多的情況下可以採用這一模式。

3.RAID5
特點:以數據的校驗位來保證數據的安全,但它不是以單獨硬盤來存放數據的校驗位,而是將數據段的校驗位交互存放於各個磁盤上。這樣,任何一個磁盤損壞,都可以根據其他磁盤上的校驗位來重建損壞的數據。並行讀寫數據,性能也很高。


磁盤利用數:n-1。
配置條件:最低三塊硬盤,且分區大小盡量相同。
應用領域:適合於事務處理環境,例如民航售票處、銷售系統等。




PartII.mdadm創建RAID5

RAID級別:5
設備列表:
Host:/dev/sda
RAIDDevices:/dev/sdb/dev/sdc/dev/sdd
SpareDevices:/dev/sde
設備準備:
直接使用硬盤硬件設備,不需要分區。
如果要具體使用哪個硬盤的分區做RAID,才需要fdisk特定的分區,並給它指定分區類型:fd。


1>創建raid:
mdadm的每個命令都有其簡寫形式,當然也可以使用shell的正規表達式:
#mdadm--create--verbose/dev/md0--level=raid5--raid-devices=3/dev/sdb/dev/sdc/dev/sdd--spare-devices=1/dev/sde
#mdadm-Cv/dev/md0-l5-n3/dev/sdb/dev/sdc/dev/sdd-x1/dev/sde
#mdadm-Cv/dev/md00l5-n3/dev/sd[bcd]-x1/dev/sde


2>格式化raid設備:
#mkfs-text3/dev/md0


3>掛載raid設備:
#mkdir/mnt/raid
#mount-text3/dev/md0/mnt/raid


4>查看raid設備狀態:
#mdadm-D/dev/md0
/dev/md0:
Version:00.90.03
CreationTime:TueNov1310:35:352007
RaidLevel:raid5
ArraySize:2097024(2048.22MiB2147.35MB)
DeviceSize:1048512(1024.11MiB1073.68MB)
RaidDevices:3
TotalDevices:4
PreferredMinor:0
Persistence:Superblockispersistent

UpdateTime:TueNov1310:42:342007
State:clean
ActiveDevices:3
WorkingDevices:4
FailedDevices:0
SpareDevices:1

Layout:left-symmetric
ChunkSize:64K

UUID:b5e3276f:ab97e843:e601b1a4:46720384
Events:0.2

NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
28482activesync/dev/sdd

3864-spare/dev/sde

#cat/proc/mdstat
Personalities:[raid6][raid5][raid4]
md0:activeraid5sdd[2]sde[3](S)sdc[1]sdb[0]
2097024blockslevel5,64kchunk,algorithm2[3/3][UUU]

unuseddevices:<none>
說明:
sdd[2]:此設備在RAID中的次序。
[3/3]:RAID使用3個設備,當前有3個設備正常運行。當某一個設備出錯時將會顯示[3/2]。
[UUU]:RAID中所有磁盤運轉正常。如果出錯則顯示[_UU],則說明RAID中第一磁盤fail。

#mdadm-E/dev/sdb
/dev/sdb:
Magic:a92b4efc
Version:00.90.00
UUID:b5e3276f:ab97e843:e601b1a4:46720384
CreationTime:TueNov1310:35:352007
RaidLevel:raid5
DeviceSize:1048512(1024.11MiB1073.68MB)
ArraySize:2097024(2048.22MiB2147.35MB)
RaidDevices:3
TotalDevices:4
PreferredMinor:0

UpdateTime:TueNov1310:54:582007
State:clean
ActiveDevices:3
WorkingDevices:4
FailedDevices:0
SpareDevices:1
Checksum:c59d3483-correct
Events:0.2

Layout:left-symmetric
ChunkSize:64K

NumberMajorMinorRaidDeviceState
this08160activesync/dev/sdb

008160activesync/dev/sdb
118321activesync/dev/sdc
228482activesync/dev/sdd
338643spare/dev/sde



5>mdadm配置文件:
mdadm的缺省配置文件爲/etc/mdadm.conf。對於陣列而言不是必須的,主要是爲了方便陣列的日常管理。
使用配置文件後,我們每次啓動RAID時,就不需要再次輸入建立RAID時的一大堆的參數。
mdadm.conf文件中要包含兩行:
第一行是以DEVICE開頭的行,它指明在陣列中的設備列表。
第二行是以ARRAY開頭的行,它詳細地說明了陣列的名稱、模式、陣列中活動設備的數目以及設備的UUID號。
一般會有如下格式:
#cat/etc/mdadm.conf
===========================================================
DEVICE/dev/sdb/dev/sdc/dev/sdd/dev/sde
ARRAY/dev/md0level=raid5num-devices=3spares=1UUID=b5e3276f:ab97e843:e601b1a4:46720384
============================================================

生成方法:
#echo'DEVICE/dev/sd[bcde]'>/etc/mdadm.conf
#mdadm-Ds>>/etc/mdadm.conf

#echo'DEVICE/dev/sdb/dev/sdc/dev/sdd/dev/sde'>/etc/mdadm.conf
#mdadm-Ds>>/etc/mdadm.conf



6>配置mdadm開機自啓動:
使用配置文件後,RAID設備在重啓後也可以正常的自動加載,因爲系統在開機啓動時會自動加載RAID。
#cat/etc/rc.d/rc.sysinit
=============================================================================
#RAIDsetup
update_boot_stageRCraid
[-x/sbin/nash]&&echo"raidautorun/dev/md0"|nash--quiet
if[-f/etc/mdadm.conf];then
/sbin/mdadm-A-s
fi
=============================================================================
設備配置文件只能使系統在開機時正常啓用RAID設備,但自動掛載RAID設備還是要再修改/etc/fstab
#vi/etc/fstab
===============================================
/dev/md0/mnt/raidext3defaults00
===============================================



7>停止與開啓RAID設備:
停止:
#umount/mnt/raid
#mdadm-S/dev/md0
mdadm:stopped/dev/md0
開啓:
使用配置文件時:
#mdadm-As/dev/md0
mdadm:/dev/md0hasbeenstartedwith3drivesand1spare.
沒有使用配置文件時:
#mdadm-A/dev/md0/dev/sd[bcde]
mdadm:/dev/md0hasbeenstartedwith3drivesand1spare.


8>故障演示
(1)將一個磁盤標記爲faulty,模擬硬盤壞損
#mdadm/dev/md0-f/dev/sdb
(2)查看RAID5重建過程
#mdadm-D/dev/md0
/dev/md0:
Version:00.90.03
CreationTime:TueNov1311:55:592007
RaidLevel:raid5
ArraySize:2097024(2048.22MiB2147.35MB)
DeviceSize:1048512(1024.11MiB1073.68MB)
RaidDevices:3
TotalDevices:4
PreferredMinor:0
Persistence:Superblockispersistent

UpdateTime:TueNov1318:21:272007
State:clean,degraded,recovering
ActiveDevices:2
WorkingDevices:3
FailedDevices:1
SpareDevices:1

Layout:left-symmetric
ChunkSize:64K

RebuildStatus:48%complete

UUID:faee3020:14fc3e48:9717e6f5:d7cf7de7
Events:0.6

NumberMajorMinorRaidDeviceState
48640sparerebuilding/dev/sde
18321activesync/dev/sdc
28482activesync/dev/sdd

3816-faultyspare/dev/sdb
#cat/proc/mdstat
Personalities:[raid6][raid5][raid4]
md0:activeraid5sdb[3](F)sde[4]sdd[2]sdc[1]
2097024blockslevel5,64kchunk,algorithm2[3/2][_UU]
[=================>...]recovery=88.7%(931664/1048512)finish=0.0minspeed=24130K/sec

unuseddevices:<none>
(3)查看完成壞損設備後的RAID狀態
#mdadm-D/dev/md0
/dev/md0:
Version:00.90.03
CreationTime:TueNov1311:55:592007
RaidLevel:raid5
ArraySize:2097024(2048.22MiB2147.35MB)
DeviceSize:1048512(1024.11MiB1073.68MB)
RaidDevices:3
TotalDevices:4
PreferredMinor:0
Persistence:Superblockispersistent

UpdateTime:TueNov1318:21:592007
State:clean
ActiveDevices:3
WorkingDevices:3
FailedDevices:1
SpareDevices:0

Layout:left-symmetric
ChunkSize:64K

UUID:faee3020:14fc3e48:9717e6f5:d7cf7de7
Events:0.8

NumberMajorMinorRaidDeviceState
08640activesync/dev/sde
18321activesync/dev/sdc
28482activesync/dev/sdd

3816-faultyspare/dev/sdb
#cat/proc/mdstat
Personalities:[raid6][raid5][raid4]
md0:activeraid5sdb[3](F)sde[0]sdd[2]sdc[1]
2097024blockslevel5,64kchunk,algorithm2[3/3][UUU]

unuseddevices:<none>
(4)移除壞損設備
#mdadm/dev/md0-r/dev/sdb
mdadm:hotremoved/dev/sdb
(5)添加新的設備
#mdadm/dev/md0-a/dev/sdb
mdadm:added/dev/sdb
(6)查看最終狀態
#mdadm-D/dev/md0
/dev/md0:
Version:00.90.03
CreationTime:TueNov1311:55:592007
RaidLevel:raid5
ArraySize:2097024(2048.22MiB2147.35MB)
DeviceSize:1048512(1024.11MiB1073.68MB)
RaidDevices:3
TotalDevices:4
PreferredMinor:0
Persistence:Superblockispersistent

UpdateTime:TueNov1318:25:442007
State:clean
ActiveDevices:3
WorkingDevices:4
FailedDevices:0
SpareDevices:1

Layout:left-symmetric
ChunkSize:64K

UUID:faee3020:14fc3e48:9717e6f5:d7cf7de7
Events:0.10

NumberMajorMinorRaidDeviceState
08640activesync/dev/sde
18321activesync/dev/sdc
28482activesync/dev/sdd

3816-spare/dev/sdb
#cat/proc/mdstat
Personalities:[raid6][raid5][raid4]
md0:activeraid5sdb[3](S)sde[0]sdd[2]sdc[1]
2097024blockslevel5,64kchunk,algorithm2[3/3][UUU]

unuseddevices:<none>


9>mdadm中文man(引用)
基本語法:mdadm[mode][options]
[mode]有7種:
Assemble:將以前定義的某個陣列加入當前在用陣列。
Build:Buildalegacyarray,每個device沒有superblocks
Create:創建一個新的陣列,每個device具有superblocks
Manage:管理陣列,比如add或remove
Misc:允許單獨對陣列中的某個device做操作,比如抹去superblocks或終止在用的陣列。
FolloworMonitor:監控raid1,4,5,6和multipath的狀態
Grow:改變raid容量或陣列中的device數目
可用的[options]:
-A,--assemble:加入一個以前定義的陣列
-B,--build:Buildalegacyarraywithoutsuperblocks.
-C,--create:創建一個新的陣列
-Q,--query:查看一個device,判斷它爲一個mddevice或是一個md陣列的一部分
-D,--detail:打印一個或多個mddevice的詳細信息
-E,--examine:打印device上的mdsuperblock的內容
-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=:Specifychunksizeofkibibytes.缺省爲64.
--rounding=:Specifyroundingfactorforlineararray(==chunksize)
-l,--level=:設定raidlevel.
--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作爲missingdrive。此選項正相反。
-a,--auto{=no,yes,md,mdp,part,p}{NN}:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章