
环境RHEL9 / Rocky9 流程磁盘 → mdadm 软 RAID → 在 RAID 上做 LVMPV→VG→LV→格式化挂载也可以磁盘直接 LVM不做 RAID这里是组合场景把 RAID 阵列当作 LVM 底层物理存储。一、RAID mdadm表格RAID 级别磁盘数容错RAID0≥2无容错RAID12坏 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/sdb1VG (Volume Group) 卷组把多个 PV 合并成一个大存储池vg0LV (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/md02.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_md3.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_growfsext4用resize2fs xfs_growfs /raidlvm # ext4: resize2fs /dev/vg_md/lv_dataLV 缩减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创建 RAID5mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd确认 RAID 状态cat /proc/mdstat mdadm --detail /dev/md0RAID 写入配置开机自动组装mdadm --detail --scan /etc/mdadm.conf dracut -f将 RAID 设备 /dev/md0 创建为 PVpvcreate /dev/md0 pvs创建 VG 卷组vgcreate vg_raid /dev/md0 vgsvg是用完一块硬盘再用下一块不是并行写入创建 LV 逻辑卷lvcreate -L 15G -n lv_file vg_raid lvs格式化挂载写入 fstabmkfs.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 RAIDLVM 本身没有磁盘容错一块盘坏对应 PV 全部数据丢失。⚠️重要LVM≠RAIDLVM 只是存储管理本身不提供数据冗余容错五、销毁整套 RAIDLVM 完整顺序顺序不能乱#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 文件系统不支持缩减只能扩容。RAIDLVM 环境开机流程系统先组装 md 阵列之后识别 PV/VG/LV再挂载。所以 mdadm.conf 和 dracut 必须配置正确否则找不到 LV。销毁一定从上层往下删卸载 → LV → VG → PV → RAID stop → zero‑superblock。顺序反会报错。/etc/mdadm.conf多条 ARRAY 互不干扰一个阵列故障不影响其他 RAID也不影响其他 VG。七、命令速查表mdadm表格功能命令创建 RAIDmdadm -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/sdbLVM表格功能命令创建 PVpvcreate /dev/md0查看 PVpvs / pvdisplay创建 VGvgcreate vg_name /dev/md0VG 扩容vgextend vg_name /dev/md1创建 LVlvcreate -L 20G -n lvname vg_nameLV 扩容lvextend -L 10G /dev/vg_name/lvnamexfs 同步文件系统xfs_growfs 挂载点ext4 同步resize2fs /dev/vg_name/lvname查看vgs lvs vgdisplay lvdisplay