Linux 的 fstab文件

本文深入解析Linux系统中的fstab文件,包括文件的基本结构、各列的含义、常见文件系统类型、挂载选项以及备份和核对选项。详细介绍了如何通过编辑fstab文件解决设备挂载问题。

注:本文的原文创建时间是2003年,最后更新时间是2009

Linux系统中,有一个/etc/fstab文件 。该文件是和mount命令结合使用的。该文件是一个配置文件,里面存储的是计算机上所有的存储设备和分区的信息,即这些设备以什么方式挂载到什么地方。如果在Linux上不能访问Windows的分区,或者不能挂载CD或软盘,或者不能使用CD-RW,则可能就是/etc/fstab文件配置错了(misconfigured)。因而,通常情况下可以通过编辑/etc/fstab文件来修复这些设备挂载问题。编辑/etc/fstab文件必须需要root权限。

不同机器的系统、设备或分区不同,fstab文件的内容就会不同,但是该文件的基本结构是一样的,下面是一个文件示例:

/dev/hda2/ext2defaults1 1
/dev/hdb1/homeext2defaults1 2
/dev/cdrom/media/cdromautoro,noauto,user,exec0 0
/dev/fd0/media/floppyautorw,noauto,user,sync0 0
proc/procprocdefaults0 0
/dev/hda1swapswappri=420 0

(最后一列的2个数字是分开的,每个算作一列)

可以看出,该文件每行包含了一个设备或分区的信息。其中,第一列是设备名,第二列是设备挂载点,第三列是文件系统类型,第四列是挂载选项,第五列是备份选项,第六列是文件系统检查选项.下面详细解读每一列:


第一、二列:设备名和挂载点

          第一、二列的内容是十分明确的(straightforward)。它们告诉了mount命令挂载的设备分区和挂载点,与你自己手动使用mount命令去挂载设备效果是一样的。在/etc/fstab中为

          设备指定的挂载点是该设备默认的挂载点,即在挂载该设备时,不指定其他挂载点的情况下会默认挂载到该/etc/fstab里指定的目录。

          很多Linux发行版(不知道是不是这样翻译,Linuxdistros)会创建特殊的目录来作为 挂载点。大多数是用的目录/mnt,但有些(如SuSE)在/media下。上面的/etc/fstab

          中就是使用的SuSE的挂载点。

所以,命令:mount/dev/fd0 会把/dev/fd0挂载到/media/floppy,因为在/etc/fstab有 指定该项。如果/etc/fstab中没有对应的项,则该命令执行时mount就会找不到挂载点。

用户可以自由地修改默认的挂载点,但该挂载点必须是系统上已存在的目录。如果不存 在,则可以自己创建它。

有些设备或分区是在Linux系统启动时自动挂载的,如下:

/dev/hda2/ ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2

如果这些设备挂载不成功,则使用Linux系统就会出现问题,因为你无法访问/目录。 操作系统就是通过查找/etc/fstab文件来知道/dev/hda2/dev/hdb1的挂 载点的。(即根目录的挂载也是该文件指定的)


第三列:文件系统类型

/etc/fstab文件的第三列指定了设备或分区的文件系统类型。系统支持很多种文件系统,但这里只考察一些最常用的。

Ext2和ext3:通常情况下Linux系统的分区是ext3。ext2曾是Linux的标准文件系统,后来ext3和reiserfs变成了几乎所有的新Linux发行版的默认文件系统(我的ubuntu12.04上是ext4).Ext3是一个比ext2新的文件系统,不同之处就在于它的日志系统(journaled),意味着即使机器在不正常的情况下关闭了,数据也不会丢失,且系统在下次启动时不会花费时间来使用历史记录来检查文
件系统。

Reiserfs:该文件系统很不错(原作者这样评价的)。和ext3一样,reiserfs也是一个日志文件系统,但是比ext3更高级。很多Linux发行版(包括SuSE)把它作为Linux分区的默认文件系统。

Swap:这个文件系统是自己解释的(self-explanatory,是系统自己添加的?系统安装的时候确实是要指定的)。该文件系统类型(swap)是用来做交换分区的。

Vfat和ntfs:像USB这样的设备更可能格式化成vfat(也叫做FAT32)这样的格式.Windows的分区多可能是Vfat或NTFS。Windows的9x系列(95,98,ME)都使用的是Vfat,NT系列(NT,2000,XP,Vista,7)使用的是NTFS,但是也可以格式化成Vfat.

Auto:这不是文件系统类型。“auto”选项只是简单意味着文件系统类型会被自动检测到。如果看过很多fstab的示例,会发现floopy和CD-ROM都是使用“auto”作为它们的文件系统。原因就在于它们的文件系统类型是多变的。一个floppy设备可以格式成windows的格式或在Linux EXT2下使用时又格式化成其他。因而诸如floppy、cdrom等媒体会让系统自己检测其文件系统类型。


第四列:挂载选项

fstab的第四列列出了用于设备或分区的所有挂载选项。这是fstab里最麻烦的部分,但是熟悉一些常用的选项意义可以让你避免不少问题。下面会介绍一些常用的选项,更全的选项可以去参考mount。

auto和noauto:设置auto选项时,则该设备会被自己的挂载(是在系统引导时,或者使用了mount -a 命令)。auto是默认的选项。如果不想让设备自动挂载,则可以使用noauto选项。设置了noauto时,则设备会在明确的挂载命令时挂载(即另外使用挂载命令来挂载这个设备)。

user和nouser:这些是非常有用的选项。user选项允许常规用户去挂载该设备,而nouser选项只允许root用户挂载该设备。默认情况下是nouser。如果当前用户不能挂载cdrom,windows分区或其他,则在/etc/fstab里添加user选项。

exec和noexec:exec允许用户执行该分区上的二进制文件,而noexec就不允许了。noexec对那些包含有二进制文件,而你又不想让这些文件在系统里运行的分区有用,如windows分区。

ro:以只读方式挂载文件系统(read-only)。

rw:以可读可写方式挂载文件系统。当挂载的设备或分区不能读写时,检查下是不是没设置该选项

sync和async:设置文件系统的I/O 方式。sync 意味着同步(synchronously)。在示例中,floppy设备用到了该选项。实际作用就是:当你向floppy盘中复制文件时,同时会把修改写到物理盘中。相反的,async选项就设置了异步I/O,这时,再向软盘复制文件时,则修改会在命令执行一段时间后才会写到物理设备中。这种方式有时是非常好的,但是可能会产生冲突,如在未umount软盘的情况下就移除了该设备,则复制的文件可能根本就没有写到软盘上。默认情况下,使用的是async。如果经常会在没有umount设备的情况下就移走设备,则最好设置sync。

defaults:总的默认设置选项为:rw,suid,dev,exec,auto,nouser和async。


第五、六列:备份和核对(check)选项

dump是一个备份工具,fsck是一个文件系统核对工具。这里会简单地介绍下,详细的情况需要参考相关命令。

dump工具检查fstab的第五列并使用对应的数子来决定文件系统是否该备份。如果是0,则不会对文件系统备份。该选项大多数情况下为0。

第六列是fsck选项。fsck会检查fstab第六列的数字,该数字决定了fsck核对文件系统的顺序,如果为0,则不核对该文件系统。



参考文献:http://www.tuxfiles.org/linuxhelp/fstab.html





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值