RAID磁盘阵列

  • Post author:
  • Post category:其他




一.RAID磁盘阵列

RAID是英文Redundant Array of Independent Disks的缩写,中文简称为

独立磁盘冗余磁盘阵列

。简单的说,RAID是一种

把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘)

,从而提供比单个硬盘更高的存储性能和提供数据备份技术。

组成磁盘阵列的不同方式称为

RAID级别(RAID Levels)

。在用户看起来,组成的磁盘组就像

是一个硬盘

,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,

磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。


常用的磁盘阵列级别: RAID0,RAID1,RAID3,RAID5,RAID1+0,RADI0+1等



1.RAID0

RAID 0 并不是真正的RAID结构,没有数据冗余,没有数据校验的磁盘陈列。实现RAID 0至少需要两块以上的硬盘,它将两块以上的硬盘合并成一块,数据连续地分割在每块盘上。 因为

带宽加倍

,所以

读/写速度加倍

, 但RAID 0在提高性能的同时,并没有提供数据保护功能,只要任何一块硬盘损坏就会

丢失所有数据

。因此RAID 0 不可应用于需要数据高可用性的关键领域。


特点:

RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。

在这里插入图片描述



2.RAID1

RAID1是将一个两块

(偶数块)

硬盘所构成RAID磁盘阵列,其容量仅

等于N一块硬盘的容量

,因为另一块只是当作数据“镜像”。RAID 1磁盘阵列显然是最可靠的一种阵列,因为它总是保持一份完整的数据备份。它的性能自然没有RAID 0磁盘阵列那样好,但其数据读取确实较单一硬盘来的快,因为数据会从两块硬盘中较快的一块中读出。RAID 1磁盘阵列的

写入速度通常较慢

,因为数据得分别写入两块硬盘中并做比较。

RAID 1磁盘阵列一般支持“热交换”,就是说阵列中硬盘的移除或替换可以在系统运行时进行,无须中断退出系统

。RAID 1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID 1磁盘阵列主要用在

数据安全性很高

,而且要求能够

快速恢复

被破坏的数据的场合。


特点:

RAID1通过硬盘数据镜像实现

数据的冗余

,保护数据安全,在两块盘上产生互为备份的数据,当原始数据繁忙时,可直接从镜像备份中读取数据,因此RAID1可以提供读取性能。

RAID1是硬盘中单位成本最高的,但提供了很高的

数据安全性



可用性

,当一个硬盘失效时,系统可以

自动切换到镜像硬盘上读/写

,并且不需要重组失效的数据。

在这里插入图片描述



3.RAID3

RAID 3是把数据分成多个“块”,按照一定的容错算法,存放在N+1个硬盘上,实际数据占用的

有效空间为N个硬盘的空间总和

,而第N+1个硬盘上存储的数据是

校验容错信息

,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它

N个硬盘中的数据也可以恢复原始数据

,这样,仅使用这N个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况下,使用RAID3,安全性是可以得到保障的。


特点

  • RAID 3使用简单的

    奇偶校验

    ,并用

    单块磁盘

    存放

    奇偶校验信息

    。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。
  • RAID3会把

    数据

    写入操作分散到

    多个硬盘

    上进行,然而不管是向哪一个数据盘写入数据,都需要同时

    重写校验盘中的相关信息

    。因此,对于那些经常需要执行

    大量写入操作

    的应用来说,

    校验盘的负载将会很大

    ,无法满足程序的运行速度,从而导致整个

    RAID系统性能的下降

  • RAID3

    更加适合

    应用于那些

    写入操作较少

    ,读取操作较多的应用环境,如数据库和web服务器等。


工作原理

XOR校验原理

A值 B值 XOR结果
0 0 0
1 0 1
0 1 1
1 1 0

这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。

