国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
how to use raid in linux
張 志斌 (linuxaid@tom.com), 軟件工程師, 軟件工程師

簡(jiǎn)介: 在以數(shù)據(jù)為中心的信息時(shí)代,如何妥善有效地保護(hù)數(shù)據(jù)是存儲(chǔ)系統(tǒng)的核心問(wèn)題之一。人們可以忍受計(jì)算機(jī)宕 機(jī),所有應(yīng)用程序重新啟動(dòng)或者硬件損壞,但是他們要求信息永遠(yuǎn)不會(huì)丟失。冗余磁盤陣列(Redundant Array of Independent Disks )技術(shù)是各種企業(yè)信息系統(tǒng)和個(gè)人廣泛使用的解決方案,一般的中高檔服務(wù)器多使用硬件RAID控制器,但是由于硬件RAID控制器的價(jià)格昂貴,導(dǎo)致系統(tǒng)成本 大大增加。而隨著處理器的性能快速發(fā)展,使得軟件RAID的解決方法得到人們的重視。這里我們主要介紹在Linux系統(tǒng)中軟件RAID的配置和使用方法, 它既降低了系統(tǒng)的總投資,也能滿足系統(tǒng)應(yīng)用的需要。

發(fā)布日期: 2007 年 11 月 08 日
級(jí)別: 中級(jí)
訪問(wèn)情況 165 次瀏覽
建議: 0 (添加評(píng)論)

平均分 (共 1 個(gè)評(píng)分 )

一.簡(jiǎn)介

在 Linux系統(tǒng)中目前以MD (Multiple Devices)虛擬塊設(shè)備的方式實(shí)現(xiàn)軟件RAID,利用多個(gè)底層的塊設(shè)備虛擬出一個(gè)新的虛擬塊設(shè)備,并且利用條帶化(stripping)技術(shù)將數(shù)據(jù)塊 均勻分布到多個(gè)磁盤上來(lái)提高虛擬設(shè)備的讀寫性能,利用不同的數(shù)據(jù)冗余算法來(lái)保護(hù)用戶數(shù)據(jù)不會(huì)因?yàn)槟硞€(gè)塊設(shè)備的故障而完全丟失,而且還能在設(shè)備被替換后將丟 失的數(shù)據(jù)恢復(fù)到新的設(shè)備上。關(guān)于不同冗余級(jí)別的定義和數(shù)據(jù)塊以及校驗(yàn)塊的分布示意圖可以參考存儲(chǔ)專業(yè)委員會(huì)給出的參考資料“Common RAID Disk Data Format Specification ”。 目前MD支持linear, multipath, raid0 (stripping), raid1 (mirror), raid4, raid5, raid6, raid10等不同的冗余級(jí)別和組成方式,當(dāng)然也能支持多個(gè)RAID陣列的層疊組成raid1+0, raid5+1等類型的陣列。在參考資料“Software RAID HOWTO”中介紹了早期軟件RAID陣列功能特點(diǎn)和使用方式,但是因?yàn)檐浖AID程序的功能不斷增加,因此很有必要寫份新的使用介紹。

本 文主要先講解用戶層mdadm如何管理軟件RAID以及使用中經(jīng)常遇到的問(wèn)題和解決方法。 在流行的Linux的發(fā)布版中,如FedoraCore,Gentoo, Ubuntu,Debian,SuseLinux系統(tǒng)中一般已經(jīng)將MD驅(qū)動(dòng)模塊直接編譯到內(nèi)核中或編譯為可動(dòng)態(tài)加載的驅(qū)動(dòng)模塊。我們可以在機(jī)器啟動(dòng)后通過(guò) cat /proc/mdstat看內(nèi)核是否已經(jīng)加載MD驅(qū)動(dòng)或者cat /proc/devices是否有md塊設(shè)備,并且可以使用lsmod看MD是否是以模塊形式加載到系統(tǒng)中。

