Linux之fstab文件详解

一、简介

文件 /etc/fstab 是用来存放文件系统的挂载信息,当系统启动的时候,会自动读取该文件信息,并将此文件中指定的文件系统挂载到指定的目录

二、语法

一个简单的 /etc/fstab 使用内核名称标识磁盘

1
2
3
4
5
<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

字段定义

包含了如下字段,通过空格或 Tab 分隔

1
2
#  第一列      第二列  第三列    第四列    第五列   第六列
<file system> <dir> <type> <options> <dump> <pass>
  • 第一列:要挂载的设备文件或 UUIDlabel
  • 第二列:挂载点
  • 第三列:文件系统格式,如 ext3,默认 auto 自动识别
  • 第四列:挂载参数,较常用的参数有
    • auto:在启动时或键入了 mount -a 命令时自动挂载
    • noauto:只在你的命令下被挂载
    • exec:允许执行此分区的二进制文件
    • noexec:不允许执行此文件系统上的二进制文件
    • ro:以只读模式挂载文件系统
    • rw:以读写模式挂载文件系统
    • user:允许任意用户挂载此文件系统
    • users:允许所有 users 组中的用户挂载文件系统
    • nouser:只能被 root 挂载
    • owner:允许设备所有者挂载
    • sync:I/O 同步进行
    • async:I/O 异步进行
    • dev:解析文件系统上的块特殊设备
    • nodev:不解析文件系统上的块特殊设备
    • suid:允许 suid 操作和设定 sgid 位,使普通用户运行程序时临时提升权限
    • nosuid:禁止 suid 操作和设定 sgid 位
  • 第五列:dump备份设置
    • 0:不备份,默认
    • 1:每天备份
    • 2:不定期备份
  • 第六列:是否检验扇区
    • 0:不校验
    • 1:校验
    • 2:1级别检验完成之后进行检验

文件系统标识

/etc/fstab 配置中有三种不同的方法表示文件系统

方式 注释
设备文件名 只会在当前生效,系统重启之后可能改变
UUID 是分区的唯一标识,不会变
label 只会在当前生效,系统重启之后可能改变

设备文件名

查看内核名称,前缀是 dev

1
2
3
4
5
6
$ fdisk -l
...
Disk /dev/mapper/vg_system-root: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

UUID

查看设备文件 UUID 的

1
2
3
4
5
6
7
8
9
10
$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 ext4 15c18dd5-70e4-4e09-8c16-7a259cf43d9b 821.1M 6% /boot
├─sda2
└─sda5 LVM2_membe AxteBM-l3X6-eQTf-a9Gx-bOYx-Yf6C-enot3A
├─vg_system-root ext4 9b0819cc-1e02-42a3-aa62-9498971a7228 860.3M 2% /
├─vg_system-swap_1 swap 719e4881-c35f-4e38-b04f-c780b36d8d20 [SWAP]
├─vg_system-usr ext4 7fc52748-7787-432f-8ea3-8fe24bde67d0 1G 62% /usr
└─vg_system-var ext4 68103905-d3a1-4197-ac6e-f2f038a21647 3.1G 10% /var

标签 label

/etc/fstab 中使用 LABEL= 作为设备名的开头

1
2
3
4
5
$ cat /etc/fstab
# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nodev,nosuid 0 0
LABEL=Arch_Linux / ext4 defaults,noatime 0 1
LABEL=Arch_Swap none swap defaults 0 0

注意: 使用这一方法,每一个标签必须是唯一的

路径名有空格

如果挂载的路径中有空格,可以使用 \040(八进制)转义字符来表示空格

1
2
3
root@hello:~# cat /etc/fstab
UUID=47FA-4071 /home/username/Camera\040Pictures vfat defaults,noatime 0 2
/dev/sda7 /media/100\040GB\040(Storage) ext4 defaults,noatime,user 0 0