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

(0)
flivfoxflivfox
上一篇 2016-02-14 10:11
下一篇 2016-02-14 10:12

相关推荐

  • 第一周学习总结

    俗话说,好记性不如烂笔头,在当今移动互联网横行的时代,烂笔头就是网络,而笔记本就是各种平台。 作为一个IT人,有人突然问你计算机是啥,你可能不会像学文科的人一样给他说,就是电脑啊。这时候就是凸显IT知识技能的时候了,那么我下面就给您慢慢的道来。 在1946年美籍匈牙利人冯·诺依曼首次提出了自己的计算机体系理论,简称冯·诺依曼体系,主要是说计算机由五大基本部件…

    2017-12-14
  • 二叉树的应用详解 – 数据结构

    概述: 平衡树——特点:所有结点左右子树深度差≤1 排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度) 最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。 1. 二叉排序树(二叉查找树 Bina…

    Linux干货 2015-04-07
  • TCP 的那些事儿(上)

       TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另…

    Linux干货 2015-04-01
  • hello! 我的博客第一站

    大家好!  这是我进博客的第一天,一个刚进来的新司机。在这里我就不秀我的车技了,只希望各位老司机开车不要太快,我晕车      —— 生命不息,奋斗不止

    Linux干货 2017-07-11
  • 重定向和管道

    重定向和管道 今天一起来学习一下重定向的一些相关命令及用法: 我们都知道程序=指令+数据 ,那么我们的数据的输入(Input)和输出(Output)是如何实现的呢?!跟小编君一起来看一下吧: 本博文小编君分成了四部分:1.重定向的讲解 2.管道符的讲解 3.涉及到的一些其他命令 4.练习题 一:重定向 重定向的本质是改变文件的默认位置,即换个地方存储数据。 …

    2017-08-04
  • shuc之学习目标

    1,每天学习二小时 2,半年熟悉数据中心LINUX技术

    Linux干货 2016-10-23