Chinaunix首页 | 论坛 | 博客
  • 博客访问: 658197
  • 博文数量: 780
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 4885
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 16:14
文章分类

全部博文(780)

文章存档

2008年(780)

我的朋友

分类: LINUX

2008-08-22 16:19:22


id=artstyle="MARGIN:15px"width="100%">F.3.利用mdadm 設定RAID類與多路徑(Multipath)的儲存裝置

跟raidtools套件組中的工具一樣,mdadm 指令可以用來執行所有與管理多裝置組相關的功能。在本節中,我們將告訴您如何利用mdadm 指令,以:

建立RAID裝置

建立多路徑(multipath)裝置

F.3.1.使用mdadm 指令建立RAID裝置

要建立RAID裝置,請編輯/etc/mdadm.conf檔案,設定適切的DEVICEARRAY 值。

DEVICE/dev/sd[abcd]1

ARRAY/dev/md0devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

在本例中,DEVICE 一行使用的是傳統檔名的glob指令(請參閱glob(7)manpage獲得更多訊息),以定義以下的SCSI裝置:

/dev/sda1

/dev/sdb1

/dev/sdc1

/dev/sdd1

ARRAY 一行則定義了DEVICE 行中,組成RAID的裝置(/dev/md0)。

在建立或使用任何RAID裝置前,/proc/mdstat檔案顯示目前系統並無任何RAID裝置運作中:

Personalities:

read_aheadnotset

Event:0

unuseddevices:

接下來,使用以上設定與mdadm 指令,以建立RAID0陣列:

mdadm-C/dev/md0--level=raid0--raid-devices=4/dev/sda1/dev/sdb1/dev/sdc1\

/dev/sdd1

Continuecreatingarray?yes

mdadm:array/dev/md0started.


我的配置方法

分区,用fdisk,raid5要3个分区以上,用在fdisk内t命令把分区标识fd,

例如:

Disk/dev/hdb:62.9GB,62913208320bytes

255heads,63sectors/track,7648cylinders

Units=cylindersof16065*512=8225280bytes

DeviceBoot Start End Blocks Id System

/dev/hdb1 1 7648 61432528 5 Extended

/dev/hdb5 1 1217 9775489 fd Linuxraidautodetect

/dev/hdb6 1218 2434 9775521 fd Linuxraidautodetect

/dev/hdb7 2435 3651 9775521 fd Linuxraidautodetect

/dev/hdb8 3652 4868 9775521 fd Linuxraidautodetect

配置命令:

mdadm--create/dev/md0--level=raid5--chunk=8--raid-devices=4/dev/hdb5/dev/hdb6/dev/hdb7/dev/hdb8

格式化mkfs.ext3/dev/md0

用mount/dev/md0/mnt测试看看是否可以挂上。

编辑mdadm.conf,没有内容没有问题

echo "DEVICE partitions" > /etc/mdadm.confbgKLinux联盟
mdadm --detail --scan >> /etc/mdadm.conf

manmdadm.conf

EXAMPLE

DEVICE/dev/sd[bcdjkl]1

DEVICE/dev/hda1/dev/hdb1

#/dev/md0isknownbyit’sUID.

ARRAY/dev/md0UUID=3aaa0122:29827cfa:5331ad66:ca767371

#/dev/md1containsalldeviceswithaminornumberof

# 1inthesuperblock.

ARRAY/dev/md1superminor=1

#/dev/md2ismadefrompreciseythesetwodevices

ARRAY/dev/md2devices=/dev/hda1,/dev/hda2

#/dev/md4and/dev/md5areaspare-groupandspares

# canbemovedbetweenthem

ARRAY/dev/md4uuid=b23f3c6d:aec43a9f:fd65db85:369432df

spare-group=group1

ARRAY/dev/md5uuid=19464854:03f71b1b:e0df2edd:246cc977

spare-group=group1

MAILADDRroot@mydomain.tld

PROGRAM/usr/sbin/handle-mdadm-events

建立完成之後,您就可以隨時查詢該RAID裝置,獲得狀態資訊。底下的範例顯示了使用mdadm--detail/dev/md0指令的結果:

/dev/md0:

Version:00.90.00

CreationTime:MonMar 113:49:102004

RaidLevel:raid0

ArraySize:15621632(14.90GiB15.100GB)

RaidDevices:4

TotalDevices:4

PreferredMinor:0

Persistence:Superblockispersistent

UpdateTime:MonMar 113:49:102004

State:dirty,no-errors

ActiveDevices:4

WorkingDevices:4

FailedDevices:0

SpareDevices:0

ChunkSize:64K

Number Major Minor RaidDeviceState

