Linux mdadm 软 RAID + LVM 完整综合笔记

环境: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

  1. 创建 RAID5

    mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd

  2. 确认 RAID 状态

    cat /proc/mdstat
    mdadm --detail /dev/md0

  3. RAID 写入配置,开机自动组装

    mdadm --detail --scan >> /etc/mdadm.conf
    dracut -f

  4. 将 RAID 设备 /dev/md0 创建为 PV

    pvcreate /dev/md0
    pvs

  5. 创建 VG 卷组

    vgcreate vg_raid /dev/md0
    vgs

vg是用完一块硬盘再用下一块 不是并行写入

  1. 创建 LV 逻辑卷

    lvcreate -L 15G -n lv_file vg_raid
    lvs

  2. 格式化,挂载,写入 fstab

    mkfs.xfs /dev/vg_raid/lv_file
    mkdir /data
    mount /dev/vg_raid/lv_file /data
    #写入/etc/fstab后校验
    mount -a

  3. 扩容示例:给 lv_file 增加 5G 空间

    lvextend -L +5G /dev/vg_raid/lv_file
    xfs_growfs /data

四、两种架构对比

  1. 磁盘→RAID→LVM(上面实验)
  • RAID 负责底层磁盘容错;LVM 负责上层弹性扩容。
  • 优点:磁盘坏一块 RAID 保护数据;业务空间可以随意扩缩。
  • 缺点:双层叠加,故障排查复杂。
  1. 磁盘→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行

六、常见坑

  1. LVM 的 PV 可以是磁盘、分区、RAID 设备,不能直接把整块 RAID 内的成员磁盘单独做 PV
  2. xfs 文件系统不支持缩减,只能扩容。
  3. RAID+LVM 环境,开机流程:系统先组装 md 阵列,之后识别 PV/VG/LV,再挂载。所以 mdadm.conf 和 dracut 必须配置正确,否则找不到 LV。
  4. 销毁一定从上层往下删:卸载 → LV → VG → PV → RAID stop → zero‑superblock。顺序反会报错。
  5. /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
相关推荐
凤舞飘伶27 分钟前
服务器内存满日常运维命令
linux·运维·服务器
疯狂打码的少年30 分钟前
【数据库技术】SQL数据查询(SELECT基本语法)
数据库·笔记·sql·oracle
Made in Haven71242 分钟前
HTML课程笔记补2
前端·笔记·html
Fcy6481 小时前
Linux下 Socket编程 —— TCP网络编程
linux·网络·tcp/ip
夕除1 小时前
redis--010
笔记·分布式·学习
ouynagda1 小时前
HTTP协议与Socket网络编程笔记
网络·笔记·http
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 10 章 REST 服务请求与调用 Reactor 与 WebFlux 笔记 28
spring boot·笔记·后端
幸运小圣2 小时前
JavaScript 关键字与保留字学习笔记详细讲解,一篇get ✅【JavaScript查缺补漏】
javascript·笔记·学习
hflmwl82 小时前
Motrix电脑版官网免费下载,motrix服务器绿色版官方下载安装
运维·服务器·motrix