环境准备

  • vm虚拟机添加6块SATA硬盘,sdb sdc sdd sde sdf sdg

管理 RAID0

创建 RAID
 ​
 #安装mdadm这个工具,它是用来管理 RAID 磁盘阵列的(就像专门用来组装和管理多个硬盘组合的工具)。-y表示自动确认安装,不用手动输入 yes。
 [root@server ~ 09:20:56]# yum install -y mdadm
 ​
 #用两块硬盘创建一个 RAID0 阵列:
  -C /dev/md0:创建一个名为/dev/md0的 RAID 设备
  --level 0:指定 RAID 级别为 0(把数据拆分到多块硬盘,追求速度)
  -n 2:使用 2 块硬盘
  /dev/sd{b,c}:具体用到的硬盘是sdb和sdc(相当于把这两块硬盘合并成一个 "超级硬盘")
 [root@server ~ 09:28:25]# mdadm -C /dev/md0 --level 0 -n 2 /dev/sd{b,c}
 ​
 [root@server ~ 09:33:46]# lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
 sda               8:0    0  200G  0 disk  
 ├─sda1            8:1    0    1G  0 part  /boot
 └─sda2            8:2    0   52G  0 part  
   ├─centos-root 253:0    0   50G  0 lvm   /
   └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
 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 
 sdd               8:48   0   20G  0 disk  
 sde               8:64   0   20G  0 disk  
 ...... 
 ​
 #查看刚才创建的md0这个 RAID 阵列的详细信息(比如状态、使用的硬盘、容量等)。
 [root@server ~ 09:34:01]# mdadm --detail /dev/md0
 ​
 #专门查看md0这个 RAID 设备的信息(确认它存在且容量正确)
 [root@server ~ 09:34:53]# lsblk /dev/md0
 NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
 md0    9:0    0  40G  0 raid0 
 ​
 ​
格式化和挂载
 [root@centos7 ~]# mkfs.xfs /dev/md0
 #-p级联创建
 [root@server ~ 09:37:52]# mkdir -p /data/raid0
 ​
 #/dev/md0 是你创建的 RAID0 阵列(由两块硬盘组合成的 "虚拟硬盘"),它是实际存储数据的地方。
 #/data/raid0 是一个普通的文件夹(叫 "挂载点"),相当于这个 RAID0 阵列的 "入口"。
 [root@server ~ 09:38:19]# mount /dev/md0 /data/raid0
 ​
 [root@server ~ 09:38:52]# df -h /data/raid0
 文件系统        容量  已用  可用 已用% 挂载点
 /dev/md0         40G   33M   40G    1% /data/raid0
 #查看挂载情况
 [root@server ~ 09:38:59]# lsblk 
 NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
 sda               8:0    0  200G  0 disk  
 ├─sda1            8:1    0    1G  0 part  /boot
 └─sda2            8:2    0   52G  0 part  
   ├─centos-root 253:0    0   50G  0 lvm   /
   └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
 sdb               8:16   0   20G  0 disk  
 └─md0             9:0    0   40G  0 raid0 /data/raid0
 sdc               8:32   0   20G  0 disk  
 └─md0             9:0    0   40G  0 raid0 /data/raid0
 #测试查看
 [root@server ~ 09:39:20]# cp /etc/ho* /data/raid0
 [root@server ~ 09:40:13]# ls /data/raid0/
 host.conf  hostname  hosts  hosts.allow  hosts.deny
 ​
删除 RAID
 #取消挂载
 [root@server ~ 09:40:18]# umount /dev/md0
 #停止md0这个 RAID 阵列(相当于把 "超级硬盘" 拆开)
 [root@server ~ 09:40:56]# mdadm --stop /dev/md0
 mdadm: stopped /dev/md0
 ​
 #清除sdb和sdc上的 RAID 信息(相当于擦掉硬盘上 "属于 RAID" 的标记,让它们变回普通硬盘)
 [root@server ~ 09:41:10]# mdadm --zero-superblock /dev/sd{b,c}
 [root@server ~ 09:41:21]# lsblk 
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sda               8:0    0  200G  0 disk 
 ├─sda1            8:1    0    1G  0 part /boot
 └─sda2            8:2    0   52G  0 part 
   ├─centos-root 253:0    0   50G  0 lvm  /
   └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
 sdb               8:16   0   20G  0 disk 
 sdc               8:32   0   20G  0 disk 
 ​

管理 RAID1

创建 RAID
 # 创建一个包含2个块设备的raid1设备/dev/md1
 [root@server ~ 10:03:29]# mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
 ......
 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 
 ......
 #查看详细信息
 [root@server ~ 10:03:58]# mdadm --detail /dev/md1
 /dev/md1:
            Version : 1.2
      Creation Time : Mon Aug  4 10:03:55 2025
         Raid Level : raid1
 ......
   Number   Major   Minor   RaidDevice State
        0       8       16        0      active sync   /dev/sdb
        1       8       32        1      active sync   /dev/sdc
 ​
 ​
格式化和挂载
 [root@server ~ 10:11:13]# mkfs.xfs /dev/md1 -f
 ​
 [root@server ~ 10:11:40]# mkdir /data/raid1
 [root@server ~ 10:11:52]# mount /dev/md1 /data/raid1
 [root@server ~ 10:12:20]# df -h /data/raid1
 文件系统        容量  已用  可用 已用% 挂载点
 /dev/md1         20G   33M   20G    1% /data/raid1
 ​
 [root@server ~ 10:12:33]# cp /etc/ho* /data/raid1
 [root@server ~ 10:12:49]# ls /data/raid1/
 host.conf  hostname  hosts  hosts.allow  hosts.deny
 ​