0 8 1 0 activesync /dev/sda1

1 8 17 1 activesync /dev/sdb1

2 8 33 2 activesync /dev/sdc1

3 8 49 3 activesync /dev/sdd1

UUID:25c0f2a1:e882dfc0:c0fe135e:6940d932

Events:0.1

F.3.2.使用mdadm 指令建立多路徑(multipath)裝置

除了建立RAID陣列外,只要硬體支援,mdadm 指令也可以透過多個I/O路徑,連到每個SCSILUN(磁碟機)去。即使硬體失效,或是某個路徑的容量過於飽和,多路徑儲存也能繼續提供服務。由於這設定包括多條路徑(每條路徑都以獨立的虛擬控制卡來運作)存取一個共同的SCSILUN(磁碟機),所以Linux核心會「透過」每條路徑偵測每個磁碟機。換句話說,視為/dev/sda的SCSILUN(磁碟機)也可以透過/dev/sdb、/dev/sdc等等來存取,端看設定而定。

要在I/O路徑失效或過度飽和時,單一裝置還是可以提供服務,mdadm 為每每level選項提供了額外的參數。這參數〞multipath 〞會指向Linux核心的md層,在一條I/O路徑失效時,將I/O需求引導到另一條路徑去。

要建立多路徑裝置,請編輯/etc/mdadm.conf檔,定義DEVICEARRAY 兩行的值,以反映您的硬體設定。

注意

跟之前RAID的範例不同(在RAID範例中,每個/etc/mdadm.conf中的磁碟都代表不同的實體磁碟機),這檔案中的每個裝置都指向同一台分享磁碟機。

這用於建立多路徑裝置的指令跟建立RAID裝置的指令類似;不同之處在於將RAID等級的參數改為multipath 參數:

mdadm-C/dev/md0--level=multipath--raid-devices=4/dev/sda1/dev/sdb1/dev/sdc1/dev/sdd1

Continuecreatingarray?yes

mdadm:array/dev/md0started.

由於mdadm 指令的長度關係,我們把它分成兩行來顯示。

在這例子裡,包括一個SCSILUN的硬體代表四個獨立的SCSI裝置,每組裝置都使用不同的路徑存取同一個儲存空間。一旦建立路徑裝置/dev/md0之後,所有參照/dev/md0的I/O都會導向到/dev/sda1、/dev/sdb1、/dev/sdc1、或/dev/sdd1(視目前哪一條路徑在運行中,並且是可用的)。

您可以使用mdadm--detail/dev/md0指令,查詢/dev/md0的細部設定,以確定它的確是多路徑裝置:

/dev/md0:

Version:00.90.00

CreationTime:TueMar 210:56:372004

RaidLevel:multipath

ArraySize:3905408(3.72GiB3.100GB)

RaidDevices:1

TotalDevices:4

PreferredMinor:0

Persistence:Superblockispersistent

UpdateTime:TueMar 210:56:372004

State:dirty,no-errors

ActiveDevices:1

WorkingDevices:4

FailedDevices:0

SpareDevices:3

Number Major Minor RaidDeviceState

0 8 49 0 activesync /dev/sdd1

1 8 17 1 spare /dev/sdb1

2 8 33 2 spare /dev/sdc1

3 8 1 3 spare /dev/sda1

UUID:4b564608:fa01c716:550bd8ff:735d92dc

Events:0.1

另一個mdadm 的特點是能從操作設定中,強迫移除裝置(不管是RAID陣列或多路徑設定的裝置皆可)。在接下來的例子中,/dev/sda1已經被標示為發生錯誤,然後將被移除,最後在加回設定中。對多路徑的設定來說,這些動作不會對I/O活動產生任何衝擊:

#mdadm/dev/md0-f/dev/sda1

mdadm:set/dev/sda1faultyin/dev/md0

#mdadm/dev/md0-r/dev/sda1

mdadm:hotremoved/dev/sda1

#mdadm/dev/md0-a/dev/sda1

mdadm:hotadded/dev/sda1

#

mdadm使用参考

JesseLee于2004年12月17日 发表

mdadm是linux下用于管理软件raid的工具

以下内容来自manpage页:

基本语法?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上的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=: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的奇偶校验规则:

left-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}:

1.mdadm新增一個hdd請用

mdadm--manage/dev/md0--add/dev/hdg1

主功能MDDriver副功能 副功能function.

2.新建一個Raid請用

mdadm--create/dev/md0--chunk=32--level=0--raid-devices=4

/dev/hd[efgh]1

以上請接成一行

3.rebuild上面那個Raid

mdadm--build/dev/md0--chunk=32--level=0[...] 下载本文示例代码
阅读(273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~