linux fstab详解

发布时间 2023-04-24 10:57:36作者: XU-NING

Linux /etc/fstab文件详解

Linux的/etc/fstab文件是一个重要的配置文件,它主要用于指定文件系统的挂载点和文件系统的参数配置。在这个文件里面,列出了系统中所有挂载的文件系统和它们的挂载选项。

以下是/etc/fstab文件的详细说明

  1. 设备节点

第一项是您想要mount的储存装置的实体位置,如hdb或如上例的/dev/hda7

设备节点通常被称为块设备节点或字符设备节点。块设备通常是硬盘分区或闪存驱动器等存储设备,因为它们以块为单位读写数据。字符设备通常是永久存储设备或串口等,因为它们以字符为单位读取或写入数据。

在挂载时,我们需要使用设备节点来标识我们要挂载的文件系统。

2.挂载点

第二项就是您想要将其加入至哪个目录位置,如/home或如上例的/,这其实就是在安装时提示的挂入点

挂载点是文件系统和操作系统之间的点。在Linux中,所有文件系统都必须挂载到某个地方才能访问。挂载点的位置可以是任何目录,通常是/var、/mnt或/home等目录。

3.文件系统类型

第三项就是所谓的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如上例的ext2,可以参见/prco/filesystems说明

文件系统类型可以指示正在挂载的文件系统的类型。这通常是例如ext4、ntfs、vfat等。当我们挂载设备时,我们需要指定它的文件系统类型,以便操作系统正确理解文件系统的格式。

4.挂载选项

第四项就是您mount时,所要设定的状态,如ro(只读)或如上例的defaults(包括了其它参数如rw、suid、exec、auto、nouser、async),可以参见「mount nfs」。 

与挂载点相关的选项集合。这些选项可以控制文件系统的行为,如是否允许读取、写入、执行、自动备份等等。常见的选项包括:

      type 是指文件系统类形。
      rules 是指挂载时的规则。下面列举几个常用的:
        auto 开机自动挂载 
        default 按照大多数永久文件系统的缺省值设置挂载定义
        noauto 开机不自动挂载
        nouser 只有超级用户可以挂载
        ro 按只读权限挂载
        rw 按可读可写权限挂载
        user 任何用户都可以挂载
       请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto

5.备份选项

第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0

文件系统的备份可以让管理员防止文件系统中的数据丢失。备份选项可以指定要使用的备份方案。在Linux中,备份选项有两种:

0 是指dump(系统备份工具)。这一项为0,就表示从不备份。如果上次用dump备份,将显示备份至今的天数。

6.检查选项

第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它皆可视需要设定,内定值是0

order 指fsck(启动时fsck检查的顺序)。为0就表示不检查,(/)分区永远都是1,其它的分区只能从2开始,当数字相同就同时检查(但不能有两1)。

当你修改了/etc/fstab后,一定要重新引导系统才会有效

区域详解

在这个文件下,我们要关注的是它的六个域,分别为:<file system>、<mount point>、<type> 、<options>、<dump>、<pass>。下面将详细介绍这六个域的详细意义。

1、<fie sysytem>。这里用来指定你要挂载的文件系统的设备名称或块信息,也可以是远程的文件系统。做过嵌入式linux开发的朋友都可能知道 mount 192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (可以是其他IP)命令所代表的意义。它的任务是把IP为192.168.1.56的远程主机上的/home/nfs/目录挂载到本机的/mnt/nfs /目录之下。如果要把它写进/etc/fstab文件中,file system这部分应填写为:/192.168.1.56:/home/nfs/。

如果想把本机上的某个设备(device)挂载上来,写法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一个串口硬盘的第一个分区,也可以是第一个SCSI硬盘的第一个分区,/dev/hda1表示第一个IDE硬盘的第一个分区,/dev/cdrom 表示光驱。

此外,还可以label(卷标)或UUID(Universally Unique Identifier全局唯一标识符)来表示。用label表示之前,先要e2label创建卷标,如:e2label /dir_1 /dir_2,其意思是说用/dir_2来表示/dir_1的名称。然后,再在/etc/fstab下按如下形式添加:LABEL=/dir_2 /dir_2 <type> <options> <dump> <pass>。重启后,系统就会将/dir_1挂载到/dir_2目录上。对于UUID,可以用vol_id -u /dev/sdax来获取。比如我想挂载第一块硬盘的第十一个分区,先用命令vol_id -u /dev/sda11 来取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然后在<file system>这个域上填写: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般会使用label,而Ubuntu linux 一般会用UUID。

2、<mount point>。挂载点,也就是自己找一个或创建一个dir(目录),然后把文件系统<fie sysytem>挂到这个目录上,然后就可以从这个目录中访问要挂载文件系统。对于swap分区,这个域应该填写:none,表示没有挂载点。

3、<type>。这里用来指定文件系统的类型。下面的文件系统都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。

4、<options>。这里用来填写设置选项,各个选项用逗号隔开。由于选项非常多,而这里篇幅有限,所以不再作详细介绍,如需了解,请用 命令 man mount 来查看。但在这里有个非常重要的关键字需要了解一下:defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async。

5、<dump>。此处为1的话,表示要将整个<fie sysytem>里的内容备份;为0的话,表示不备份。现在很少用到dump这个工具,在这里一般选0。

6、<pass>。这里用来指定如何使用fsck来检查硬盘。如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。比如第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个 分区。

实例解析

下面是一个示例fstab文件:

/dev/sda1 / ext4 rw,relatime 0 1

UUID=23af7f96-f18e-49f0-b661-78d41c18a96c /data ext4 defaults 0 2

tmpfs /tmp tmpfs defaults 0 0

/dev/sr0 /media/cdrom iso9660 ro,user,noauto,unhide 0 0

该文件挂载了根目录、一个UUID为23af7f96的数据分区、/tmp和一个CD-ROM驱动器。第一个字段是设备节点或UUID,第二个字段是挂载点,第三个字段是文件系统类型,第四个字段是挂载选项,第五个字段是备份选项。

/dev/sda1分区被挂载到/目录下,使用ext4文件系统,使用相对时间。UUID为23af7f96-f18e-49f0-b661-78d41c18a96c的分区被挂载到/data目录下,使用ext4文件系统,使用默认选项。/tmp目录是tmpfs文件系统而不是磁盘文件系统。/dev/sr0设备(CD-ROM驱动器)被挂载到/media/cdrom目录,并使用iso9660文件系统,以只读方式挂载,允许用户挂载,并在引导时不自动挂载。