概述

在访问 Linux 系统中的目录之前,必须将这个目录挂载到一个已经格式化为某个可读文件系统的分区上。而 Linux 利用 /etc/fstab 配置文件自动完成这个过程。当 Linux 处于引导过程中时,系统利用 mount 命令把定义在 /etc/fstab 文件中的目录挂载到已配置的卷上。

下面就是我的某一台机器上的 /etc/fstab 文件的内容:

  1. [root@liqiang.io]# cat /etc/fstab
  2. /dev/mapper/centos-root / xfs defaults 0 0
  3. UUID=452d2b56-e6b0-4833-a5a3-9ff073ed7887 /boot xfs defaults 0 0
  4. /dev/mapper/centos-home /home xfs defaults 0 0
  5. /dev/mapper/centos-swap swap swap defaults 0

文件解析

设备名称 挂载点 文件系统 挂载选项 DUMP 选项 文件系统检查选项
/dev/mapper/centos-root / xfs defaults 0 0
UUID=452d2b56-e6b0-4833-a5a3-9ff073ed7887 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0

可以看到有的时一个路径名,而有的设备时一个 UUID,使用 UUID 的好处就是稳定,即使是重新启动或者插拔盘之类的操作,或者因为系统启动读取顺序的不同都不会导致 UUID 的改变;而使用类似于 /dev/sda1 这样的分区名就不一定的,这是受系统和硬件变更的影响的。

挂载点为 swap

对于 swap 类型,Mount Point 不是必须的,甚至可以为 none

文件系统列表

在我使用的 CentOS 下,默认支持的文件系统为:

文件系统 文件系统 文件系统 文件系统 文件系统 文件系统 文件系统
adfs affs autofs cifs coda coherent cramfs
debugfs devpts efs ext ext2 ext3 ext4
hfs hfsplus hpfs iso9660 jfs minix msdos
ncpfs nfs nfs4 ntfs proc qnx4 ramfs
reiserfs romfs squashfs smbfs sysv tmpfs ubifs
udf ufs umsdos usbfs vfat xenix xfs
xiafs
最常用的几个
VFS 描述
tmpfs 一个虚拟内存文件系统,使用 RAM 和交换空间
devpts 与伪终端设备有关
sysfs 提供系统设备的动态信息(/sys
proc 提供了用来控制内核行为的动态可配置选项
cgroups 与 Linux 内核的控制组功能有关,允许为进程或一组进程的系统资源使用设置限制

挂载选项 default 的含义

default 在我使用的 CentOS 中的含义为:rw, suid, dev, exec, auto, nouser, and async.

选项 含义 描述
rw Mount the filesystem read-write 还可以是 ro:Mount the filesystem read-only
suid 允许在此文件系统的程序上使用 setuidsetgid
dev 对访问终端或控制台等字符型设备和硬盘驱动器等块设备的访问权限
exec 允许在此文件系统中运行二进制文件
auto 可以使用 mount -a 命令挂载
nouser 只允许 root 用户挂载指定的文件系统
async 此文件系统上的所有 I/O 采用异步方式

小结

其实 /etc/fstab 可以认为是 mount 命令,只不过是这个文件中的配置是系统启动过程中,自动挂载上去的,当然,可以通过设置:noauto 选项来阻止系统自动挂载。

如果修改了 /etc/fstab 想不重启就生效,可以通过 mount -a 命令执行,但是,要注意,这个同样受 noauto 选项的影响。

Ref