软RAID工具的使用.docx
《软RAID工具的使用.docx》由会员分享,可在线阅读,更多相关《软RAID工具的使用.docx(14页珍藏版)》请在冰豆网上搜索。
软RAID工具的使用
Ubuntu下软RAID工具的使用
——刘煦阳
1、RAID和RAID级别
RAID全称是“RedundantArraysofInexpensiveDisks”(磁盘阵列)。
RAID就是把几个物理磁盘组合在一起成为一个大的虚拟物理磁盘,主要目的和用途主要有:
把若干小容量物理磁盘组成一个大容量虚拟存储设备(以前的物理磁盘的容量都比较小);提高物理存储效率(读、写),或提供冗余以提高数据存储的安全性。
、
1、硬件RAID和软件RAID
RAID分为硬件RAID和软件RAID,硬件RAID通过RAID卡来实现,而软件RAID通过软件来实现;在企业级应用领域,大部份都是硬件RAID。
而软件RAID由于性价比高,大多被中小型企业所采用.
硬件RAID的成员是整个硬盘,软件RAID的成员是整个硬盘或分区。
2、RAID的级别
RAID有RAID0(分条),RAID1(镜像),RAID4,RAID5,RAID6,RAID10,LINEAR,MULTIPATH和FAULTY等几种级别。
其中常用的有RAID0、RAID1、RAID5、RAID10。
2、软RAID的创建和管理
在Linux中,通常使用mdadm来创建和管理软RAID。
mdadm是一个专用创建和管理RAID的软件,能创建任何级别的软RAID。
本节将介绍软RAID的创建、启动、停止、状态查看以及使用等。
RAID的使用就是在RAID设备上创建文件系统,然后提供具体数据存储。
1、RAID的创建方法
创建RAID有两个方法,
(1)使用--create(或-C)参数。
这种方法把RAID信息写到每个RAID成员的超级块中,在每个RAID成员的超级块中,都会记录RAID的级别、成员、RAID的UUID等。
这种方法对于重装系统或系统发生灾难来来说,有利于现有RAID的恢复,所以是最常用的。
(2)使用--build(或-B)参数。
这种方法不把RAID的信息写入RAID成员的超级块中,所以无法通过查看RAID成员信息来获得RAID的级别,以及RAID的成员等。
这种方不利于RAID数据丢失后的恢复。
语法:
mdadm--create--verboseRAID设备--level=Y--RAID-devices=Z成员设备
或
mdadm-CvRAID设备-lY-nZ成员设备
-C:
--create的缩写,创建
-v:
--verbose的缩写,显示详细信息
-l:
--level的缩写,创建的RAID级别
-n:
--RAID-devices的缩写,RAID成员数
2、RAID管理工具
RAID的管理包括创建、启动、状态查看等一系列工具,这里介绍常用的使用方法。
(1)RAID的启动方法;
RAID的启动有两种方法,一种是指定RAID设备和RAID成员的办法来启动RAID,另一种办法是通过加载RAID默认的配置文件来启动。
1)不通过读取mdadm.conf来启动RAID,适用情况是没有配置/etc/mdadm/mdadm.conf文件;
语法:
mdadm-ARAID设备成员设备
-A:
--assemble的缩写,激活一个已经存在的RAID
RAID设备即/dev/md0,/dev/md/1等,RAID成员就是你要启动的RAID的成员设备,中间以空格分开。
2)利用配置好的mdadm.conf来启动RAID,前提是要配置/etc/mdadm/mdadm.conf文件
mdadm-ARAID设备
或
mdadm-As
(2)RAID管理工具一些常用参数说明;
mdadm参数 [RAID设备] [RAID成员]
--assemble(-A)激活一个RAID
--stop(-S)停止正在运行的设备
--scan(-s)扫描RAID设备
--detail(-D)查看RAID的详细信息
--examine(-E)查看RAID成员的详细信息
3、RAID的配置文件
RAID配置文件不是必需的,但有配置文件会方便管理,比如RAID最精简的方法执行、状态查看,如果没有配置文件,还要指定RAID成员。
RAID的配置文件是/etc/mdadm/mdadm.conf,如果没有这个文件,可以自己创建一个。
配置此文件时,可以参照示例文件/usr/share/doc/madam/examples/mdadm.conf-example,将所有RAID的配置信息都写进去,编辑之前,先备份原文件
cp/etc/mdadm/mdadm.conf/etc/mdadm/mdadm.conf.bak
1)搜索RAID,前提条件是RAID已激活
mdadm-Ds
2)查询RAID的详细信息,主要是查看RAID的成员有哪些
mdadm-DRAID设备
3)编辑配置文件mdadm.conf
格式:
ARRAYRAID设备level=RAID级别num-devices=成员数量UUID=RAID设备UUID号devices=成员设备1,成员设备2,...
3、案例
本章将介绍创建一个RAID5阵列,然后模拟磁盘故障,并添加替换磁盘的完整过程,供参考。
注:
以下操作都是以root身份进行的。
1、RAID的创建
(1)配置RAID5至少需要三块硬盘(或三个分区),此处为/dev/sdb,/dev/sdc,/dev/sdd
root@kylin:
~#fdisk-l|grep"Disk/dev/sd"
Disk/dev/sda:
21.5GB,21474836480bytes
Disk/dev/sdb:
10.7GB,10737418240bytes
Disk/dev/sdc:
10.7GB,10737418240bytes
Disk/dev/sdd:
10.7GB,10737418240bytes
(2)创建RAID5
root@kylin:
~#mdadm-Cv/dev/md0-l5-n3/dev/sd[b-d]
mdadm:
layoutdefaultstoleft-symmetric
mdadm:
layoutdefaultstoleft-symmetric
mdadm:
chunksizedefaultsto512K
mdadm:
sizesetto10477056K
mdadm:
Defaultingtoversion1.2metadata
mdadm:
array/dev/md0started.
执行完创建命令后,可以查看RAID状态信息,包括成员同步的进度
root@kylin:
~#cat/proc/mdstat
Personalities:
[linear][multipath][raid0][raid1][raid6][raid5][raid4][raid10]
md0:
activeraid5sdd[3]sdc[1]sdb[0]
20954112blockssuper1.2level5,512kchunk,algorithm2[3/2][UU_]
[=======>.............]recovery=35.0%(3670708/10477056)finish=1.5min
speed=72541K/sec
unuseddevices:
也可以直接查看/dev/md0的详细信息:
root@kylin:
~#mdadm-D/dev/md0
/dev/md0:
Version:
1.2
CreationTime:
MonJan1914:
30:
322015
RaidLevel:
raid5
ArraySize:
20954112(19.98GiB21.46GB)
UsedDevSize:
10477056(9.99GiB10.73GB)
RaidDevices:
3
TotalDevices:
3
Persistence:
Superblockispersistent
UpdateTime:
MonJan1914:
31:
192015
State:
clean,degraded,recovering
ActiveDevices:
2
WorkingDevices:
3
FailedDevices:
0
SpareDevices:
1
Layout:
left-symmetric
ChunkSize:
512K
RebuildStatus:
35%complete
Name:
kylin:
0(localtohostkylin)
UUID:
f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
Events:
6
NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
38482sparerebuilding/dev/sdd
mdadm-D可以查看超级块元数据版本、创建时间、RAID级别、容量(包括阵列大小和校验大小)、设备数量、超级块、更新时间、成员设备状态以及块大小等信息。
上面的信息提示RAID正处于重建中,进度为35%,/dev/sdb和/dev/sdc已经同步完成,/dev/sdd正在重建。
一段时间后,成员数据同步完成:
root@kylin:
~#cat/proc/mdstat
Personalities:
[linear][multipath][raid0][raid1][raid6][raid5][raid4][raid10]
md0:
activeraid5sdd[3]sdc[1]sdb[0]
20954112blockssuper1.2level5,512kchunk,algorithm2[3/3][UUU]
unuseddevices:
root@kylin:
~#mdadm-D/dev/md0
/dev/md0:
Version:
1.2
CreationTime:
MonJan1914:
30:
322015
RaidLevel:
raid5
ArraySize:
20954112(19.98GiB21.46GB)
UsedDevSize:
10477056(9.99GiB10.73GB)
RaidDevices:
3
TotalDevices:
3
Persistence:
Superblockispersistent
UpdateTime:
MonJan1914:
33:
022015
State:
clean
ActiveDevices:
3
WorkingDevices:
3
FailedDevices:
0
SpareDevices:
0
Layout:
left-symmetric
ChunkSize:
512K
Name:
kylin:
0(localtohostkylin)
UUID:
f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
Events:
18
NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
38482activesync/dev/sdd
(3)更新配置文件和initramfs
一般来说,创建好RAID后,最好将RAID的信息写进/etc/mdadm/mdadm.conf配置文件,并更新initramfs,以便下次系统启动的时候RAID能自动正确地激活。
(对于3.0内核的系统,如果不做这一步,很可能开机时RAID名称会变成/dev/md127,/dev/md126等等)
root@kylin:
~#mdadm-Ds
ARRAY/dev/md/0metadata=1.2name=kylin:
0UUID=f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
root@kylin:
~#mdadm-Ds>>/etc/mdadm/mdadm.conf
root@kylin:
~#update-initramfs-u
update-initramfs:
Generating/boot/initrd.img-3.13.0-44-generic
接下来就可以对RAID进行分区或者直接格式化了。
分区或格式化的方法与普通磁盘一样。
2、RAID的扩容
RAID的扩容针对已经做好的RAID,在存储过程中发现RAID容量不足的情况。
如果是一个新做的RAID,发现计划错了,只需要重新做一次就行了,没必要用扩容的办法。
应用范围是RAID1、RAID4、RAID5、RAID6。
RAID扩容流程:
向已存在的RAID中添加成员—>执行扩容指令
(1)准备用于扩容的硬盘,容量最好与已有成员一致,此处为/dev/sde
root@kylin:
~#fdisk-l|grep"Disk/dev/sd"
Disk/dev/sda:
21.5GB,21474836480bytes
Disk/dev/sdb:
10.7GB,10737418240bytes
Disk/dev/sdc:
10.7GB,10737418240bytes
Disk/dev/sdd:
10.7GB,10737418240bytes
Disk/dev/sde:
10.7GB,10737418240bytes
(2)将/dev/sde添加为RAID成员:
root@kylin:
~#mdadm/dev/md0-a/dev/sde
mdadm:
added/dev/sde
查看RAID状态
root@kylin:
~#cat/proc/mdstat
Personalities:
[linear][multipath][raid0][raid1][raid6][raid5][raid4][raid10]
md0:
activeraid5sde[4](S)sdc[1]sdb[0]sdd[3]
20954112blockssuper1.2level5,512kchunk,algorithm2[3/3][UUU]
unuseddevices:
root@kylin:
~#mdadm-D/dev/md0
/dev/md0:
Version:
1.2
CreationTime:
MonJan1914:
30:
322015
RaidLevel:
raid5
ArraySize:
20954112(19.98GiB21.46GB)
UsedDevSize:
10477056(9.99GiB10.73GB)
RaidDevices:
3
TotalDevices:
4
Persistence:
Superblockispersistent
UpdateTime:
TueJan2011:
27:
202015
State:
clean
ActiveDevices:
3
WorkingDevices:
4
FailedDevices:
0
SpareDevices:
1
Layout:
left-symmetric
ChunkSize:
512K
Name:
kylin:
0(localtohostkylin)
UUID:
f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
Events:
19
NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
38482activesync/dev/sdd
4864-spare/dev/sde
由上可知,/dev/sde被加入到了RAID中,并且身份是备用成员
(3)使用备用成员扩充RAID容量
这里将用到RAID的扩充模式(Grow)。
扩充模式非常简单,有--size参数,-n参数,--size是指定RAID大小,具体由RAID级别而定,可以省略。
-n为RAID真正成员的个数。
root@kylin:
~#mdadm-G/dev/md0-n4
mdadm:
Needtobackup3072Kofcriticalsection..
查看RAID状态,显示RAID正在重建,数据容量仍为20GiB
root@kylin:
~#cat/proc/mdstat
Personalities:
[linear][multipath][raid0][raid1][raid6][raid5][raid4][raid10]
md0:
activeraid5sde[4]sdc[1]sdb[0]sdd[3]
20954112blockssuper1.2level5,512kchunk,algorithm2[4/4][UUUU]
[====>................]reshape=20.0%(2100736/10477056)finish=14.2minspeed=9807K/sec
unuseddevices:
root@kylin:
~#mdadm-D/dev/md0
/dev/md0:
Version:
1.2
CreationTime:
MonJan1914:
30:
322015
RaidLevel:
raid5
ArraySize:
20954112(19.98GiB21.46GB)
UsedDevSize:
10477056(9.99GiB10.73GB)
RaidDevices:
4
TotalDevices:
4
Persistence:
Superblockispersistent
UpdateTime:
TueJan2011:
50:
362015
State:
clean,reshaping
ActiveDevices:
4
WorkingDevices:
4
FailedDevices:
0
SpareDevices:
0
Layout:
left-symmetric
ChunkSize:
512K
ReshapeStatus:
20%complete
DeltaDevices:
1,(3->4)
Name:
kylin:
0(localtohostkylin)
UUID:
f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
Events:
58
NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
38482activesync/dev/sdd
48643activesync/dev/sde
等待一段时间后,重塑完成,再次查看RAID状态,数据容量变为30GiB了
root@kylin:
~#cat/proc/mdstat
Personalities:
[linear][multipath][raid0][raid1][raid6][raid5][raid4][raid10]
md0:
activeraid5sde[4]sdc[1]sdb[0]sdd[3]
31431168blockssuper1.2level5,512kchunk,algorithm2[4/4][UUUU]
unuseddevices:
root@kylin:
~#mdadm-D/dev/md0
/dev/md0:
Version:
1.2
CreationTime:
MonJan1914:
30:
322015
RaidLevel:
raid5
ArraySize:
31431168(29.98GiB32.19GB)
UsedDevSize:
10477056(9.99GiB10.73GB)
RaidDevices:
4
TotalDevices:
4
Persistence:
Superblockispersistent
UpdateTime:
TueJan2013:
51:
352015
State:
clean
ActiveDevices:
4
WorkingDevices:
4
FailedDevices:
0
SpareDevices:
0
Layout:
left-symmetric
ChunkSize:
512K
Name:
kylin:
0(localtohostkylin)
UUID:
f220b9f5:
b05f9e6c:
1a9a6855:
1d4b6a68
Events:
124
NumberMajorMinorRaidDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
38482activesync/dev/sdd
48643activesync/dev/sde
查看/var/log/syslog,可以看到RAID设备/dev/md0重建完成,数据容量由20GiB增加到了30GiB
root@kylin:
~#tail/var/log/syslog
Jan2013:
51:
35kylinkernel:
[9007.211151]md:
md0:
reshapedone.
Jan2013:
51:
35kylinkernel:
[9007.243193]RAIDconfprintout:
Jan2013:
51:
35kylinkernel:
[9007.243196]---level:
5