目录
- 1. 什么是 /etc/fstab
- 2. /etc/fstab 文件的格式
- 2.1 设备文件 (Device)
- 2.2 挂载点 (Mount Point)
- 2.3 文件系统类型 (File System Type)
- 2.4 挂载选项 (Mount Options)
- 2.5 Backup Operation(dump 参数)
- 2.6 Pass Order (fsck 参数)
- 2.6.1 参数设置
- 2.6.2 不同发行版默认参数
- 2.6.3 设置为 0 的原因
- 3. 常见示例
- 3.1 常见的本地磁盘配置
- 3.2 NFS 挂载
- 3.3 U 盘自动挂载配置
- 3.4 更多...
参考文章:
- https://www.redhat.com/sysadmin/etc-fstab
- https://wiki.archlinux.org/title/Fstab
1. 什么是 /etc/fstab
/etc/fstab 文件是 Linux 系统中用于定义和管理文件系统的挂载信息的配置文件。它的作用是告诉系统在启动时,应该如何自动挂载各种文件系统。挂载是 Linux 操作系统中一种将存储设备与目录树关联的操作。通过挂载,存储设备中的文件可以通过目录访问。
2. /etc/fstab 文件的格式
/etc/fstab 文件的每一行描述了一个文件系统或设备的挂载信息,通常由 6 个字段组成,每个字段通过空格或制表符分隔。字段的顺序非常重要,具体如下:
<设备文件> <挂载点> <文件系统类型> <挂载选项> <dump> <fsck>
2.1 设备文件 (Device)
这是指需要挂载的设备或分区。可以通过多种方式指定设备,常见的几种方式包括:
- 设备名:直接使用物理设备名或分区名,如
/dev/sda1,表示第一个硬盘的第一个分区。 - UUID:每个分区都有一个唯一标识符 (UUID),使用
UUID=xxxx-xxxx-xxxx格式可以更加稳定地标识设备,因为设备名在不同的启动过程中可能会改变。 - LABEL:如果为分区设置了标签 (Label),可以通过
LABEL=MyData的方式引用设备。
/dev/sda1 /boot ext4 defaults 0 2
UUID=550e8400-e29b-41d4-a716-446655440000 /home ext4 defaults 0 2
2.2 挂载点 (Mount Point)
这是文件系统挂载的位置,即它在目录树中的路径。挂载点可以是任何一个空目录。例如:
/表示根文件系统。/home表示用户目录挂载点。/mnt/data是一个常用的手动挂载位置。/media/data是一个常用的手动挂载位置。none表示文件系统不挂载到特定的路径,通常用于swap分区。
2.3 文件系统类型 (File System Type)
这是指定文件系统类型的字段,它告诉内核如何处理该分区。常见的文件系统类型包括:
- ext4:目前大多数 Linux 系统的默认文件系统,支持日志记录和大文件。
- xfs:高性能文件系统,特别适合大数据和企业级存储环境。
- vfat:FAT32 文件系统,用于 U 盘和移动设备兼容 Windows 系统的情况。
- ntfs:Windows NT 文件系统,适用于从 Linux 访问 Windows 分区。
- swap:交换分区,用于虚拟内存扩展。
- nfs:网络文件系统,允许从远程服务器挂载文件系统。
# 示例
/dev/sda1 /boot ext4 defaults 0 2
/dev/sda5 none swap sw 0 0
192.168.1.100:/shared /mnt/nfs nfs defaults 0 0
2.4 挂载选项 (Mount Options)
挂载选项控制文件系统的行为。这些选项以逗号分隔,组合使用时不要有空格。不同的文件系统类型所对应的挂载选项会有所不同,根据实际文件系统类型设置相应的参数。
例如 NFS 类型的就有好多特有的参数:
192.168.1.100:/data /mnt/nfs nfs defaults,rw,hard,intr,rsize=8192,wsize=8192,timeo=14 0 0
常见的挂载选项有:
- defaults:这是一组默认的选项,包括
rw(读写)、suid(允许 setuid 位)、dev(解释字符和块设备)、exec(允许可执行文件)、auto(自动挂载)、nouser(用户无法挂载)、async(异步 I/O 操作)。 - ro/rw:以只读 (
ro) 或读写 (rw) 模式挂载。 - noatime:不更新文件访问时间,提升性能,特别适合 SSD 和高性能服务器。
- nodiratime:不更新目录访问时间,进一步优化性能。
- user/nouser:
user允许普通用户挂载和卸载该文件系统,nouser则仅允许 root 挂载。 - sync/async:
sync选项意味着所有文件系统操作是同步的,async则是异步的,async是默认值。 - noexec:禁止在文件系统上执行可执行文件。
- nofail:即使设备在启动时不可用,系统仍会继续正常启动,不会中断或进入应急模式。此时,系统只会记录设备挂载失败的错误信息,但不会影响整体启动过程。
- noauto:文件系统不会在系统启动时自动挂载,用户需要手动执行
mount命令来挂载它。这个选项适用于不常用的设备或网络文件系统,防止因设备不可用导致的错误。 - x-systemd.automount:文件系统在首次访问时(例如用户尝试访问
/mnt/usb目录时)才会自动挂载。此选项避免了系统启动时挂载失败的问题,因为它只在需要时挂载。
# 示例
/dev/sda2 /media/usb vfat noauto,user,exec,rw 0 0
这行代码表示挂载一个 U 盘,使用 vfat 文件系统,指定普通用户可以挂载且文件系统可以读写,挂载时还允许执行文件,但不会自动挂载。
2.5 Backup Operation(dump 参数)
这是一个很少使用的字段,指定是否启用 dump 备份程序。通常为 0 或 1:
0:不备份该分区。1:允许dump备份。
2.6 Pass Order (fsck 参数)
准确来说,/etc/fstab 中的最后一列是 pass order,但是这个数字值是用来决定系统在启动时使用 fsck 工具检查文件系统的顺序。不同的发行版根分区(/)与 /boot 分区默认的数字值是不同的。
fsck 工具= File System Consistency Check (文件系统一致性检查) 工具
2.6.1 参数设置
该字段指定系统启动时是否检查文件系统的完整性以及检查的顺序:
0:不检查该文件系统。通常对swap分区或远程挂载(如NFS)使用。1:通常用于根分区(/),表示启动时首先检查这个分区。2:一般用于对其他分区进行检查(/home、/var等),检查顺序可以根据需要设置。- 如果数字相同,则会按照文件中的出现顺序来进行检查。
例如:
# 示例
/dev/sda1 /boot ext4 defaults 0 2
fsck 在系统启动时会检查 /boot 分区,但优先级低于根文件系统(/,其优先级为 1)
2.6.2 不同发行版默认参数
不同发行版的版本以及不同的安装配置都会影响该参数。
| 发行版 | 根分区 / | /boot | /boot/efi | 是否默认启用 fsck 检查 |
|---|---|---|---|---|
| CentOS/RHEL | 0 | 0 | 0 | 否(不会自动检查) |
| Ubuntu/Debian | 1 | 2 | 1 | 是(自动检查) |
| Arch Linux | 1 | 2 | 1 | 是(自动检查) |
| Fedora | 1 | 2 | 0 | 是(自动检查) |
| openSUSE | 1 | 2 | 0 | 是(自动检查) |
| Gentoo | 1 | 2 | 0 | 是(自动检查) |
以 Ubuntu 为例,当系统启动时,fsck 会根据 fstab 中定义的 pass order 来决定哪些文件系统需要检查。系统会首先检查那些 pass order 为 1 的分区,通常是根分区 /,然后再检查 pass order 为 2 的其他分区。如果某个文件系统的 pass order 设置为 0,则它不会被检查。
/boot 与 /boot/efi 区别:
/boot/efi是专门为 UEFI 启动系统设计的目录,用于挂载 EFI 系统分区(ESP)。UEFI 是 BIOS 的继任者,提供了更现代的启动机制;通过 GPT(GUID 分区表) 启动,通常格式化为 vfat 文件系统。/boot用于传统较老的(BIOS、Legacy BIOS)启动系统设计的目录;通过 MBR(主引导记录) 引导。
2.6.3 设置为 0 的原因
- 启动时间优化:很多服务器或高可用系统要求尽量减少启动时间,
fsck在大分区或多个分区时检查时间较长,故一些发行版(如 CentOS/RHEL)会选择关闭自动检查。 - 管理员手动控制:某些场景下,系统管理员希望通过手动方式定期检查文件系统,而不是每次启动时依赖自动检查。因此选择将
pass order设置为0。 - 现代文件系统的可靠性:现代文件系统(如
ext4、xfs等)已经非常稳定,不像早期的文件系统那样容易出错,因此有时并不需要频繁运行fsck。 - 大规模部署环境:在一些大规模服务器部署环境中(如使用 CentOS/RHEL 的数据中心),自动检查文件系统可能会导致系统不可预测的启动时间波动,因此关闭启动时的检查以避免系统长时间不可用。
- more…
3. 常见示例
接下来,通过一些常见的 /etc/fstab 配置示例,进一步展示如何为不同的分区或设备配置文件系统挂载。
3.1 常见的本地磁盘配置
UUID=2b4e9d04-29e9-xxx / ext4 defaults 0 1
UUID=550e8400-e29b-xxx /home ext4 defaults 0 2
/dev/sda5 none swap sw 0 0
这段配置代表了以下内容:
- 根文件系统
/挂载在 ext4 文件系统上,并设置为在系统启动时首先进行文件系统检查。 /home挂载在单独的分区上,使用 ext4 文件系统。- 交换分区
swap被定义但没有挂载点。
3.2 NFS 挂载
192.168.1.100:/shared /mnt/nfs nfs defaults 0 0
这是一个挂载网络文件系统的示例。它将远程服务器 192.168.1.100 上的 /shared 目录挂载到本地 /mnt/nfs。
3.3 U 盘自动挂载配置
/dev/sdb1 /mnt/usb vfat noauto,user,exec,rw 0 0
这段配置表示将 U 盘挂载到 /mnt/usb,使用 vfat 文件系统,并且允许普通用户手动挂载、读写 U 盘,并执行其中的文件。
3.4 更多…
More And More ....
/etc/fstab 是一个重要的配置文件,它决定了系统的存储设备如何挂载以及如何管理文件系统。在实际使用中,正确配置 /etc/fstab 能够提升系统性能、简化存储管理,并确保系统启动时自动挂载关键分区。
凑个图,图文并茂,哈哈哈哈!

