Linux独立冗余磁盘阵列(RAID)

目录


前言

运行环境:VMware16pro + centos8.3
特别申明:space 为一个空格。


一、RAID

1.RAID概述

  • 把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列
  • 把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上
  • 利用分散读写技术来提升磁盘阵列整体的性能
  • 同时把多个重要数据的副本同步到不同的物理硬盘设备上
  • 非常好的数据冗余备份效果

2.常见的RAID方案

方案 原理 优缺点 图示
RAID 0 1、物理硬盘设备串联组成卷组
2、数据依次写入各个物理硬盘
1、提升硬盘数据的传输速度
2、任一硬盘故障都会损坏整个系统的数据
3、不具备数据备份和错误修复能力
Linux独立冗余磁盘阵列(RAID)
RAID 1 1、两块以上硬盘设备进行绑定
2、数据同时写入多块硬盘设备
3、硬盘故障,自动以热交换的方式来恢复数据的使用
1、数据安全性提高
2、硬盘利用率下降
3、系统计算功能负载增加
Linux独立冗余磁盘阵列(RAID)
RAID 5 1、没有备份硬盘中的真实数据信息
2、把阵列组数据的奇偶校验信息存储到除自身以外的其他每一块硬盘设备
3、硬盘故障,通过奇偶校验信息来尝试重建损坏的数据
(parity 部分存放的就是数据的奇偶校验信息)
兼顾了硬盘设备的读写速度、数据安全性与存储成本问题 Linux独立冗余磁盘阵列(RAID)
RAID 10 1、RAID1+RAID0技术的一个“组合体”
2、至少需要4 块硬盘来组建
3、先分别两两制作成RAID 1 磁盘阵列,保证数据安全性;然后对两个RAID1磁盘阵列实施RAID0技术,提高读写速度
1、只要坏的不是同一组中的所有硬盘,那么不丢失数据
2、继承了RAID 0 的高读写速度和RAID1 的数据安全性
3、不考虑成本时,RAID 10 的性能都超过了RAID 5
4、当前广泛使用
Linux独立冗余磁盘阵列(RAID)

二、部署磁盘阵列

1、相关命令:mdadm

用途:管理Linux系统中软件RAID磁盘阵列
格式:mdadmspace[参数]

模式参数 说明
create 创建一个新的RAID,每个设备都具有元数据(超级块)
build 创建或组合一个没有元数据(超级块)的RAID
assemble 组装以前创建的RAID的组件集成到一个活动RAID
manage 更改一个现有的RAID,比如添加新的备用成员和删除故障设备
misc 报告或修改各种RAID相关设备,比如查询RAID或者设备的状态信息、删除旧的超级块
grow 调整/重新塑造一个活动RAID,比如改变RAID容量或阵列中的设备数目。
monitor 监控一个或多个RAID的更改
incremental 添加设备到RAID中,或从RAID中删除设备。
参数 说明
-a 检测设备名称
-n 指定设备数量
-l 指定RAID
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID

2、部署RAID10磁盘阵列

⑴使用 mdadm 命令创建RAID 10,名称为“/dev/md0”

mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
命令 -C 参数创建RAID阵列卡
-v参数显示创建过程
RAID 磁盘
阵列名称
-a yes 参数自动创建设备文件 -n 4 参数使用4 块硬盘部署 -l 10 参数使用RAID10方案 4 块硬盘设备的名称
[root@CentOS64 ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

⑵把制作好的 RAID 磁盘阵列格式化为ext4 格式

[root@CentOS64 ~]# mkfs.ext4 /dev/md0
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 3ce6e94d-ddde-4b38-87fd-94d680689386
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information:   0/32done 

⑶创建挂载点然后把硬盘设备进行挂载操作

  • ❶创建挂载点
[root@CentOS64 ~]# mkdir /RAID
  • ❷把硬盘设备进行挂载
[root@CentOS64 ~]# mount /dev/md0 /RAID
  • ❸查看是否挂载成功
[root@CentOS64 ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      1.8G     0  1.8G   0% /dev
tmpfs                         1.9G     0  1.9G   0% /dev/shm
tmpfs                         1.9G   10M  1.9G   1% /run
tmpfs                         1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl_centos64-root   20G  4.3G   16G  22% /
/dev/mapper/cl_centos64-user  2.0G   47M  2.0G   3% /user
/dev/sda1                     395M  225M  171M  57% /boot
/dev/mapper/cl_centos64-home  2.0G  926M  1.1G  46% /home
/dev/mapper/cl_centos64-var   2.0G  565M  1.5G  28% /var
tmpfs                         371M  1.2M  370M   1% /run/user/42
tmpfs                         371M  4.6M  367M   2% /run/user/1000
/dev/sr0                      683M  683M     0 100% /run/media/centos/CentOS-8-3-2011-x86_64-dvd
/dev/md0  

⑷查看/dev/md0 磁盘阵列的详细信息

[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Mar  3 18:43:00 2021
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Mar  3 18:46:29 2021
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : CentOS64:0  (local to host CentOS64)
              UUID : 46a97ec4:c89087eb:8c74e7c8:c28d1043
            Events : 25

    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

⑸挂载信息写入配置文件,使其永久生效

[root@CentOS64 ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Feb 18 08:25:14 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl_centos64-root /                       xfs     defaults        0 0
UUID=ec3468bb-5c24-48c1-9439-a8f79836cee1 /boot      xfs     defaults        0 0
/dev/mapper/cl_centos64-home /home                   xfs     defaults        0 0
/dev/mapper/cl_centos64-user /user                   xfs     defaults        0 0
/dev/mapper/cl_centos64-var /var                     xfs     defaults        0 0
/dev/mapper/cl_centos64-swap none                    swap    defaults        0 0
/dev/md0                    /RAID                    ext4    defaults        0 0

三、损坏磁盘阵列的修复

⑴模拟硬盘损坏:移除/dev/sdb

[root@CentOS64 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0

⑵查看RAID 磁盘阵列的状态

[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Mar  3 18:43:00 2021
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Mar  3 18:57:16 2021
             State : clean, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : CentOS64:0  (local to host CentOS64)
              UUID : 46a97ec4:c89087eb:8c74e7c8:c28d1043
            Events : 27

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       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

       0       8       16        -      faulty   /dev/sdb

⑶安装新的硬盘
Linux独立冗余磁盘阵列(RAID)⑷用mdadm 命令把新的硬盘添加到RAID 磁盘阵列

  • ❶于挂载点,移除文件系统
[centos@CentOS64 ~]$ su - root
Password: 
[root@CentOS64 ~]# umount /RAID
  • ❷替换损坏硬盘
[root@CentOS64 ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
  • ❸查看RAID 磁盘阵列的状态
    第一次查看:显示“spare rebuilding”,即“正在重建”;
    第二次查看:RAID 磁盘阵列的状态完好。
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /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
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
    Number   Major   Minor   RaidDevice State
       4       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
[root@CentOS64 ~]# 

⑸挂载
前面在创建RAID10时将挂载信息写入配置文件“/etc/fstab”。此处用“mount -a”自动挂载“ /etc/fstab”即可 。

[root@CentOS64 ~]# mount -a
[root@CentOS64 ~]# 

四、部署RAID5磁盘阵列及备份盘

⑴创建一个RAID 5 磁盘阵列+备份盘

[root@CentOS64 ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
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/md0 started.
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
    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@CentOS64 ~]# mkfs.ext4 /dev/md0
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 2346f63c-8103-4943-bbb1-dd478291e285
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   

⑶挂载

[root@CentOS64 ~]# echo " /dev/md0 /RAID ext4 defaults 0 0 " >> /etc/fstab
[root@CentOS64 ~]# mkdir /RAID
[root@CentOS64 ~]# mount -a

⑷移除测试

[root@CentOS64 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

参考

1、https://www.linuxprobe.com
2、https://www.linuxcool.com

上一篇:Linux 之 RAID 磁盘阵列


下一篇:SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析