1. 课程导入与RHEL存储体系概览

在企业级 Linux 运维中,存储问题往往是最容易“牵一发而动全身”的部分:一块磁盘的命名变化可能导致挂载失败,一个文件系统的参数选择可能影响数据库吞吐,一次 LVM 扩容操作可能决定业务能否在线继续。本课程围绕 RHEL(Red Hat Enterprise Linux)的存储与文件系统展开,目标不是记住零散命令,而是建立一条从物理设备到应用可访问目录的完整认知链路,并能在真实环境中完成规划、配置、验证与排障。

学习目标

完成本课程后,你应当能够:识别 RHEL 中块设备的不同命名方式及其稳定性差异;理解分区表、LVM、文件系统、挂载点之间的层次关系;使用 lsblk、blkid、df、findmnt 等工具定位存储对象;根据业务需求选择 XFS 或 ext4;完成磁盘分区、PV/VG/LV 创建、文件系统格式化与持久化挂载;并在容量不足、设备识别异常、挂载失败等场景下按证据链排查。这些目标贯穿后续章节,本节先建立整体地图。

RHEL 存储栈的层次结构

RHEL 的存储栈可以自上而下理解为若干层,每一层向上提供服务,向下依赖更底层的对象。最上层是应用看到的目录,例如 /data、/var/lib/mysql;应用通过路径访问文件,而路径背后是已挂载的文件系统。文件系统之下是逻辑卷或分区,再往下是物理卷、磁盘或 SAN/iSCSI 提供的块设备。内核块层负责 I/O 调度、设备映射和多路径,最终落到物理介质或远端存储。

这个层次关系决定了排障顺序:应用报“磁盘满”,先看 df -h 确认文件系统使用率;若文件系统未满但写入失败,再看 lvs 确认 LV 是否已满;若 LV 未满,继续看 vgs、pvs 确认 VG 剩余空间和 PV 状态;最后才检查底层磁盘、多路径或 SAN 链路。反过来,如果底层磁盘掉线,上层文件系统可能进入只读或报 I/O 错误,因此不能只盯着应用日志。

RHEL 存储栈:从应用路径到物理块设备 应用访问路径 /data、/var/lib/mysql 文件系统 XFS / ext4,挂载点 逻辑卷 / 分区 LV、/dev/sda1、/dev/vg/lv 卷组 / 物理卷 VG、PV、PE 分配 块设备层 /dev/sdX、/dev/nvmeXnY 物理介质 / 远端存储 本地磁盘、SAN、iSCSI 块设备与文件系统的关系 块设备 按块读写,无目录概念 如 /dev/sdb、/dev/vg/lv 文件系统 组织文件、目录、元数据 需格式化后挂载使用 mkfs 关键判断:设备是否“可挂载” 1. 设备存在:lsblk 能看到,blkid 能读到 UUID 2. 已有文件系统:blkid 显示 TYPE=xfs 或 ext4 3. 挂载点存在且为空:mount 后 findmnt 可验证 持久化挂载的三要素 设备标识:优先 UUID,避免 /dev/sdX 漂移 挂载点:目录必须已创建 文件系统类型与选项:写入 /etc/fstab 后验证 验证命令:mount -a 无报错,findmnt 可见

块设备与文件系统:不是一回事

初学者最容易混淆的一点,是把“磁盘”和“文件系统”当成同一个东西。块设备是内核提供的按块读写的对象,例如 /dev/sdb、/dev/nvme0n1、/dev/mapper/vg_data-lv_data。它本身没有目录、没有文件名,只有扇区或块。文件系统则是在块设备之上建立的一套组织结构,负责管理 inode、目录项、空闲块和日志。只有执行 mkfs.xfs 或 mkfs.ext4 之后,块设备才具备“可挂载”的文件系统结构。

因此,一块新磁盘接入后,典型路径是:识别设备 → 创建分区或加入 LVM → 格式化为文件系统 → 创建挂载点 → 挂载 → 写入 /etc/fstab 实现开机自动挂载。每一步都有对应的验证命令,不能跳步。例如,未格式化的 /dev/sdb1 直接挂载会报“wrong fs type”或“bad superblock”;已格式化但未创建挂载点,mount 会提示目标目录不存在。

课程实验环境搭建

为了让后续实验可复现,建议准备一台 RHEL 9 虚拟机或云主机,配置至少 2 vCPU、4 GB 内存、40 GB 系统盘,并额外挂载 2~3 块 10~20 GB 的空数据盘。数据盘不需要预格式化,保留为裸设备,用于练习分区、LVM 和文件系统创建。若使用虚拟机,可在 VMware、KVM 或 VirtualBox 中添加虚拟磁盘;若使用云主机,可购买并挂载云硬盘。实验前请确认系统已注册或已配置本地仓库,以便安装 lvm2、xfsprogs、e2fsprogs 等工具。

# 查看系统版本与已识别磁盘
cat /etc/redhat-release
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT

# 确认 LVM 与文件系统工具可用
rpm -q lvm2 xfsprogs e2fsprogs

# 示例:查看某块数据盘是否已有文件系统
blkid /dev/sdb

建议在实验前对每块数据盘做一次“身份确认”:记录设备名、容量、是否已有分区或文件系统。若磁盘来自其他环境,可能残留旧分区表或旧文件系统,需要先清理。清理会破坏数据,因此只对确认无用的实验盘执行。常用做法是用 wipefs -a /dev/sdb 清除签名,再用 parted 或 fdisk 重新分区。生产环境务必先确认设备路径与业务影响,不能凭经验直接操作。

实验环境建议为每块数据盘打上标签或记录 UUID,后续做 LVM 和 fstab 实验时更容易对照。若使用云主机,注意设备名可能是 /dev/nvme1n1 而非 /dev/sdb,应以 lsblk 实际输出为准。

本节小结与观察方法