RAID磁盘阵列及配置(服务器中配置实战)

一、RAID磁盘阵列介绍

  • RAID是Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列
  • 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘), 从而提供比单个硬盘更高的存储性能
    和提供数据备份技术
  • 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)
  • 常用的RAID级别
    RAID0,RAID1, RAID5, RAID6,RAID1+0等

1.1RAID 0

  • RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余
  • RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
  • RAID 0不能应用于数据安全性要求高的场合
    在这里插入图片描述

1.2RAID 1

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

1.3RAID 5

  • N (N>=3) 块盘组成阵列,- -份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储
  • N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
  • (N-1) /N磁盘利用率
  • 可靠性高,允许坏1块盘,不影响所有数据
    在这里插入图片描述

1.4RAID 6

  • N (N>=4) 块盘组成阵列,(N-2) /N磁盘利用率
  • 与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块
  • 两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
  • 相对于RAID 5有更大的"写损失”,因此写性能较差
    在这里插入图片描述

1.5RAID 1+0

  • N (偶数,N>=4)块盘两两镜像后,再组合成一个RAID 0
  • N/2磁盘利用率
  • N/2块盘同时写入,N块盘同时读取
  • 性能高,可靠性高
    在这里插入图片描述

二、阵列卡介绍

2.1阵列卡介绍

  • 阵列卡是用来实现RAID功能的板卡
  • 通常是由i/0处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的
  • 不同的RAID卡支持的RAID功能不同
    例如支持RAID0、RAID1、 RAID5、RAID10等
  • RAID卡的接口类型
    IDE接口、SCSI接口、SATA接口和SAS接口

IDE接口
IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,属于并行接口。
它是把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器,这样使得硬盘接口的电缆数目与长度有所减少,从而数据传输的可靠性得到增强
IDE接口价格低廉,兼容性强
在实际的应用中,这种类型的接口随着接口技术的不断发展已经很少用了,逐渐被后续发展分支出更多类型的硬盘接口所取代

SCSI接口
SCSI 的英文全称为“Small Computer System Interface”(小型计算机系统接口),是和IDE完全不同的接口,IDE接口是普通PC的标准接口,而SCSI是一种通用的接口标准,具备与不同类型外部设备进行通信的能力,是一种广泛应用于小型机上的高速数据传输技术
SCSI是个多任务接口,设有母线仲裁功能,挂在一个SCSI母线上的多个外部设备可以同时工作,并平等占有总线
SCSI接口可以同步或异步传输数据,同步传输数据可以达到10M/s,异步传输速率可以达到1.5M/s
SCSI接口的CPU占用率低,支持热插热拔,但价格较高,因此SCSI硬盘主要用于中,高端工作站中

SATA接口
SATA是“Serial ATA”的缩写,主要用在主板和大量存储设备之间传输数据。拥有这种接口的硬盘又叫串口硬盘,以采用串行方式传输数据
SATA总线使用了嵌入式时钟信号,使得其具备更强的纠错能力。如果发现数据传输中的错误会自动进行矫正,很大程度上提高了数据传输的可靠性,也是一种支持热拔热插的接口

SAS接口
SAS的英文全称为“Serial Attached SCSI”是新一代的SCSI技术,称为序列式SCSI
SAS可以看做是SATA与SCSI的结合体,是同时发挥两者的优势产生的,主要用在周边零件的数据传输上
和SATA硬盘相同,都是采用串行技术以获得更高的传输速度
SAS的接口技术可以向下兼容SATA设备

2.2阵列卡的缓存

  • 缓存(Cache) 是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存,再由缓存和外边数据总线
    交换数据
  • 缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素
  • 不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等

三、配置RAID

3.1生产环境配置硬阵列

打开服务器,启动界面按Ctrl+R进入BIOS界面
在这里插入图片描述
进入到BIOS界面后,我们可以看到这里已经有创建过RAID了,按F2先格式化一下
在这里插入图片描述
格式化完后,界面变成这样
在这里插入图片描述
按F2选择Create New VD选项
在这里插入图片描述
首先创建RAID1,加入两块硬盘,直接OK就行(在右边,手抖没拍到)
在这里插入图片描述
同样的创建RAID5,加入硬盘,看自己需求,我这里只留了1块盘留作热备盘
在这里插入图片描述
Ctrl-N切换到PD Mgmt选择最后一块盘
在这里插入图片描述
选择Make Global HS全局热备
在这里插入图片描述
这里可以看到已经配置完毕了
在这里插入图片描述

3.2配置软阵列

3.2.1mdadm命令 – 管理linux软RAID

