环境:RHEL9 / Rocky9 流程:磁盘 → mdadm 软 RAID → 在 RAID 上做 LVM(PV→VG→LV→格式化挂载) 也可以:磁盘直接 LVM,不做 RAID;这里是组合场景:把 RAID 阵列当作 LVM 底层物理存储。
一、RAID (mdadm)
表格
| RAID 级别 | 磁盘数 | 容错 |
|---|---|---|
| RAID0 | ≥2 | 无容错 |
| RAID1 | 2 | 坏 1 块 |
| RAID5 | ≥3 | 坏 1 块 |
| RAID6 | ≥4 | 坏 2 块 |
| RAID10 | ≥4 偶数 | 分组最多坏 1 块 |
mdadm 重要命令
dnf install mdadm -y
# 创建RAID
mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd
# 查看状态
cat /proc/mdstat
mdadm --detail /dev/md0
# 写入配置开机自启
mdadm --detail --scan >> /etc/mdadm.conf
# 更新initramfs(根分区必须做)
dracut -f
# 故障模拟、移除、添加新盘
mdadm /dev/md0 -f /dev/sdd
mdadm /dev/md0 -r /dev/sdd
mdadm /dev/md0 -a /dev/sde
# 停止阵列
mdadm -S /dev/md0
# 擦除raid元数据(销毁raid)
mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd
/etc/mdadm.conf要点?
--可以写多条ARRAY,一行一个 RAID,依靠 UUID 识别,不依赖磁盘名。
• 一个 RAID 故障,不影响其他 RAID 启动。
• 删除 RAID 要手动删掉对应ARRAY行。


