RAID特性详解,及RAID创建详细操作

写在前面–命令总览:创建RAID:mdamd  -C [-l级别  -n盘数量  -cchunk  -a是否询问]

查看RAID: mdadm –D   停止RAID:mdadm –S  管理RAID:-f标记损坏  -r删除  -a添加

watch  文件:/proc/mdstat   操作简要流程在尾部

 

RAID特性

RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵的硬盘。

 

RAID优点如下:

把多块硬盘组合成更大的硬盘当做一块硬盘使用

提高IO能力:磁盘并行读写

提高耐用性:通过磁盘冗余来实现

拥有独立内存和自我供电能力,在突然断电时能靠电池把内存中的数据写入磁盘,一定程度上防止数据丢失。

 

RAID的实现方式:

外接式磁盘阵列:通过扩展卡提供适配能力

内接式RAID:主板集成RAID控制器

上述两种方式:RAID配置在BIOS中

software RAID:但现在几乎没人用了

 

RAID级别:level,多块磁盘组织在一起的工作方式不同,而不是性能好坏之分

单一类型:

RAID-0:条带卷。chunk

搜狗截图20151220180904.png

假如,有两块硬盘A和B,把数据存储到这两块硬盘上。就把数据切割成到四数据块,把数据块1存储到A盘上,数据块2存储到B盘上,把数据块3再存储到A盘上,把数据块4存储到B盘上。这样A和B盘可以同时存储,整个数据存储的时间就减半了。相同的,读取时从两盘一起读数据,读取的时间也减半了。

但是,假如一块磁盘坏掉的可能性为1/4,那么两块盘坏掉一块的概率就为1/2,坏掉任何块盘都会导致整个数据的损坏,所以使用磁盘越多,虽然IO能力越强,但风险也越大。上述数据块1,数据块2等称为chunk。这种方式一般存放不是很重要的数据。

特性:

读写能力提升

可用空间:n*min 假如有三块硬盘分别为10G,12G,15G 大小,可用空间为3x10G=30G。

无容错(冗余)能力,反而增加风险

需要磁盘数量:2块以上

 

RAID-1:镜像卷。

搜狗截图20151220181322.png

把数据分别写入A和B两块盘内,相当于把数据存了两份,这两个盘内的数据完全一样。这样,即便有一块盘坏掉,另一块盘也能保存好完成数据。读取是从两块盘一起读,所以读取能力上升。但是写入数据时需要把数据写两遍,所以写入能力下降。

特性:

写性能下降

读性能提升

可用空间:1*min,只有一块盘有用,其他盘只是做备份

有容错能力

最少磁盘数:2

 

RAID-4:校验盘技术。假如有四块盘,拿三块盘A,B,C分别存储小数据块chunk,拿最后一块盘D做校验盘,存储前面三块盘数据的校验码(校验码可以理解为前三块盘数据的总和但占用空间却没增加)。这样就允许坏一块盘,无论任何一块盘坏掉,通过另外三块盘都可以找回丢失的数据。但是校验盘D存储数据多,压力大,而且前ABC三块盘任何一块坏掉,校验盘D就不得不扛起那块坏掉的盘的工作,压力很大,所以坏掉的可能性最大。所以通常就为校验盘D做一块备胎盘E,E时刻监视D的一举一动,哪一天D坏掉了,备胎E就会自动自告奋勇,挑起大梁。

RAID-5:三块盘轮流做校验盘。

比如第一轮存储把chunk1存储到A上,chunk2存储到B上,chunk3存储到C上,校验码存储到D上。第二轮存储校验码存到C上,chunk存储到ABD上,第三轮存储把校验码存储到B上,chunk存储到ACD上,第四轮把校验码存储到A上,以此类推。这样就不会有哪一块盘的压力特别大了。

读写性能提升

可用空间:n-1,相当于一块拿来做校验盘

容错能力:1块盘

最少磁盘数:3

 

RAID-6

拿两个盘做校验盘,这样可以允许坏两块磁盘,但效果不如RAID10

读写性能提升

可用空间:n-2

容错能力:2块盘

最少磁盘数:4

 

混合类型

RAID-10:先做1再做0,先组合下层,才能组合上层

搜狗截图20151220181853.png

假如6个盘分成三组,AB为一组,CD二组,EF三组。简称把数据分成三个chunk,每一组一个chunk,

读写性能提升。一组拿到chunk后把自己的chunk分别存到A,B盘上,这样A和B就互为镜像了。这样每个小组内都允许坏掉一块盘,比如ACE同时坏掉都没事。

可用空间:1/2

有容错能力:每组只能坏一块

最少磁盘数:4

RAID-01

搜狗截图20151220182311.png

例如把6个盘分成两组,ABC为第一组,DEF为第二组。把数据给第一组,再把相同的数据给第二组。第一组拿到数据后把数据切成三个chunk,分别存储到A、B、C、上。第二组拿到数据后也执行与第一组相同的操作。表面看两组互为镜像,但由于组拿到数据后又进行了切割,两个组的切割方式几乎不可能完全相同,所以如果 第一组和第二组都各自坏掉一块盘,数据基本就找不回来了,所以只允许有一组出错,一组内全部坏掉都没事,但不允许两组同时出现坏盘。

 

RAID-50:至少6块盘,最多坏一个

RAID-7:

 

JBOD:just a bunch of disks

最简单的将多块磁盘空间合并成一个大的可用空间

可用空间:sum,不论是否一样大

无容错能力

 

常用级别:RAID-0,RAID-1,RAID-10,RAID-50,JBDO

一般用10,和50,或0,其他不好用

 

centos6上软RAID的实现;

结合内核中的md(multi device)

 

