RAID磁盘冗余阵列

RAID磁盘冗余阵列

1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术的概念。RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。

任何事物都有它的两面性。RAID技术确实具有非常好的数据冗余备份功能,但是它也相应地提高了成本支出。就像原本我们只有一个电话本,但是为了避免遗失,我们将联系人号码信息写成了两份,自然要为此多买一个电话本,这也就相应地提升了成本支出。RAID技术的设计初衷是减少因为采购硬盘设备带来的费用支出,但是与数据本身的价值相比较,现代企业更看重的则是RAID技术所具备的冗余备份机制以及带来的硬盘吞吐量的提升。也就是说,RAID不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度,所以它在绝大多数运营商或大中型企业中得以广泛部署和应用。

1. RAID 0

RAID0——优缺点

raid0 ---条带卷
最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:读写速度快
缺点:没有其他raid级别安全性高
磁盘利用率:100%

RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。如图7-1所示,数据被分别写入到不同的硬盘设备中,即disk1和disk2硬盘设备会分别保存数据资料,最终实现提升读取、写入速度的效果。

image.png

2. RAID 1

RAID1——优缺点

raid1 又叫镜像raid
一般需要两块磁盘,每块磁盘上都会存储一份完整数据
优点:安全性高,读速度快,容错
缺点:写速度慢
磁盘利用率:50%

尽管RAID 0技术提升了硬盘设备的读写速度,但是它是将数据依次写入到各个物理硬盘中,也就是说,它的数据是分开存放的,其中任何一块硬盘发生故障都会损坏整个系统的数据。因此,如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到RAID 1技术了。

在下图所示的RAID 1技术示意图中可以看到,它是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。

image.png

RAID 1技术虽然十分注重数据的安全性,但是因为是在多块硬盘设备中写入了相同的数据,因此硬盘设备的利用率得以下降,从理论上来说,图7-2所示的硬盘空间的真实可用率只有50%,由三块硬盘设备组成的RAID 1磁盘阵列的可用率只有33%左右,以此类推。而且,由于需要把数据同时写入到两块以上的硬盘设备,这无疑也在一定程度上增大了系统计算功能的负载。

那么,有没有一种RAID方案既考虑到了硬盘设备的读写速度和数据安全性,还兼顾了成本问题呢?实际上,单从数据安全和成本问题上来讲,就不可能在保持原有硬盘设备的利用率且还不增加新设备的情况下,能大幅提升数据的安全性。下面将要讲解的RAID 5技术虽然在理论上兼顾了三者(读写速度、数据安全性、成本),但实际上更像是对这三者的“相互妥协”。

3. RAID 5

RAID5——优缺点

