[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 Dec  2 09:55 /dev/sda
brw-rw----. 1 root disk 8,  1 Dec  2 09:55 /dev/sda1
brw-rw----. 1 root disk 8,  2 Dec  2 09:55 /dev/sda2
brw-rw----. 1 root disk 8, 16 Dec  2 09:55 /dev/sdb
brw-rw----. 1 root disk 8, 32 Dec  2 09:55 /dev/sdc
brw-rw----. 1 root disk 8, 48 Dec  2 09:55 /dev/sdd
brw-rw----. 1 root disk 8, 64 Dec  2 09:55 /dev/sde
brw-rw----. 1 root disk 8, 80 Dec  2 09:55 /dev/sdf
[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
  ├─cs-root 253:0    0 61.2G  0 lvm  /
  ├─cs-swap 253:1    0  7.8G  0 lvm  [SWAP]
  └─cs-home 253:2    0 29.9G  0 lvm  /home
sdb           8:16   0   20G  0 disk 
sdc           8:32   0   20G  0 disk 
sdd           8:48   0   20G  0 disk 
sde           8:64   0   20G  0 disk 
sdf           8:80   0   20G  0 disk 
sr0          11:0    1 12.8G  0 rom  /run/media/root/CentOS-Stream-9-BaseOS-x86_64

raid命令

mdadm  -C /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e}
mkfs.ext4 /dev/md0

lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
sda           8:0    0  100G  0 disk  
├─sda1        8:1    0    1G  0 part  /boot
└─sda2        8:2    0   99G  0 part  
  ├─cs-root 253:0    0 61.2G  0 lvm   /
  ├─cs-swap 253:1    0  7.8G  0 lvm   [SWAP]
  └─cs-home 253:2    0 29.9G  0 lvm   /home
sdb           8:16   0   20G  0 disk  
└─md0         9:0    0   40G  0 raid5 
sdc           8:32   0   20G  0 disk  
└─md0         9:0    0   40G  0 raid5 
sdd           8:48   0   20G  0 disk  
└─md0         9:0    0   40G  0 raid5 
sde           8:64   0   20G  0 disk  
└─md0         9:0    0   40G  0 raid5 
sdf           8:80   0   20G  0 disk  
sr0          11:0    1 12.8G  0 rom   /run/media/root/CentOS-Stream-9-BaseOS-x86_64

[root@localhost ~]# mount /dev/md0  /mnt/raid5/
[root@localhost ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             4.0M     0  4.0M   0% /dev
tmpfs                3.9G     0  3.9G   0% /dev/shm
tmpfs                1.6G  9.7M  1.6G   1% /run
/dev/mapper/cs-root   62G  5.4G   56G   9% /
/dev/sda1            960M  399M  562M  42% /boot
/dev/mapper/cs-home   30G  252M   30G   1% /home
tmpfs                791M   96K  791M   1% /run/user/0
/dev/sr0              13G   13G     0 100% /run/media/root/CentOS-Stream-9-BaseOS-x86_64
/dev/md0              40G   24K   38G   1% /mnt/raid5

raid解释

  1. mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e}

    • mdadm: Linux 下的软件 RAID 管理工具
    • -C /dev/md0: 创建一个名为 /dev/md0 的 RAID 设备
    • -l5: 设置 RAID 级别为 RAID 5(提供数据冗余和性能平衡)
    • -n3: 指定使用 3 个活跃磁盘 组成阵列
    • -x1: 指定 1 个备用磁盘 (用于在活跃磁盘故障时自动替换)
    • /dev/sd{b,c,d,e}: 指定使用的物理磁盘是 /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
    • 这条命令的作用是:sdb, sdc, sdd 作为活跃磁盘,sde 作为备用磁盘,创建一个 RAID 5 阵列 /dev/md0
  2. mkfs.ext4 /dev/md0

    • mkfs.ext4: 创建 ext4 文件系统的工具
    • /dev/md0: 指定在哪个设备上创建文件系统
    • 这条命令的作用是: 在刚刚创建的 RAID 阵列 /dev/md0 上格式化一个 ext4 文件系统。

这两条命令先创建了一个由三块磁盘加一块热备盘组成的 RAID 5 阵列,然后在该阵列上创建了 ext4 文件系统,之后就可以像使用普通磁盘一样挂载和使用 /dev/md0 了。

mdadm --detail /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Tue Dec  2 11:35:31 2025
        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

     Intent Bitmap : Internal

       Update Time : Tue Dec  2 11:39:18 2025
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 89e11658:9a513295:6b7549c4:987eb27d
            Events : 25

    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

watch -n 1 'mdadm --detail /dev/md0'

这个命令用于实时监控 /dev/md0 软件 RAID 阵列的状态,每秒刷新一次显示。以下是详细说明:

命令结构:

watch -n 1 'mdadm --detail /dev/md0'

组成部分解析:

  1. watch
    周期性执行指定命令的工具

  2. -n 1
    设置刷新间隔为 1 秒(默认 2 秒)

  3. mdadm --detail /dev/md0

    • mdadm:Linux 软件 RAID 管理工具
    • --detail:显示 RAID 设备详细信息
    • /dev/md0:目标 RAID 设备路径(需替换为实际设备名)

输出内容示例:

/dev/md0:
        Version : 1.2
  Creation Time : Mon Jan 01 00:00:00 2023
     Raid Level : raid1
     Array Size : 2095104 (2046.00 MiB)
  Used Dev Size : 2095104 (2046.00 MiB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Tue Jan 02 12:30:00 2023
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : server:0
           UUID : 5a1f3c8b:7e62d4a1:01e5d3f7:3b7a1c9d
         Events : 42

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8        1        1      active sync   /dev/sdb

关键监控指标:

  1. State:阵列状态(clean/degraded/recovering 等)
  2. Active Devices:正常工作的磁盘数
  3. Failed Devices:故障磁盘数
  4. 同步进度(重建时显示进度百分比)

使用场景:

  • RAID 重建过程监控
  • 磁盘故障实时诊断
  • 阵列性能调优观察

退出方式
Ctrl+C 终止监控

注意:执行需 root 权限,设备路径 /dev/md0 需根据实际配置修改。

谨慎执行

您已成功从阵列 /dev/md0 中移除了硬盘 /dev/sde。该硬盘已被标记为故障并执行热移除操作。此时阵列处于降级运行状态,建议立即执行以下步骤:

  1. 物理操作

    • 断开服务器电源
    • 拔出故障硬盘 /dev/sde
    • 插入同容量或更大容量的新硬盘(需确认兼容性)
  2. 阵列修复

    # 查看新硬盘是否被识别为 /dev/sdX (如 /dev/sdf)
    lsblk
    
    # 将新硬盘加入阵列
    mdadm /dev/md0 --add /dev/sdf
    
    # 监控重建进度
    watch -n 1 cat /proc/mdstat
    

    重建过程中阵列仍可读写,但性能可能下降。

  3. 完整性验证(可选):

    # 检查阵列状态
    mdadm --detail /dev/md0
    
    # 扫描文件系统错误(若阵列为文件系统底层设备)
    fsck /dev/md0
    

注意:若该阵列承载关键业务,建议在重建期间启用备份访问模式。重建时间取决于硬盘容量(例如 10TB 硬盘约需 6-10 小时)。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