Linux 磁盘管理-RAID磁盘冗余阵列看这一篇就够了

news2024/9/23 9:26:12

今天给伙伴们分享一下Linux 磁盘管理-RAID磁盘冗余阵列,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)技术方案的特性,并通过实际部署RAID 10、RAID 5+备份盘等方案来更直观地查看RAID的强大效果,以便进一步满足生产环境对硬盘设备的IO读写速度和数据冗余备份机制的需求。同时,考虑到用户可能会动态调整存储资源,

  • 近年来,CPU的处理性能保持着高速增长。2017年,Intel公司发布了i9-7980XE处理器芯片,率先让家用电脑达到了18核心36线程。2020年末,AMD公司又推出了“线程撕裂者”系统处理器3990X,家用电脑自此也可以轻松驾驭64核心128线程的处理器小怪兽了。但与此同时,硬盘设备的性能提升却不是很大,逐渐成为当代计算机整体性能的瓶颈。而且,由于硬盘设备需要进行持续、频繁、大量的IO操作,相较于其他设备,其损坏几率也大幅增加,导致重要数据丢失的几率也随之增加。

  • 硬盘设备是计算机中较容易出现故障的元器件之一,加之由于其需要存储数据的特殊性质,不能像CPU、内存、电源甚至主板那样在出现故障后更换新的就好,所以在生产环境中一定要未雨绸缪,提前做好数据的冗余及异地备份等工作。

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

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

  • 出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案。目前已有的RAID磁盘阵列的方案至少有十几种,接下来会详细讲解RAID 0、RAID 1、RAID 5与RAID 10这4种最常见的方案。这4种方案的对比如表7-1所示,其中n代表硬盘总数。

表7-3 RAID 0、1、5、10方案技术对比

RAID级别最少硬盘可用容量读写性能安全性特点
02nn追求最大容量和速度,任何一块盘损坏,数据全部异常。
12n/2n追求最大安全性,只要阵列组中有一块硬盘可用,数据不受影响。
53n-1n-1在控制成本的前提下,追求硬盘的最大容量、速度及安全性,允许有一块硬盘异常,数据不受影响。
104n/2n/2综合RAID1和RAID0的优点,追求硬盘的速度和安全性,允许有一半硬盘异常(不可同组),数据不受影响

1、RAID 0

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

RAID磁盘阵列

图1 RAID 0技术示意图

2、RAID 1

  • 如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到RAID 1技术了。

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

RAID磁盘阵列

图2 RAID 1技术示意图

  • 考虑到在进行写入操作时因硬盘切换带来的开销,因此RAID 1的速度会比RAID 0有微弱地降低。但在读取数据的时候,操作系统可以分别从两块硬盘中读取信息,因此理论读取速度的峰值可以是硬盘数量的倍数。另外,平时只要保证有一块硬盘稳定运行,数据就不会出现损坏的情况,可靠性较高。

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

3、RAID 5

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

RAID磁盘阵列

图3 RAID5技术示意图

  • RAID 5最少由3块硬盘组成,使用的是硬盘切割(Disk Striping)技术。相较于RAID 1级别,好处就在于保存的是奇偶校验信息而不是一模一样的文件内容,所以当重复写入某个文件时,RAID 5级别的磁盘阵列组只需要对应一个奇偶校验信息就可以,效率更高,存储成本也会随之降低。

4、RAID 10

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

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

RAID磁盘阵列

图4 RAID 10技术示意图

  • 由于RAID 10是由RAID 1和RAID 0组成的,因此正确的叫法是“RAID一零”,而不是“RAID十”。

  • 仔细查看图4可以发现,RAID 10是先对信息进行分割,然后再两两一组制作镜像。也就是先将RAID 1作为最低级别的组合,然后再使用RAID 0技术将RAID 1磁盘阵列组合到一起,将它们视为“一整块”硬盘。而RAID 01则相反,它是先将硬盘分为两组,然后使用RAID 0作为最低级别的组合,再将这两组RAID 0硬盘通过RAID 1技术组合到一起。

  • RAID 10技术和RAID 01技术的区别非常明显。在RAID 10中,任何一块硬盘损坏都不会影响到数据安全性,其余硬盘均会正常运作。但在RAID 01中,只要有任何一块硬盘损坏,最低级别的RAID 0磁盘阵列马上会停止运作,这可能造成严重隐患。所以RAID 10远比RAID 01常见,很多主板甚至不支持RAID 01。