[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities :
unused devices: <none>
[root@fc5 mdadm-2.6.3]# cat /proc/devices | grep md
1 ramdisk
9 md
253 mdp
[root@fc5 mdadm-2.6.3]# lsmod | grep md
md_mod 73364 0

如果Linux系統(tǒng)既沒有將MD編譯到內(nèi)核也沒有自動(dòng)加載MD模塊,則沒有/proc/mdstat文件,那么需要執(zhí)行命令modprobe md加載驅(qū)動(dòng)模塊。

[root@fc5 mdadm-2.6.3]#cat /proc/mdstat
cat: /proc/mdstat: No such file or directory
[root@fc5 mdadm-2.6.3]# modprobe md
[root@fc5 mdadm-2.6.3]# lsmod | grep md
md_mod 73364 0

如果系統(tǒng)中沒有MD驅(qū)動(dòng)模塊則需要自己從 Linux內(nèi)核源代碼網(wǎng)站 下載源代碼包,并且重新編譯內(nèi)核,并且需要在內(nèi)核的配置文件選擇。

[*]Multiple devices driver support (RAID and LVM) 
<*> RAID support
<M> Linear (append) mode
<M> RAID-0 (striping) mode
<M> RAID-1 (mirroring) mode
<M> RAID-10 (mirrored striping) mode (EXPERIMENTAL)
<M> RAID-4/RAID-5/RAID-6 mode
[*] Support adding drives to a raid-5 array
<M> Multipath I/O support
<M> Faulty test module for MD

在Linux系統(tǒng)中用戶層以前使用raidtool工具集 來(lái)管理MD設(shè)備,目前廣泛使用mdadm軟件來(lái)管理MD設(shè)備,而且該軟件都會(huì)集成在Linux的發(fā)布版中。如果系統(tǒng)中沒有安裝可以到RAID驅(qū)動(dòng)程序和mdadm軟件的 維護(hù)者Neil Brown的個(gè)人網(wǎng)站 來(lái)下載源碼包進(jìn)行編譯安裝,或者下載RPM包直接安裝。mdadm的最新版本是2.6.3。可以使用mdadm --version查看當(dāng)前系統(tǒng)使用的版本。本文使用的是mdadm-2.6.3, Linux內(nèi)核版本是Linux-2.6.22.1。下面的測(cè)試命令是在虛擬機(jī)環(huán)境中測(cè)試運(yùn)行的。

[root@fc5 mdadm-2.6.3]# uname -r
2.6.22.1
[root@fc5 mdadm-2.6.3]# ./mdadm --version
mdadm - v2.6.3 - 20th August 2007

二. mdadm管理軟RAID陣列

mdadm程序是一個(gè)獨(dú)立的程序,能完成所有的軟RAID管理功能,主要有7種使用模式:

模式名字 主要功能
Create 使用空閑的設(shè)備創(chuàng)建一個(gè)新的陣列,每個(gè)設(shè)備具有元數(shù)據(jù)塊
Assemble 將原來(lái)屬于一個(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)指定的事件

2.1 為磁盤劃分分區(qū)

如果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@fc5 mdadm-2.6.3]# fdisk /dev/sdk
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1): 1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512): 512
Using default value 512

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.
Syncing disks.
[root@fc5 mdadm-2.6.3]# fdisk -l /dev/sdk
Disk /dev/sdk: 1073 MB, 1073741824 bytes
128 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 4096 * 512 = 2097152 bytes

Device Boot Start End Blocks Id System
/dev/sdk1 1 512 1048560 fd Linux raid autodetect

軟RAID陣列實(shí)際上也可以使用任何標(biāo)準(zhǔn)的塊設(shè)備作為底層設(shè)備,如SCSI設(shè)備、IDE設(shè)備、RAM disk磁盤和NBD(Network Block Device)等,甚至是其他的MD設(shè)備。

如 果MD驅(qū)動(dòng)是模塊形式加載,需要在系統(tǒng)運(yùn)行時(shí)由用戶層腳本控制RAID陣列啟動(dòng)運(yùn)行。如在FedoraCore系統(tǒng)中在/etc/rc.d /rc.sysinit文件中有啟動(dòng)軟RAID陣列的指令,若RAID的配置文件mdadm.conf存在,則調(diào)用mdadm檢查配置文件里的選項(xiàng),然后 啟動(dòng)RAID陣列。

echo "raidautorun /dev/md0" | nash --quiet
if [ -f /etc/mdadm.conf ]; then
/sbin/mdadm -A -s
fi

2.2 創(chuàng)建新的陣列

mdadm 使用--create(或其縮寫-C)參數(shù)來(lái)創(chuàng)建新的陣列,并且將一些重要陣列的標(biāo)識(shí)信息作為元數(shù)據(jù)可以寫在每一個(gè)底層設(shè)備的指定區(qū)間。 --level(或者其縮寫-l)表示陣列的RAID級(jí)別,--chunk(或者其縮寫-c)表示每個(gè)條帶單元的大小,以KB為單位,默認(rèn)為64KB,條 帶單元的大小配置對(duì)不同負(fù)載下的陣列讀寫性能有很大影響。--raid-devices(或者其縮寫-n)表示陣列中活躍的設(shè)備個(gè)數(shù),而--spare- devices(或者其縮寫-x)表示陣列中熱備盤的個(gè)數(shù),一旦陣列中的某個(gè)磁盤失效,MD內(nèi)核驅(qū)動(dòng)程序自動(dòng)用將熱備磁盤加入到陣列,然后重構(gòu)丟失磁盤上 的數(shù)據(jù)到熱備磁盤上。

創(chuàng)建一個(gè)RAID 0設(shè)備:
mdadm --create /dev/md0 --level=0 --chunk=32 --raid-devices=3 /dev/sd[i-k]1
創(chuàng)建一個(gè)RAID 1設(shè)備:
mdadm -C /dev/md0 -l1 -c128 -n2 -x1 /dev/sd[i-k]1
創(chuàng)建一個(gè)RAID 5設(shè)備:
mdadm -C /dev/md0 -l5 -n5 /dev/sd[c-g] -x1 /dev/sdb
創(chuàng)建一個(gè)RAID 6設(shè)備:
mdadm -C /dev/md0 -l6 -n5 /dev/sd[c-g] -x2 /dev/sdb /dev/sdh
創(chuàng)建一個(gè)RAID 10設(shè)備:
mdadm -C /dev/md0 -l10 -n6 /dev/sd[b-g] -x1 /dev/sdh
創(chuàng)建一個(gè)RAID1+0設(shè)備:
mdadm -C /dev/md0 -l1 -n2 /dev/sdb /dev/sdc
mdadm -C /dev/md1 -l1 -n2 /dev/sdd /dev/sde
mdadm -C /dev/md2 -l1 -n2 /dev/sdf /dev/sdg
mdadm -C /dev/md3 -l0 -n3 /dev/md0 /dev/md1 /dev/md2

