RAID磁盘阵列与配置

226 阅读11分钟

RAID磁盘阵列

简称:独立冗余磁盘阵列

作用:把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。从而提供比单个硬盘更高的存储性能和提供数据备份技术。

RAID级别

常用的RAID级别
RAID0、RAID1、RAID5、RAID6、RAID1+0等

RAID 0(条带化存储)

  • RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。
  • RAID 0只是单纯的提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据

RAID 1(镜像存储)

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

RAID 5

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

RAID 6

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

RAID 1+0(先做镜象,再做条带)

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

RAID 0+1(先做条带,再做镜象)

  • 读写性能与RAID 10相同
  • 安全性低于RAID 10
RADI级别磁盘数量磁盘利用率读性能写性能高可用特点
RADI0NN 100%追求大容量和读写速度
RAID1N(偶数)N/2中等追求安全,损坏一块不影响使用
RAID5N≥3(N-1)N成本控制前提下,追求最大容量,速度和高可用性
RAID6N≥4(偶数)(N-2)/N很高比RAID5的数据安全更高,但写速度慢
RAID10N≥4(偶数)N/2中等中等综合RAID0和RAID1,每个基组可坏一个

RAID热备盘

作用:

相当于是在 raid里面再做一个备份,比如说本来Raid里面是只允许坏一个盘的情况下系统和数据依然正常运行,但是坏两个就不行了,但是加了热备之后就可以同时坏两个盘都没问题,就多了个保险。

创建 RAID 磁盘阵列

检查安装mdadm 软件包

image.png

在虚拟机添加硬盘

image.png

对分区进行管理

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

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

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

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

创建RIAD 6卷,并查看详细信息。

[root@localhost ~]# mdadm -C -v /dev/md6 -l6 -n4 /dev/sd{b..e}1 -x1 /dev/sdf1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md6 : active raid6 sdf1[4](S) sde1[3] sdd1[2] sdc1[1] sdb1[0]
      41908224 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [=======>.............]  resync = 37.2% (7809152/20954112) finish=1.0min speed=206452K/sec
      
unused devices: <none>

格式化RAID 6卷,将文件系统格式化为xfs格式。

[root@localhost ~]# mkfs.xfs /dev/md6
meta-data=/dev/md6               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

在 /mnt/目录下新建一个md6目录用来做挂载点,然后将RAID 6卷md6挂载上去,查看是否挂载成功。

[root@localhost ~]# mkdir /mnt/md6
[root@localhost ~]# mount /dev/md6 /mnt/md6
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  4.9G   46G   10% /
devtmpfs                 1.2G     0  1.2G    0% /dev
tmpfs                    1.2G     0  1.2G    0% /dev/shm
tmpfs                    1.2G  9.1M  1.2G    1% /run
tmpfs                    1.2G     0  1.2G    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    230M  4.0K  230M    1% /run/user/42
tmpfs                    230M   28K  230M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/md6                  40G   33M   40G    1% /mnt/md6

验证RAID 6磁盘阵列

在 /mnt/md6/ 目录下新建一些空文件。

[root@localhost ~]# touch /mnt/md6/test{1..50}
[root@localhost ~]# ls /mnt/md6
test1   test14  test19  test23  test28  test32  test37  test41  test46  test50
test10  test15  test2   test24  test29  test33  test38  test42  test47  test6
test11  test16  test20  test25  test3   test34  test39  test43  test48  test7
test12  test17  test21  test26  test30  test35  test4   test44  test49  test8
test13  test18  test22  test27  test31  test36  test40  test45  test5   test9

用“mdadm -D /dev/md6”命令查看一下RAID 的信息,可以看到sdb1、sdc1、sdd1、sde1处于活跃状态,sdf1、sdg1处于备用状态。

[root@localhost ~]# mdadm -D /dev/md6
/dev/md6:
           Version : 1.2
     Creation Time : Tue May  9 16:04:32 2023
        Raid Level : raid6
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Tue May  9 16:07:58 2023
             State : clean 
    Active Devices : 4
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:6  (local to host localhost.localdomain)
              UUID : 49e0b98a:3d8b1822:e677fdd2:852a2316
            Events : 19

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

       4       8       81        -      spare   /dev/sdf1

