【Linux】磁盘管理

RAID 存储

RAID 概念

RAID,即廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks)

大容量磁盘价格高昂,RAID的核心思路是将多块容量小成本低的磁盘组合成大容量高性能可靠性的大容量磁盘。

随着磁盘成本大幅下降,“廉价”概念失去意义,RAID咨询委员会(RAID Advisory Board, RAB)将“廉价(Inexpensive)”替换为“独立(Independent)”,RAID自此定义为独立磁盘冗余阵列(Redundant Array of Independent Disks)

RAID 实现方式

从技术实现维度,RAID主要分为三类,核心差异在于是否依赖专用硬件芯片:

  • 软 RAID:无独立的RAID控制/处理芯片和I/O处理芯片,所有RAID功能由操作系统和CPU完成,实现成本低但效率最差。
  • 硬 RAID:配备专用RAID控制/处理芯片、I/O处理芯片及阵列缓冲,不占用主机CPU资源,性能优异但硬件成本高。
  • 软硬混合 RAID:具备RAID控制/处理芯片,但无独立I/O处理芯片,需CPU和驱动程序辅助完成功能,性能与成本介于软RAID和硬RAID之间。

操作系统识别到的设备是raid卡提供的设备,而不是直接管理底层硬盘。

RAID 级别

RAID通过数据条带、镜像、数据校验三类核心技术实现高性能、高可靠性、容错能力和扩展性。不同技术的组合策略形成不同RAID级别,以适配不同数据应用场景。

D. A. Patterson等的论文最初定义了RAID1RAID5,1988年后扩展出RAID0和RAID6;后续厂商推出的RAID7、RAID10/01、RAID50等无统一标准,业界公认的核心级别为RAID0RAID5,实际应用中以RAID0、RAID1、RAID4、RAID5、RAID6、RAID10为主。

各RAID级别无高低之分,需结合业务对可用性、性能、成本的需求选择适配的级别和实现方式。

在这里插入图片描述

RAID 实践

实验环境需在虚拟机中添加6块20G硬盘,设备名分别为sdb、sdc、sdd、sde、sdf、sdg,用于后续各类RAID阵列的创建与测试。

Linux系统中通过mdadm工具实现软RAID的创建、配置、监控与维护,以下为核心RAID级别的实操流程。

管理 RAID 0
1 创建 RAID 0
# 安装mdadm工具(CentOS系统)
[root@CentOS7 ~ 17:19:59]# yum install -y mdadm

# 创建RAID 0阵列:设备名/dev/md0,级别0,成员盘2块(sdb、sdc)
[root@CentOS7 ~ 17:26:15]# mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

注释:--level指定RAID级别,--raid-devices指定成员盘数量,/dev/sd{b,c}sdbsdc的简写。

2 查看 RAID 0 状态
# 查看RAID概要信息(内核态RAID状态)
[root@CentOS7 ~ 17:27:38]# cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 sdc[1] sdb[0]
      41908224 blocks super 1.2 512k chunks
      
unused devices: <none>