當(dāng)RAID1/4/5/6/10等創(chuàng)建成功后,需要計(jì)算每個(gè)條 帶的校驗(yàn)和信息并寫入到相應(yīng)磁盤上,所以RAID陣列有一個(gè)冗余組數(shù)據(jù)同步的初始化過(guò)程(resync)。但是MD設(shè)備只要?jiǎng)?chuàng)建成功后即可對(duì)外被上層應(yīng)用 讀寫使用,當(dāng)然由于上層數(shù)據(jù)讀寫降低數(shù)據(jù)同步的性能。初始化的時(shí)間長(zhǎng)短和磁盤陣列自身性能以及讀寫的應(yīng)用負(fù)載相關(guān),使用cat /proc/mdstat信息查詢RAID陣列當(dāng)前重構(gòu)的速度和預(yù)期的完成時(shí)間。

[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
[===>...........] resync = 15.3% (483072/3145536) finish=0.3min speed=120768K/sec

unused devices: <none>
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]

unused devices: <none>

如果一個(gè)塊設(shè)備已經(jīng)正在被其他的MD設(shè)備或者文件系統(tǒng)使用,則不能用來(lái)創(chuàng)建新的MD設(shè)備。

[root@fc5 mdadm-2.6.3]# ./mdadm -C /dev/md1 -l0 -n2 /dev/sdh /dev/sdi
mdadm: Cannot open /dev/sdh: Device or resource busy
mdadm: create aborted

Build模式可以用來(lái)創(chuàng)建沒有元數(shù)據(jù)的RAID0/1設(shè)備,不能創(chuàng)建RAID4/5/6/10等帶有冗余級(jí)別的MD設(shè)備。

