标签:raid0 raid5 raid1 software raid0+1 stripe
Software Raid(软件磁盘阵列)
1.1、什么是Raid
磁盘阵列的英文全名是Redundant Arrays Inexpensive Disk(Raid),及容错廉价的磁盘阵列。Raid可以通过一些技术(软件或硬件)将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能可不止是存储而已,它还具有数据保护的功能。整个Raid由于选择等级(level)不同,而使得整合后的磁盘具有不同的功能,基本常见的等级有这几种。
Raid-0(等量模式,stripe):性能最佳,风险最大
这种模式如果使用相同型号与容量的磁盘来组成时效果最佳。这种模式的Raid会将磁盘先切出等量的区块(举例来说,4KB),然后当一个文件要写入Raid时,该文件会一句块的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错存放数据,因此当你的数据要写入Raid时,数据会被等量放置在各个磁盘上面。举例来说,你有两块磁盘组成Raid-0,
Raid-1(映像模式,mirror):完整备份
这种模式也是需要相同的磁盘容量的,最好是一模一样的两块磁盘。如果是不同容量的磁盘组成Raid-1时,那么总容量将以最小的那块磁盘为主!这种模式主要是让同一份数据完整保存在两块磁盘上。举例来说,如果我们有一个100MB的文件,且我仅有两块磁盘组成Raid-1时,那么两块磁盘将会同步写入100MB的数据。因此,整体的Raid的容量就浪费了50%。由于两块磁盘内容一样,好像是被镜子找出来一样,所以我们成为mirror(镜像)模式。
如图1-2所示,一份数据传送到Raid-1之后会被分为两股,并分别写入到两块磁盘里去。由于同一份数据被分别写入到其他不同的磁盘中,一次如果需要向Raid-1中写入100MB的数据是,数据传到I/O总线后会被复制多份分别写入到各个磁盘中去。结果就是数据量
变大了。因此在大量写入Raid-1时,写入的性能会下降(因为我们只有一个南桥芯片)。还可以使用硬件Raid(磁盘阵列卡)时,磁盘阵列卡会主动复制一份而不使用系统的I/O总线,性能方面还是不错的,如果使用软Raid时,可能性能就不好了
由于两块磁盘的数据一模一样,所以任何一块磁盘损毁时,你的数据还是可以完全保留下来。所以我们可以说,Raid-1最大的优点大概就在于数据备份。不过由于磁盘容量有一半是用在备份,因此总容量会是全部磁盘的一半而已。虽然Raid-1的写入性能不佳,不过读取性能还可以。这是因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据时,Raid回自行取得最佳的读取平衡。
Raid0+1,Raid1+0
Raid-0的性能佳但是数据不安全,Raid-1数据安全但是性能不佳,那么Raid0+1或1+0就可以实现将这两者整合起来。所谓的Raid0+1就是先让两块磁盘组成Raid-0,并且这样的设置共有两组;然后将这两组组合成Raid-1.这就是Raid0+1,。Raid1+0就是先将两块磁盘组成Raid-1,在组成Raid-0的意思。
如图1-3所示,Disk A+Disk B组成第一组Raid-0, Disk C+Disk D组成第二组Raid-0,然后将这两组在组合成一组Raid-1.如果我有100MB的数据要写入,则由于Raid-1的关系,两组数据都会写入100MB,但由于Raid-0的关系,因此每块磁盘仅会写入50MB。如此一来无论哪一组Raid-0孙桓,只要另一组的Raid-0还存在,那么就会通过Raid-1的机制来恢复数据。
但由于Raid-0的优点,所有性能得到提升,由于Raid-1的优点所有数据得到备份。但也由于Raid-1的缺点,总容量会减小一半。
Raid-5性能与数据备份的均衡考虑
Raid-5只要需要三块以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似Raid-0,不过每个循环的写入过程中,在每块磁盘还加入一个同位检查数据(Parity),这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。Raid-5读写的情况如图1-4所示。
图中,每个循环写入时,都会有部分的同位检查码(Parity)被记录起来,并且记录的同位检查码每次都会在不同的磁盘上记录,因此,任何一个磁盘损坏时都能够通过其他磁盘的检查码来重建数据。不过需要注意的是,由于有同位检查码,因此Raid-5的总容量回事整体磁盘数量减一半。以上图为例,原本的3块磁盘只会剩下(3-1)=2块磁盘的容量,而且当磁盘损坏量大于2的时候数据就彻底的毁了。因此Raid-5默认仅支持一块磁盘的损坏情况。
在读写性能的比较上,读取性能还不赖。与Raid-0相似,不过写的性能就不间的能够增强多少。这是因为要写入Raid-5的数据需要经过计算同位校验码(Parity)的关系。由于加上这个计算的操作,所以写入的性能与系统的硬件关系较大。尤其当使用软件磁盘阵列时,同位检查码是通过CPU来计算的,因此性能方面还需要评估。
另外,由于Raid-5仅能支持一块磁盘的损坏,因此进来还有发展一种新的等级,就是Raid-6,这个Raid-6支持同时损坏两块磁盘,因此整体的磁盘容量就会少两块。
Spare Disk:预备磁盘阵列
当阵列的磁盘受损失,就得要将坏的磁盘拔掉,然后换一块新的磁盘。换成新磁盘并且顺利启动磁盘阵列后,磁盘阵列就会开始主动重建(rebuild)原本坏掉的那块磁盘数据到新的磁盘上,然后你磁盘阵列上面的数据就恢复了。这就是磁盘阵列的优点。不过,我们还是得手动插拔磁盘,此时有些设备需要关机之后才可以这么做,现在大多数设备已经支持热插拔,意思就是不用关机也可以支持更换磁盘。
为了让系统可以实时的在坏掉的磁盘上主动重建,因此就需要预备磁盘(spare disk)的辅助。所谓的spare disk就是一块或多块没有包含在原本磁盘阵列等级中的磁盘,这块磁盘平时并不会被磁盘阵列所使用,当磁盘出现损坏时,则这块磁Spare disk会被主动拉进磁盘阵列中,并将坏掉的那块磁盘移出磁盘阵列,然后立即重启数据系统。如此你的系统则可永保安康。若你的磁盘阵列有支持热插拔的功能那就更完美了,直接将坏掉的那块磁盘拔出换一块新的,再将那块新的设置成为spare disk,那就完美了!
磁盘阵列的优点:
数据安全可靠:值得并非信息安全,而是当硬件(磁盘)损坏时,数据是否还能够安全救援或使用之意。
读写性能;例如Raid-0可以加强读写性能,让你的系统I/O部分得到改善。
容量:可以让多块磁盘组合起来,故单一文件系统可以有相当大的容量。
Software,hardware Raid
为何磁盘阵列又分为硬件和软件呢?所谓的硬件磁盘阵列(hardware Raid)是通过磁盘阵列卡完成数据组目的。磁盘阵列卡上面有一块专门的芯片在处理Raid的任务,因此在性能方面会比较好。在多任务时(例如Raid-5的同位检查码计算)磁盘阵列并不会消耗原本系统I/O总线,理论上性能会比较佳。此外目前一般的中高级磁盘阵列卡都支持热插拔。
不过一块好的磁盘阵列动不动就上万,便宜的在主板上面“附赠”的磁盘阵列功能可能又不支持某些高级功能,例如低级主板若有磁盘阵列芯片,通常只支持到Raid-0到Raid-1,并没有大家所喜欢的Raid-5.此外操作系统也必须要具有磁盘这列的驱动程序,才能够正确识别磁盘阵列所产生的磁盘驱动器。
由于磁盘这里有很多优秀的功能,然而硬件磁盘阵列卡偏偏有贵得很,因此就有发展出利用软件来仿真磁盘阵列的功能,这就是所谓的软磁盘阵列(software Raid)。软件磁盘阵列主要是通过软件来模仿真实组的任务,因此损耗较多的系统资源,比如说CPU的运算和I/O总线等。不过目前我们的个人计算机实在已经非常快了,因此以前的速度限制现在也已经不存在!所以我么可以来玩一玩软件磁盘阵列。
我们使用的操作系统是CentOS,软件磁盘阵列为mdadm这套软件,这套软件会以分区或磁盘为单位,也就是说,你不需要两块以上的磁盘,只要有两个以上的分区就够了,此外,mdadm支持刚才我们前面提到的Raid-0/Raid-1/Raid-5/Spare disk等,而且提供的管理机制还可以达到类似热插拔的功能,可以在线(文件系统正常运行)进行分区的抽换,使用上也非常方便呢!
另外你还需要知道的是,硬件磁盘阵列在linux下就是一块大磁盘,因此硬件磁盘阵列的设备名为/dev/sdb/sd[a-p],因此使用到SCSI的模块之故。至于软件磁盘阵列则是系统仿真的,因此使用的设备文件名是系统的设备文件,文件名为/dev/md0….等,两者的文件名并不相同!
1.2、磁盘阵列的设置
试验计划:
利用4个分区组成Raid-5;
每个分区约为1GB大小,需要确定每个分区一样大较佳;
利用一个分区设置为spare disk;
这个spare disk的大小与其他Raid所需分区一样大!
将次Raid-5挂载到/mnt/raid目录下。
实验步骤
1、创建分区
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to
switch off the mode (command ‘c‘) andchange display units to
sectors (command ‘u‘).
Command (m for help): p
Disk /dev/sdb: 107.4 GB,107374182400 bytes
255 heads, 63 sectors/track, 13054cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512bytes / 512 bytes
Disk identifier: 0x74429a75
Device Boot Start End Blocks Id System
/dev/sdb1 1 3917 31463271 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-3917, default1):
Using default value 1
Last cylinder, +cylinders or+size{K,M,G} (1-3917, default 3917): +1G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (133-3917, default133):
Using default value 133
Last cylinder, +cylinders or+size{K,M,G} (133-3917, default 3917): +1G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (265-3917, default265):
Using default value 265
Last cylinder, +cylinders or+size{K,M,G} (265-3917, default 3917): +1G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (397-3917, default397):
Using default value 397
Last cylinder, +cylinders or+size{K,M,G} (397-3917, default 3917): +1G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (529-3917, default529):
Using default value 529
Last cylinder, +cylinders or+size{K,M,G} (529-3917, default 3917): +1G
Command (m for help): p
Disk /dev/sdb: 107.4 GB,107374182400 bytes
255 heads, 63 sectors/track, 13054cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512bytes / 512 bytes
Disk identifier: 0x74429a75
Device Boot Start End Blocks Id System
/dev/sdb1 1 3917 31463271 5 Extended
/dev/sdb5 1 132 1060227 83 Linux
/dev/sdb6 133 264 1060258+ 83 Linux
/dev/sdb7 265 396 1060258+ 83 Linux
/dev/sdb8 397 528 1060258+ 83 Linux
/dev/sdb9 529 660 1060258+ 83 Linux
Command (m for help): w
The partition table has beenaltered!
Calling ioctl() to re-readpartition table.
Syncing disks.
[root@localhost ~]# fdisk -l
Disk /dev/sda: 42.9 GB,42949672960 bytes
255 heads, 63 sectors/track, 5221cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512bytes / 512 bytes
Disk identifier: 0x00085bd8
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end oncylinder boundary.
/dev/sda2 64 5222 41430016 8e Linux LVM
Disk /dev/sdb: 107.4 GB,107374182400 bytes
255 heads, 63 sectors/track, 13054cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512bytes / 512 bytes
Disk identifier: 0x74429a75
Device Boot Start End Blocks Id System
/dev/sdb1 1 3917 31463271 5 Extended
/dev/sdb5 1 132 1060227 83 Linux
/dev/sdb6 133 264 1060258+ 83 Linux
/dev/sdb7 265 396 1060258+ 83 Linux
/dev/sdb8 397 528 1060258+ 83 Linux
/dev/sdb9 529 660 1060258+ 83 Linux
注:我们需要使用上面的5-9分区。
[root@localhost ~]# partprobe
2、创建Raid
[root@localhost~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4--spare-devices=1 /dev/sdb5 /dev/sdb6 /dev/sdb/7 /dev/sdb8 /dev/sdb9
[root@localhost~]# mdadm --detail /dev/md0
/dev/md0: ←Raid设备文件名
Version : 1.2
Creation Time : Sun Jul 3 19:17:10 2016 ←Raid设备被创建时间
Raid Level :raid5 ←Raid的等级
Array Size : 3176448 (3.03 GiB 3.25 GB) ←此Raid的可用磁盘容量
UsedDev Size : 1058816 (1034.17 MiB 1084.23 MB) ←每个设备的可用容量
Raid Devices : 4 ←用作Raid的设备数量
Total Devices : 5 ←全部的设备数量
Persistence : Superblock is persistent
Update Time : Sun Jul 3 19:17:20 2016
State : clean
Active Devices : 4 ←启动的(Active)设备数量
WorkingDevices : 5 ←可动作的设备数量
Failed Devices :0 ←出现错误的设备数量
Spare Devices : 1 ←预备磁盘数量
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:0 (local to host localhost)
UUID :ca3314b7:fd34b2dc:0ef543fb:585720ea
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
4 8 25 - spare /dev/sdb9
参数:
--create:新建Raid的参数;
--auto=yes/dev/md0:决定新建/dev/md0这个软件磁盘设备;
--radi-devices=4:使用4个磁盘作为磁盘阵列;
--spare-devices=1:使用1个磁盘作为spare设备;
--level=5:设置磁盘阵列的等级为5,即Raid-5(0,1,5等);
/dev/sdb5 /dev/sdb6 /dev/sdb/7/dev/sdb8 /dev/sdb9 :需要使用磁盘的路径。也可用/dev/sdb{5,6,7,8}来表示;
--detail /dev/md0:显示/dev/md0的详细信息。
注:
最后的五行就是这个设备目前的情况,包括四个active sync和一个spare!
Raid devices指的就是Raid内的磁盘顺序。
由于Raid创建需要一些时间,所以最好等待数分钟后在使用”mdadm –detail /dev/md0”去查阅你的磁盘阵列信息,否则可能会看到某系磁盘正在“spare rebuilding”之类的构建字样。通过以上操作我们的Raid 5就创建完了,除了命令之外,你也可以查阅如下的文件夹来看看系统软件磁盘的情况:
[root@localhost ~]# cat/proc/mdstat
Personalities : [raid6] [raid5][raid4]
md0 : active raid5 sdb8[5]sdb9[4](S) sdb7[2] sdb6[1] sdb5[0] ←第一行
3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/4] [UUUU] ←第二行
unused devices: <none>
上述的数据就比较重要的在第一行和第二行;
第一行:指出md0为Raid-5,并且使用了/sdb8,sdb7,sdb6,sdb5四块磁盘设备。每个设备后面的[ ]内的数字为此磁盘在Raid中的顺序(Raid device);至于sdb9后面的[S]则代表sdb9为spare之意
第二行:此磁盘阵列拥有3176448个block(每个block单位为1K),所以总容量约为3GB使用Raid-5等级,写入磁盘小区快(chunk)大小为512kb,使用algorithm2磁盘阵列算法。4/4表示此数组需要四个设备,且这四个设备均正常运行。后面的UUUU代表四个设备,4个U表示四个设备都运行正常,若为_则表示运行不正常。
3、格式化与挂载Raid
[root@localhost ~]# mkfs -t ext3/dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripewidth=384 blocks
198800 inodes, 794112 blocks
39705 blocks (5.00%) reserved forthe super user
第一个数据块=0
Maximum filesystemblocks=813694976
25 block groups
32768 blocks per group, 32768fragments per group
7952 inodes per group
Superblock backups stored onblocks:
32768,98304, 163840, 229376, 294912
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystemaccounting information: 完成
This filesystem will beautomatically checked every 30 mounts or
180days, whichever comes first. Use tune2fs-c or -i to override.
[root@localhost~]# mkdir /mnt/raid
[root@localhost ~]# mount /dev/md0/mnt/raid/
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 38776280 5021212 31785304 14% /
tmpfs 243140 72 243068 1% /dev/shm
/dev/sda1 495844 34907 435337 8% /boot
/dev/md0 3126500 70260 2897420 3% /mnt/raid
4、模仿Raid错误救援模式
Mdadm 语法:
[root@localhost ~]#mdadm –manage/dev/md[0-9] [--add 设备] [--remove设备] [--fail 设备]
参数:
--add:将后面的设备加入到这个md中;
--remove:将后面的设备从这个md中移出;
--fail:将后面的设备设置成出错状态;
[root@localhost~]# cp -a /etc /mnt/md0 ←我们先复制一些东西进去
[root@localhost~]# mdadm --manage /dev/md0 --fail /dev/sdb8 ←假设/dev/sdb8出错了!实现模拟的方式。
mdadm:set /dev/sdb8 faulty in /dev/md0
[root@localhost~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jul 3 21:25:27 2016
Raid Level : raid5
Array Size : 3176448 (3.03 GiB 3.25 GB)
Used Dev Size : 1058816 (1034.17 MiB 1084.23MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun Jul 3 21:49:22 2016
State : clean
Active Devices : 4
WorkingDevices : 4
Failed Devices : 1 ←出错的磁盘有一个
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:0 (local to host localhost)
UUID :c682cce7:5dd3fa72:a04c54a2:6957bdb0
Events : 37
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
4 8 25 3 active sync /dev/sdb9
5 8 24 - faulty /dev/sdb8
[root@localhost ~]# cat/proc/mdstat
Personalities : [raid6] [raid5][raid4]
md0 : active raid5 sdb8[5](F)sdb9[4] sdb7[2] sdb6[1] sdb5[0]
3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/3] [UUU_] ←有一个u变成了_。
[>....................] recovery = 1.3% (14336/1058816) finish=1.2min speed=14336K/sec
unused devices: <none>
[root@localhost ~]# mdadm --detail/dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jul 404:43:13 2016
Raid Level : raid5
Array Size : 3176448 (3.03 GiB 3.25 GB)
Used Dev Size : 1058816 (1034.17 MiB 1084.23 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Mon Jul 4 05:10:192016
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1 ←出错的磁盘有一个
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 44% complete
Name : localhost:0 (local to host localhost)
UUID :32d71112:8d5ed718:dd3365ef:a126009d
Events : 41
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
4 8 25 3 spare rebuilding /dev/sdb9
5 8 24 - faulty /dev/sdb8
注:
以上过程要快才可以看到,我们从上图可以看出/dev/sdb8死掉了!
若等待一段时间之后再输入上面的查询命令,就可以看到修复后的结果!请看一下信息!
[root@localhost ~]# cat/proc/mdstat
Personalities : [raid6] [raid5][raid4]
md0 : active raid5 sdb8[5](F)sdb9[4] sdb7[2] sdb6[1] sdb5[0]
3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
[root@localhost ~]# mdadm --detail/dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jul 404:43:13 2016
Raid Level : raid5
Array Size : 3176448 (3.03 GiB 3.25 GB)
Used Dev Size : 1058816 (1034.17 MiB 1084.23 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Mon Jul 4 05:10:442016
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:0 (local to host localhost)
UUID :32d71112:8d5ed718:dd3365ef:a126009d
Events : 55
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
4 8 25 3 active sync /dev/sdb9
5 8 24 - faulty /dev/sdb8
[root@localhost ~]# ls /mnt/raid/
etc lost+found
[root@localhost ~]# ls /mnt/raid/etc/
abrt modprobe.d
acpi motd
adjtime mtab
aliases mtools.conf
aliases.db my.cnf
………以下省略…………
注:通过以上信息我们可以看出我们的数据并没有丢失!
加入新的磁盘拨出有问题的磁盘
[root@localhost ~]# mdadm --manage/dev/md0 --add /dev/sdb10 --remove /dev/sdb8
mdadm:added /dev/sdb10
mdadm:hot removed /dev/sdb8 from /dev/md0
[root@localhostraid]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jul 3 21:25:27 2016
Raid Level : raid5
Array Size : 3176448 (3.03 GiB 3.25 GB)
Used Dev Size : 1058816 (1034.17 MiB 1084.23MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun Jul 3 22:28:23 2016
State : clean
Active Devices : 4
WorkingDevices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:0 (local to host localhost)
UUID :c682cce7:5dd3fa72:a04c54a2:6957bdb0
Events : 39
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
4 8 25 3 active sync /dev/sdb9
6 8 26 - spare /dev/sdb10
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb10[6](S) sdb9[4] sdb7[2] sdb6[1] sdb5[0]
3176448 blocks super 1.2level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
注:你的磁盘阵列中的数据不但一直存在,而且你可以一直顺利运行/mnt/raid内的数据,即使/dev/sdb8毁了!然后通过管理的功能就能够加入新磁盘且拔除坏掉的磁盘,而且这一切都是在上线(on-line)的情况下进行的。
5、开机自动启动Raid并挂载
[root@localhostraid]# mdadm --detail /dev/md0 | grep -i uuid
UUID : c682cce7:5dd3fa72:a04c54a2:6957bdb0
开始配置mdadm.conf
[root@localhostetc]# vim /mdadm.conf
ARRAY/dev/md0 UUID : 32d71112:8d5ed718:dd3365ef:a126009d
注:将上面的uuid添加到/etc/mdadm.conf中(这个文件并不存在需要自己创建)
我们需要知道/dev/md0的UUID用于修改software的配置文件。
[root@localhost etc]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 7 06:37:03 2016
#
# Accessible filesystems, by reference, are maintained under‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) formore info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=ae9891e3-c8ea-42da-a3bb-b7c9a6f94654 /boot ext4 defaults 0 0
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/md0 /mnt/raid ext3 defaults 0 0
注:将/dev/md0 /mnt/raid ext3 defaults 0 0添加到/etc/fstab中。添加完成之后我们可以重启测试,重启之后/dev/md0已经挂载到/mnt/raid下。
6、关闭软件Raid(重要!!!)
如果你不使用这块software Raid(/dev/md0)就可以将software Raid关闭了,因为它占用着我们的磁盘。如果你只是卸载/dev/md0忘记关闭,结果就知将你在重新分区/dev/sdbX的时候出现各种莫名的错误状况。下面我们介绍一下关闭software Raid的步骤
[root@localhost ~]# umount/dev/md127
[root@localhost ~]# vim/etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 7 06:37:03 2016
#
# Accessible filesystems, by reference, are maintained under‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) formore info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=ae9891e3-c8ea-42da-a3bb-b7c9a6f94654 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#/dev/md0 /mnt/raid ext3 defaults 0 0 注:将最后一行批注掉,或者删除掉都可以
[root@localhost ~]# mdadm--stop /dev/md127
Mdadm: stoped /dev/md0 ←这样就关闭了!
[root@localhost ~]# cat/proc/mdstat
Personalities : [raid6][raid5] [raid4]
unused devices:<none> ←看!确实不存在任何的数据组设备!
[root@localhost ~]#vim/etc/mdadm.conf
#ARRAY /dev/md127 UUID :32d71112:8d5ed718:dd3365ef:a126009d
注:将这一行注释掉就完成关闭software Raid了。
以上内容摘自
--鸟哥的linux私房菜
标签:raid0 raid5 raid1 software raid0+1 stripe
原文地址:http://bella41981.blog.51cto.com/10603572/1795443