来源:赵楠 | 发布日期:2026-05-15
Linux RAID 与 LVM 基础指南
RAID 解决「多块硬盘怎么组合才能更快、更安全」。LVM 解决「磁盘空间怎么管理才能更灵活、方便扩容」。文件系统管数据怎么存放,挂载点决定用户从哪里访问。
核心分工
| 层 | 职责 | 工具/技术 |
|---|---|---|
| RAID | 硬盘组合(性能+冗余) | mdadm, 硬件 RAID 卡 |
| LVM | 空间分配(灵活扩缩) | pvcreate, vgcreate, lvcreate |
| 文件系统 | 数据组织存放 | mkfs.xfs, mkfs.ext4 |
| 挂载点 | 访问入口 | mount, /etc/fstab |
RAID:独立磁盘冗余阵列
RAID 级别对比
| 级别 | 最少盘 | 容量利用率 | 冗余 | 特点 | 适合场景 |
|---|---|---|---|---|---|
| RAID 0 | 2 | 100% | 无 | 条带化,速度最快 | 临时数据、缓存 |
| RAID 1 | 2 | 50% | 1 盘 | 镜像,读性能好 | 系统盘、关键配置 |
| RAID 5 | 3 | (N-1)/N | 1 盘 | 分布式奇偶校验 | 文件存储、读多写少 |
| RAID 6 | 4 | (N-2)/N | 2 盘 | 双校验,更安全 | 大容量、数据安全要求高 |
| RAID 10 | 4 | 50% | 每组 1 盘 | 先镜像再条带 | 数据库、高并发业务 |
核心原则: RAID 防硬盘故障,备份防数据丢失。两者不可替代。
各级别详解
RAID 0(条带化)
- 数据分散写到多块硬盘,同时读写 → 速度快
- 但任意一块盘坏 → 数据全丢
- ⚠️ 无冗余,不要用于重要数据
RAID 1(镜像)
- 数据同时写到两块硬盘,一块坏了另一块完整可用
- 读性能提升(可以并发读),写性能等于单盘
- 容量减半(2 块盘只能用到 1 块的容量)
RAID 5(分布式奇偶校验)
- 数据 + 校验信息分布在所有盘上
- 坏 1 块盘可重建,但重建期间有风险
- 写入性能较差(需计算校验)
RAID 6(双校验)
- 比 RAID 5 多一层校验,可坏 2 块盘
- 写入性能更低,适合对安全要求极高的场景
RAID 10(镜像+条带)
- 先做 RAID 1 镜像,再做 RAID 0 条带
- 性能和冗余兼得,但成本较高(利用率 50%)
- 数据库、高并发业务首选
LVM:逻辑卷管理
分层架构
┌─────────────────────────────┐
│ 挂载点(/data) │
├─────────────────────────────┤
│ 文件系统(xfs / ext4) │
├─────────────────────────────┤
│ LV(逻辑卷) │
├─────────────────────────────┤
│ VG(卷组) │
├─────────────────────────────┤
│ PV /dev/sdb /dev/sdc │ ← 物理硬盘或分区
└─────────────────────────────┘
核心概念
| 组件 | 全称 | 说明 |
|---|---|---|
| PV | Physical Volume | 物理卷,硬盘或分区的 LVM 抽象 |
| VG | Volume Group | 卷组,多个 PV 组成一个存储池 |
| LV | Logical Volume | 逻辑卷,从 VG 中划分出的可用空间 |
| PE | Physical Extent | 物理扩展块,LVM 的最小存储单元 |
常用命令操作
# 一、PV 阶段
pvscan # 查看所有 PV
pvcreate /dev/sdb /dev/sdc # 将硬盘初始化为 PV
pvdisplay # 查看 PV 详情
# 二、VG 阶段
vgcreate vg_data /dev/sdb /dev/sdc # 创建 VG
vgs # 查看 VG 摘要
vgdisplay vg_data # 查看 VG 详情
vgextend vg_data /dev/sdd # 扩展 VG(加新盘)
# 三、LV 阶段
lvcreate -L 100G -n lv_data vg_data # 创建 100G LV
lvcreate -l 100%FREE -n lv_data vg_data # 使用全部剩余空间
lvs # 查看 LV 摘要
lvdisplay # 查看 LV 详情
lvextend -L +50G /dev/vg_data/lv_data # LV 扩容 +50G
lvextend -l +100%FREE /dev/vg_data/lv_data # LV 使用 VG 全部剩余空间
# 四、文件系统阶段
mkfs.xfs /dev/vg_data/lv_data # 格式化
mount /dev/vg_data/lv_data /data # 挂载
# ⚠️ 扩容 LV 后必须扩展文件系统
xfs_growfs /data # XFS 扩容
resize2fs /dev/vg_data/lv_data # ext4 扩容
记住: lvextend → 仅扩 LV 层,必须再执行 xfs_growfs/resize2fs 扩文件系统层。
lsblk 查看全貌
lsblk
# NAME MAJ:MIN SIZE TYPE MOUNTPOINT
# sda 8:0 100G disk
# ├─sda1 8:1 1G part /boot
# └─sda2 8:2 99G part
# └─centos-root 253:0 50G lvm /
# sdb 8:16 1T disk
# └─vg_data-lv_data 253:1 1T lvm /data
常见组合方案
| 场景 | 推荐方案 | 说明 |
|---|---|---|
| 系统盘(OS) | RAID 1 | 2 块盘做镜像,系统稳定运行 |
| 数据盘(DB/VM) | RAID 10 + LVM | 性能+冗余兼备,LVM 方便扩容 |
| 文件存储 | RAID 5/6 + LVM | 容量优先,读多写少 |
| 测试环境 | 单盘或 RAID 0 | 追求速度,不关心数据安全 |
5 个常见陷阱
⚠️ RAID ≠ 备份 — RAID 防硬盘故障,备份防数据丢失。重要数据必须有独立备份。
⚠️ 扩容 LV 后忘扩文件系统 — lvextend 后必须 xfs_growfs/resize2fs,否则 df -h 看不到变化。
⚠️ 不同文件系统用错命令 — XFS 用 xfs_growfs,ext4 用 resize2fs,混用会报错。
⚠️ 操作前不确认设备名 — /dev/sda vs /dev/sdb 搞错后果严重。操作前三确认:设备名正确?数据已备份?有回滚方案?
⚠️ 不监控 RAID 状态 — RAID 降级后系统仍运行,再坏一块盘就出大事故。必须监控阵列状态。
学习路径建议
先建立认知,不需要死记命令:
- 理解分层:硬盘 → RAID → PV → VG → LV → 文件系统 → 挂载点
- 掌握 RAID 核心区别:RAID 0/1/5/6/10 各解决什么问题
- 掌握 LVM 核心命令:pvcreate → vgcreate → lvcreate → mkfs → mount
- 掌握扩容流程:加盘 → pvcreate → vgextend → lvextend → xfs_growfs
- 了解硬件 RAID vs 软件 RAID 的区别
动手练习可在虚拟机中添加虚拟硬盘,依次执行上述命令。
关联页面
| 页面 | 关联点 |
|---|---|
| linux-disk-io-tuning | Linux 磁盘 IO 调优(含 LVM SSD 缓存) |
| linux-disk-space-troubleshooting | 磁盘空间排查 |
| linux-essential-commands-reference | Linux 常用命令 |
| linux-kernel-tuning-guide | 内核参数调优(含 IO 调度器) |
| server-performance-four-dimensions | 四维性能排查(含磁盘 IO) |
| ops-interview-50-questions | 运维面试题(LVM 扩容 + RAID 对比) |