RH134存储管理实战:磁盘分区、文件系统挂载与swap配置

📅 发布时间:2026/10/3 6:45:06
RH134存储管理实战:磁盘分区、文件系统挂载与swap配置
RH134 教材走到第 7 章终于开始碰真正意义上的“存储管理”了。这一章对准备 RHCSA 考试的人来说属于必拿分项操作直白、逻辑清晰但在日常运维里也是翻车重灾区——分区删错、挂载写坏 fstab 导致开机进不去、swap 忘了配导致内存吃紧这些坑我都在实验环境里踩过。这篇就来把“管理基本存储”拆开揉碎从磁盘分区到文件系统创建、从挂载到 swap 配置配合实操命令和排错经验争取让你看完就能直接上手。不管你用的是 RHEL 9、Rocky Linux还是国内常见的 openEuler 这类发行版存储管理这部分的命令和逻辑几乎完全一致所以这篇内容可以放心参考。即便你还没开始备考 RHCSA只要日常工作涉及 Linux 服务器磁盘和文件系统这块也是绕不过去的基本功。1. 存储管理到底在管什么1.1 从一块裸盘到可用空间的全流程很多人刚学 Linux 时总有个困惑为什么装完系统、插上一块新硬盘系统里看不到可用空间这里要先建立整体概念。一块硬盘从“物理存在”到“可以存文件”中间要经过四个步骤识别设备、分区或直接用整盘、创建文件系统、挂载使用。识别设备这一步最容易被忽略。你物理插上一块盘不代表系统立刻就能用。Linux 把所有硬件设备抽象成设备文件存放在 /dev 目录下。SATA 硬盘一般是 /dev/sda、/dev/sdb 这种命名NVMe 固态则是 /dev/nvme0n1、/dev/nvme0n2。插上新盘后先用 lsblk 确认设备是否被识别这是第一步操作也是最容易排查的第一步。分区的作用是把一块物理硬盘划分成多个逻辑区域。分区表格式有 MBR 和 GPT 两种后面会细说。文件系统则是给分区“装修”——格式化成 ext4、xfs 这类格式后内核才能按照固定规则读写数据。最后一步挂载就是把这个格式化的分区“接入”到目录树中的某个目录比如挂到 /data这样读写 /data 就是在读写这块磁盘。这四个步骤缺一不可而第 7 章的考点基本就围绕着这四步展开。搞清楚顺序你再看后面的所有操作命令就会觉得它们只是这条流水线上不同环节的工具。1.2 存储管理中必须掌握的三个核心层级按照 RH134 的思路基本存储管理可以归纳成三个层级设备层、分区层、文件系统层。设备层是最底层的就是物理磁盘本身对应 /dev/sda 这种设备文件。这一层关注的是设备能否被正确识别、能否正常读写。排查时常用 lsblk 看设备树、用 fdisk -l 看磁盘详情、用 smartctl 看健康状态。分区层是在磁盘上划分逻辑边界。这一层核心难点在于分区表类型的选择、分区大小的规划以及分区工具的熟练使用。MBR 和 GPT 的区别、主分区和扩展分区的限制这些是考试常考的概念题实操中则直接影响你能否在一块盘上按需规划空间。文件系统层是最贴近日常使用的一层。mkfs 格式化、mount 挂载、/etc/fstab 自动挂载、swap 交换空间全都属于这一层。这一层也是坑最多的写错 fstab 会导致系统起不来格式化错分区会直接丢数据swap 配多配少都会影响系统稳定性。这三个层级从下到上每一层的问题都会影响上层操作。我刚学的时候总是跳步分区完不格式化就想挂载结果报错“wrong fs type”——就是没理解层级依赖。把层级理清很多报错看一眼就能猜到是卡在哪一步。2. 磁盘分区MBR 和 GPT 怎么选2.1 分区表格式背后的逻辑分区表是一块磁盘的“目录索引”记录这块盘上分了哪些区、每个区的起始位置和大小。MBR 和 GPT 是两种主流格式它们的选择直接决定了磁盘容量上限和分区数量上限。MBR 是传统格式主引导记录只占用磁盘最开始 512 字节分区表项非常有限。MBR 磁盘最多支持 4 个主分区如果想分更多必须把其中一个主分区改成扩展分区再在扩展分区里划分逻辑分区。容量上 MBR 最大支持 2TB超过 2TB 的部分根本无法寻址。如果你手里的盘是 1TB 以下的机械盘MBR 仍然够用但新建分区建议直接上 GPT。GPT 是新一代分区表格式建立在 UEFI 规范之上容量上限高达 9.4ZB分区数量默认支持 128 个完全不需要主分区、扩展分区、逻辑分区那套旧概念。服务器上常见的 4TB、8TB 甚至更大容量的盘必须用 GPT。判断一块盘当前是什么格式用 parted /dev/sdb print 就能看到 Partition Table 那一行显示 msdos 就是 MBR显示 gpt 就是 GPT。实操中一个很常见的场景虚拟机里添加了一块 3TB 数据盘用 fdisk 去分区结果发现只能分出 2TB 的空间剩下 1TB 成了“未分配”。这不是你操作错了是 MBR 的容量天花板。换成 gdisk 或者 parted 改成 GPT 格式重新分区问题立刻解决。所以我个人的习惯是不管磁盘多小只要是新盘一律 GPT省得以后扩容时还得折腾分区表转换。2.2 用 parted 和 fdisk 做实操fdisk 是老牌分区工具交互式操作适合 MBR 磁盘。gdisk 是 fdisk 的 GPT 版。parted 则是脚本友好型工具一条命令就能完成分区动作在自动化部署里更常用。先用 fdisk 走一遍 MBR 分区流程。假设新盘是 /dev/sdb命令如下fdisk /dev/sdb进入交互界面后依次输入 n新建分区、p主分区、分区号默认1、起始扇区默认、结束扇区可以用 10G 这种写法指定大小最后 w 写入并退出。这套流程虽然常用但交互式操作有个致命风险如果输错了起始扇区或者结束扇区很容易把分区大小搞错。在只读阶段 p 打印分区表确认没问题再 w 写入这条铁律一定要记住。parted 的操作方式更适合新人和脚本场景parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary xfs 1MiB 10GiB第一条命令把磁盘改成 GPT 格式第二条从 1MiB 开始创建到 10GiB 结束的分区。parted 的分区单位默认是 MiB 或 GiB比起扇区数字直观得多。格式化时注意parted 里 mkpart 后面跟的 “xfs” 只是给分区打个文件系统标签并不会真正创建文件系统真正格式化还得另外执行 mkfs。无论用哪个工具分区完成后记得用 partprobe 或重启系统让内核重新读取分区表。很多新人分区完成后直接 lsblk 看不到新分区就开始慌其实只需要执行 partprobe /dev/sdb 就能解决。重要提示分区操作是不可逆的误删分区会导致整个磁盘数据无法访问。上手练习一定用虚拟机里的空数据盘生产环境操作前先备份再检查三遍设备名。3. 文件系统创建与挂载3.1 mkfs 创建文件系统的选择与细节分区完成之后只是把磁盘切成了块还不能直接放文件。下一步是用 mkfs 命令创建文件系统也就是常说的“格式化”。RHEL 9 里默认文件系统是 xfs这是 Red Hat 的官方推荐适合大文件和高并发读写场景。ext4 则兼容性更好老系统、嵌入式设备、U 盘这些场景更常见。格式化的命令非常直观mkfs.xfs /dev/sdb1 mkfs.ext4 /dev/sdc1注意 mkfs 指定设备名时一定要写分区名比如 /dev/sdb1而不是整盘 /dev/sdb。我见过有人想格式化新盘直接执行 mkfs.xfs /dev/sdb把整块磁盘的分区表直接抹掉了。mkfs 家族其实是 mkfs.fstype 的软链接你还可以直接指定文件系统类型比如 mkfs -t xfs /dev/sdb1效果一样。格式化前建议先用 blkid 确认设备上有没有旧文件系统或旧数据blkid /dev/sdb1如果输出为空说明这个分区是干净的可以放心格式化。如果显示出 ext4 或 xfs 字样说明之前格式过请务必再次确认是否真的要覆盖。格式化有一个很容易被忽略的细节mkfs 过程会输出一个 UUID。这个 UUID 是文件系统的唯一标识后面写 /etc/fstab 自动挂载时强烈建议用它代替设备名因为设备名可能因内核识别顺序变化而改变UUID 是稳定的。3.2 挂载、fstab 自动挂载与 UUID 优先原则文件系统创建完最后一步就是挂载。手工挂载用 mountmkdir -p /data mount /dev/sdb1 /data执行完用 df -hT 就能看到 /dev/sdb1 挂载在 /data 下文件类型显示为 xfs。这种手工挂载在重启后会失效因为内核不记录这个挂载关系。要实现开机自动挂载必须写进 /etc/fstab。/etc/fstab 的每一行有 6 个字段分别表示设备、挂载点、文件系统类型、挂载选项、是否 dump 备份、是否 fsck 检查。一个完整示例UUIDxxxx-xxxx /data xfs defaults 0 0这里的设备我用的是 UUID而不是 /dev/sdb1这是最重要的经验。设想一下机器上有两块盘内核重启后因为探测顺序变化/dev/sdb 和 /dev/sdc 对调了。如果你在 fstab 里写的是 /dev/sdb1开机时系统找遍所有盘发现没有这个设备直接进入 emergency mode。而 UUID 是烧在文件系统里的唯一标识不管设备名怎么变都能正确找到目标分区。挂载选项 defaults 实际上是一组默认选项的集合包括 rw可读写、suid、dev、exec、auto、nouser、async。日常场景 defaults 够用但如果挂载点是给普通用户共享目录用的可能需要加上 noexec 禁止执行二进制文件、nosuid 禁用 suid 位nginx 网站目录这类场景很常用。写 fstab 有一个必须养成的习惯写完先执行 mount -a 测试。mount -a 会按照 fstab 的内容重新挂载所有未挂载的设备如果配置写错了当场就会报错你还能来得及修改。不要直接 reboot否则 fstab 写错会导致系统起不来还得进救援模式改文件麻烦得多。注意fstab 语法错误导致的启动失败是 RHCSA 必考场景也是运维面试常问问题。进救援模式改 fstab、用 root 权限在 emergency 模式下重新挂载根文件系统这类操作值得专门练几次。3.3 实操经验一个完整的挂载流程我整理一份可复制的完整流程适合新加数据盘的场景# 1. 确认设备 lsblk # 2. 分区GPT格式 parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary xfs 1MiB 100GiB partprobe /dev/sdb # 3. 格式化 mkfs.xfs /dev/sdb1 # 4. 获取UUID blkid /dev/sdb1 # 5. 创建挂载点并临时挂载 mkdir -p /data mount /dev/sdb1 /data # 6. 写入fstab echo UUIDxxxx-xxxx /data xfs defaults 0 0 /etc/fstab # 7. 测试fstab mount -a df -hT这套流程每一步都有明确目的第 6 步写入 fstab 时也可以先编辑文件而不是直接 echo 追加输出不容易出错。有的老手习惯用 UUID 写 fstab 之前先在 mount 命令里用 /dev/sdb1 临时测试确认文件系统能正常挂载再固化到 fstab这个思路很稳妥值得学。4. swap 交换分区管理4.1 swap 到底解决什么问题swap 是 Linux 的交换空间本质是拿磁盘空间当内存用。当物理内存耗尽时内核会把不活跃的内存页写到 swap腾出物理内存给活跃进程。这个机制可以让系统在多任务压力下不至于直接 OOM内存耗尽导致内核杀进程但也别指望 swap 能让服务器性能起飞——磁盘读写比内存慢几个数量级swap 使用率一高系统会明显变卡。swap 在 RH134 第 7 章里占了不小的篇幅。安装系统时如果没有给 / 和 /boot 之外单独配置 swap后面就得手工补。云服务器场景里如果内存不够又没有 swapJava 应用或者数据库经常直接崩溃内核日志里 OOM-killer 会随机杀进程——最惨的一次我见过它把 sshd 给杀了远程连不上去。创建 swap 的流程和普通分区不一样要先用 mkswap 把分区初始化成 swap 格式再用 swapon 激活最后写进 fstab 实现开机自动挂载。swap 没有挂载点目录它挂载点字段里写的是 none文件系统类型写 swap。4.2 创建 swap 的完整过程第一步分区。依然可以用 parted 划出一块分区parted /dev/sdb mkpart primary linux-swap 100GiB 112GiB注意 parted 的分区类型可以写 linux-swap这只是标签真正让分区变成 swap 格式还得靠 mkswap。第二步格式化mkswap /dev/sdb1执行后输出会显示一个 UUID也可以自己指定卷标。第三步激活swapon /dev/sdb1用 free -h 查看 swap 行确认总量已经增加。第四步写 fstabUUIDyyyy-yyyy none swap sw 0 0swap 的挂载选项写 sw这个细节容易写错。fstab 里 dump 和 fsck 两列对 swap 来说都是 0。swap 除了独立分区还可以用 swap 文件。这种方式在磁盘空间紧张或不想重新分区时很实用。创建 swap 文件的步骤是先用 dd 或 fallocate 创建指定大小的文件然后 mkswap 格式化最后 swapon 启用。fallocate 在某些文件系统上不支持dd 最保险但要在文件系统写满时注意预留空间dd if/dev/zero of/swapfile bs1M count4096 chmod 600 /swapfile mkswap /swapfile swapon /swapfile文件权限必须设置成 600因为 swap 里可能残留敏感内存数据权限过大会有安全隐患。fstab 写法/swapfile none swap sw 0 0swap 大小的规划红帽官方建议是 2GB 以内内存按内存 2 倍配置2GB 以上则根据工作负载调整。放到实际生产环境我更推荐用监控数据说话——内存不大但跑 Java 服务sswap 给 4GB 起步有充足物理内存且几乎没有内存压力swap 给 2GB 保底应付极端峰值就够了。swap 太大没意义磁盘空间被白白占用swap 太小内存一爆就 OOM。经验云厂商的 Linux 镜像很多默认不带 swap建议买完 VPS 第一件事先补一个 2GB 的 swap 文件成本极低、关键时刻能救命。我自己踩过没配置 swap 导致数据库 OOM 的坑补上 swap 后虽然性能不咋样但至少服务不会再随机被杀掉。5. 常见问题与排查技巧实录5.1 挂载失败与 fstab 错误挂载时最常遇到的报错是“wrong fs type, bad option, bad superblock on /dev/sdb1”。这个报错十有八九是文件系统还没创建或者创建的文件系统和 mount 命令指定的类型不一致。排查思路很简单先用 blkid /dev/sdb1 看这个分区有没有文件系统如果输出空白说明忘了执行 mkfs如果显示 ext4但 mount 命令写的是 xfs那就在 mount 命令里明确指定 -t ext4。另一个高频故障是 fstab 写错导致系统进入 emergency mode。表现是开机后系统提示 Failed to mount /data然后停在紧急模式命令行。这时候系统根文件系统是只读状态需要先执行 mount -o remount,rw / 把根重新挂载成可写再编辑 /etc/fstab 修正错误行最后 reboot。如果你在 fstab 里用的是设备名而非 UUID排查时就先看看设备名当前对应的是哪个盘尤其是有多块盘的时候设备漂移很容易定位到错误设备。排查 fstab 还有一个实用技巧在 emergency mode 里直接执行 cat /etc/fstab逐行看挂载点后面的内容是否拼错。我最常见的低级错误是挂载点目录还没创建就写进 fstab系统在启动阶段找不到挂载目录同样会失败——正确做法是先 mkdir -p 创建目录再写入 fstab。5.2 磁盘空间满了怎么办磁盘空间满是最常见的存储故障。df -hT 能看到每个挂载点的使用率但有时候 df 显示空间充足业务却报错“No space left on device”——这是因为 inode 耗尽了。inode 是文件系统里记录文件元数据的索引节点每个文件至少占用一个 inode。你可能有 100GB 空闲空间但 inode 被几十万个小文件耗尽照样写不进新文件。排查 inode 使用情况用 df -idf -i /data如果 IUse% 到 100%就该清理小文件或者调整文件系统的 inode 密度了。找出哪个目录文件最多可以用 find 配合 wc -l 统计。顺便说一个生产环境最容易踩的大坑日志文件没做轮转一个大 log 文件占满整个磁盘。这时候千万别直接 rm 删除日志文件——如果进程还持有该文件的句柄删除后空间并不会立即释放。正确做法是 truncate -s 0 /var/log/xxx.log把文件清空但不影响进程写日志或者配置 logrotate 让日志按大小自动切割。这类问题在考试里不太会直接考但运维工作中几乎每个月都会遇到。5.3 磁盘性能排查的常用工具存储管理不只是会分区挂载排查性能问题也是日常一部分。iostat 查看磁盘读写速率iotop 按进程看 IO 占用vmstat 看系统整体 IO 等待。定位到是哪个进程在疯狂读写后再决定是限流、迁移还是扩容。下面是几个常用命令的用法和输出解读iostat -x 1重点看 %util 列接近 100% 说明磁盘长期处于饱和状态。如果 %util 低但业务依然慢问题可能不在磁盘而在文件锁或者网络延迟。iotop 则是定位“谁在读写”的利器能看到每个进程的读写速率和 IO 百分比。还有一个经常被忽略的细节固态硬盘和机械硬盘的挂载参数可以优化。机械硬盘适合使用 deadline 或 mq-deadline 调度器减少寻道延迟固态则可以用 noop 或 none 调度器减少 CPU 开销。RHEL 9 里默认的调度器已经比较智能但在老发行版或特殊硬件上调整调度器确实能带来可观收益。6. 一些值得说透的细节与经验6.1 关于设备命名的几个考点设备命名是 RHCSA 考试里很容易失分的小点。/dev/sda 中 a 是设备字母序号通常代表第一块 SATA/SCSI 盘b 是第二块以此类推。但这种顺序并不是绝对的——内核是按探测顺序分配字母的主板接口顺序和内核探测顺序不一定一致同一块盘在两次启动中也可能从 sdb 变成 sdc。NVMe 盘的命名规则是 /dev/nvme0n1 这种格式0 是控制器序号n1 是命名空间序号。虚拟机里如果是 virtio 磁盘设备名可能是 /dev/vda、/dev/vdb。看到 vda 别奇怪这是虚拟化环境的标准设备名。了解命名规则是为了明白一个结论生产环境中挂载写入 fstab 时优先用 UUID 而不是设备名。这是从无数生产事故里总结出来的铁律。执行 blkid 获取 UUID 只花几秒钟但可以避免设备漂移导致的启动失败。6.2 从一块盘到多块盘的规划思路单盘操作的逻辑理清之后多盘规划其实是在这个基础上的组合。基本思路是系统盘只装操作系统和应用数据盘单独划分并挂载到独立目录比如 /data 或 /home。系统盘和数据盘分开一是方便备份和迁移数据二是系统崩了之后数据还在重装系统不用搬数据。如果业务数据增长速度快建议直接考虑 LVM逻辑卷管理这是 RH134 后续章节的内容。LVM 的核心价值在于把多块物理盘合并成卷组再灵活划分逻辑卷扩容不需要重新分区数据迁移也更方便。不过第 7 章基础存储是 LVM 的前置功课——分区表、文件系统、挂载这些概念搞不清楚上 LVM 只会更混乱。在很多真实项目里我见过两种极端一种是所有东西塞一块盘系统盘满了导致业务挂掉另一种是过度设计给一个小业务挂了 LVM、RAID、SAN排障成本比收益还高。合理规划的思路应该是单机场景下系统盘 50GB 左右数据盘按三年增长预期给空间虚拟化平台则把数据盘做独立 VDisk通过卷组的快照能力做备份恢复。刚入门阶段先把单盘的基本功练扎实比追求花哨方案更有价值。6.3 备份意识要刻进肌肉记忆说句实在话分区、格式化、挂载这些操作每个命令敲下去之前都应该想过“如果这一步错了数据还在吗”。rm -rf 误删目录、mkfs 格式化错分区这两种事故在运维圈子里几乎是人手一个。防呆的套路就是操作前确认设备名、用 blkid 看当前设备内容、重要数据先备份再动手。备份可以简单到一个 tar 打包放另一台机器也可以专业到定时快照。RH134 第 7 章本身不涉及备份但如果没有这个意识所有存储管理技巧都可能变成一场灾难。我个人的习惯是任何批量操作脚本先加一行 set -u 防止变量未定义导致的错删再加一层交互确认逻辑。这套习惯练成肌肉记忆能帮你避开绝大多数低级事故。回到 RH134 的备考本身第 7 章的内容其实不多但牵涉到的命令确实密集。分区、格式化、挂载、swap、fstab 这几个模块建议你在虚拟机里各练五遍以上练到不用查文档就能熟练敲出完整流程的程度。考试时的环境是全新的空磁盘操作窗口就那么几分钟熟练度直接决定能不能拿分。更重要的是这些操作就是日常运维的必修课今天多花的时间都会变成以后处理线上事故时的底气。