![在这里插入图片描述](https://img-blog.csdnimg.cn/214626a7adea4fc6940b9d86aa64d0e7.png
在这里插入图片描述



4.RAID5

RAID 5 是一种存储性能、

数据安全

和存储成本兼顾的存储解决方案。 RAID 5可以为系统提供

数据安全保障

,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个

奇偶校验

信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个

奇偶校验

信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是运用较多的一种解决方案


工作原理


RAID5把

数据

和相对应的

奇偶校验信息

存储到组成RAID5的

各个磁盘

上,并且奇偶校验信息和相对应的数据分别存储于

不同的磁盘

上,其中

任意N-1块

磁盘上都

存储完整的数据

,也就是说有相当于

一块磁盘容量的空间

用于

存储奇偶校验信息

。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了

数据安全

。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去

重建此磁盘上的数据

,来保持RAID5的

高可靠性

做raid 5阵列所有磁盘

容量

必须一样大,当容量不同时,会以

最小的容量

为准。 最好硬盘

转速

一样,否则会

影响性能

,而且可用空间=

磁盘数n-1

,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。

在这里插入图片描述



5.RAID01和RAID10


RAID 0+ 1



优点:


正常使用中,考虑性能上讲,RAID0+1 好,就是先做RAID 0 条带,再做 RAID 1 MIRROR,这样写入速度快,读的速度和RAID1+0一样。


缺点:


一旦一个硬盘坏了,一半的硬盘无法工作,如果2个条带上各坏1个硬盘(RAID0+1只有2个条带),GAME OVER…即使是只有一个硬盘坏了,做数据恢复也很慢,因为一半的硬盘要rebuild(大家该知道为什么吧)。


RAID 1+0



优点:


数据安全性好,只要不是1个RAID1上的2个硬盘同时坏,没有问题,还可以继续跑数据。数据恢复快。


缺点:


写性能稍微比RAID 0+1 差(读性能一样)

在这里插入图片描述
在这里插入图片描述



二.RAID实验


磁盘分区



1.RAID0


下载命令 : yum -y install mdadm



准备两个块盘,分区,大小都是2G

在这里插入图片描述


制作RAID0



-C 表示新建



-v 显示创建过程中的详细信息



/dev/md0 创建的raid0的名称



-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略



-l 指定raid的等级



-n 表示使用几块盘创建

[root@localhost ~]# mdadm -C -v -a yes /dev/md0 -a yes -l0 -n2 /dev/sdb1 /dev/sdc1     #创建raid0的命令
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.


查看RAID0

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun 13 15:41:13 2023
        Raid Level : raid0    #raid的等级
        Array Size : 4188160 (3.99 GiB 4.29 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun 13 15:41:13 2023
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : be0f0c73:1af1b9f2:b1a60775:0809caf1
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1


创建目录,创建文件系统,挂载

[root@localhost ~]# mkfs.xfs /dev/md0    创建文件系统
meta-data=/dev/md0               isize=512    agcount=8, agsize=130944 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1047040, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid0    #创建目录
[root@localhost ~]# mount  /dev/md0  /raid0/    #挂载
[root@localhost ~]# df -h /raid0    #查看磁盘大小
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        4.0G   33M  4.0G   1% /raid0



2.RAID1


制作RAID1



-C 表示新建



-v 显示创建过程中的详细信息



/dev/md1 创建的raid1的名称



-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略



-l 指定raid的等级



-n 表示使用几块盘创建

[root@localhost ~]# mdadm -C -v  -a yes /dev/md1 -l1 -n2 /dev/sdb1 /dev/sdc1    #创建raid1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 2094080K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.


查看RAID1

[root@localhost ~]# mdadm -D /dev/md1     #查看raid1
/dev/md1:
           Version : 1.2
     Creation Time : Tue Jun 13 19:48:24 2023
        Raid Level : raid1
        Array Size : 2094080 (2045.00 MiB 2144.34 MB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun 13 19:48:32 2023
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : localhost.localdomain:1  (local to host localhost.localdomain)
              UUID : fb4b37a3:6dc1ddfb:d3db739e:66e26e98
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1


创建目录,创建文件系统,挂载

[root@localhost ~]# mkdir /raid1    #创建目录
[root@localhost ~]# mount  /dev/md1  /raid1/    #挂载
[root@localhost ~]# df -h /raid1
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1        2.0G   33M  2.0G   2% /raid1



3.RAID5


制作RAID5



-C 表示新建



-v 显示创建过程中的详细信息



/dev/md5 创建的raid5的名称



-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略



-l 指定raid的等级



-n 表示使用几块盘创建



-x:指定几块空闲硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用盘

[root@localhost ~]# mdadm -Cv /dev/md5 -a yes  -l5 -n3 /dev/sdb1 /dev/sdc1  /dev/sdb2 -x1 /dev/sdc2    #创建raid5,sdc2磁盘做备份
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2094080K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.


查看RAID5

[root@localhost ~]# mdadm  -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Wed Jun 14 19:14:39 2023
        Raid Level : raid5
        Array Size : 4188160 (3.99 GiB 4.29 GB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Jun 14 19:14:52 2023
             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:5  (local to host localhost.localdomain)
              UUID : d7220416:544cc27c:535e7eff:405a9c97
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1    
       1       8       33        1      active sync   /dev/sdc1    
       4       8       18        2      active sync   /dev/sdb2    
       3       8       34        -      spare   /dev/sdc2    #磁盘用来做备份


创建目录,创建文件系统,挂载

[root@localhost ~]# mkdir  /raid5
[root@localhost ~]# mkfs.xfs /dev/md5
[root@localhost ~]# mount /dev/md5  /raid5
[root@localhost ~]# df -h /raid5    #查看磁盘大小
Filesystem      Size  Used Avail Use% Mounted on
/dev/md5        4.0G   33M  4.0G   1% /raid5


模拟磁盘损坏


在这里插入图片描述

[root@localhost ~]# mdadm /dev/md5 -f /dev/sdb1    #模拟sdb1损坏
mdadm: set /dev/sdb1 faulty in /dev/md5

在这里插入图片描述


移除损坏的磁盘



mdadm /dev/md5 -r /dev/sdb1



添加新的磁盘



mdadm /dev/md5 -a /dev/sdd1



4.RAID10


制作RAID10



-C 表示新建



-v 显示创建过程中的详细信息



/dev/md10 创建的raid10的名称



-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略



-l 指定raid的等级



-n 表示使用几块盘创建



先创建两个raid1,在利用两个raid1做成raid0

[root@localhost ~]# mdadm -C -v  -a yes /dev/md1 -l1 -n2 /dev/sdb1 /dev/sdc1
[root@localhost ~]# mdadm -C -v  -a yes /dev/md2 -l1 -n2 /dev/sdb2 /dev/sdc2
[root@localhost ~]# mdadm -C -v -a yes  /dev/md10   -l0 -n2 /dev/md1 /dev/md2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.


查看RAID10

[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
           Version : 1.2
     Creation Time : Wed Jun 14 20:23:39 2023
        Raid Level : raid0
        Array Size : 4184064 (3.99 GiB 4.28 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Jun 14 20:23:39 2023
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : localhost.localdomain:10  (local to host localhost.localdomain)
              UUID : 5e0ddfca:c6f56a7b:e6f7ae0e:8377cc3e
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       9        1        0      active sync   /dev/md1
       1       9        2        1      active sync   /dev/md2


创建目录,创建文件系统,挂载

[root@localhost ~]# mkfs.xfs /dev/md10
meta-data=/dev/md10              isize=512    agcount=8, agsize=130688 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1045504, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid10
[root@localhost ~]# mount /dev/md10 /raid10
[root@localhost ~]# df -h /raid10
Filesystem      Size  Used Avail Use% Mounted on
/dev/md10       4.0G   33M  4.0G   1% /raid10



三.总结

raid级别 读性能 写性能 利用率 是否有备份校验 允许损坏盘数
raid0 N N N 0
raid1 N/2 N/2 N/2 1
raid5 N-1 (N-1)/n N-1 校验 1
raid10 N/2 N/2 N/2 备份 有两个基组各坏一个
raid01 N/2 N/2 N/2 备份 允许坏一组



四.删除RAID


1.取消挂载

[root@localhost ~]# umount /dev/md5


2.停止raid

[root@localhost ~]# mdadm -S /dev/md5                                   
mdadm: stopped /dev/md5


3.清除所有磁盘

[root@localhost ~]# mdadm --zero-superblock /dev/sdb1
[root@localhost ~]# mdadm --zero-superblock /dev/sdb2
[root@localhost ~]# mdadm --zero-superblock /dev/sdc1
[root@localhost ~]# mdadm --zero-superblock /dev/sdc2


4.查看是否清除

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
|-sda1            8:1    0    1G  0 part /boot
`-sda2            8:2    0   49G  0 part 
  |-centos-root 253:0    0   44G  0 lvm  /
  `-centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
|-sdb1            8:17   0    2G  0 part 
`-sdb2            8:18   0    2G  0 part 
sdc               8:32   0   20G  0 disk 
|-sdc1            8:33   0    2G  0 part 
`-sdc2            8:34   0    2G  0 part 
sr0              11:0    1  4.3G  0 rom  


5.删除配置文件(防止系统启动时启动raid)

参考:https://blog.csdn.net/m0_66900908/article/details/125623824

https://baike.baidu.com/item/RAID%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97/10588130?fr=aladdin



版权声明:本文为m0_71163619原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。