mdadm:模式化工具

支持LINEAR, RAID0,RAID4,RAID5,RAID6,RAID10

创建:-C     查看 –D     管理-f,-r,-a    停用,删除-S    装配-A   监控-F

-C:创建RAID

mdadm –C /dev/md0 –l  5  –n  3 –x 1 –c  128K  -a  yes /dev/sda{5,6,7}

 

-n #:使用#块设备创建此RAID

-l #:指明RAID级别

-a {yes,no}:自动创建目标RAID的设备的设备文件

-c chunk_size:指明块大小

-x#:指明空闲盘的个数

-D:显示raid的详细信息

mdadm -D /dev/md0

观察md状态:

cat /proc/mdstat

watch命令:

watch –n1 'command'

watch -n1 'cat /proc/mdstat'

 

管理模式:

-f:标记磁盘为损坏

           mdadm  /dev/md0 -f /dev/sda6

-a添加磁盘

           mdadm /dev/md0 -a /dev/sda5

-r移除磁盘

           mdadm /dev/md0 -r /dev/sda5

 

-S停止,删除md设备

mdadm -S /dev/md0  ———删除md0

下面为创建RAID5的详细过

 [root@localhost ~]# mdadm -C /dev/md0 -l 5 -n 3 -x 1 -c 128K -a yes /dev/sda{7,8,9,10}

mdadm: /dev/sda7 appears to contain an ext2fs file system   —————-创建/dev/md0

       size=2099724K  mtime=Thu Jan  1 08:00:00 1970

mdadm: largest drive (/dev/sda9) exceeds size (2097664K) by more than 1%

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

 

 [root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sda9[4] sda10[3](S) sda8[1] sda7[0]

      4195328 blocks super 1.2 level 5, 128k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

[root@localhost ~]# mke2fs -t ext4 /dev/md0  ———–格式化md0

[root@localhost ~]# mkdir /mydata

[root@localhost ~]# mount /dev/md0 /mydata

[root@localhost ~]# mdadm -D /dev/md0  —-可以看到一共有4块设备组成/dev/sda{7,8,9}和/dev/sda10

[root@localhost ~]# mdadm /dev/md0 -f /dev/sda7  ——–把/dev/sda7标记损坏

mdadm: set /dev/sda7 faulty in /dev/md0

[root@localhost ~]# mdadm -D /dev/md0

    Number   Major   Minor   RaidDevice State

       3       8       10        0      spare rebuilding   /dev/sda10

       1       8        8        1      active sync   /dev/sda8 ——–可看到/dev/sda10自动替换到了

—————————/dev/sda7的位置,正在同步数据

4       8        9        2      active sync   /dev/sda9

 

       0       8        7        –      faulty   /dev/sda7

[root@localhost ~]# mdadm /dev/md0 -f /dev/sda8   —–再标记坏一块盘

mdadm: set /dev/sda8 faulty in /dev/md0

[root@localhost ~]# cd /mydata  

[root@localhost mydata]# ll

总用量 16

drwx——. 2 root root 16384 12月 20 17:11 lost+found ————-原来数据还能查看

[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda7  ———移除/dev/sda7

mdadm: hot removed /dev/sda7 from /dev/md0

[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda8

mdadm: hot removed /dev/sda8 from /dev/md0

[root@localhost mydata]# mdadm -D /dev/md0  ——发现只剩两块盘

………………………………………………..

    Number   Major   Minor   RaidDevice State

       3       8       10        0      active sync   /dev/sda10

       2       0        0        2      removed

       4       8        9        2      active sync   /dev/sda9

[root@localhost mydata]# mdadm /dev/md0 -a /dev/sda7 ——-/dev/sda7加上去

mdadm: added /dev/sda7

[root@localhost mydata]# mdadm -D /dev/md0 ———-/dev/sda7添加成功

    Number   Major   Minor   RaidDevice State

       3       8       10        0      active sync   /dev/sda10

       5       8        7        1      spare rebuilding   /dev/sda7

       4       8        9        2      active sync   /dev/sda9

 

 

 

下面为创建RAID5的

fdisk /dev/sda — 创建4个5G分区—用t,设备号即数字—-把磁盘类型改写fd,RAID用的磁盘类型

cat /proc/mdstat  ———此文件可查看RAID设备的信息

mdadm -C /dev/md0 -a yes -n 3 -l 5 /dev/sda{5,6,7,8,}—–  创建一个名为md0的RAID

mke2fs -t ext4 /dev/md0        ————-把RAID格式化成ext4格式

mount /dev/md0 /mydata      ———-把RAID挂载至 /mydata目录下

mount               ———-查看是否挂载成功

df –lh                  ———查看磁盘信息

blkid /dev/md0      ———–查看md0的信息

mdadm -D /dev/md0  ————查看md0的详细信息

mdadm  /dev/md0 -f /dev/sda5———损坏一块  损坏RAID md0 上的一块盘

watch -n1 'cat /proc/mdstat'      ———-监控这个文件,随时掌握RAID的信息

mdadm -D /dev/md0           ———-查看md0的详细信息

 

mdadm  /dev/md0 -f /dev/sda6–再损坏一块盘

mdadm -D /dev/md0    —————查看md0的详细信息,发现依然能访问挂载点

 

mdadm /dev/md0 -r /dev/sda5 ——-移除坏掉的盘

mdadm /dev/md0 -r /dev/sda6

mdadm -D /dev/md0

 

mdadm /dev/md0 -a /dev/sda5 ———给md0加上一块盘

mdadm -D /dev/md0  ———–查看md0的状态

 

 

 

原创文章,作者:flivfox,如若转载,请注明出处:http://www.178linux.com/10285