深入解析 /etc/fstab:大多数运维都容易忽略的系统启动关键点!

今天分享一下系统自动挂载文件:/etc/fstab。

应该很多人遇到过下面这种情况。

进不去系统了,大概率可能是两种原因:第一是文件系统损坏了,第二种是/etc/fstab文件没配置好,导致系统自动挂载时失败。

接下来就详细介绍一下。

一、/etc/fstab 简介

/etc/fstab 是 Linux 系统启动时自动挂载文件系统的配置表。它的全称是 File Systems Table,系统在启动时会参考它来自动执行 mount 操作。

在生产环境中,fstab 影响着:

系统能否成功启动(挂载失败会进入 emergency 模式)分区是否以正确方式挂载(只读?缓存策略?用户挂载?)是否自动挂载 swap、RAID、NFS 等资源性能和安全策略的预设(如 noatime、nosuid)

二、/etc/fstab内容详解

格式如下,每行一个挂载配置,共六个字段:

复制
<设备> <挂载点> <文件系统类型> <挂载选项> <dump> <fsck顺序>1.

第1列:设备

可以是:

/dev/sdX:传统设备名,不稳定【容易留坑】UUID=xxxx:推荐,唯一标识设备【推荐使用】LABEL=label:标签,更易识别【我很少用】网络路径:如 10.0.0.110:/data/nfs/share【NFS挂载常用】

查 UUID:

复制
blkid1.

更改标签:

复制
e2label /dev/sdb1 DATA_DISK1.
第2列:挂载点

挂载点必须存在,没有的话需要提前创建目录,否则系统启动会失败,这个根据需求自定义就行。

创建目录:

复制
# 多级目录就加`-p`,表示递归创建 mkdir /data1.2.
第3列:文件系统类型

常见类型:

类型

场景

ext3/ext4

通用 Linux 文件系统

xfs

大量数据写入、高性能

btrfs

支持快照、压缩等

nfs

网络挂载

swap

虚拟内存分区

tmpfs

内存文件系统

使用 lsblk -f 查看类型。

第4列 挂载选项

这是重中之重,常见选项如下:

选项

含义

defaults

rw, suid, dev, exec, auto, nouser, async

noatime

访问文件时不更新 atime,提升性能

nodiratime

同上,但仅目录

ro

 / rw

只读 / 读写挂载【默认读写挂载】

nosuid

禁用 SUID 程序,增强安全性

nodev

禁用设备文件

noexec

禁止执行文件

relatime

折中方案,默认选项

discard

启用 SSD 的 TRIM 操作

user

 / users

允许普通用户挂载

我大多数情况只用defaults选项。

性能建议:

对于大多数数据盘,推荐:
复制
defaults,noatime,nodiratime1.
对于 SSD:
复制
defaults,noatime,discard1.
第5列:dump

是否启用 dump 命令进行备份,大多数情况设为 0,1就是启用。

第6列:fsck 顺序

控制开机时的文件系统检查顺序:

0:不检查1:通常是根分区 /2:其它分区(如 /home、/data)

切记不要多个设置为 1,否则引发 fsck 混乱!

三、注意事项

配置完 fstab 后,永远不要直接 reboot!

先执行:

复制
mount -a1.

它会按 /etc/fstab 模拟一次挂载,能否成功挂载全凭这条命令的反馈。如果这里挂载有问题,就会出现我开始放那个截图一样,会让你进入紧急模式。

四、系统挂载失败的应急方案

要是上面一个步骤你修改完/etc/fstab,没有检查并且配置错误,还reboot了服务器,大概率进去下面的界面

怎么办,也很简单,直接输入密码后,将/etc/fstab文件配置修改正确就行,也是执行mount -a没问题后重启。

五、运维实战用法

1. 自动挂载 NFS 文件系统
复制
192.168.1.100:/data /mnt/nfs nfs defaults,_netdev 0 01.

_netdev 确保网络就绪后挂载,防止开机挂载失败

2. 使用UUID挂载

比如你新增一个/dev/sdb,你需要先找出/dev/sdb的UUID,然后第一列就使用UUID,不要使用设备名称

复制
blkid /dev/sdb1.
3. tmpfs 内存盘

这个主要用于加速临时目录读写,不过我比较少用

复制
tmpfs /mnt/tmpfs tmpfs defaults,size=512M 0 01.

适用于缓存、构建临时文件存储等。

4. 挂载 ISO 镜像
复制
# 第一列iso路径根据实际来填写。 /mnt/image.iso /mnt/iso iso9660 loop 0 01.2.

再次强调,配置完要记得mount -a检查一下。

阅读剩余
THE END