Linux 磁盘配置文件 /etc/fstab 详解

本文最后更新于:2022年8月10日 上午

fstab (/etc/fstab) 是linux下比较重要的配置文件,它包含了系统在启动时挂载文件系统和存储设备的详细信息。

简介

  • 任何硬件设备连接后,操作系统使用硬件,即需要挂载。windows只不过是自动“挂载”了,linux需要手动自己搞。在Linux系统下,例如每次挂载/dev/sr0(光盘设备文件)需要手动使用命令mount。

  • 每次计算机重启时,硬盘一般也是被自动挂载的,而自动挂载的信息就记录在/etc/fstab文件中。

  • 系统每次启动都会读取/etc/fstab中的配置内容,自动挂载该文件中被记录的设备和分区。

文件示例

一个示例 fstab 文件

1
2
3
4
5
6
7
$ cat /etc/fstab 

# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nodev,nosuid 0 0
/dev/sda1 / ext4 defaults,noatime 0 1
/dev/sda2 none swap defaults 0 0
/dev/sda3 /home ext4 defaults,noatime 0 2

字段定义

/etc/fstab 文件包含了如下字段,通过空格或 Tab 分隔:

<file system> <dir> <type> <options> <dump> <pass>

字段 含义
<file systems> 要挂载的分区或存储设备. 设备名称,LABEL,UUID,伪文件系统名称
<dir> <file systems>的挂载位置。
<type> 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
<options> 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。
一些比较常用的参数有:
auto - 在启动时或键入了 mount -a 命令时自动挂载。
noauto - 只在你的命令下被挂载。
exec - 允许执行此分区的二进制文件。
noexec - 不允许执行此文件系统上的二进制文件。
ro - 以只读模式挂载文件系统。
rw - 以读写模式挂载文件系统。
user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec, nosuid, nodev 参数。
users - 允许所有 users 组中的用户挂载文件系统.
nouser - 只能被 root 挂载。
owner - 允许设备所有者挂载.
sync - I/O 同步进行。
async - I/O 异步进行。
dev - 解析文件系统上的块特殊设备。
nodev - 不解析文件系统上的块特殊设备。
suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid - 禁止 suid 操作和设定 sgid 位。
noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async.
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
转储频率: 0表示不进行dump备份,1代表每天进行dump备份,2代表不定日期的进行dump备份
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
开机时自检(非0),自检次序:(如果开机系统自检不过,就无法正常开机)
0:不自检 1:最先自检,一般为/ 2…:数越小优先级最大

问题:如果设备不小心被破坏,开机自检不过,无法正常启用,该怎么办?

原理很简单,只需要修复一下文件系统就好了,(如果不能修复,可以去/etc/fstab中把自检改为0)

添加磁盘挂载示例

挂载物理磁盘

1
lsblk -f
  • 可以查看没有挂载的磁盘信息
1
sda                   xfs         VS1   9aef7b09-cc65-400d-b3c0-c93709c8bff7      5.4T    
  • 以VS1磁盘为例,在fstab文件中挂载他
  • fstab文件中加入这样一行即可
1
UUID=9aef7b09-cc65-400d-b3c0-c93709c8bff7 	/disk/nas1 	xfs 	defaults 	0 	0

nfs 挂载网络磁盘

  • 通过 showmount -e 查看当前可以挂载的网络位置
  • fstab 文件中加入 [网络位置] [挂载位置] [挂载协议] [参数]
1
192.168.1.222:/disk/nas1			/mnt/nas1	nfs	defaults    0 	0

fstab 文件迅速生效

1
mount -a
  • 即可挂载编辑后的 fstab 文件

参考资料


Linux 磁盘配置文件 /etc/fstab 详解
https://www.zywvvd.com/notes/system/linux/disk/linux-fstab/linux-fstab/
作者
Yiwei Zhang
发布于
2021年11月30日
许可协议