[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 -l0 -n6 /dev/sd[b-g]
mdadm: array /dev/md0 built and started.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 -l1 -n2 /dev/sd[b-c]
mdadm: array /dev/md0 built and started.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 -l5 -n6 /dev/sd[b-g]
mdadm: Raid level 5 not permitted with --build.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 –l6 -n6 /dev/sd[b-g]
mdadm: Raid level 5 not permitted with --build.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 –l10 -n6 /dev/sd[b-g]
mdadm: Raid level 10 not permitted with --build.

使用陣列:

MD設(shè)備可以像普通塊設(shè)備那樣直接讀寫,也可以做文件系統(tǒng)格式化。

#mkfs.ext3 /dev/md0
#mkdir -p /mnt/md-test
#mount /dev/md0 /mnt/md-test

停止正在運(yùn)行的陣列:

當(dāng)陣列沒有文件系統(tǒng)或者其他存儲(chǔ)應(yīng)用以及高級(jí)設(shè)備使用的話,可以使用--stop(或者其縮寫-S)停止陣列;如果命令返回設(shè)備或者資源忙類型的錯(cuò)誤,說(shuō)明/dev/md0正在被上層應(yīng)用使用,暫時(shí)不能停止,必須要首先停止上層的應(yīng)用,這樣也能保證陣列上數(shù)據(jù)的一致性。

[root@fc5 mdadm-2.6.3]# ./mdadm --stop /dev/md0
mdadm: fail to stop array /dev/md0: Device or resource busy
[root@fc5 mdadm-2.6.3]# umount /dev/md0
[root@fc5 mdadm-2.6.3]#./mdadm --stop /dev/md0
mdadm: stopped /dev/md0

2.3 組裝曾創(chuàng)建過(guò)的陣列

模式--assemble或者其縮寫(-A)主要是檢查底層設(shè)備的元數(shù)據(jù)信息,然后再組裝為活躍的陣列。如果我們已經(jīng)知道陣列由那些設(shè)備組成,可以指定使用那些設(shè)備來(lái)啟動(dòng)陣列。

[root@fc5 mdadm-2.6.3]# ./mdadm -A /dev/md0 /dev/sd[b-h]
mdadm: /dev/md0 has been started with 6 drives and 1 spare.

如果有配置文件(/etc/mdadm.conf)可使用命令 mdadm -As /dev/md0。mdadm先檢查mdadm.conf中的DEVICE信息,然后從每個(gè)設(shè)備上讀取元數(shù)據(jù)信息,并檢查是否和ARRAY信息一致,如果 信息一致則啟動(dòng)陣列。如果沒有配置/etc/mdadm.conf文件,而且又不知道陣列由那些磁盤組成,則可以使用命令--examine(或者其縮寫 -E)來(lái)檢測(cè)當(dāng)前的塊設(shè)備上是否有陣列的元數(shù)據(jù)信息。

[root@fc5 mdadm-2.6.3]# ./mdadm -E /dev/sdi
mdadm: No md superblock detected on /dev/sdi.
[root@fc5 mdadm-2.6.3]# ./mdadm -E /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 00.90.00
UUID : 0cabc5e5:842d4baa:e3f6261b:a17a477a
Creation Time : Sun Aug 22 17:49:53 1999
Raid Level : raid10
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Array Size : 3145536 (3.00 GiB 3.22 GB)
Raid Devices : 6
Total Devices : 7
Preferred Minor : 0

Update Time : Sun Aug 22 18:05:56 1999
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1
Checksum : 2f056516 - correct
Events : 0.4

Layout : near=2, far=1
Chunk Size : 64K

Number Major Minor RaidDevice State
this 0 8 16 0 active sync /dev/sdb

0 0 8 16 0 active sync /dev/sdb
1 1 8 32 1 active sync /dev/sdc
2 2 8 48 2 active sync /dev/sdd
3 3 8 64 3 active sync /dev/sde
4 4 8 80 4 active sync /dev/sdf
5 5 8 96 5 active sync /dev/sdg
6 6 8 112 6 spare /dev/sdh

從上面命令結(jié)果可以找到陣列的唯一標(biāo)識(shí)UUID和陣列包含的設(shè)備名字,然后再使用上面的命令來(lái)組裝陣列,也可以使用UUID標(biāo)識(shí)來(lái)組裝陣列。沒有一致的元數(shù)據(jù)的信息設(shè)備(例如/dev/sda和/dev/sda1等)mdadm程序會(huì)自動(dòng)跳過(guò)。

[root@fc5 mdadm-2.6.3]# ./mdadm -Av --uuid=0cabc5e5:842d4baa:e3f6261b:a17a477a 
/dev/md0 /dev/sd*
mdadm: looking for devices for /dev/md0
mdadm: no recogniseable superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.
mdadm: no recogniseable superblock on /dev/sda1
mdadm: /dev/sda1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdi
mdadm: /dev/sdi has wrong uuid.
mdadm: /dev/sdi1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdj
mdadm: /dev/sdj has wrong uuid.
mdadm: /dev/sdj1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdk
mdadm: /dev/sdk has wrong uuid.
mdadm: /dev/sdk1 has wrong uuid.
mdadm: /dev/sdb is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdc is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdd is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sde is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdf is identified as a member of /dev/md0, slot 4.
mdadm: /dev/sdg is identified as a member of /dev/md0, slot 5.
mdadm: /dev/sdh is identified as a member of /dev/md0, slot 6.
mdadm: added /dev/sdc to /dev/md0 as 1
mdadm: added /dev/sdd to /dev/md0 as 2
mdadm: added /dev/sde to /dev/md0 as 3
mdadm: added /dev/sdf to /dev/md0 as 4
mdadm: added /dev/sdg to /dev/md0 as 5
mdadm: added /dev/sdh to /dev/md0 as 6
mdadm: added /dev/sdb to /dev/md0 as 0
mdadm: /dev/md0 has been started with 6 drives and 1 spare.

配置文件:

/etc/mdadm.conf作為默認(rèn)的配置文件,主要作用是方便跟蹤軟RAID的配置,尤其是可以配置監(jiān)視和事件上報(bào)選項(xiàng)。Assemble命令也可以使用--config(或者其縮寫-c)來(lái)指定配置文件。我們通常可以如下命令來(lái)建立配置文件。

[root@fc5 mdadm-2.6.3]#echo DEVICE /dev/sd[b-h] /dev/sd[i-k]1 > /etc/mdadm.conf
[root@fc5 mdadm-2.6.3]# ./mdadm -Ds >>/etc/mdadm.conf
[root@fc5 mdadm-2.6.3]# cat /etc/mdadm.conf
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh
/dev/sdi1 /dev/sdj1 /dev/sdk1
ARRAY /dev/md1 level=raid0 num-devices=3
UUID=dcff6ec9:53c4c668:58b81af9:ef71989d
ARRAY /dev/md0 level=raid10 num-devices=6 spares=1
UUID=0cabc5e5:842d4baa:e3f6261b:a17a477a

使用配置文件啟動(dòng)陣列時(shí),mdadm會(huì)查詢配置文件中的設(shè)備和陣列內(nèi)容,然后啟動(dòng)運(yùn)行所有能運(yùn)行RAID陣列。如果指定陣列的設(shè)備名字,則只啟動(dòng)對(duì)應(yīng)的陣列。

[root@fc5 mdadm-2.6.3]# ./mdadm -As
mdadm: /dev/md1 has been started with 3 drives.
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10]
md0 : active raid10 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]

md1 : active raid0 sdi1[0] sdk1[2] sdj1[1]
7337664 blocks 32k chunks

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm -S /dev/md0 /dev/md1
mdadm: stopped /dev/md0
mdadm: stopped /dev/md1
[root@fc5 mdadm-2.6.3]# ./mdadm -As /dev/md0
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10]
md0 : active raid10 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]

unused devices: <none>

2.4 查詢陣列的狀態(tài)

我 們可以通過(guò)cat /proc/mdstat信息查看所有運(yùn)行的RAID陣列的狀態(tài),在第一行中首先是MD的設(shè)備名,active和inactive選項(xiàng)表示陣列是否能讀 寫,接著是陣列的RAID級(jí)別,后面是屬于陣列的塊設(shè)備,方括號(hào)[]里的數(shù)字表示設(shè)備在陣列中的序號(hào),(S)表示其是熱備盤,(F)表示這個(gè)磁盤是 faulty狀態(tài)。在第二行中首先是陣列的大小,單位是KB,接著是chunk-size的大小,然后是layout類型,不同RAID級(jí)別的 layout類型不同,[6/6]和[UUUUUU]表示陣列有6個(gè)磁盤并且6個(gè)磁盤都是正常運(yùn)行的,而[5/6]和[_UUUUU] 表示陣列有6個(gè)磁盤中5個(gè)都是正常運(yùn)行的,下劃線對(duì)應(yīng)的那個(gè)位置的磁盤是faulty狀態(tài)的。

