Linux 独立冗余磁盘阵列介绍

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

常用raid介绍

raid 0

RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

使用:以2块盘为例子,数据存储各一半
优点:写入读取快,适合保存非重要数据
可用空间:num*min(device)
Linux 独立冗余磁盘阵列介绍


raid 1

RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互 为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

使用:以2块盘为例子,数据各一份
优点:读性能提升,数据冗余
缺点:写性能略有下降
可用空间:1*min(device)
Linux 独立冗余磁盘阵列介绍


raid 4

RAID是英文Redundant Array of IndependentDisks的缩写,中文简称为独立磁盘冗余阵列。RAID就是一种由多块硬盘构成的冗余阵列。虽然RAID包含多块硬盘,但是在操作系统下是作为一个独立的大型存储设备出现。RAID4即带奇偶校验码的独立磁盘结构,RAID4和RAID3很象。在独立访问阵列中,每个磁盘都是独立运转的,因此不同的I/O请求可以并行地满足

使用:以3块盘为例子,一块校验盘,用户还原数据,2块数据盘
优点:有冗余能力,读、写性能提升,允许坏一块盘
缺点:校验盘压力过大
可用空间:(N-1)*min(device)


raid 5

RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

使用:以3块盘为例子,1块轮流做校验盘和2块轮流存储盘
优点:相比radi4,降低校验盘压力
缺点:只能坏一块盘
可用空间:(N-1)*min(device)
Linux 独立冗余磁盘阵列介绍


raid 6

RAID6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。

使用:以4块盘为例子,二块校验盘,用户还原数据,2块数据盘
优点:容错比raid 5好
缺点:写入没raid 5 好
可用空间:(N-2)*min(device)


raid 10

Raid 10是一个Raid 1与Raid0的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。我们知道,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。其实,右图只是一种RAID 10方式,更多的情况是从主通路分出两路,做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。

使用:以4块盘为例子,分2对 raid 1,2对raid为raid 0
优点:提升读写,有冗余,每对raid1能坏一块
Linux 独立冗余磁盘阵列介绍


虚拟实现raid 5

mdadm 常用选项说明

支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:
-C: 创建模式
|--- -n #: 使用#个块设备来创建此RAID;
|--- -l #:指明要创建的RAID的级别;
|--- -a {yes|no}:自动创建目标RAID设备的设备文件;
|--- -c CHUNK_SIZE: 指明块大小;
|--- -x #: 指明空闲盘的个数;
-D:管理模式 显示raid的详细信息;
-f: 标记指定磁盘为损坏;
-a: 添加磁盘
-r: 移除磁盘

实验先创建4个1G的分区,用2块存储数据,1块存储校验,1块备用,创建raid 5,

#创建4块分区,注意格式是fd
[root@localhost sh]# fdisk /dev/sdb

命令(输入 m 获取帮助):t
分区号 (1-7,默认 7):5
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

  设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    16779263     8388608    5  Extended
/dev/sdb5            4096     2101247     1048576   fd  Linux raid autodetect
/dev/sdb6         2103296     4200447     1048576   fd  Linux raid autodetect
/dev/sdb7         4202496     6299647     1048576   fd  Linux raid autodetect
/dev/sdb8         6301696     8398847     1048576   fd  Linux raid autodetect

查看本机虚拟raid

[root@localhost sh]# cat /proc/mdstat
Personalities :
unused devices: <none>

创建

 [root@localhost sh]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{5,6,7,8}
#-x 1 一块是空闲备份   -l 5 raid5 -n 3块使用盘
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

再次查看

 [root@localhost sh]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb7[4] sdb8[3](S) sdb6[1] sdb5[0]
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
#active  活动状态,可以使用

挂载

 [root@localhost sh]# mke2fs -t ext4 /dev/md0

[root@localhost sh]# mount /dev/md0 /mnt/t2
[root@localhost sh]# df -h /mnt/t2/      #2g可以用设备
文件系统        容量  已用  可用 已用% 挂载点
/dev/md0        2.0G  6.0M  1.9G    1% /mnt/t2

详细信息查看:

[root@localhost t2]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Apr 23 03:14:26 2018
        Raid Level : raid5
        Array Size : 2095104 (2046.00 MiB 2145.39 MB)
     Used Dev Size : 1047552 (1023.00 MiB 1072.69 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Apr 23 03:20:48 2018
             State : clean
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 24dec4a5:d57dbe03:f9aa2729:b2997a05
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       4       8       23        2      active sync   /dev/sdb7

       3       8       24        -      spare   /dev/sdb8    空闲状态

手动标记一块错误盘

[root@localhost t2]# mdadm  /dev/md0 -f /dev/sdb6
mdadm: set /dev/sdb6 faulty in /dev/md0

[root@localhost t2]# cat /proc/mdstat   #这个阶段可以观察数据恢复  直到active
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb7[4] sdb8[3] sdb6[1](F) sdb5[0]
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

再次观察

[root@localhost t2]# mdadm -D /dev/md0
#会发现
 1       8       22        -      faulty   /dev/sdb6      #损坏盘   而8已经从空闲到正常使用
 #如果在移掉一个
 State : clean也会变化成clean,degrade降级状态

手动移除坏的分区

 [root@localhost t2]# mdadm  /dev/md0 -r /dev/sdb6
mdadm: hot removed /dev/sdb6 from /dev/md0

再次添加

[root@localhost t2]# mdadm  /dev/md0 -a /dev/sdb6
mdadm: added /dev/sdb6

移除raid 5

[root@localhost mnt]# umount /mnt/t2
[root@localhost mnt]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

猜你喜欢

转载自blog.51cto.com/marvin89/2106891
今日推荐