最少需要3块磁盘,两块磁盘存数据,一块磁盘存校验位,但基本每个盘里面都有校验位。
优点:可以找回丢失的数据---数据可以通过校验计算得出,
冗余磁盘-->(一般用四块其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
安全性比raid1还高
读写速度在raid0和raid1之间
磁盘利用率:(n-1)/n:比如10块盘减去一块盘在除10.那就是十分之九的利用率。

如下图所示,RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷;图中parity部分存放的就是数据的奇偶校验信息,换句话说,就是RAID 5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。

image.png

4. RAID 10

RAID10——优缺点

RAID 1+0 实际是将RAID 1和RAID 0标准结合的产物。
优势:同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性。
缺点:CPU占用率高,磁盘使用率为一半。价格也相对较高。
建议:硬盘数量足够的情况,建议riad10.

由于利用了RAID 0极高的读写效率和RAID 1较高的数据保护、恢复能力,使RAID 10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID 10对存储容量的利用率和RAID 1一样低,只有50%。因此,RAID10即高可靠性与高效磁盘结构它是一个带区结构加一个镜象结构,可以达到既高速又安全的目的,RAID 10能提供比RAID 5更好的性能。这种新结构的可扩充性不好,这种解决方案被广泛应用,使用此方案比较昂贵。
Raid 10其实结构非常简单,首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘3中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。

鉴于RAID 5技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用RAID 10技术。

顾名思义,RAID 10技术是RAID 1+RAID 0技术的一个“组合体”。如图所示,RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID 5,因此当前成为广泛使用的一种存储技术。

image.png

RAID10实验:

添加4块硬盘

image.png
image.png

mdadm命令的常用参数和作用
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列

1、进行Raid10

[root@raid ~]# mdadm -Cv /dev/md0  -a yes  -n 4  -l 10 /dev/sd[b-e]   #创建Raid10 
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 5238784K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
 [root@raid ~]# mdadm -Q /dev/md0  #查看磁盘阵列组简要信息:由4块盘组成10GB的磁盘阵列组
/dev/md0: 9.99GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.
[root@raid ~]# mdadm -D /dev/md0   #磁盘初始化的详细信息
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jul  3 20:37:33 2020
        Raid Level : raid10
        Array Size : 10477568 (9.99 GiB 10.73 GB)
     Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Jul  3 20:38:25 2020
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : raid:0  (local to host raid)
              UUID : e5c9d199:19db9cd0:d62a34f6:78d935ef
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

把刚做的raid10进行xfs格式化。
并把挂载信息写入到配置文件中,使其永久生效。

[root@raid ~]# mkfs.xfs /dev/md0 
meta-data=/dev/md0               isize=512    agcount=16, agsize=163712 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2619392, 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@raid ~]# mkdir /raid
[root@raid ~]# vim  /etc/fstab
/dev/md0 /raid xfs defaults 0 0
[root@raid ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        17G  3.1G   14G  19% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M  18% /boot
tmpfs                   tmpfs     378M  4.0K  378M   1% /run/user/42
tmpfs                   tmpfs     378M   16K  378M   1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0 100% /run/media/root/CentOS 7 x86_64
/dev/md0                xfs        10G   33M   10G   1% /raid

损坏磁盘阵列及修复

1.直接移除一块硬盘
在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。

image.png
[root@raid ~]# mdadm -D /dev/md0  #可以看到已经有一块硬盘损坏/dev/sdd
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jul  3 20:37:33 2020
        Raid Level : raid10
        Array Size : 10477568 (9.99 GiB 10.73 GB)
     Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Jul  3 21:08:30 2020
             State : active, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : raid:0  (local to host raid)
              UUID : e5c9d199:19db9cd0:d62a34f6:78d935ef
            Events : 21

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       -       0        0        2      removed
       3       8       64        3      active sync set-B   /dev/sde

       2       8       48        -      faulty   /dev/sdd

在生产中是支持热插拔的,但是在虚拟机中,我们需要关机,接下来我们新添加一块硬盘给对接上

[root@localhost ~]# mdadm /dev/md0 -f /dev/sdd   #模拟损坏
[root@wenmao~]# umount   /raid/
[root@wenmao~]# mdadm /dev/md0 -a /dev/sdd
mdadm: added /dev/sdd
[root@wenmao~]# mdadm -D /dev/md0  #可以看到数据已经在同步了
/dev/md0:
           Version : 1.2
     Creation Time : Sat Jul  4 08:38:54 2020
        Raid Level : raid10
        Array Size : 10477568 (9.99 GiB 10.73 GB)
     Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Jul  4 09:03:47 2020
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 46% complete

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : a0e336c5:9e369656:c7f35ffc:c91f5205
            Events : 100

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       4       8       32        1      spare rebuilding   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@wenmao~]# mount -a
[root@wenmao~]# df -Th  #可以看到已经挂载上了

现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。

[root@wenmao ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 5238784K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@wenmao ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sat Jul  4 09:12:08 2020
        Raid Level : raid5
        Array Size : 10477568 (9.99 GiB 10.73 GB)
     Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Jul  4 09:12:35 2020
             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 : 9a8363af:d5e3e882:0d789d07:b30662e1
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde

现在将部署好的RAID 5磁盘阵列格式化为ext4文件格式,然后挂载到目录上,之后就可以使用了。

[root@wenmao ~]# mkfs.ext4 /dev/md0
[root@wenmao ~]# echo "/dev/md0 /raid ext4 defaults 0 0" >> /etc/fstab
[root@wenmao ~]# mkdir /raid
[root@wenmao ~]# mount -a

我们再次把硬盘设备/dev/sdb移出磁盘阵列,然后迅速查看/dev/md0磁盘阵列的状态,就会发现备份盘已经被自动顶替上去并开始了数据同步。RAID中的这种备份盘技术非常实用,可以在保证RAID磁盘阵列数据安全性的基础上进一步提高数据可靠性,所以,如果公司不差钱的话还是再买上一块备份盘以防万一。

[root@wenmao ~]#  mdadm /dev/md0 -f /dev/sdb
[root@wenmao ~]# mdadm -D /dev/md0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值