mdadm命令是multiple devices admin的简称,它是linux下的一款标准的软件 RAID管理工具,可以管理linux软RAID,比如创建、调整、监控RAID。
mdadm命令能够诊断、监控和收集详细的阵列信息,是一个单独集成化的程序而不是一些分散程序的集合,因此对不同RAID管理命令有共通的语法。

mdadm命令能够执行几乎所有的功能而不需要配置文件(也没有默认的配置文件)。

常用参数:
-D 显示RAID设备的详细信息
-A 加入一个以前定义的RAID
-B 创建一个没有超级块的RAID设备
-F 选项监控模式
-G 更改RAID设备的大小或形态
-I 添加设备到RAID中,或从RAID中删除设备
-z 组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量
-s 扫描配置文件或/proc/mdstat以搜寻丢失的信息
-C 创建RAID设备,把RAID信息写入每个RAID成员超级块中
-v 显示RAID创建过程中的详细信息
-B 创建RAID的另一种方法,不把RAID信息写入每个RAID成员的超级块中
-l 指定RAID的级别
-n 指定RAID中活动设备的数目
-f 把RAID成员列为有问题,以便移除该成员
-r 把RAID成员移出RAID设备
-a 向RAID设备中添加一个成员
–re-add 把最近移除的RAID成员重新添加到RAID设备中
-E 查看RAID成员详细信息
-c 指定chunk大小,创建一个RAID设备时默认为512kb
-R 开始部分组装RAID
-S 停用RAID设备,释放所有资源
-x 指定初始RAID设备的备用成员的数量
–zero-superblock 如果RAID设备包含一个有效的超级块,该块使用零覆盖

在做RAID磁盘阵列之前要将将磁盘格式更改为fd

例如
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

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

3.2.2创建RAID 0

[root@localhost ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c]1    #将sdb1,sdb2创建RAID 0
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat                              #第一种查看RAID的办法
Personalities : [raid0] 
md0 : active raid0 sdc1[1] sdb1[0]
      41906176 blocks super 1.2 512k chunks
      
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0                             #第二种查看RAID的办法
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun 30 15:20:58 2020
        Raid Level : raid0
        Array Size : 41906176 (39.96 GiB 42.91 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun 30 15:20:58 2020
             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 : cff7e347:0dc24286:75dc86dc:78affd7c
            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                             #格式化md0
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md0 /opt                          #挂载md0
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.5G   49G    3% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs       146G   33M  146G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md0                xfs        40G   33M   40G    1% /opt
       

3.2.3创建RAID 1

[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[b-c]1 -x1 /dev/sdd1   #将sdb1,sdc1创建RAID 1,sdd1作热备盘
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# mkfs.xfs /dev/md1                                           #格式化md1
meta-data=/dev/md1               isize=512    agcount=4, agsize=1309568 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5238272, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md1 /opt                                         #挂载md1到opt目录下
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.2G   49G    3% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs       146G   33M  146G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md1                xfs        20G   33M   20G    1% /opt

3.2.4创建RAID 5

[root@localhost ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[e-g]1 -x1 /dev/sdh1    #将sde1,sdf1,sdg1创建RAID 5,sdh1作热备盘
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20953088K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount /dev/md5 /abc
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.2G   49G    3% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs       146G   33M  146G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md5                xfs        40G   33M   40G    1% /abc

3.2.5创建RAID 6

RAID6和RAID5原理一样,多加一块硬盘

3.2.6创建RAID 1+0

RAID1+0是先做两个RAID1,再将两个RAID1作RAID0

[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[b-c]1       #创建第一块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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# mdadm -C -v /dev/md2 -l1 -n2 /dev/sd[d-e]1       #创建第二块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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]# mdadm -C -v /dev/md10 -l0 -n2 /dev/md[1-2]      #将md1,md2创建为RAID1+0
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
[root@localhost ~]# mdadm -D /dev/md10                              #查看RAID1+0的详细信息
/dev/md10:
           Version : 1.2
     Creation Time : Tue Jun 30 17:26:13 2020
        Raid Level : raid0
        Array Size : 41871360 (39.93 GiB 42.88 GB)                  #可以看到总大小为80G,添加成功
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Jun 30 17:26:13 2020
             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 : abae4eb0:2b503b50:a8db786a:f180d6c8
            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                               #格式化md10
meta-data=/dev/md10              isize=512    agcount=16, agsize=654208 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10467328, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5112, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md10 /opt                            #进行挂载
[root@localhost ~]# df -Th                                          #挂载后的大小为40G
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.2G   49G    3% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs       146G   33M  146G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md10               xfs        40G   33M   40G    1% /opt