[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 -f /dev/sdh /dev/sdb
mdadm: set /dev/sdh faulty in /dev/md0
mdadm: set /dev/sdb faulty in /dev/md0
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid5 sdh[6](F) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[7](F)
5242560 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU]

unused devices: <none>

如果Linux系統(tǒng)目前支持sysfs也可以訪問(wèn)/sys/block/md0目錄查詢陣列信息。

[root@fc5 mdadm-2.6.3]# ls -l /sys/block/md0/
capability holders range size stat uevent
dev md removable slaves subsystem
[root@fc5 mdadm-2.6.3]# ls /sys/block/md0/md/
array_state dev-sdg rd1 suspend_lo
bitmap_set_bits dev-sdh rd2 sync_action
chunk_size layout rd3 sync_completed
component_size level rd4 sync_speed
dev-sdb metadata_version rd5 sync_speed_max
dev-sdc mismatch_cnt reshape_position sync_speed_min
dev-sdd new_dev resync_start
dev-sde raid_disks safe_mode_delay
dev-sdf rd0 suspend_hi
[root@fc5 mdadm-2.6.3]# ls /sys/block/md0/slaves/
sdb sdc sdd sde sdf sdg sdh

我們也可以通過(guò)mdadm命令查看指定陣列的簡(jiǎn)要信息(使用 --query或者其縮寫-Q)和詳細(xì)信息(使用--detail或者其縮寫-D) 詳細(xì)信息包括RAID的版本、創(chuàng)建的時(shí)間、RAID級(jí)別、陣列容量、可用空間、設(shè)備數(shù)量、超級(jí)塊狀態(tài)、更新時(shí)間、UUID信息、各個(gè)設(shè)備的狀態(tài)、RAID 算法級(jí)別類型和布局方式以及塊大小等信息。設(shè)備狀態(tài)信息分為active, sync, spare, faulty, rebuilding, removing等等。

