天天看点

linux系统中fstab配置文件详解       linux系统中fstab配置文件详解                      

<a href="http://blog.csdn.net/richerg85/article/details/17917129#" target="_blank"></a>

        /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。

       当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。

一个简单的 <code>/etc/fstab</code>,使用内核名称标识磁盘:

<code>/etc/fstab</code> 文件包含了如下字段,通过空格或 Tab 分隔:

&lt;file systems&gt; - 要挂载的分区或存储设备.

&lt;dir&gt; - &lt;file systems&gt;的挂载位置。

&lt;type&gt; - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:<code>ext2</code>,<code>ext3</code>, <code>ext4</code>, <code>reiserfs</code>,<code>xfs</code>, <code>jfs</code>, <code>smbfs</code>,<code>iso9660</code>, <code>vfat</code>, <code>ntfs</code>,<code>swap</code> 及 <code>auto</code>。 设置成<code>auto</code>类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。

&lt;options&gt; - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:

<code>auto</code> - 在启动时或键入了<code>mount -a</code> 命令时自动挂载。

<code>noauto</code> - 只在你的命令下被挂载。

<code>exec</code> - 允许执行此分区的二进制文件。

<code>noexec</code> - 不允许执行此文件系统上的二进制文件。

<code>ro</code> - 以只读模式挂载文件系统。

<code>rw</code> - 以读写模式挂载文件系统。

<code>user</code> - 允许任意用户挂载此文件系统,若无显示定义,隐含启用<code>noexec</code>, <code>nosuid</code>, <code>nodev</code> 参数。

<code>users</code> - 允许所有 users 组中的用户挂载文件系统.

<code>nouser</code> - 只能被 root 挂载。

<code>owner</code> - 允许设备所有者挂载.

<code>sync</code> - I/O 同步进行。

<code>async</code> - I/O 异步进行。

<code>dev</code> - 解析文件系统上的块特殊设备。

<code>nodev</code> - 不解析文件系统上的块特殊设备。

<code>suid</code> - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。

<code>nosuid</code> - 禁止 suid 操作和设定 sgid 位。

<code>noatime</code> - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。

<code>nodiratime</code> - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。

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

<code>flush</code> - <code>vfat</code> 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。

<code>defaults</code> - 使用文件系统的默认挂载参数,例如<code>ext4</code> 的默认参数为:<code>rw</code>,<code>suid</code>, <code>dev</code>, <code>exec</code>, <code>auto</code>, <code>nouser</code>,<code>async</code>.

&lt;dump&gt; dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 &lt;dump&gt; 应设为 0。

&lt;pass&gt; fsck 读取 &lt;pass&gt; 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。

在 <code>/etc/fstab</code>配置文件中你可以以三种不同的方法表示文件系统:内核名称、UUID 或者 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是因为一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 或是 label 来表示将更有效。参见 持久化块设备名称 。

要显示分区的基本信息请运行:

你可以使用 <code>fdisk -l</code> 来获得内核名称,前缀是<code>dev</code>.

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

要显示所有设备的标签,可以使用 <code>lsblk -f</code> 命令。在<code>/etc/fstab</code> 中使用 <code>LABEL=</code> 作为设备名的开头 :

所有分区和设备都有唯一的 UUID。它们由文件系统生成工具 (<code>mkfs.*</code>) 在创建文件系统时生成。

<code>lsblk -f</code> 命令将显示所有设备的 UUID 值。<code>/etc/fstab</code> 中使用<code>UUID=</code> 前缀:

如果 <code>/home</code> 分区较大,可以让不依赖<code>/home</code> 分区的服务先启动。把下面的参数添加到<code>/etc/fstab</code> 文件中 <code>/home</code> 项目的参数部分即可:

这样 <code>/home</code> 分区只有需要访问时才会被挂载。内核会缓存所有的文件操作,直到<code>/home</code> 分区准备完成。

注意: 这样做会使 <code>/home</code> 的文件系统类型被识别为 <code>autofs</code>,造成 mlocate 查询时忽略该目录。实际加速效果因配置而异,所以请自己权衡是否需要。

