Linux RAID 存储技术
·
环境准备
-
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}更多推荐

所有评论(0)