[root@fc5 mdadm-2.6.3]# ./mdadm --query /dev/md0
/dev/md0: 2.100GiB raid10 6 devices, 1 spare. Use mdadm --detail for more detail.
[root@fc5 mdadm-2.6.3]# ./mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 17:49:53 1999
Raid Level : raid10
Array Size : 3145536 (3.00 GiB 3.22 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 6
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 21:55:02 1999
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1

Layout : near=2, far=1
Chunk Size : 64K

UUID : 0cabc5e5:842d4baa:e3f6261b:a17a477a
Events : 0.122

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg

6 8 112 - spare /dev/sdh

2.5 管理陣列

mdadm可以在Manage模式下,對(duì)運(yùn)行中的陣列進(jìn)行添加及刪除磁盤。常用于標(biāo)識(shí)failed磁盤,增加spare(熱備)磁盤,以及從陣列中移走已經(jīng)失效的磁盤等等。 使用--fail(或者其縮寫-f)指定磁盤損壞。

[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 --fail /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0

當(dāng)磁盤已經(jīng)損壞時(shí),使用--remove(或者其縮寫--f)參數(shù)將這個(gè)磁盤從磁盤陣列中移走;但如果設(shè)備還正在被陣列使用,則不能從陣列中移走。

[root@fc5 mdadm-2.6.3]# ./mdadm  /dev/md0 --remove /dev/sdb
mdadm: hot removed /dev/sdb
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 --remove /dev/sde
mdadm: hot remove failed for /dev/sde: Device or resource busy

如果陣列帶有spare磁盤,那么自動(dòng)將損壞磁盤上的數(shù)據(jù)重構(gòu)到新的spare磁盤上;

[root@fc5 mdadm-2.6.3]# ./mdadm -f /dev/md0 /dev/sdb ; cat /proc/mdstat
mdadm: set /dev/sdb faulty in /dev/md0
Personalities : [raid0] [raid10]
md0 : active raid10 sdh[6] sdb[7](F) sdc[0] sdg[5] sdf[4] sde[3] sdd[2]
3145536 blocks 64K chunks 2 near-copies [6/5] [U_UUUU]
[=======>........] recovery = 35.6% (373888/1048512) finish=0.1min speed=93472K/sec

unused devices: <none>

如果陣列沒有熱備磁盤,可以使用--add(或者其縮寫-a)參數(shù)增加熱備磁盤

[root@fc5 mdadm-2.6.3]# ./mdadm  /dev/md0 --add /dev/sdh
mdadm: added /dev/sdh

2.6 監(jiān)控陣列

可 以使用mdadm對(duì)RAID陣列進(jìn)行監(jiān)控,監(jiān)控程序定時(shí)查詢指定的事件是否發(fā)生,然后根據(jù)配置來(lái)妥善處理。例如當(dāng)陣列中的磁盤設(shè)備出現(xiàn)問(wèn)題的時(shí)候,可以發(fā) 送郵件給管理員;或者當(dāng)磁盤出現(xiàn)問(wèn)題的時(shí)候由回調(diào)程序來(lái)進(jìn)行自動(dòng)的磁盤替換,所有監(jiān)控事件都可以記錄到系統(tǒng)日志中。目前mdadm支持的事件有 RebuildStarted, RebuildNN(NN is 20, 40, 60, or 80), RebuildFinished, Fail,FailSpare,SpareActive,NewArray, DegradedArray, MoveSpare, SparesMissing, TestMessage。

如果配置每300秒mdadm監(jiān)控進(jìn)程查詢MD設(shè)備一次,當(dāng)陣列出現(xiàn)錯(cuò) 誤,會(huì)發(fā)送郵件給指定的用戶,執(zhí)行事件處理的程序并且記錄上報(bào)的事件到系統(tǒng)的日志文件。使用--daemonise參數(shù)(或者其縮寫-f)使程序持續(xù)在后 臺(tái)運(yùn)行。如果要發(fā)送郵件需要sendmail程序運(yùn)行,當(dāng)郵件地址被配置為外網(wǎng)地址應(yīng)先測(cè)試是否能發(fā)送出去。

[root@fc5 mdadm-2.6.3]#./mdadm --monitor --mail=root@localhost --program=/root/md.sh 
--syslog --delay=300 /dev/md0 --daemonise

查看系統(tǒng)日志信息,可以看到哪個(gè)陣列或者陣列中的哪個(gè)設(shè)備發(fā)生過(guò)的哪些事件。

[root@fc5 mdadm-2.6.3]# mdadm -f /dev/md0 /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@fc5 mdadm-2.6.3]#tail –f /var/log/messages
Aug 22 22:04:12 fc5 mdadm: RebuildStarted event detected on md device /dev/md0
Aug 22 22:04:12 fc5 kernel: md: using maximum available idle IO bandwidth
(but not more than 200000 KB/sec) for recovery.
Aug 22 22:04:12 fc5 kernel: md: using 128k window, over a total of 1048512 blocks.
Aug 22 22:04:14 fc5 mdadm: Fail event detected on md device /dev/md0,
component device /dev/sdb
Aug 22 22:04:14 fc5 mdadm: Rebuild80 event detected on md device /dev/md0
Aug 22 22:04:16 fc5 mdadm: RebuildFinished event detected on md device /dev/md0
Aug 22 22:04:16 fc5 mdadm: SpareActive event detected on md device /dev/md0,
component device /dev/sdh
Aug 22 22:04:16 fc5 kernel: md: md0: recovery done.

回調(diào)程序從mdadm程序接受兩個(gè)或者三個(gè)參數(shù):事件名字,監(jiān)控陣列的名字和特殊事件可能使用到的底層塊設(shè)備名字。上面的事件返回的信息如下:

Eventname: RebuildStarted  Device: /dev/md0  next:
Eventname: Fail Device: /dev/md0 next: /dev/sdb
Eventname: Rebuild80 Device: /dev/md0 next:
Eventname: RebuildFinished Device: /dev/md0 next:
Eventname:SpareActive Device: /dev/md0 next: /dev/sdh

2.7 擴(kuò)展陣列

如果在創(chuàng)建陣列時(shí)不想使用整個(gè)塊設(shè)備,可以指定用于創(chuàng)建RAID陣列每個(gè)塊設(shè)備使用的設(shè)備大小。

mdadm -CR /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --size=102400

然后在陣列需要擴(kuò)展大小時(shí),使用模式--grow(或者其縮寫-Q)以及--size參數(shù)(或者其縮寫-z) 在加上合適的大小數(shù)值就能分別擴(kuò)展陣列所使用每個(gè)塊設(shè)備的大小。

[root@fc5 mdadm-2.6.3]# ./mdadm -Q /dev/md0
/dev/md0: 500.00MiB raid5 6 devices, 1 spare. Use mdadm --detail for more detail.
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 --size=204800
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1024000 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[============>......] resync = 69.6% (144188/204800) finish=0.0min speed=10447K/sec

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm -Q /dev/md0
/dev/md0: 1000.00MiB raid5 6 devices, 1 spare. Use mdadm --detail for more detail.

如果上面是文件系統(tǒng)(ext2,ext3, reiserfs),在設(shè)備大小擴(kuò)展后,文件系統(tǒng)也要同時(shí)擴(kuò)展。

[root@fc5 mdadm-2.6.3]# df -h | grep md
/dev/md0 485M 11M 449M 3% /mnt/md-test
[root@fc5 mdadm-2.6.3]# ext2online /dev/md0
[root@fc5 mdadm-2.6.3]# df -h | grep md
/dev/md0 969M 11M 909M 2% /mnt/md-test

mdadm還提供增加或減少陣列中設(shè)備個(gè)數(shù)的功能(reshape),使用模式—grow和 --raid-disks(或者其縮寫-n)參數(shù)再加上合適的設(shè)備個(gè)數(shù)。擴(kuò)展后陣列中原來(lái)的熱備盤變?yōu)榛钴S磁盤,所以陣列的設(shè)備個(gè)數(shù)增加,陣列的大小也相應(yīng)增加。

[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1024000 (1000.17 MiB 1048.58 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 6
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 22:23:46 1999
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 64K

UUID : 53e6395c:1af16258:087cb2a0:b66b087f
Events : 0.12

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg

6 8 112 - spare /dev/sdh
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 --raid-disks=7
mdadm: Need to backup 1920K of critical section..
mdadm: ... critical section passed.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1024000 blocks super 0.91 level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
[===>.............] reshape = 19.4% (40256/204800) finish=0.7min speed=3659K/sec

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.91.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1024000 (1000.17 MiB 1048.58 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 22:26:46 1999
State : clean, recovering
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

Reshape Status : 25% complete
Delta Devices : 1, (6->7)

UUID : 53e6395c:1af16258:087cb2a0:b66b087f
Events : 0.76

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1228800 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1228800 (1200.20 MiB 1258.29 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 22:37:11 1999
State : clean
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : 53e6395c:1af16258:087cb2a0:b66b087f
Events : 0.204

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh

2.8 Bitmap記錄

使 用bitmap模式記錄RAID陣列有多少個(gè)塊已經(jīng)同步(resync)。參數(shù)--bitmap(或者其縮寫-b)指定記錄bitmap信息的文件名,如 果是interval參數(shù)表示bitmap記錄在每個(gè)設(shè)備的元數(shù)據(jù)區(qū)。--bitmap-chunk表示每個(gè)bit位代表RAID設(shè)備多大的數(shù)據(jù)塊,單位 是KB;而--delay(或者其縮寫-d)指定多長(zhǎng)事件同步bitmap信息到文件或者設(shè)備上,單位是秒,默認(rèn)是5秒。--force(或者其縮寫)表 示覆蓋掉已經(jīng)存在bitmap文件。而且使用--examine-bitmap(或者其縮寫-X)能夠查看存儲(chǔ)在文件或者設(shè)備元數(shù)據(jù)中的bitmap記錄 的信息。

當(dāng)陣列創(chuàng)建時(shí)指定bitmap模式,如果陣列初始化中停止陣列,當(dāng)再次啟動(dòng)陣列中,RAID陣列能夠利用bitmap記錄從上次中斷的位置接著執(zhí)行。

[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md1 -l1 -n2 /dev/sdi1 /dev/sdj1 --bitmap=internal
mdadm: array /dev/md1 started.
[root@fc5 tests]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdj1[1] sdi1[0]
2096384 blocks [2/2] [UU]
[========>......] resync = 51.2% (1075072/2096384) finish=0.1min speed=153581K/sec
bitmap: 128/128 pages [512KB], 8KB chunk

unused devices: <none>
[root@fc5 tests]# ./mdadm -X /dev/sdi1
Filename : /dev/sdi1
Magic : 6d746962
Version : 4
UUID : bcccddb7:0f529abd:672e1f66:7e68bbc8
Events : 1
Events Cleared : 1
State : OK
Chunksize : 8 KB
Daemon : 5s flush period
Write Mode : Normal
Sync Size : 2096384 (2047.59 MiB 2146.70 MB)
Bitmap : 262048 bits (chunks), 262048 dirty (100.0%)
[root@fc5 tests]# ./mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@fc5 tests]# ./mdadm -A /dev/md1 /dev/sd[i-k]1 --bitmap=internal ; cat /proc/mdstat
mdadm: there is no need to specify --bitmap when assembling arrays with internal bitmaps
mdadm: /dev/md1 has been started with 2 drives and 1 spare.
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdi1[0] sdk1[2](S) sdj1[1]
1048448 blocks [2/2] [UU]
[==============>...] resync = 87.6% (919616/1048448) finish=0.0min speed=89408K/sec
bitmap: 27/128 pages [108KB], 4KB chunk

unused devices: <none>
[root@fc5 tests]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdj1[1] sdi1[0]
2096384 blocks [2/2] [UU]
bitmap: 0/128 pages [0KB], 8KB chunk
[root@fc5 tests]# mdadm -X /dev/sdi1
unused devices: <none>
Filename : /dev/sdi1
Magic : 6d746962
Version : 4
UUID : bcccddb7:0f529abd:672e1f66:7e68bbc8
Events : 4
Events Cleared : 4
State : OK
Chunksize : 8 KB
Daemon : 5s flush period
Write Mode : Normal
Sync Size : 2096384 (2047.59 MiB 2146.70 MB)
Bitmap : 262048 bits (chunks), 0 dirty (0.0%)

使用bitmap文件記錄要求這個(gè)文件不能在RAID陣列上或者其相關(guān)的設(shè)備上, 而且使用assemble命令時(shí)要指定bitmap文件名字。

[root@fc5 mdadm-2.6.3]#./mdadm -CR /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh 
--bitmap=/tmp/md0-bm --bitmap-chunk=4 --delay=1 --force
mdadm: array /dev/md0 started.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[===========>.......] resync = 64.3% (675748/1048512) finish=0.7min speed=7848K/sec
bitmap: 128/128 pages [512KB], 4KB chunk, file: /tmp/md0-bm

unused devices: <none>
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 1
Events Cleared : 1
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 262128 dirty (100.0%)
[root@fc5 mdadm-2.6.3]# ./mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@fc5 mdadm-2.6.3]# ./mdadm -A /dev/md0 /dev/sd[b-h] --bitmap=/tmp/md0-bm ;
cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[=============>.....] resync = 70.5% (739884/1048512) finish=0.7min speed=6539K/sec
bitmap: 41/128 pages [164KB], 4KB chunk, file: /tmp/md0-bm

unused devices: <none>
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 3
Events Cleared : 3
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 83696 dirty (31.9%)
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
bitmap: 0/128 pages [0KB], 4KB chunk, file: /tmp/md0-bm

unused devices: <none>
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 6
Events Cleared : 6
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 0 dirty (0.0%)

bitmap模式在陣列處于降級(jí)(degrade)狀態(tài)能夠記錄有哪些塊被寫過(guò),當(dāng)那個(gè)暫時(shí)失效的磁盤使用--re-add參數(shù)被重新添加后,陣列只重構(gòu)這期間修改的數(shù)據(jù)塊,減少陣列重構(gòu)的時(shí)間。bitmap信息中dirty的數(shù)量表示降級(jí)期間被修改過(guò)的塊。

[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 -f /dev/sdb /dev/sdh
mdadm: set /dev/sdb faulty in /dev/md0
mdadm: set /dev/sdh faulty in /dev/md0
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6](F) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[7](F)
5242560 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU]
bitmap: 0/128 pages [0KB], 4KB chunk, file: /tmp/md0-bm

unused devices: <none>
[root@fc5 mdadm-2.6.3]# ./mdadm -X /tmp/md0-bm
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : 3ede3bc0:adb1a404:49a18eed:f1b5c89a
Events : 8
Events Cleared : 1
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 0 dirty (0.0%)
[root@fc5 mdadm-2.6.3]# dd if=/dev/zero of=/dev/md0 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 11.9995 seconds, 89.5 MB/s
[root@fc5 mdadm-2.6.3]# ./mdadm -X /tmp/md0-bm
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : 3ede3bc0:adb1a404:49a18eed:f1b5c89a
Events : 10
Events Cleared : 1
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 52432 dirty (20.0%)
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 -r /dev/sdb --re-add /dev/sdb
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb[0] sdh[6](F) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
bitmap: 0/128 pages [0KB], 4KB chunk, file: /tmp/md0-bm

unused devices: <none>
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : 3ede3bc0:adb1a404:49a18eed:f1b5c89a
Events : 24
Events Cleared : 24
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 0 dirty (0.0%)


回頁(yè)首

結(jié)束語(yǔ)

mdadm管理程序和Linux內(nèi)核的MD驅(qū)動(dòng)程序由同一個(gè)維護(hù)者Neil Brown統(tǒng) 一管理,因此兩個(gè)軟件的功能也在不斷的增加,對(duì)應(yīng)的軟件版本也能及時(shí)升級(jí)。本文講述了Linux系統(tǒng)中軟RAID的基本概念和如何使用mdadm程序來(lái)管 理軟RAID設(shè)備,介紹了軟RAID設(shè)備的創(chuàng)建,刪除,停止和擴(kuò)展等操作,以及其元數(shù)據(jù)和位圖bitmap數(shù)據(jù)的管理方法。我們還將在文章"Linux中 軟件RAID使用常見問(wèn)題解決"討論使用軟RAID設(shè)備常見的問(wèn)題以及解決的方法。


參考資料

學(xué)習(xí)

  • 存儲(chǔ)專業(yè)委員會(huì)給出的RAID定義“Common RAID Disk Data Format Specification” ,詳細(xì)描述了不同冗余級(jí)別的定義和數(shù)據(jù)塊以及校驗(yàn)塊的分布示意圖,它是不同廠商的RAID陣列中數(shù)據(jù)遷移的標(biāo)準(zhǔn)。

  • Jakob stergaard 和Emilio Bueso維護(hù)的“The Software-RAID HOWTO”是目前比較完善的軟RAID管理手冊(cè)。

  • Daniel Robbins的文章“Linux 2.4 Software RAID ” Part 1 Part 2 主要結(jié)合以前的軟RAID工具集railtools講解linux-2.4系統(tǒng)的RAID基本配置方法。

  • mdadm管理程序和linux內(nèi)核的MD驅(qū)動(dòng)程序的維護(hù)者Neil Brown個(gè)人網(wǎng)站

  • man mdadm命令來(lái)查看mdadm程序的幫助信息有每個(gè)參數(shù)解釋和簡(jiǎn)單例子。 mdadm源程序tests目錄內(nèi)的mdadm命令的測(cè)試集給出了典型的命令和參數(shù),給出了mdadm命令的各種參數(shù)的詳細(xì)的使用方法。

獲得產(chǎn)品和技術(shù)

討論

  • mdadm的郵件列表討論了很多軟RAID的使用技巧和問(wèn)題解決方法linux-raid@vger.kernel.org,如果在使用軟RAID中遇到問(wèn)題,可以到上面尋找相關(guān)的問(wèn)題或者請(qǐng)求幫助。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mdadm使用詳解及RAID 5簡(jiǎn)單分析
在RHEL6系統(tǒng)上配置磁盤陣列(RAID)
軟RAID管理命令mdadm詳解 | 旺旺知識(shí)庫(kù)
RAID磁盤陣列的原理與搭建
7.1磁盤陣列
在Redhat Linux AS 4下實(shí)現(xiàn)軟件RAID
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服