重点:/dev/md0 本身就是一块块设备,可以直接格式化;也可以交给 LVM,作为 PV 物理卷。
二、LVM 核心概念
表格
| 名词 | 含义 | 设备示例 |
|---|---|---|
| PV (Physical Volume) 物理卷 | 底层块设备,可以是磁盘、分区、RAID 设备/dev/md0 |
/dev/md0、/dev/sdb1 |
| VG (Volume Group) 卷组 | 把多个 PV 合并成一个大存储池 | vg0 |
| LV (Logical Volume) 逻辑卷 | 从 VG 池子划分出来,最终用来格式化挂载 | /dev/vg0/lvdata |
✅ 组合场景:RAID 做底层,保证磁盘容错;LVM 在上层,实现弹性扩容缩容。 物理磁盘 → mdadm RAID(/dev/md0) → PV → VG → LV → 文件系统 → 挂载
LVM 全套命令
1.PV 层(物理卷)
# 创建PV,可以是磁盘、分区、RAID设备/dev/md0
pvcreate /dev/md0
# 查看pv
pvs
pvdisplay
# 删除pv
pvremove /dev/md0
2.VG 层(卷组)
# 创建vg,名字自定义vg_md,把/dev/md0加入卷组
vgcreate vg_md /dev/md0
# 查看vg
vgs
vgdisplay
# 扩容VG:添加新PV(比如再加一个raid /dev/md1)
vgextend vg_md /dev/md1
# 缩减VG(先把数据迁移走)
vgreduce vg_md /dev/md1
# 删除vg
vgremove vg_md
3.LV 层(逻辑卷)
# 创建LV,-L指定大小;-n名字;从vg_md池划分
lvcreate -L 20G -n lv_data vg_md
# 查看lv
lvs
lvdisplay
# 格式化
mkfs.xfs /dev/vg_md/lv_data
# 临时挂载
mkdir /raidlvm
mount /dev/vg_md/lv_data /raidlvm
/etc/fstab 永久挂载
/dev/vg_md/lv_data /raidlvm xfs defaults 0 0
格式:挂载名 挂载点 文件类型 挂载选型 是否备份 是否检测
挂载选项:defaults 代表一组默认参数:rw,suid,dev,exec,auto,nouser,async
-
rw:读写
-
auto:开机自动挂载
-
exec:允许执行程序
推荐写 blkid 获取的 UUID。
blkid /dev/vg_md/lv_data
mount -a #校验fstab,防止开机失败
扩容(高频重点)
xfs 只支持扩容,不支持缩容;ext4 可以扩也可以缩。
# 1.扩大逻辑卷大小(+10G 增加10G;直接写50G代表总大小50G)
lvextend -L +10G /dev/vg_md/lv_data
# 2.同步文件系统(xfs用xfs_growfs;ext4用resize2fs)
xfs_growfs /raidlvm
# ext4: resize2fs /dev/vg_md/lv_data
LV 缩减(ext4 专用,xfs 不支持缩容)
⚠️缩容风险很高,必须卸载,检查文件系统
umount /raidlvm
e2fsck -f /dev/vg_md/lv_data
resize2fs /dev/vg_md/lv_data 20G
lvreduce -L 20G /dev/vg_md/lv_data
mount /dev/vg_md/lv_data /raidlvm
删除 LV 完整流程
umount /raidlvm
lvremove /dev/vg_md/lv_data
vgremove vg_md
pvremove /dev/md0
三、完整综合实验步骤:RAID5 + LVM
磁盘:/dev/sdb/dev/sdc/dev/sdd,做 RAID5,再在 RAID 上面部署 LVM
-
创建 RAID5
mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd
-
确认 RAID 状态
cat /proc/mdstat
mdadm --detail /dev/md0 -
RAID 写入配置,开机自动组装
mdadm --detail --scan >> /etc/mdadm.conf
dracut -f -
将 RAID 设备 /dev/md0 创建为 PV
pvcreate /dev/md0
pvs -
创建 VG 卷组
vgcreate vg_raid /dev/md0
vgs
vg是用完一块硬盘再用下一块 不是并行写入
-
创建 LV 逻辑卷
lvcreate -L 15G -n lv_file vg_raid
lvs -
格式化,挂载,写入 fstab
mkfs.xfs /dev/vg_raid/lv_file
mkdir /data
mount /dev/vg_raid/lv_file /data
#写入/etc/fstab后校验
mount -a -
扩容示例:给 lv_file 增加 5G 空间
lvextend -L +5G /dev/vg_raid/lv_file
xfs_growfs /data
四、两种架构对比
- 磁盘→RAID→LVM(上面实验)
- RAID 负责底层磁盘容错;LVM 负责上层弹性扩容。
- 优点:磁盘坏一块 RAID 保护数据;业务空间可以随意扩缩。
- 缺点:双层叠加,故障排查复杂。
- 磁盘→LVM,不做 mdadm RAID
- LVM 本身没有磁盘容错,一块盘坏,对应 PV 全部数据丢失。
⚠️重要:LVM≠RAID,LVM 只是存储管理,本身不提供数据冗余容错!
五、销毁整套 RAID+LVM 完整顺序(顺序不能乱)
#1卸载挂载点
umount /data
#2删除LV
lvremove /dev/vg_raid/lv_file
#3删除VG
vgremove vg_raid
#4删除PV
pvremove /dev/md0
#5停止RAID阵列
mdadm -S /dev/md0
#6擦除磁盘RAID元数据
mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd
#7删除/etc/mdadm.conf中对应ARRAY行
六、常见坑
- LVM 的 PV 可以是磁盘、分区、RAID 设备,不能直接把整块 RAID 内的成员磁盘单独做 PV。
- xfs 文件系统不支持缩减,只能扩容。
- RAID+LVM 环境,开机流程:系统先组装 md 阵列,之后识别 PV/VG/LV,再挂载。所以 mdadm.conf 和 dracut 必须配置正确,否则找不到 LV。
- 销毁一定从上层往下删:卸载 → LV → VG → PV → RAID stop → zero‑superblock。顺序反会报错。
/etc/mdadm.conf多条 ARRAY 互不干扰,一个阵列故障不影响其他 RAID,也不影响其他 VG。
七、命令速查表
mdadm
表格
| 功能 | 命令 |
|---|---|
| 创建 RAID | mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd |
| 查看 RAID 实时状态 | cat /proc/mdstat |
| 详细阵列信息 | mdadm --detail /dev/md0 |
| 导出配置 | mdadm --detail --scan >> /etc/mdadm.conf |
| 标记磁盘故障 | mdadm /dev/md0 -f /dev/sdd |
| 移除坏盘 | mdadm /dev/md0 -r /dev/sdd |
| 添加磁盘 | mdadm /dev/md0 -a /dev/sde |
| 停止阵列 | mdadm -S /dev/md0 |
| 擦除元数据 | mdadm --zero‑superblock /dev/sdb |
LVM
表格
| 功能 | 命令 |
|---|---|
| 创建 PV | pvcreate /dev/md0 |
| 查看 PV | pvs / pvdisplay |
| 创建 VG | vgcreate vg_name /dev/md0 |
| VG 扩容 | vgextend vg_name /dev/md1 |
| 创建 LV | lvcreate -L 20G -n lvname vg_name |
| LV 扩容 | lvextend -L +10G /dev/vg_name/lvname |
| xfs 同步文件系统 | xfs_growfs 挂载点 |
| ext4 同步 | resize2fs /dev/vg_name/lvname |
| 查看 | vgs lvs vgdisplay lvdisplay |