# 查看RAID设备详细信息
[root@CentOS7 ~ 17:28:05]# mdadm --detail /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Thu Apr  9 17:27:38 2026
        Raid Level : raid0
        Array Size : 41908224 (39.97 GiB 42.91 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Apr  9 17:27:38 2026
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : CentOS7.harvy.iCloud:0  (local to host CentOS7.harvy.iCloud)
              UUID : 344bbbde:8d00149f:a3dcbf9d:a0fb8b4f
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

注释:核心关注Raid Level(级别)、State(状态,clean为正常)、Chunk Size(条带块大小)、成员盘状态。

# 查看RAID设备与物理盘的映射关系
[root@CentOS7 ~ 17:28:32]# lsblk /dev/md0 
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md0    9:0    0  40G  0 raid0 

[root@CentOS7 ~ 17:29:21]# lsblk /dev/sdb /dev/sdc
NAME  MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
sdb     8:16   0  20G  0 disk  
└─md0   9:0    0  40G  0 raid0 
sdc     8:32   0  20G  0 disk  
└─md0   9:0    0  40G  0 raid0 
3 格式化与挂载 RAID 0
# 格式化RAID设备为XFS文件系统
[root@CentOS7 ~ 17:29:47]# mkfs.xfs /dev/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@CentOS7 ~ 17:30:27]# mkdir -p /raid/raid0
# 挂载RAID设备到挂载点
[root@CentOS7 ~ 17:32:13]# mount /dev/md0 /raid/raid0/
# 验证挂载结果
[root@CentOS7 ~ 17:32:30]# df -h /raid/raid0/
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0         40G   33M   40G   1% /raid/raid0

# 测试数据写入
[root@CentOS7 ~ 17:32:39]# cp /etc/ho* /raid/raid0/
[root@CentOS7 ~ 18:20:49]# ll /raid/raid0/
total 20
-rw-r--r-- 1 root root   9 Apr  9 18:20 host.conf
-rw-r--r-- 1 root root  21 Apr  9 18:20 hostname
-rw-r--r-- 1 root root 158 Apr  9 18:20 hosts
-rw-r--r-- 1 root root 370 Apr  9 18:20 hosts.allow
-rw-r--r-- 1 root root 460 Apr  9 18:20 hosts.deny
4 删除 RAID 0
# 卸载挂载点
[root@CentOS7 ~ 18:20:57]# umount /dev/md0 

# 停止RAID阵列(销毁阵列)
[root@CentOS7 ~ 18:21:42]# mdadm --stop /dev/md0 
mdadm: stopped /dev/md0

# 清除物理盘上的RAID超级块(恢复为普通磁盘)
[root@CentOS7 ~ 18:22:02]# mdadm --zero-superblock /dev/sd{b,c}
[root@CentOS7 ~ 18:23:17]# for device in /dev/sd{b,c}
> do
> dd if=/dev/zero of=$device bs=1M count=1024
> done
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 28.376 s, 37.8 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.97037 s, 361 MB/s
5 补充说明
  • RAID 0不支持新增成员盘扩展容量:
bash [root@centos7 ~]# mdadm --add /dev/md0 /dev/sdd mdadm: add new device failed for /dev/sdd as 2: Invalid argument
  • RAID 0不支持标记单盘故障(无冗余,单盘故障即阵列失效):
bash [root@centos7 ~]# mdadm --fail /dev/md0 /dev/sdc mdadm: Cannot remove /dev/sdc from /dev/md0, array will be failed.
管理 RAID 1
1 创建 RAID 1
# 创建RAID 1阵列:设备名/dev/md1,级别1,成员盘2块(sdb、sdc)
[root@CentOS7 ~ 18:27:02]# mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
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
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

注释:RAID 1元数据默认存储在磁盘开头,若用于/boot分区需指定--metadata=0.90兼容老旧引导程序。

2 查看 RAID 1 状态
[root@CentOS7 ~ 18:28:35]# mdadm --detail /dev/md1 
/dev/md1:
           Version : 1.2
     Creation Time : Thu Apr  9 18:28:34 2026
        Raid Level : raid1
        Array Size : 20954112 (19.98 GiB 21.46 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Apr  9 18:30:50 2026
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : CentOS7.harvy.iCloud:1  (local to host CentOS7.harvy.iCloud)
              UUID : ac3f8b20:dd04f957:00a429d2:e22ebadf
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

注释:resyncing表示镜像数据正在同步,需等待同步完成(100%)后再进行格式化操作。

# 查看RAID与物理盘映射
[root@CentOS7 ~ 18:31:12]# lsblk /dev/md1 
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md1    9:1    0  20G  0 raid1 

[root@CentOS7 ~ 18:31:50]# lsblk /dev/sd{b,c}
NAME  MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
sdb     8:16   0  20G  0 disk  
└─md1   9:1    0  20G  0 raid1 
sdc     8:32   0  20G  0 disk  
└─md1   9:1    0  20G  0 raid1 
3 格式化与挂载 RAID 1
# 等待同步完成后,格式化RAID设备
[root@CentOS7 ~ 18:32:08]# mkfs.xfs /dev/md1 
meta-data=/dev/md1               isize=512    agcount=4, agsize=1309632 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5238528, 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@CentOS7 ~ 18:32:47]# mkdir /raid/raid1
# 挂载设备
[root@CentOS7 ~ 18:33:01]# mount /dev/md1 /raid/raid1
# 验证挂载
[root@CentOS7 ~ 18:33:18]# df -h /raid/raid1
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         20G   33M   20G   1% /raid/raid1

# 测试数据写入
[root@CentOS7 ~ 18:33:31]# cp /etc/ho* /raid/raid1
[root@CentOS7 ~ 18:34:44]# ls /raid/raid1
host.conf  hostname  hosts  hosts.allow  hosts.deny
4 增加热备盘
# 为RAID 1添加热备盘sdd
[root@CentOS7 ~ 18:34:52]# mdadm --add /dev/md1 /dev/sdd
mdadm: added /dev/sdd

# 查看热备盘状态(spare为备用)
[root@CentOS7 ~ 18:35:39]# mdadm --detail /dev/md1 |tail -5
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

       2       8       48        -      spare   /dev/sdd
5 模拟磁盘故障
# 手动标记sdc为故障盘
[root@CentOS7 ~ 18:36:56]# mdadm --fail /dev/md1 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1

# 查看故障后状态(sdd自动顶替并同步)
[root@CentOS7 ~ 18:37:04]# mdadm --detail /dev/md1 |tail -5
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       2       8       48        1      spare rebuilding   /dev/sdd

       1       8       32        -      faulty   /dev/sdc

# 验证数据可正常访问
[root@CentOS7 ~ 18:37:14]# ls /raid/raid1
4host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@CentOS7 ~ 18:37:37]# cat /raid/raid1/hostname 
CentOS7.harvy.iCloud
6 删除故障磁盘
# 移除故障盘sdc
[root@CentOS7 ~ 18:37:52]# mdadm --remove /dev/md1 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md1