挂载远程文件系统也是同理。如果你仅想在需要的时候才挂载,也可以添加 <code>noauto,x-systemd.automount</code> 参数。另外,可以设置 <code>x-systemd.device-timeout=#</code> 参数,设置超时时间,以防止网络资源不能访问的时候浪费时间。

如果你的加密文件系统需要密钥,则需要添加 <code>noauto</code> 参数到 <code>/etc/crypttab</code> 文件中的对应位置。systemd 开机的时候就不会打开这个加密设备,会一直等待到设备被访问时再使用密钥文件挂载。比如在使用加密RAID设备的时候可以节省一定的时间,因为 systemd 不必等到设备可用后才能访问。例如:

如果交换分区没有 UUID,可以手动加入。如果使用 <code>lsblk -f</code> 命令没有列出交换分区的 UUID 就说明发生了这种情况。下面是为交换分区指定 UUID 的步骤:

确定交换分区:

禁用交换分区:

用新 UUID 重新创建交换分区:

激活交换分区:

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

.....&lt;/nowiki&gt;}}

外部设备在插入时挂载,在未插入时忽略。这需要 <code>nofail</code> 选项,可以在启动时若设备不存在直接忽略它而不报错.

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

注意: <code>noatime</code> 已经包含了<code>nodiratime</code>。不需要同时指定。

tmpfs 是一个临时文件系统,驻留于你的交换分区或是内存中(取决于你的使用情况)。使用它可以提高文件访问速度,并能保证重启时会自动清除这些文件。

经常使用 tmpfs 的目录有 /tmp, /var/lock and /var/run. 不要将之使用于 /var/tmp, 因为这一目录中的临时文件在重启过程中需要被保留。使用 tmpfs <code>/run</code> 目录,<code>/var/run</code> 和<code>/var/lock</code> 是为了兼容老版本建立的链接。默认<code>/etc/fstab</code>中的的<code>/tmp</code>也是 tmpfs.

默认情况下, tmpfs 分区被设置为你总的内存的一半,当然你可以自由设定这一值。注意实际中内存和交换分区的使用情况取决于你的使用情况,而 tmpfs 分区在其真正使用前是不会占用存储空间的。

要将 <code>/tmp</code> 放到 tmpfs,将下行加入<code>/etc/fstab</code>:

可以指定大小,但不要修改 <code>mode</code> 选项,以保证文件具有正确的访问权限(1777)。在上例中<code>/tmp</code> 将最多使用一半内存,要指定最大空间,使用<code>size</code> 挂载选项:

参阅 mount 命令 man 手册以获得更多的内容。

重启后方能生效。注意不要直接执行 <code>mount -a</code> 命令,因为可能造成无法访问当前目录中的文件(比如你应该保证 lockfiles 的正常存在)。然而,如果它们都是空的,那么就可以直接执行<code>mount -a</code> 而不必重启电脑。

应用更改后,可以通过 <code>findmnt</code> 检查是否生效:

一般需要大量读写操作的程序在使用 tmpfs 时都会提升性能。有些程序把共享内存放到 tmpfs 上时性能会大幅提升,例如将 Firefox Profile 文件夹放到内存后,Firefox 性能大幅提升。

Note: tmpfs 目录(<code>/tmp</code>) 挂载时需要去掉<code>noexec</code> 参数,否则有些编译程序无法执行,此外,tmpfs 的默认大小是内存的一般,可能会产生空间不够的问题。

下面命令可以让makepkg在tmpfs目录进行编辑,也可以在在<code>/etc/makepkg.conf</code>中进行设置:

为了取得对 FAT32 分区的写权限,你必须修改<code>/etc/fstab</code>文件。

“users”标签的意思是任何用户(甚至非 root 用户)都可以挂载或卸载分区 '/dev/sdX'。“rw”标签则分配读写的使用权。但我不知道“umask”标签的意义(umask 是权限掩码命令 umask=000 指任何人没有特权,且权限为777,即所有人都可以读、写、执行)。我曾试图在“man mount”中查询,但是没有什么结果。

比如你的 FAT32 分区在 '/dev/sda9',你想将其挂载到 '/mnt/fat32',那么你需要输入并运行

本文转自xiaocao1314051CTO博客,原文链接:http://blog.51cto.com/xiaocao13140/1930572 ,如需转载请自行联系原作者

继续阅读