生态社区

技术文档

麒麟系统之fstab简介

发布时间:2023-08-31    浏览次数:1689次    作者:湖南省计算产业生态创新中心 (长沙)

1. fstab作用

fstab全称为file system table,即文件系统表。它在开机的时候告诉系统挂载哪些分区、挂载点是什么、以什么格式挂载、挂载的选项等等。系统在开机的时候会根据fstab内容,执行挂载操作。挂载完成之后,就可以在文件系统上进行操作。

这个文件的全路径是/etc/fstab。它只是一个文本文件,你可以用任何你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。

2. fstab内容

下面是 Kylin-Desktop-V10-SP1-2107 系统 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).

#

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# /dev/sda5 LABEL=SYSROOT

UUID=61ce7343-44d0-48c6-8785-6f5bb5548a00 /          ext4       rw,relatime 0 1

 

# /dev/sda1 LABEL=SYSBOOT

UUID=db551a82-f79f-4404-a428-dfbed82a0a80 /boot      ext4       rw,relatime 0 0

 

# /dev/sda7 LABEL=DATA

UUID=8975ac15-ab52-4411-813c-d9ede116953e /data      ext4       rw,relatime 0 0

 

# /dev/sda6 LABEL=KYLIN-BACKUP

UUID=c5b1b634-cb16-4963-b6f6-01e8bcdc707e /backup      ext4      noauto      0 0

 

 

# /dev/sda8 LABEL=SWAP

UUID=7c024ea1-18b1-4806-9841-9bb329d73205 none       swap       defaults   0 0

 

/data/home      /home      none      defaults,bind      0 0

/data/root      /root      none      defaults,bind      0 0

 

一条标准的挂载记录包含六部分内容,以空格或制表符分隔,具体是 file system、mount point、type、options、dump、pass 这6列。

· file system 表示挂载的设备(硬盘及其分区,NFS存储、Samba共享目录等),如/dev/sdb1或UUID这种。

· mount point 表示设备挂载的目录,如第一条记录中挂载位置为根目录。

· type 表示挂载设备的文件系统格式,比如常用的ext2,、ext3、ext4、xfs、ntfs、cifs、swap、auto等。注意,auto并不是一种文件系统格式,而是让mount命令自动判断挂载设备的文件系统格式。

· options 表示挂载设备时设置的选项,它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。下面对常用的一些选项进行解释:

defaults:使用默认参数挂载,例如ext4的默认参数为rw、suid、dev、exec、auto、nouser、async。

自动挂载与手动挂载
auto:默认设置项,在系统启动时,或者在终端中输入mount -a时自动挂载。
noauto:设备(分区)只能手动挂载。

读写权限
rw:以读写权限挂载。
ro:以只读权限挂载。

可执行权限
exec:默认设置项,分区中的二进制文件能够执行。
noexec:分区中的二进制文件不能执行。

临时文件执行权限
suid:允许suid和sgid位操作。它们主要用于允许计算机系统上的用户执行具有临时提升权限的二进制可执行文件,以执行特定任务。
nosuid:阻止suid和sgid位的操作。

用户挂载权限
user:允许任何用户挂载设备。
nouser:只允许root用户挂载设备。

I/O同步
sync:所有的I/O将以同步方式进行。
async:默认设置项,所有的I/O将以异步方式进行。

块特殊设备
dev:解析文件系统上的块特殊设备。
nodev:不解析文件系统上的块特殊设备。

atime参数
noatime:不更新文件系统上 inode 访问记录,可以提升性能。
nodiratime:不更新文件系统上的目录 inode 访问记录,可以提升性能。
realtime:实时更新 inode 访问记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能。

使用 noatime, nodiratime 或 relatime 可以提升 ext2, ext3 及 ext4 格式磁盘的性能。 Linux 在默认情况下使用atime选项,每次在磁盘上读取(或写入)数据时都会产生一个记录。这是为服务器设计的,在桌面使用中意义不大。默认的 atime 选项最大的问题在于即使从页面缓存读取文件(从内存而不是磁盘读取),也会产生磁盘写操作!

 

使用 noatime 选项阻止了读文件时的写操作。大部分应用程序都能很好工作。只有少数程序如 Mutt 需要这些信息。Mutt 的用户应该使用 relatime 选项。使用 relatime 选项后,只有文件被修改时才会产生文件访问时间写操作。nodiratime 选项仅对目录禁用了文件访问时间。relatime 是比较好的折衷,Mutt 等程序还能工作,但是仍然能够通过减少访问时间更新提升系统性能。

 

noatime 已经包含了 nodiratime。不需要同时指定。

· dump 表示是否通过 dump 命令备份,0 表示不做dump备份,1表示每天进行dump备份,2表示不定期的进行dump备份。大部分的用户没有安装 dump ,所以此处应设置为 0。

pass 表示在开机的过程中是否通过fsck检验文件系统的完整性,0表示不检查,1表示最早检查(一般只有根目录会设置为 1),其他数字按增序依此检查。