用“mdadm -f ”命令将sdb1从RAID磁盘阵列md6中移除,来模拟磁盘损坏,看备用磁盘sdf1能否自动顶替上去。

[root@localhost ~]# mdadm -f /dev/md6 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md6
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md6 : active raid6 sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0](F)
      41908224 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [_UUU]
      [=====>...............]  recovery = 28.1% (5901788/20954112) finish=1.2min speed=203509K/sec
      
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md6
/dev/md6:
           Version : 1.2
     Creation Time : Tue May  9 16:04:32 2023
        Raid Level : raid6
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Tue May  9 16:30:11 2023
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 49% complete

              Name : localhost.localdomain:6  (local to host localhost.localdomain)
              UUID : 49e0b98a:3d8b1822:e677fdd2:852a2316
            Events : 28

    Number   Major   Minor   RaidDevice State
       4       8       81        0      spare rebuilding   /dev/sdf1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

       0       8       17        -      faulty   /dev/sdb1

再次查看/mnt/md6/目录,之前创建的文件还在没有丢失。

[root@localhost ~]# ls /mnt/md6
test1   test14  test19  test23  test28  test32  test37  test41  test46  test50
test10  test15  test2   test24  test29  test33  test38  test42  test47  test6
test11  test16  test20  test25  test3   test34  test39  test43  test48  test7
test12  test17  test21  test26  test30  test35  test4   test44  test49  test8
test13  test18  test22  test27  test31  test36  test40  test45  test5   test9

用LVM做RAID5

建逻辑卷

[root@localhost ~]# pvcreate /dev/sd{b..e}1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sde1" successfully created.
[root@localhost ~]# vgcreate vg1 /dev/sd{b..e}1
  Volume group "vg1" successfully created
[root@localhost ~]# lvcreate -L 10G -n ky29 vg1
  Logical volume "ky29" created.
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   55G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
  └─vg1-ky29    253:2    0   10G  0 lvm  
sdc               8:32   0   20G  0 disk 
└─sdc1            8:33   0   20G  0 part 
sdd               8:48   0   20G  0 disk 
└─sdd1            8:49   0   20G  0 part 
sde               8:64   0   20G  0 disk 
└─sde1            8:65   0   20G  0 part 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64

创建RAID5卷

[root@localhost ~]# mdadm -C /dev/md5 -l5 -n3 /dev/vg1/ky29 /dev/vg1/ky28 /dev/vg1/ky30 -x1 /dev/sde1
mdadm: largest drive (/dev/sde1) exceeds size (10477568K) by more than 1%
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue May  9 18:52:46 2023
        Raid Level : raid5
        Array Size : 20955136 (19.98 GiB 21.46 GB)
     Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue May  9 18:53:38 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 : 6494eb98:484f4fcf:a15aa43d:1c2a5b6b
            Events : 18

    Number   Major   Minor   RaidDevice State
       0     253        2        0      active sync   /dev/dm-2
       1     253        3        1      active sync   /dev/dm-3
       4     253        4        2      active sync   /dev/dm-4

       3       8       65        -      spare   /dev/sde1

格式化RAID5卷并挂载

[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=327296 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5236736, 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 ~]# mount /dev/md5 data
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  4.9G   46G   10% /
devtmpfs                 1.2G     0  1.2G    0% /dev
tmpfs                    1.2G     0  1.2G    0% /dev/shm
tmpfs                    1.2G  9.2M  1.2G    1% /run
tmpfs                    1.2G     0  1.2G    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    230M  4.0K  230M    1% /run/user/42
tmpfs                    230M   28K  230M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/md5                  20G   33M   20G    1% /root/data

验证RAID5

[root@localhost ~]# mdadm /dev/md5 -f /dev/vg1/ky29
mdadm: set /dev/vg1/ky29 faulty in /dev/md5
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue May  9 18:52:46 2023
        Raid Level : raid5
        Array Size : 20955136 (19.98 GiB 21.46 GB)
     Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue May  9 19:00:41 2023
             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 : 6494eb98:484f4fcf:a15aa43d:1c2a5b6b
            Events : 37

    Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1     253        3        1      active sync   /dev/dm-3
       4     253        4        2      active sync   /dev/dm-4

       0     253        2        -      faulty   /dev/dm-2