做Linux运维,有一个文件必须要熟悉的,那就是/etc/fstab 。它是一个至关重要的配置文件,它负责管理文件系统的挂载信息,确保系统启动时能够自动完成存储设备与目录树的关联。

一、什么是 /etc/fstab?

/etc/fstab(File System Table)是 Linux 系统中定义文件系统挂载规则的配置文件。是告诉系统在启动时如何自动挂载各类存储设备,包括本地硬盘分区、U 盘、网络存储(如 NFS)等。

在 Linux 中,"挂载" 是将存储设备与目录树中的某个目录关联的操作,参考另一篇文章:救命!服务器崩了竟因不会挂U盘?Linux命令行挂载秘籍,运维小哥血泪总结...通过挂载,用户可以像访问普通目录一样读写设备中的文件(Linux一切皆文件)。而 fstab 则将这一过程自动化,避免了每次启动系统后手动执行 mount 命令的繁琐。

二、/etc/fstab 的文件格式

fstab 文件的每一行对应一个文件系统的挂载配置,由6 个字段组成,字段之间用空格或制表符分隔,顺序不可调换。基本格式如下:

<设备文件>  <挂载点>  <文件系统类型>  <挂载选项>  <dump参数>  <fsck参数>

设备文件(Device):指定需要挂载的设备或分区,常见表示方式有三种:

1、设备名:如 /dev/sda1(第一个硬盘的第一个分区),但设备名可能因启动顺序变化而不稳定。

2、UUID:分区的唯一标识符(如 UUID=550e8400-e29b-41d4-a716-446655440000),是最推荐的方式,不受设备名变化影响。

3、、LABEL:若分区设置了标签,可通过 LABEL=自定义名字 引用。

挂载点(Mount Point):设备挂载到目录树中的路径,最好是一个空目录,我个人喜欢挂载到/mnt上面。

文件系统类型(File System Type):指定分区的文件系统格式,常见类型包括:

ext4:Linux 主流文件系统,支持日志功能;
xfs:高性能文件系统,适合大数据场景;
vfat:FAT32 格式,用于兼容 Windows 设备(如 U 盘);
ntfs:Windows 系统常用格式;
swap:交换分区,用于扩展系统内存;
nfs:网络文件系统,用于挂载远程服务器目录。

挂载选项(Mount Options):控制文件系统的挂载行为,多个选项用逗号分隔,常见选项包括

defaults:默认选项(包含 rw、suid、dev、exec、auto 等);
ro/rw:只读 / 读写模式;
noatime:不更新文件访问时间,提升 SSD 性能;
user/nouser:允许 / 禁止普通用户挂载;
noauto:不自动挂载,需手动执行 mount 命令;
nofail:设备不可用时不影响系统启动(这个强烈建议加上,不然挂载的硬盘出现问题,无法启动系统,就只能半夜爬起来去机房了!!!)。

dump 参数:用于指定是否通过 dump 工具备份该分区,通常设置为 0(不备份),1 表示允许备份。由于 dump 工具已较少使用,该字段一般无需修改。

fsck 参数:决定系统启动时是否通过 fsck 工具检查文件系统,以及检查顺序:

0:不检查(如 swap 分区、NFS 挂载);
1:优先检查(通常用于根分区 /);
2:次要检查(如 /home、/boot 等分区)。
#注:不同 Linux 发行版的默认值不同,例如 Ubuntu 中根分区默认设为 1,而 CentOS 则默认设为 0。
# debian
root@debian:~# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=a16edb40-fe36-4d2c-b18b-64e1d6437bc1 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=f6b7151a-9f05-4acd-8661-33d5b0cab62f none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

##centos
[root@NFSserver ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Tue Aug  5 06:28:27 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/klas-root   /                       xfs     defaults        0 0
/dev/mapper/klas-backup /backup                 xfs     noauto        0 0
UUID=3515f67a-31ac-4f30-9598-c2b0b41bec43 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0

三、 NFS 网络挂载

192.168.1.100:/shared  /mnt/nfs  nfs  defaults,rw,hard  0  0
#将远程服务器 192.168.1.100 的 /shared 目录挂载到本地 /mnt/nfs,不进行 fsck 检查。

四、注意事项

  1. 修改后生效:编辑 fstab 后,需执行 systemctl daemon-reload 让系统重新加载配置。

  2. 错误风险:配置错误可能导致系统启动失败,建议修改前备份文件(cp /etc/fstab /etc/fstab.bak)。

  3. UUID 查询:可通过 blkid 命令查看分区的 UUID,确保设备标识准确。

总结,/etc/fstab 是 Linux 存储管理的核心配置,掌握其格式与用法,能有效提升系统的稳定性和管理效率,尤其在服务器运维和多设备环境中至关重要。

参考链接:https://mp.weixin.qq.com/s/fMqxlTEsKDtgzGwS8p8QiA