Linux RAID详细配置.docx
《Linux RAID详细配置.docx》由会员分享,可在线阅读,更多相关《Linux RAID详细配置.docx(28页珍藏版)》请在冰豆网上搜索。
![Linux RAID详细配置.docx](https://file1.bdocx.com/fileroot1/2023-2/1/bb6a410b-4dea-4ad0-9a22-76fab3dff410/bb6a410b-4dea-4ad0-9a22-76fab3dff4101.gif)
LinuxRAID详细配置
1.21什么是软RAID0及特点;
RAID0是把两个或两个以上的容量相同的硬盘或分区,通过RAID控制器(硬RAID是通过RAID卡来实现的,软RAID是通过软件来实现的),结合为一个在容量上是RAID0下成员的容量的总和,在写入时,要向每个硬盘或分区同时写入数据。
在硬RAID中,RAID0的成员是以整个硬盘为单位的,把两个硬盘或两个以上的硬盘通过RAID卡绑定成为一个虚拟的磁盘设备,而每个硬盘就是RAID0的成员;
在软RAID0中,RAID0的成员是整个硬盘或分区,容量是加入RAID0的所有成员容量的总和。
在RAID0中每个成员的容量都是相同一致的。
比如我们把/dev/sdb、/dev/sdc、/dev/sdd三个容量大小为80G的硬盘做成RAID0,这时RAID0设备的容量就是三个硬盘的总和80x3=240G。
当然我们也可以,在写入数据时,系统要向每个硬盘同时写入数据,是以条块的形式写入。
比如我们存一份数据linuxsir.tar.gz到RAID0的设备中,这份数据是分拆成若干份被分散的写入到RAID0中的每个成员中。
只有RAID0中的每个成员正常运行,并且RAID0也正常运行的情况下,这份数据才是完整的。
RAID0中任何一个成员(硬盘分区)有有问题时,RAID0便不能运行,同时数据也不是完整的;
RAID0在读写速度上是比较快的,是普通不做RAID的两倍左右(注:
实际速度和机器的硬件配置有关),所以RAID0常被用于对存储效率要求较高,但对数据安全性要求不高的应用解决方案中;
安全性:
RAID0中有任何一个成员出现故障,整个RAID0就不能被激活。
数据不能保障;
1.22什么是软RAID1及特点;
RAID1就是把若干相同容量的硬盘或分区,成员与成员之间是镜像关系。
在容量上,RAID1设备是单个成员的容量。
比如两个80G的硬盘做成RAID1,这个RAID1的设备容量仍是80G。
比如我们写入一个份数据linuxsir.tar.bz2到RAID1设备时,其实是向RAID的每个成员都写了一份。
比如RAID1设备下有两个成员/dev/sdb和/dev/sdc,我们写入linuxsir.tar.bz2到RAID1时,/dev/sdb和/dev/sdc都有一份完整的linuxsir.tar.bz2。
所以RAID1是冗余的阵列,一般被用于安全性要求比较高的应用中。
因为RAID1在由于镜像冗余,所以磁盘利用效率并不高,或者说是“浪费”。
这种方案相对来说性价比并不高,一般很少应用。
数据读写效率要比RAID0慢。
安全性:
RAID1中只要有一个成员是健康的,RAID1完全可以激活,而且数据绝对是完整安全的。
如果所有的成员有故障,RAID1也就报废了。
哈哈,这不是废话吗?
1.23什么是软RAID5及特点;
软RAID5也是冗余安全的,RAID5是把至少三个硬盘或分区通过软件虚拟成为一个大的存储设备。
在容量上是(n-1)x单个硬盘(分区)容量,比如我们用三块80G硬盘做成RAID5,容量就是两块容量的和160G。
在写入上,数据被分拆成若干份,分别向RAID5的每个成员下写入。
比如把linuxsir.tar.bz2写入RAID5时,要先把linuxsir.tar.bz2分拆成若干份,分别写入RAID5成员中。
因为涉及到冗余,所以数据在读入速度上并不是很快,没办法和RAID0相比,但RAID5的写入数据速度没有RAID1和RAID0快,也没有不做RAID的磁盘写入速度要快;
因为RAID5在容量损失比较小,有冗余安全保障,另外写入速度比较快,从整体上来看,性价比比较高,所以被大范围内采用;
安全性:
当RAID5中的成员中有一个发生故障时,RAID5一样能启动和正常运行,只要n-1(注n>3)块硬盘或分区的不出故障,RAID5上的数据就是安全,对于一个文件存到RAID5设备中,只有成员是n-1(注n>3)无故障时,这份文件才是完整的。
比如RAID5有四个硬盘(或分区)做的,当一个硬盘或分区挂掉了,并不影响整个RAID5上数据的完整性和安全性。
1.24什么是软RAID10及特点;
软RAID10也是冗余安全阵列,是RAID0+1的集成,RAID10是把至少四个硬盘或分区通过软件虚拟成为一个大的存储设备。
在容量是:
n/2x单个硬盘(分区)容量,比如我们用四块80G硬盘做成RAID5,容量就是两块容量的和4/2x80=160G。
做RAID10所需要的硬盘或分区个数是偶数的。
RAID10,有RAID1的镜像特点,还有RAID0的速度。
可以这么理解RAID10,比如有四个硬盘做成的RAID10,过程是先把每两个硬盘做成RAID1,然后再两个RAID1的基础上再做成RAID0。
从理论上来说,RAID10应该继承RAID0的速度和RAID1的冗余安全。
但经过我在软RAID0、RAID1、RAID5、RAID10的测试过程中发现RAID10的写入速度是最慢的,测试方法是用超过1G的大文件几盘复制。
结果发现速度由高低的顺序是:
RAID0>不做RAID>RAID1>RAID5>RAID10
2在Linux中,软RAID的创建和管理;
在Linux中,软RAID是通mdadm来创建和管理的,mdadm是一个专用创建和管理RAID的软件,在Linux中,大多发行版本已经默认安装,mdadm能创建任何级别的软RAID;
在本节中,RAID创建并不是目的,我们还要查看学会RAID的状态,启动、停止RAID。
还要学会使用RAID。
所以RAID的使用应该包括创建、管理和使用。
RAID的使用就是在RAID设备上创建文件系统,然后供存储应用;
流程是:
[RAID创建]->[RAID管理]->[RAID的使用]
|
[RAID的维护]
2.1RAID的创建方法;
创建RAID有两个方法,
第一种方法:
用mdadm通过-C或--create参数来创建RAID。
这种方法,是把RAID信息写到每个RAID成员的superblocks(超级块)中,在每个RAID成员的超级块中,都会记录RAID的级别、成员、RAID的UUID等……这种方法把RAID的信息记录在各个成员的superblocks(超级块)中。
这种方法对于重装系统或系统发生灾难来来说,有利于现有RAID的恢复;这种方法是最常用的;
第二种方法:
用mdadm通过-B或--build参数来创建RAID。
这种方法并不把RAID的信息写入RAID成员的superblocks(超级块中),所以我们无法通过查看RAID成员信息来获得RAID的级别,以及RAID的成员等;这种方法对于重装系统或系统发生灾难来来说,不利于现有RAID的恢复;如果你想用第二种方法来创建RAID,可以在下面的语法中,把-C或--create换成-B或--build。
语法:
创建把RAID信息写入RAID每个成员的superblocks(超级块)中;
mdadm-C-v/dev/mdX-lY-nZRAID成员
或
mdadm--create--verbose/dev/mdX--level=Y--RAID-devices=ZRAID成员
注:
-C是--create的缩写,表示创建的意思;这种方法是创建把RAID信息写入每个RAID成员superblocks(超级块)的方法。
这是最常用的方法。
-v和--verbose,显示创建过程中详细的事件;
如果把-C或--create换成-B或--build,就是创建RAID的另一种方法,不把RAID信息写入RAID成员的superblocks(超级块)中,如果您试用,请自己尝试;
RAID设备:
/dev/mdX,RAID设备在Linux中,大多是/dev/md0,/dev/md1……第一个设备从/dev/md0开始。
比如你已经有RAID0设备是/dev/md0,你再想做一个RAID5,那就是/dev/md1,以此类推;
RAID级别:
用-lY或--level=Y表示,Y是RAID的级别。
RAID的级别有RAID0就用0表示,RAID1就用1表示,RAID5就用RAID5表示,RAID10就用10表示。
RAID的级别是根据自己的使用方向和现有磁盘和分区个数来定位。
如果你就想高速读写、大容量,对数据安全性要求不高,那就用RAID0,如果对数据要求较高,可以用RAID1或RAID5,再者就是RAID10。
比如-l0或--level=0表示RAID0,-l5或--level=5表示RAID5,-l1或--level=1表示RAID1,-l10或--level=10表示RAID10;
-nZ或--RAID-devices=Z表示RAID成员的个数,比如我们把三个硬盘分分区做成一个RAID,那就是3个设备。
就要写成这样-n3或--RAID-devices=3;值得注意的是RAID0和RAID1至少需要两个设置,RAID5至少需要三个设备,RAID10至少四个设备;
RAID成员:
也就是RAID的组成设备,要一个一个的列出来,每个设备后要用空格来隔开;比如我们把/dev/sdb、/dev/sdc、/dev/sdd三个硬盘做成RAID0,在RAID设备这块,我们要写成/dev/sdb/dev/sdc/dev/sdd;软件RAID的成员还可以是分区,比如/dev/sdb1、/dev/sdc1……
举例一:
我们要做一个RAID0,成员是/dev/sdb、/dev/sdc两个硬盘设备。
我们要运行如下命令;
mdadm-C--verbose/dev/md0-l0-n2/dev/sdb/dev/sdc
或
mdadm-C--verbose/dev/md0--level=0--RAID-devices=2/dev/sdb/dev/sdc
如果我们想把/dev/sdb1、/dev/sdc1和/dev/sdd1三个分区做成RAID0呢?
mdadm-C-v/dev/md0-l0-n3/dev/sd[bcd]1
或
mdadm-C--verbose/dev/md0--level=0--RAID-devices=3/dev/sdb1/dev/sdc1/dev/sdd1
举例二:
我们要做一个RAID5,成员是/dev/sdb、/dev/sdc、/dev/sdd三个设备,我们要运行如下命令;
mdadm-C-v/dev/md0-l5-n3/dev/sd[bcd]
或
mdadm-C--verbose/dev/md0--level=5--RAID-devices=3/dev/sdb/dev/sdc/dev/sdd
如果我们想把/dev/sdb1、/dev/sdc1和/dev/sdd1三个分区做成RAID5呢?
mdadm-C-v/dev/md0-l5-n3/dev/sd[bcd]1
或
mdadm-C--verbose/dev/md0--level=5--RAID-devices=3/dev/sdb1/dev/sdc1/dev/sdd1
创建完成后,RAID也就立即启动了。
我们会发现有类似如下一行的提示信息:
mdadm:
array/dev/md0started.
我们要可以通过下面的命令来查看RAID的信息;
mdadm-Ds/dev/md0
mdadm-D/dev/md0
2.2RAID管理工具;
RAID的管理包括创建、启动、状态查看等一系列工具;我们只说常用的使用方法;
2.21RAID的启动方法;
RAID的启动有两种方法,一种是指定RAID设备和RAID成员的办法来启动RAID,另一种办法是通过加载RAID默认的配置文件来启动。
第一种方法:
不通过读取mdadm.conf来启动RAID;适用情况是你没有配置/etc/mdadm.conf文件;
语法:
mdadm-ARAID设备RAID成员
注:
-A同--assemble,意思是激活一个已经存在的RAID;
RAID设备,就是/dev/md0或/dev/md1……根据你所创建的RAID设备为准;
RAID成员,就是你要启动的RAID,其下属设备有哪些,要一个一个的列出来,中间以空格分开;
举例:
比如我要启动一个RAID,设备是/dev/md0,其下有成员是/dev/sdb和/dev/sdc;所以我要用下面的办法;
[root@linuxsir:
~]mdadm-A/dev/md0/dev/sdb/dev/sdc
注:
这种情况,是没有配置RAID的配置文件/etc/mdadm.conf时,所使用的启动方法;如果您已经配置好了/etc/mdadm.conf文件,就可以用mdadm-As来启动;
第二种方法:
利用配置好的/etc/mdadm.conf来启动RAID;
mdadm-ARAID设备
或
mdadm-As
注:
这种启动方法的前提是要配置/etc/mdadm.conf文件,要把您系统中所有的RAID,都写入这个文件,然后就可以简单的用这个命令来启动了;
-A同--assemble,意思是激活一个已经存在的RAID;
RAID设备,就是/dev/md0或/dev/md1……根据你所创建的RAID设备为准;
举例:
[root@linuxsir:
~]mdadm-A/dev/md0
[root@linuxsir:
~]mdadm-As
注:
比如我配置好/etc/mdadm.conf后,启动RAID设备/dev/md0,就用上面的办法。
具体mdadm.conf的写法,请参见RAID的配置文件一节;
2.22RAID管理工具一些常用参数说明;
mdadm参数[RAID设备][RAID成员]
-A或--assemble激活一个RAID;
-S和--stop停止正在运行的设备;
-s或--scan扫描RAID设备;
-D或--detail查看RAID的详细信息;
--examine查看RAID成员的详细信息;
注:
其中[]中的选项是可选的。
举例:
[root@linuxsir:
~]#mdadm-As
[root@linuxsir:
~]#mdadm-Ss
[root@linuxsir:
~]#mdadm-Ds
[root@linuxsir:
~]#mdadm--examine/dev/sdb
注:
上面的些标例,都是在配置好/etc/mdadm.conf的情况下,运行的,如果您没配置好mdadm.conf文件,请指定RAID设备及其成员;其中,--As是搜索/etc/mdadm.conf,然后根据mdadm.conf配置好的RAID信息来启动RAID。
-Ss是搜索正在运行的RAID,然后停止。
-Ds搜索RAID,查看RAID信息;--examine/dev/sdb是查看其中一块硬盘的RAID信息,这个很有用。
比如你忘记了RAID的成员和UUID,想恢复现有的RAID,就要用这个来查看,然后重新让RAID启动起来。
比如系统有一个RAID,但在/etc/mdadm.conf中没有相应的记录RAID信息。
我不知道这个RAID是哪个类型的,是RAID0,还是RAID1,还是RAID5?
?
到底机器中有几个RAID?
如果您是一个新接手的管理员,应该想知道这些信息。
那就一个一个硬盘,一个一个的分区查看过去。
从中找出系统中所有的RAID。
然后一个一个的恢复。
这时就要用到--examine这个参数了;
[root@linuxsir:
~]#fdisk-l
[root@linuxsir:
~]##mdadm--examine/dev/sdb
/dev/sdb:
Magic:
a92b4efc
Version:
00.90.00
UUID:
35e1a3e6:
ed59c368:
e5bc9166:
5004fe52
CreationTime:
WedAug107:
11:
432007
RAIDLevel:
RAID0
UsedDevSize:
0
RAIDDevices:
2
TotalDevices:
2
PreferredMinor:
0
UpdateTime:
ThuAug207:
43:
302007
State:
active
ActiveDevices:
2
WorkingDevices:
2
FailedDevices:
0
SpareDevices:
0
Checksum:
8f8a235e-correct
Events:
0.29
ChunkSize:
64K
NumberMajorMinorRAIDDeviceState
this08160activesync/dev/sdb
008160activesync/dev/sdb
118321activesync/dev/sdc
注:
首先:
我们用fdisk-l查看一下机器中所有硬盘和分区,如果不能完全列出,请指定具体硬盘。
其次:
我们查看一下某个硬盘或分区上是否有RAID信息,比如我查看的是/dev/sdb,结果显示出,/dev/sdb是RAID0设备的一个成员,/dev/sdb和/dev/sdc共同组成的RAID0;
得到这些信息有何用呢?
我们就可以激活RAID,或重写/etc/mdadm.conf,让RAID重新运行起来。
在此过程中,千万不要用-C或--create参数来重新创建RAID,否则你以前存在的RAID就被破坏,里面的数据当然也会一无所有!
!
!
切记。
在一个有数据的RAID中,不能随便用-C参数。
如果用了-C或--create就是创建一个新的RAID设备!
2.3RAID的配置文件;
RAID并不是一定要配置文件,但有配置文件,会方便管理,比如RAID最精简的方法执行、状态查看……也需要RAID的配置文件。
如果不没有配置文件,还要指定RAID成员;
RAID的配置文件是mdadm.conf位于/etc目录,如果你没有这个文件,可以自己创建一个;当我们做好RAID后,首先要配置这个文件;把你所有的RAID配置信息都写入这个文件。
我们可以自己手工编写。
参照mdadm.conf配置文件的示例就比较方便。
你也可以用下面的办法,要先做好/etc/mdamd.conf的备份;
[root@linuxsir~]mv/etc/mdadm.conf/etc/mdadm.conf.bak
第一步:
搜索RAID;
搜索RAID是以激活RAID为前掉条件,否则下面的命令不会有什么作用;请参见激活RAID的办法;
语法:
mdadm-Ds
注:
其中-D表示--detail,-s表示--scan,两者结合起来就-Ds;
提示:
运行查询RAID的时,要首先激活RAID;
举例:
[root@linuxsir~]mdadm-Ds
ARRAY/dev/md0level=RAID0num-devices=2UUID=35e1a3e6:
ed59c368:
e5bc9166:
5004fe52
第二步:
查询RAID的详细信息;主要是查看RAID的成员有哪些;
语法:
mdadm-DRAID设备
举例:
下面查询已经启动了的RAID设备/dev/md0的详细信息;
[root@linuxsir~]mdadm-D/dev/md0
/dev/md0:
Version:
00.90.03
CreationTime:
WedAug107:
11:
432007
RAIDLevel:
RAID0
ArraySize:
156249856(149.01GiB160.00GB)
RAIDDevices:
2
TotalDevices:
2
PreferredMinor:
0
Persistence:
Superblockispersistent
UpdateTime:
ThuAug207:
22:
272007
State:
clean
ActiveDevices:
2
WorkingDevices:
2
FailedDevices:
0
SpareDevices:
0
ChunkSize:
64K
UUID:
35e1a3e6:
ed59c368:
e5bc9166:
5004fe52
Events:
0.21
NumberMajorMinorRAIDDeviceState
08160activesync/dev/sdb
18321activesync/dev/sdc
注:
通过查询详细信息,我们得到/dev/md0是RAID0,下面两个成员/dev/sdb和/dev/sdc;UUID为35e1a3e6:
ed59c368:
e5bc9166:
5004fe52;这个RAID是有超级块的;
第三步:
书写RAID的配置文件mdadm.conf;
[root@linuxsir~]mdadm-Ds》/etc/mdadm.conf注:
把查询出来的RAID信息写到mdadm.conf中;
[root@linuxsir~]more/etc/mdadm.conf注:
看看有没有内容写进来?
ARRAY/dev/md0level=RAID0num-devices=2UUID=35e1a3e6:
ed59c368:
e5bc9166:
5004fe52
因为我们在前面已经通过mdadm-D/dev/md0得知其下有成员/dev/sdb和/dev/sdc两块硬盘。
所以我们要修改一下mdamd.conf的内容。
要在加上/dev/md0的成员/dev/sdb和/dev/sdc;用编辑器打开/etc/mdadm.conf;
在下面类似的一行;
ARRAY/dev/md0level=RAID0num-devices=2UUID=35e1a3e6:
ed59c368:
e5bc9166:
5004fe52
修改成
ARRAY/dev/md0level=RAID0num-devices=2UUID=35e1a3e6:
ed59c368:
e5bc9166:
5004fe52devices=/dev/sdb,/dev/sdc
其实也就是把/dev/md0这个RAID设备的成员指定出来,每个设备之间要用,号隔开。
或者写成devices=/dev/sd[bc]类似的写法也行;
我们来看一下/dev/md0这行,其中/dev/md0这行是一个RAID0设备,由两个成员组成,/dev/md0的UUID为UUID=35e1a3e6:
ed59c368:
e5bc9166:
5004fe52,两个成员分别是/dev/sdb和