# 验证移除结果
[root@CentOS7 ~ 18:38:53]# mdadm --detail /dev/md1 |tail -5
            Events : 38

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       2       8       48        1      spare rebuilding   /dev/sdd
7 再次模拟故障
[root@CentOS7 ~ 18:39:03]# mdadm --fail /dev/md1 /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md1

[root@CentOS7 ~ 18:43:08]# mdadm --detail /dev/md1 |tail -5
    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       2       8       48        1      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

[root@CentOS7 ~ 18:43:12]# ls /raid/raid1
host.conf  hostname  hosts  hosts.allow  hosts.deny

[root@CentOS7 ~ 18:43:20]# echo this is raid1 > /raid/raid1/test.txt
[root@CentOS7 ~ 18:43:50]# cat /raid/raid1/test.txt
this is raid1

[root@CentOS7 ~ 18:43:59]# umount /raid/raid1 
[root@CentOS7 ~ 18:44:52]# mount /dev/md1 /raid/raid1
[root@CentOS7 ~ 18:45:08]# ls /raid/raid1/test.txt
/raid/raid1/test.txt

总结:raid1阵列中任一成员故障,不影响数据的完整性。

8 删除 RAID 1
# 卸载挂载点
[root@CentOS7 ~ 18:45:20]# umount /dev/md1 

# 停止RAID阵列
[root@CentOS7 ~ 18:45:59]# mdadm --stop /dev/md1 
mdadm: stopped /dev/md1

# 清除物理盘超级块
[root@CentOS7 ~ 18:46:11]# mdadm --zero-superblock /dev/sd{b..d}

使用dd工具填充更彻底。

[root@CentOS7 ~ 18:46:53]# for device in /dev/sd{b..d}
> do
> dd if=/dev/zero of=$device bs=1M count=1024
> done
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.36571 s, 319 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.76397 s, 388 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.65793 s, 404 MB/s

作用:使用0填充/dev/sdb硬盘。

  • if:Input File,/dev/zero 全为0
  • of:Output File
  • bs:Block Size,每次添加多大数据流
  • count:一共填充多少个Block
9 补充说明