增加热备盘
 #给 RAID1 设备/dev/md1加一个 "备胎" 硬盘/dev/sdd
 [root@server ~ 10:13:06]# mdadm /dev/md1 --add /dev/sdd
 mdadm: added /dev/sdd
 [root@server ~ 10:14:12]# 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
 # /dev/sdd的状态为spare(备用)
 ​
模拟故障测试热备盘
 #手动让/dev/sdc这个硬盘 "故障" --fail
 [root@server ~ 10:14:20]# mdadm /dev/md1 --fail /dev/sdc
 mdadm: set /dev/sdc faulty in /dev/md1
 ​
 [root@server ~ 10:15:06]# 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@server ~ 10:15:11]# ls /data/raid1/
 host.conf  hostname  hosts  hosts.allow  hosts.deny
 ​
 [root@server ~ 10:15:27]# cat /data/raid1/hostname 
 server.lyk.cloud
删除故障磁盘
 #把已经故障的/dev/sdc从 RAID1 里移除 --remove
 [root@server ~ 10:15:32]# mdadm /dev/md1 --remove /dev/sdc
 mdadm: hot removed /dev/sdc from /dev/md1
 [root@server ~ 10:16:10]# mdadm --detail /dev/md1 |tail -5
             Events : 34
 ​
     Number   Major   Minor   RaidDevice State
        0       8       16        0      active sync   /dev/sdb
        2       8       48        1      spare rebuilding   /dev/sdd
删除 RAID
#先取消/dev/md1和/data/raid1的关联
[root@server ~ 10:16:19]# umount /dev/md1

#停止/dev/md1这个 RAID1 设备的运行(相当于关闭 RAID 功能)
[root@server ~ 10:17:28]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1

#清空/dev/sdb、/dev/sdc、/dev/sdd这三个硬盘里关于 RAID 的配置信息(相当于 "格式化"RAID 标识,以后这些硬盘可以重新用了)
[root@server ~ 10:17:44]# mdadm --zero-superblock /dev/sd{b..d}

管理 RAID5

创建 RAID
# 创建一个包含4个块设备的raid5设备/dev/md2
[root@server ~ 10:28:59]# 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
[root@server ~ 10:35:35]# mdadm --detail /dev/md5
.......
 Rebuild Status : 5% complete#查看同步进度,没同步完设置故障就相当坏两个
  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
格式化和挂载
[root@server ~ 10:46:18]# mkfs.xfs /dev/md5 -f
[root@server ~ 10:46:21]# mkdir /data/raid5
[root@server ~ 10:46:43]# mount /dev/md5 /data/raid5
[root@server ~ 10:46:51]# df -h /data/raid5/
文件系统        容量  已用  可用 已用% 挂载点
/dev/md5         60G   33M   60G    1% /data/raid5
#验证查看
[root@server ~ 10:47:01]#  cp /etc/ho* /data/raid5
[root@server ~ 10:47:26]# ls /data/raid5/
host.conf  hostname  hosts  hosts.allow  hosts.deny
增加热备盘
[root@server ~ 10:47:33]# mdadm /dev/md5 --add /dev/sdf
mdadm: added /dev/sdf
[root@server ~ 10:48:44]# mdadm -D /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      active sync   /dev/sde

       5       8       80        -      spare   /dev/sdf
模拟故障
[root@server ~ 10:50:55]# mdadm /dev/md5 --fail /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md5

[root@server ~ 10:51:04]# mdadm -D /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@server ~ 10:51:12]# ls /data/raid5/
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@server ~ 10:52:08]# cat /data/raid5/hostname 
server.lyk.cloud
删除故障磁盘
[root@server ~ 10:52:12]# mdadm /dev/md5 --remove /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md5

[root@server ~ 10:52:47]# mdadm --detail /dev/md5 |tail -7
            Events : 42

    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
扩容 RAID(RAID5可以)
  • 对于raid5,只能扩容,不能减容。

    注意:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。

[root@server ~ 10:52:52]# mdadm /dev/md5 --add /dev/sdb /dev/sdg
mdadm: added /dev/sdb
mdadm: added /dev/sdg
[root@server ~ 10:53:40]#  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

       6       8       16        -      spare   /dev/sdb
       7       8       96        -      spare   /dev/sdg
       
# 设置成员数量为5,-G是grow(扩展)
[root@server ~ 10:53:47]# mdadm -G /dev/md5 --raid-devices 5

# 等待重组完成
[root@server ~ 10:55:02]# mdadm --detail /dev/md5
......
    Reshape Status : 8% complete
     Delta Devices : 1, (4->5)
......
# 确认 raid 容量:增加了20G
[root@server ~ 10:55:10]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md5    9:5    0  80G  0 raid5 /data/raid5

# 扩展文件系统
[root@server ~ 10:56:59]# xfs_growfs /data/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@server ~ 10:57:21]# df -h /data/raid5/
文件系统        容量  已用  可用 已用% 挂载点
/dev/md5         80G   34M   80G    1% /data/raid5
删除 RAID
[root@server ~ 10:57:29]# umount /dev/md5
[root@server ~ 10:58:04]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
[root@server ~ 10:59:29]# mdadm --zero-superblock /dev/sd{b..g}
Logo

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

更多推荐