Linux-RAID磁盘列阵与阵列卡(含创建RAID5步骤)


前言

  • RAID(Redundant Array of Independent Disks),全称是独立冗余磁盘阵列
  • 简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术
  • 在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等
  • 组成磁盘阵列的不同方式称为RAID级别(RAID Levels),RAID级别也就是RAID技术的几种不同等级,分别可以提供不同的速度,安全性和性价比
  • 根据实际情况选择适当的RAID级别可以满足用户对存储系统可用性、性能和容量的要求

一、RAID硬盘阵列详解

  • 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术
  • RAID分为不同的等级,不同等级的RAID均在数据可靠性及读写性能上做了不同的权衡
  • 常用的RAID级别有以下几种:
    • RAID 0
    • RAID 1
    • RAID 5
    • RAID 6
    • RAID 1+0 等

1.RAID 0 磁盘阵列介绍

在这里插入图片描述

  • RAID 0(条带化存储)
  • RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余
  • RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据N块硬盘并行组合
  • RAID 0不能应用于数据安全性要求高的场合

2.RAID 1 磁盘阵列介绍

在这里插入图片描述

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

3.RAID 5 磁盘阵列介绍

在这里插入图片描述

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

4.RAID 6 磁盘阵列介绍

在这里插入图片描述

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

5.RAID对比表

RAID级别 硬盘数量 磁盘利用率 是否有校验 保护能力 写性能
RAID0 N N 单个硬盘的N倍
RAID1 N(偶数) N/2 允许一个设备故障 需写两对存储设备,互为准备
RAID5 N>3 (N-1)/N 允许一个设备故障 需写计算校验
RAID6 N>4 (N-2)/N 允许两个设备故障 需双重写计算校验
RAID1+0 N>=4(偶数) N/2 允许两个基组中各坏一个 N/2块盘同时写入

6.RAID 1+0 磁盘列阵介绍

在这里插入图片描述

  • RAID 1+0(先做镜像,再做条带)
  • N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID 0
  • N/2磁盘利用率
  • N/2块盘同时写入,N块盘同时读取
  • 性能高,可靠性高

二、阵列卡介绍

1.阵列卡介绍

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

2.阵列卡的缓存

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

三、创建软RAID5阵列步骤

1.虚拟机添加硬盘

添加之前不要忘了虚拟机要处于关闭状态
在这里插入图片描述
查看磁盘分区情况核实硬盘是否创建成功

[root@localhost ~]# fdisk -l        

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009ac95

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux

磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdc:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdd:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sde:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2.检查是否已安装mdadm软件包

[root@localhost ~]# rpm -q mdadm 
mdadm-4.0-5.el7.x86_64

3.创建分区,以同样的方法创建另外三个

分区ID号改为“fd”

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

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

Device does not contain a recognized partition table
使用磁盘标识符 0x7f2f5d10 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB

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

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7f2f5d10

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    83886079    41942016   fd  Linux raid autodetect

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

4.创建RAID设备

[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 41909248K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
  • -C:表示新建
  • -v:显示创建过程的详细信息
  • /dev/md5:创建RAID5的名称
  • -a yes:–auto,表示如果有什么设备文件没有存在的话就自动创建,可省略
  • -l:指定RAID的级别,l5表示创建RAID5
  • -n:指定使用几块硬盘创建RAID,n3表示使用3块硬盘创建RAID
  • /dev/sd[b-d]1:指定使用这四块磁盘分区去创建RAID
  • -x:指定使用极快硬盘做RAID的热备用盘,x1表示保留一块空闲的硬盘作备用
  • /dev/sde1:指定用作于备用的硬盘

5.查看创建RAID进度

  • 这里可以看到当前完成百分比(37.5%)、完成需等待的时间和传输速度

  • [UUU]为完成,之后还可以多次输入此命令查看当前完成进度

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [=======>.............]  recovery = 37.5% (15727256/41909248) finish=2.1min speed=203812K/sec
      
unused devices: <none>
[root@localhost ~]# 
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [=============>.......]  recovery = 68.2% (28595200/41909248) finish=1.0min speed=207154K/sec
      
unused devices: <none>

  • 还可以以下这个命令查看创建RAID进度
  • 这里可以看到,三个为active,另外一个是spare备用
[root@localhost ~]# mdadm -D /dev/md5 
/dev/md5:
           Version : 1.2
     Creation Time : Wed Nov 25 16:24:23 2020
        Raid Level : raid5
        Array Size : 83818496 (79.94 GiB 85.83 GB)
     Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Nov 25 16:27:54 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:5  (local to host localhost.localdomain)
              UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
            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       49        2      active sync   /dev/sdd1

       3       8       65        -      spare   /dev/sde1
 

6.实现故障恢复

  • 模拟/dev/sdc1 故障
[root@localhost ~]# mdadm /dev/md5 -f /dev/sdc1 
mdadm: set /dev/sdc1 faulty in /dev/md5
  • 再查看,会发现sdc处于故障状态
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
      83818496 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
      [==>..................]  recovery = 14.3% (6008320/41909248) finish=2.9min speed=200277K/sec
      
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md5 
/dev/md5:
           Version : 1.2
     Creation Time : Wed Nov 25 16:24:23 2020
        Raid Level : raid5
        Array Size : 83818496 (79.94 GiB 85.83 GB)
     Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Nov 25 16:34:28 2020
             State : clean, degraded, recovering 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 32% complete

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
            Events : 25

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1
  • 查看发现sde1已顶替sdc1
[root@localhost ~]# mdadm -D /dev/md5 
/dev/md5:
           Version : 1.2
     Creation Time : Wed Nov 25 16:24:23 2020
        Raid Level : raid5
        Array Size : 83818496 (79.94 GiB 85.83 GB)
     Used Dev Size : 41909248 (39.97 GiB 42.92 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Nov 25 16:36:55 2020
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : e46bf95b:84550d7a:6fd09dc9:66ba9f9f
            Events : 37

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1

7.创建并挂载文件

最后在根目录下创建一个md5 的目录,然后将RAID进行格式化

[root@localhost ~]# cd ..
[root@localhost ~]# mkdir /md5

[root@localhost ~]# mkfs.xfs /dev/md5
[root@localhost ~]# cd  /md5
[root@localhost ~]# touche md5.txt
[root@localhost md5]# ls
md5.txt

最后查询一下,这里可以看到是80G,而不是120G,前面我们学习过,RAID5的利用率只有3/4

[root@localhost md5]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        20G  4.3G   16G   22% /
devtmpfs       devtmpfs  898M     0  898M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.1M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  174M  5.9G    3% /boot
tmpfs          tmpfs     183M  4.0K  183M    1% /run/user/42
tmpfs          tmpfs     183M   28K  183M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/md5       xfs        80G   33M   80G    1% /md5

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/110131356
今日推荐