RAID 1核心价值是数据冗余,而非扩容:即使新增磁盘,阵列总容量仍等于单盘容量(镜像机制),无法通过加盘提升可用空间。

管理 RAID 5
1 创建 RAID 5
# 创建RAID 5阵列:设备名/dev/md5,级别5,成员盘4块(sdb、sdc、sdd、sde)
[root@CentOS7 ~ 18:47:52]# mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

注释:RAID 5最少需3块盘,此处用4块盘(1块用于分布式校验)。

2 查看 RAID 5 状态
[root@CentOS7 ~ 18:49:28]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Thu Apr  9 18:49:27 2026
        Raid Level : raid5
        Array Size : 62862336 (59.95 GiB 64.37 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Apr  9 18:49:49 2026
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 6% complete

              Name : CentOS7.harvy.iCloud:5  (local to host CentOS7.harvy.iCloud)
              UUID : 361a790e:66ef46be:32867556:3bbbeccf
            Events : 2

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

注释:recovering表示阵列正在构建/同步,需等待同步完成后再格式化。

# 查看RAID与物理盘映射
[root@CentOS7 ~ 18:49:51]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md5    9:5    0  60G  0 raid5 

[root@CentOS7 ~ 18:50:23]# lsblk /dev/sd{b..e}
NAME  MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
sdb     8:16   0  20G  0 disk  
└─md5   9:5    0  60G  0 raid5 
sdc     8:32   0  20G  0 disk  
└─md5   9:5    0  60G  0 raid5 
sdd     8:48   0  20G  0 disk  
└─md5   9:5    0  60G  0 raid5 
sde     8:64   0  20G  0 disk  
└─md5   9:5    0  60G  0 raid5 
3 格式化与挂载 RAID 5
# 等待阵列同步完成后,格式化设备
[root@CentOS7 ~ 18:50:35]# mkfs.xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=982144 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=15714304, imaxpct=25
         =                       sunit=128    swidth=384 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=7680, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# 创建挂载点
[root@CentOS7 ~ 18:51:04]# mkdir -p /raid/raid5
# 挂载设备
[root@CentOS7 ~ 18:51:15]# mount /dev/md5 /raid/raid5
# 验证挂载
[root@CentOS7 ~ 18:51:29]# df -h /raid/raid5
Filesystem      Size  Used Avail Use% Mounted on
/dev/md5         60G   33M   60G   1% /raid/raid5

# 测试数据写入
[root@CentOS7 ~ 18:51:38]# cp /etc/ho* /raid/raid5
[root@CentOS7 ~ 18:51:56]# ls /raid/raid5
host.conf  hostname  hosts  hosts.allow  hosts.deny
4 增加热备盘
# 为RAID 5添加热备盘sdf
[root@CentOS7 ~ 18:52:03]# mdadm --add /dev/md5 /dev/sdf
mdadm: added /dev/sdf

# 查看热备盘状态
[root@CentOS7 ~ 18:53:45]# mdadm --detail /dev/md5 |tail -7
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      spare rebuilding   /dev/sde

       5       8       80        -      spare   /dev/sdf
5 模拟磁盘故障
# 标记sdb为故障盘
[root@CentOS7 ~ 18:53:54]# mdadm --fail /dev/md5 /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md5

# 查看故障后状态(sdf自动顶替并同步)
[root@centos7 ~ 18:53:58]# mdadm --detail /dev/md5 |tail -7
     Number   Major   Minor   RaidDevice State
       5       8       80        0      spare rebuilding   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde

       0       8       16        -      faulty   /dev/sdb

# 验证数据可正常访问
[root@CentOS7 ~ 18:56:48]# ls /raid/raid5
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@CentOS7 ~ 18:57:49]# cat /raid/raid5/hostname 
CentOS7.harvy.iCloud
6 删除故障磁盘
# 移除故障盘sdb
[root@CentOS7 ~ 19:33:49]# mdadm --remove /dev/md5 /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md5

# 验证移除结果
[root@CentOS7 ~ 19:34:06]# mdadm --detail /dev/md5 |tail -7
            Events : 25

    Number   Major   Minor   RaidDevice State
       5       8       80        0      spare rebuilding   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde
7 扩容 RAID 5

注释:RAID 5仅支持扩容(增加成员盘),不支持减容;扩容仅在阵列“clean”正常状态下可执行,降级/重构时禁止。

# 新增2块盘(sdb、sdg)到RAID 5
[root@CentOS7 ~ 19:43:08]# mdadm --add /dev/md5 /dev/sd{b,g}
mdadm: added /dev/sdb
mdadm: added /dev/sdg


# 查看新增盘状态(spare为备用)
[root@CentOS7 ~ 19:43:37]# mdadm --detail /dev/md5 |tail -7
       5       8       80        0      active sync   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde

       6       8       16        -      spare   /dev/sdb
       7       8       96        -      spare   /dev/sdg

# 扩展阵列成员数为5(--grow为扩容参数)
[root@CentOS7 ~ 19:43:49]# mdadm --grow /dev/md5 --raid-devices 5
# 等待阵列重构完成(查看进度)
[root@CentOS7 ~ 19:44:28]# mdadm --detail /dev/md5
......
    Reshape Status : 16% complete
     Delta Devices : 1, (4->5)

              Name : centos7.laoma.cloud:5  (local to host centos7.laoma.cloud)
              UUID : 1d4e3f21:1178a4fd:db214497:593e3353
            Events : 79

    Number   Major   Minor   RaidDevice State
       5       8       80        0      active sync   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde
       7       8       96        4      active sync   /dev/sdg

       6       8       16        -      spare   /dev/sdb

# 验证RAID容量(从60G扩容至80G)
[root@CentOS7 ~ 19:51:02]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md5    9:5    0  80G  0 raid5 /raid/raid5

# 扩展文件系统(XFS文件系统用xfs_growfs)
[root@CentOS7 ~ 19:51:12]# xfs_growfs /raid/raid5
meta-data=/dev/md5               isize=512    agcount=16, agsize=982144 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=15714304, imaxpct=25
         =                       sunit=128    swidth=384 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=7680, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 15714304 to 20954112
[root@CentOS7 ~ 19:52:13]# df -h /raid/raid5
Filesystem      Size  Used Avail Use% Mounted on
/dev/md5         80G   34M   80G   1% /raid/raid5
8 再次模拟磁盘故障
[root@CentOS7 ~ 19:53:24]# mdadm --remove /dev/md5 /dev/sdb
[root@CentOS7 ~ 19:53:47]# mdadm --fail /dev/md5 /dev/sdg
mdadm: set /dev/sdg faulty in /dev/md5

[root@CentOS7 ~ 19:54:02]# mdadm --detail /dev/md5 | tail -8
    Number   Major   Minor   RaidDevice State
       5       8       80        0      active sync   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde
       -       0        0        4      removed

       7       8       96        -      faulty   /dev/sdg

[root@centos7 ~]# ls /raid/raid5
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@centos7 ~]# echo hello raid5 > /raid/raid5/test.txt

[root@centos7 ~]# umount /raid/raid5 
[root@centos7 ~]# mount /dev/md5 /raid/raid5
[root@centos7 ~]# ls /raid/raid5
host.conf  hostname  hosts  hosts.allow  hosts.deny  test.txt
9 删除 RAID 5
# 卸载挂载点
[root@CentOS7 ~ 19:55:30]# umount /dev/md5

# 停止RAID阵列
[root@CentOS7 ~ 19:55:50]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5

# 清除物理盘超级块
[root@centos7 ~ 19:57:52]# mdadm --zero-superblock /dev/sd{b..g}

也可以使用dd彻底擦除:

for device in /dev/sd{b..g}
do
  dd if=/dev/zero of=$device bs=1M count=1024
done
10 重构 RAID 5

注释:若停止阵列后未清除超级块,可通过以下命令重构阵列,数据不丢失:

[root@centos7 ~]# mdadm --assemble /dev/md5 /dev/sd{b..g}

补充

raid阵列可以进一步使用分区技术分割成多个分区,然后再格式化使用。特别是raid5这种大容量的盘。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