配置文件 fstab 读取挂载磁盘详解

分区表 fstab 的作用

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

系统挂载的要求:
1、根目录是必须挂载的,而且一定要先于其它挂载点被挂载。因为 mount 是所有目录的根目录,其他点都是由根目录 衍生出来的。

2、其它挂载点必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则。

3、挂载点的指定可以任意,但必须遵守必要的系统目录架构原则。

4、所有挂载点在同一时间只能被挂载一次。

5、所有分区在同一时间只能挂载一次。

6、若需进行卸载,必须先将工作目录移到挂载点(及其子目录)之外。


分区表 fstab 中的参数:

下面是我的 linux 环境中 /etc/fstab 文件中的内容

# /etc/fstab
# Created by anaconda on Tue Dec 22 00:48:22 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=85840d9c-30a7-4f31-bbe0-c161e438739d /             ext4    defaults        1 1
UUID=6cfe152d-ca8b-475e-994c-a5e819435959 /boot          ext4    defaults        1 2
UUID=2c2d80d5-cae2-4ab5-9e5f-002b267d367f swap           swap    defaults        0 0
tmpfs     /dev/shm    tmpfs   defaults        0  0
devpts   /dev/pts     devpts   gid=5,mode=620     0  0
sysfs   /sys        sysfs    defaults         0   0
proc   /proc        proc    defaults        0   0   

这个文件的内容共有六个字段,各个字段的详细数据如下:

第一列:磁盘装置文件名或该装置的 Label

这个字段需填入文件系统的装置文件名。但是由上面表格的默认值我们知道系统默认使用的是 Label 名称。
例如我们要查看 /dev/sda1 这个设备的 uuid 和 label name
[root@dyqd2011 ~]# blkid /dev/sda1
/dev/sda1: UUID=“6cfe152d-ca8b-475e-994c-a5e819435959” TYPE=“ext4”(由于采用了系统默认,所以这里没有 LABEL NAME)
注:使用设备名称(/dev/sda) 来挂载分区时是被固定死的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称是会改变的。
不过使用 label 挂载就不用担心插槽顺序方面的问题。不过要随时注意你的 Label name。至于 UUID,每个分区被格式化以后都会有一个 UUID 作为唯一的标识号。使用 UUID 挂载的话就不用担心会发生错乱的问题了。

第二列:Mount point 设备的挂载点,就是你要挂载到哪个目录下。

第三列:filesystem 磁盘文件系统的格式,包括 ext2、ext3、reiserfs、nfs、vfat 等。可以通过命令 cat /etc/filesystems 查看系统支持的磁盘文件系统的格式。
[root@dyqd2011 ~]# cat /etc/filesystems
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus

第四列:文件系统参数 parameters,如下表

参数 内容意义
async/sync
异步 / 同步
配置磁盘是否以异步方式运行!默认为 async(效能较佳)
auto/noauto
自动 / 非自动
当下达 mount -a 时,此文件系统是否会被主动测试挂载。默认为 auto。
rw/ro
可擦写 / 只读
让该分割槽以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用户随意变更的,这里也能够配置为只读。则不论在此文件系统的文件是否配置 w 权限,都无法写入。
exec/noexec
可运行 / 不可运行
限制在此文件系统内是否可以进行『运行』的工作?如果是纯粹用来储存数据的,那么可以配置为 noexec 会比较安全,相对的,会比较麻烦!
user/nouser
允许 / 不允许使用者挂载
是否允许用户使用 mount 命令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要配置为 nouser。
suid/nosuid
具有 / 不具有 suid 权限
该文件系统是否允许 suid 的存在?如果不是运行文件放置目录,也可以配置为 nosuid 来取消这个功能!
usrquota
注意名称是『usrquota』不要拼错了!这个是在启动 filesystem 支持磁盘配额模式,更多数据我们在第四篇再谈。
grpquota
注意名称是『grpquota』,启动 filesystem 对群组磁盘配额模式的支持。
defaults
同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。基本上,默认情况使用 defaults 配置即可!

第五列:能否被 dump 备份命令作用

dump 是一个用来做为备份的命令,我们可以透过 fstab 指定哪个文件系统必须要进行 dump 备份。0 代表不要做 dump 备份、1 代表要每天进行 dump 的动作、2 也代表其他不定日期的 dump 备份动作,通常我们只用数值 0 或 1。

     0

不做 dump 备份
1
每天进行 dump 的操作
2
不定日期的进行 dump 操作

第六栏:是否以 fsck 检验扇区

启动的过程中,系统默认会以自动检查我们的文件系统是否完整。不过,某些文件系统是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。所以,在这个字段中,我们可以配置是否要以开机自检该文件系统。0 是不要检验,1 表示最早检验 (一般只有根目录会配置为 1),2 也是要检验的,不过执行顺序在 1 的后面。一般来说,根目录配置为 1 ,其他的要检验的 filesystem 都配置为 2 就好了。
注:当遇到磁盘很大时,设为 0 就好,以免因为数据过多导致开机自检时间过长而启动系统过慢。

0
不开机自检
1
最早检验(一般根目录会选择)
2
1 级别检验完成之后进行检验