5、部署磁盘阵列

  • 首先,需要在虚拟机中添加4块硬盘设备来制作一个RAID 10磁盘阵列,记得硬盘要用SCSI或SATA接口的类型,大小默认20GB就可以。

  • 需要注意的是,一定要记得在关闭系统之后,再在虚拟机中添加硬盘设备,否则可能会因为计算机架构的不同而导致虚拟机系统无法识别新添加的硬盘设备。

  • 当前,生产环境中用到的服务器一般都配备RAID阵列卡,学习可以使用mdadm命令在Linux系统中创建和管理软件RAID磁盘阵列,而且它涉及的理论知识和操作过程与生产环境中的完全一致。

1、mdadm 命令创建磁盘阵列
  • 用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,
  • 语法格式为“mdadm参数 硬盘名称”。

RAID磁盘阵列

图5 添加四块硬盘设备

  • mdadm命令中的常用参数及作用 软raid 是要依靠操作系统,消耗算力 (cpu) 影响线上的业务 软raid 性能相对较弱,高并发io请求就力不从心
  • raid 硬件卡 自带算力cpu,带缓存机制 web 界面 识别机器上所有的硬盘

表7-2 mdadm命令的常用参数和作用

参数作用
-a添加新的磁盘到阵列
-n指定设备数量
-l指定RAID级别
-C创建
-v显示过程
-f模拟设备损坏
-r移除设备
-Q查看摘要信息
-D查看详细信息
-S停止RAID磁盘阵列

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

  • -C参数代表创建一个RAID阵列卡;
  • -v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;
  • -n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;
  • -l 10参数则代表RAID 10方案;
  • 最后再加上4块硬盘设备的名称就搞定了
[root@edenluo.com ~]# mdadm -Cv /dev/md0 -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.
  • 初始化过程大约需要1分钟左右,期间可以用-D参数进行查看。也可以用-Q参数查看简要信息:
[root@edenluo.com ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Aug 27 18:35:47 2023
        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 : Sun Aug 27 18:37:31 2023
             State : clean, resyncing
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

     Resync Status : 50% complete

              Name : student-sys:0  (local to host student-sys)
              UUID : 6dacb70c:66bb7f77:5c85ebb6:f4738ca2
            Events : 8

    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
  • 为什么4块20GB大小的硬盘组成的磁盘阵列组,可用空间只有39.97GB呢?

  • 这里不得不提到RAID 10技术的原理。它通过两两一组硬盘组成的RAID 1磁盘阵列保证了数据的可靠性,其中每一份数据都会被保存两次,因此导致硬盘存在50%的使用率和50%的冗80GB的硬盘容量也就只有一半了。

  • Resync Status 为100%后把制作好的RAID磁盘阵列格式化为Ext4格式:

[root@edenluo.com ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: d1c68318-a919-4211-b4dc-c4437bcfe9da
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@edenluo.com ~]# mkdir /RAID
[root@edenluo.com ~]# mount /dev/md0 /RAID
[root@edenluo.com ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               969M     0  969M   0% /dev
tmpfs                  984M     0  984M   0% /dev/shm
tmpfs                  984M  9.6M  975M   1% /run
tmpfs                  984M     0  984M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sr0               6.7G  6.7G     0 100% /media/cdrom
/dev/sda1             1014M  152M  863M  15% /boot
tmpfs                  197M   16K  197M   1% /run/user/42
tmpfs                  197M  3.5M  194M   2% /run/user/0
/dev/md0                40G   49M   38G   1% /RAID
  • 再来查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确:
[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Jan 13 08:24:58 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 : Thu Jan 14 04:49:57 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 : localhost.localdomain:0  (local to host edenluo.com)
              UUID : 289f501b:3f5f70f9:79189d77:f51ca11a
            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
  • 如果想让创建好的RAID磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,那么一定要记得将信息添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都是有效的。
[root@edenluo.com ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@edenluo.com ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 21 05:03:40 2020
#
# 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/rhel-root                       /                 xfs         defaults      0 0
UUID=2db66eb4-d9c1-4522-8fab-ac074cd3ea0b   /boot             xfs         defaults      0 0
/dev/mapper/rhel-swap                       swap              swap        defaults      0 0
/dev/cdrom                                  /media/cdrom      iso9660     defaults      0 0 
/dev/md0                                    /RAID             ext4        defaults      0 0
  • 挂载生效
[root@edenluo.com ~]# mount -a
[root@edenluo.com ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  475M     0  475M   0% /dev
tmpfs                   tmpfs     487M     0  487M   0% /dev/shm
tmpfs                   tmpfs     487M  7.8M  479M   2% /run
tmpfs                   tmpfs     487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        47G  1.9G   46G   4% /
/dev/sda1               xfs      1014M  169M  846M  17% /boot
tmpfs                   tmpfs      98M     0   98M   0% /run/user/0
/dev/md0                xfs        40G   33M   40G   1% /raid
2、损坏磁盘阵列及修复
  • 确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变:
[root@edenluo.com ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jan 14 05:12:20 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 : Thu Jan 14 05:33:06 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 : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 81ee0668:7627c733:0b170c41:cd12f376
            Events : 19

    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
  • 使用的-f参数是让硬盘模拟损坏的效果。为了能够彻底地将故障盘移除,还要再执行一步操作:
[root@edenluo.com ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
  • 在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。在此期间可以在/RAID目录中正常地创建或删除文件。
  • 由于是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
  • 更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作。
  • 使用-D参数即可看到整个过程和进度(用百分比表示):
[root@edenluo.com ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jan 14 05:12:20 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 : Thu Jan 14 05:37:32 2021
             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 : 77% complete

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 81ee0668:7627c733:0b170c41:cd12f376
            Events : 34

    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
  • 公司机房的阵列卡上有30多块硬盘呢,就算知道/dev/sdb硬盘发生了故障,也不知道该替换哪一块啊,要是错拔了好设备那就麻烦了。
  • ”其实不用担心,因为一旦硬盘发生故障,服务器上相应的指示灯也会变成红灯(或者变成一直闪烁的黄灯),如图6所示。

RAID磁盘阵列

6、磁盘阵列+备份盘

  • RAID 10磁盘阵列中最多允许50%的硬盘设备发生故障,但是存在这样一种极端情况,即同一RAID 1磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失。

  • 在这样的情况下,该怎么办呢?其实,完全可以使用RAID备份盘技术来预防这类事故。该技术的核心理念就是准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦RAID磁盘阵列中有硬盘出现故障后则会马上自动顶替上去。

  • 将虚拟机还原到初始状态。另外,由于刚才已经演示了RAID 10磁盘阵列的部署方法,现在来看一下RAID 5的部署效果。部署RAID 5磁盘阵列时,至少需要用到3块硬盘,还需要再加一块备份硬盘(也叫热备盘),所以总计需要在虚拟机中模拟4块硬盘设备,如图7所示。

RAID磁盘阵列

图7 重置虚拟机后,再添加四块硬盘设备

  • 现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,
  • 参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,
  • 参数-l 5代表RAID的级别,
  • 参数-x 1则代表有一块备份盘。
  • 当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候,就能看到有一块备份盘在等待中了。
[root@edenluo.com ~]# 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@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jan 14 06:12:32 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Jan 14 06:14:16 2021
             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 : cf0c34b6:3b08edfb:85dfa14f:e2bffc1e
            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@edenluo.com ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: ff016386-1126-4799-8a5b-d716242276ec
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@edenluo.com ~]# mkdir /RAID
[root@edenluo.com ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

由3块硬盘组成的RAID 5磁盘阵列,其对应的可用空间是n-1,也就是40GB。热备盘的空间不计算进来,平时完全就是在“睡觉”,只有在意外出现时才会开始工作。

[root@edenluo.com ~]# mount -a
[root@edenluo.com ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               969M     0  969M   0% /dev
tmpfs                  984M     0  984M   0% /dev/shm
tmpfs                  984M  9.6M  974M   1% /run
tmpfs                  984M     0  984M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sr0               6.7G  6.7G     0 100% /media/cdrom
/dev/sda1             1014M  152M  863M  15% /boot
tmpfs                  197M   16K  197M   1% /run/user/42
tmpfs                  197M  3.5M  194M   2% /run/user/0
/dev/md0                40G   49M   38G   1% /RAID
  • 最后是见证奇迹的时刻!我们再次把硬盘设备/dev/sdb移出磁盘阵列,然后迅速查看/dev/md0磁盘阵列的状态,就会发现备份盘已经被自动顶替上去并开始了数据同步。
  • RAID中的这种备份盘技术非常实用,可以在保证RAID磁盘阵列数据安全性的基础上进一步提高数据可靠性。所以,如果公司不差钱的话,还是买上一块备份盘以防万一。
[root@edenluo.com ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jan 14 06:12:32 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Jan 14 06:24:38 2021
             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:0  (local to host localhost.localdomain)
              UUID : cf0c34b6:3b08edfb:85dfa14f:e2bffc1e
            Events : 37

    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

注意:

  • 验证/RAID目录中文件的信息,是否会出现丢失的情况。
  • 如果后面想再添加一块热备盘进来,使用-a参数就可以了。

7、删除磁盘阵列

  • 首先,需要将所有的磁盘都设置成停用状态:
[root@edenluo.com ~]# umount /RAID
[root@edenluo.com ~]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@edenluo.com ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
[root@edenluo.com ~]# mdadm /dev/md0 -f /dev/sde
mdadm: set /dev/sde faulty in /dev/md0
  • 然后再逐一移除出去
[root@edenluo.com ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
[root@edenluo.com ~]# mdadm /dev/md0 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
[root@edenluo.com ~]# mdadm /dev/md0 -r /dev/sdd
mdadm: hot removed /dev/sdd from /dev/md0
[root@edenluo.com ~]# mdadm /dev/md0 -r /dev/sde
mdadm: hot removed /dev/sde from /dev/md0
  • 也可以用“mdadm /dev/md0 -f /dev/sdb -r /dev/sdb”这一条命令搞定。但是,在早期版本的服务器中,这条命令中的-f和-r不能一起使用,因此保守起见,还是一步步地操作。

  • 将所有的硬盘都移除后,再来查看磁盘阵列组的状态:

[root@edenluo.com ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jan 15 08:53:41 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 0
       Persistence : Superblock is persistent

       Update Time : Fri Jan 15 09:00:57 2021
             State : clean, FAILED 
    Active Devices : 0
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       -       0        0        1      removed
       -       0        0        2      removed
  • 停用整个RAID磁盘阵列完成删除
[root@edenluo.com ~]# mdadm --stop /dev/md0   #-S
mdadm: stopped /dev/md0
[root@edenluo.com ~]# ls /dev/md0
ls: cannot access '/dev/md0': No such file or directory
  • 有一些老版本的服务器中,在使用–stop参数后依然会保留设备文件。这很明显是没有处理干净,执行清理环境
[root@edenluo.com ~]# mdadm --remove /dev/md0

如果对伙伴们有帮助,感谢关注支持**「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2117304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习深度学习

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 深度学习概述 1.1 定义与历史背景 深度学习作为机器学习领域的一个重要分支,其核心在于构建由多层(深层)的人工神经网络组成的计算模型,这些模型能够学习数据的多层次抽象表示。深度学习的…

东大成贤资源库-数据挖掘技术与应用 实验一:数据预处理_熟悉数据挖掘数据预处理流程。 基于给定的数据集(csv)文件,完成下列数据处理。 1

【实验内容】 程序清单 import pandas as pd import numpy as np# 读入文件,存放在字典data里 data pd.read_csv("D:\\Desktop\\data1.csv")# 填入Id列空缺的值 for i in range(1,len(data)):if pd.isnull(data[Id][i]):data[Id][i]i1# Id属性列去重&a…

虚拟机的安装步骤

我这里使用的是VMware 1.下载centos7 2.配置 跟这图来就好 开启虚拟机 第一个页面直接回车,忘了截图 等待安装 选择语言,看自己 点击完成 点击继续安装 设置账号密码 然后等待就行 安装完成之后会有一个重启,点击(又忘了截图) 完成许可和网络 最后就可以了

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵…

数据权限的设计与实现系列7——前端筛选器组件Everright-filter用法说明

背景 官方给了全局性的介绍和示例,不过到了具体使用环节,介绍就不是那么清楚明确了,往往是直接放 demo,需要去推测和揣测,然后动手验证。去百度了下,也没找到现成的对该组件的使用说明,得以开荒…

Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题

一 毛发缓存数据巨大的问题(及5个解决方案) 在引擎里模拟毛发,并且把它缓存下来,我们就不需要从外部导入了,所以我们要解决的问题就是怎么样在引擎里自由地控制毛发 1.物理场控制 延申 [技术分享]《UE中的世界物理场…

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介&am…

P1071 [NOIP2009 提高组] 潜伏者

1.题目太长要耐性总结出题目的要求 2.map中count的使用方法 #include <bits/stdc.h> using namespace std; map<char, char>m0, m1;//m0记录密文对明文&#xff0c;m1记录明文对密文int main() {string x, y, z ;//x为密文&#xff0c;y为明文&#xff0c;z为待翻…

SpringBoot+Redis极简整合

1 前言 Redis是现在最受欢迎的NoSQL数据库之一&#xff0c;下面将以最简洁的代码演示&#xff0c;在SpringBoot中使用redis。 2 下载安装Redis 2.1 下载 Redis3.x windows安装版下载地址 2.2 安装到任意位置 一直Next到完即可。 2.3 启动 打开安装目录&#xff0c;点击…

【数据结构】堆——堆排序与海量TopK问题

目录 前言一、堆排序1.1 整体思路1.2 代码部分1.3 建堆的时间复杂度1.4 堆排序的总结 二、向下调整算法的时间复杂度三、向上调整算法的复杂度四、海量TopK问题4.1 TopK题目 总结 前言 上一篇我们学习了堆的数据结构&#xff0c;现在我们来看看堆的日常应用和排序 一、堆排序 …

内网安全-横向移动【3】

1.域横向移动-内网服务-Exchange探针 Exchange是一个电子右键服务组件&#xff0c;由微软公司开发。它不仅是一个邮件系统&#xff0c;还是一个消息与协作系统。Exchange可以用来构建企业、学校的邮件系统&#xff0c;同时也是一个协作平台&#xff0c;可以基于此开发工作流、…

用广播星历计算卫星运动的平均角速度

用广播星历计算卫星位置 1.计算卫星运动的平均角速度 首先根据广播星历中给出的参数计算参考时刻的平均角速度: 式中&#xff0c;GM为万有引力常数G与地球总质量M之乘积&#xff0c;其值为GM3.98600510^14b m3/s2。 然后根据广播星历中给定的摄动参数计算观测时刻卫星的平均…

模版方法模式template method

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresearch/segment-…

C++-----STL简介(了解)

1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版…

手撕Python之生成器、装饰器、异常

1.生成器 生成器的定义方式&#xff1a;在函数中使用yield yield值&#xff1a;将值返回到调用处 我们需要使用next()进行获取yield的返回值 yield的使用以及生成器函数的返回的接收next() def test():yield 1,2,3ttest() print(t) #<generator object test at 0x01B77…

MATLAB-基于高斯过程回归GPR的数据回归预测

目录 目录 1 介绍 1. 1 高斯过程的基本概念 1.2 核函数&#xff08;协方差函数&#xff09; 1.3 GPR 的优点 1.4. GPR 的局限 2 运行结果 3 核心代码 1 介绍 高斯过程回归&#xff08;Gaussian Process Regression, GPR&#xff09;是一种强大的非参数贝叶斯方法&…

JAVA- 多线程

一&#xff0c;多线程的概念 1.并行与并发 并行&#xff1a;多个任务在同一时刻在cpu 上同时执行并发&#xff1a;多个任务在同一时刻在cpu 上交替执行 2.进程与线程 进程&#xff1a;就是操作系统中正在运行的一个应用程序。所以进程也就是“正在进行的程序”。&#xff0…

Java 数据类型详解:基本数据类型与引用数据类型

在 Java 编程语言中&#xff0c;数据类型主要分为两大类&#xff1a;基本数据类型和引用数据类型。理解这两种类型的区别、使用场景及其转换方式是学习 Java 的基础。本文将深入探讨这两类数据类型的特点&#xff0c;并展示自动类型转换、强制类型转换以及自动拆箱和封箱的使用…