/etc/fstab文件 详解

///////////////////////////////////////////////////////////////////////////////linux

http://lspgyy.blog.51cto.com/5264172/1297432ubuntu

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\windows


*******************************************************************************less

有不少人常常修改/etc/fstab文件,可是其中却有不少人对这个文件所表达的意义不太清楚,由于只要按照必定的模式,就能够垂手可得地添加一行挂载信息,而不须要彻底理解其中的原理。下面就让咱们来看看到底还有多少是咱们不了解的。异步


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

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

在这个文件下,咱们要关注的是它的六个域。下面将详细介绍这六个域的详细意义。工具


一、file system。这里用来指定你要挂载的文件系统的设备名称或块信息,也能够是远程的文件系统。性能

作过嵌入式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/sda一、/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。重启后,系统就会将/dir_1挂载到/dir_2目录上。对于UUID,能够用vol_id -u /dev/sdax来获取。好比我想挂载第一块硬盘的第一个分区,先用命令vol_id -u /dev/sda11 来取得UUID,好比是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,而后在这个域上填写: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,便可表示/dev/sda11。Red Hat linux 通常会使用label,而Ubuntu linux 通常会用UUID。ui


二、mount point。挂载点,也就是本身找一个或建立一个dir(目录),而后把文件系统挂到这个目录上,而后就能够从这个目录中访问要挂载文件系统。

对于swap分区,这个域应该填写:none,表示没有挂载点。


三、type。这里用来指定文件系统的类型。

下面的文件系统都是目前Linux所能支持的:

ext三、 ext二、extswap

nfs、hpfs、ncpfs、ntfs、affs

umsdos、proc、reiserfs、squashfs、ufs。

adfs、befs、cifs、iso9660

kafs、minix、msdos、vfat

四、options。这里用来填写设置选项,各个选项用逗号隔开。

因为选项很是多,而这里篇幅有限,因此再也不做详细介绍,如需了解,请用 命令 man mount 来查看。但在这里有个很是重要的关键字须要了解一下:defaults,它表明包含了选项rw,suid,dev,exec,auto,nouser和 async。


五、dump。此处为1的话,表示要将整个里的内容备份;为0的话,表示不备份。

如今不多用到dump这个工具,在这里通常选0。


六、pass。这里用来指定如何使用fsck来检查硬盘。

若是这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其余的都不能填写1。若是有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。好比第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,而后再同时检查第三和第四个分区。


fstab参数详解

可能玩Linux的朋友都知道fstab这个文件,若是要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab则是其中之一。这个文件描述系统中各类文件系统的信息,应用程序读取这个文件,而后根据其内容进行自动挂载的工做。所以,咱们须要理解其中的内容,了解它如何与 mount命令配合工做,并可以针对本身的状况进行修改。


做为系统配置文件,fstab一般都位于/etc目录下,它包括了全部分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。若是遇到一些相似于没法挂载你的windows分区阿,没法使用你的光驱阿,没法对某个分区进行写入操做阿什么的,那么基本上能够判定,你的fstab内容有问题了。也就是说,你能够经过修改它来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。


说了半天,/etc/fstab其实就是一个文本文件,用gedit或者vi均可以打开,固然,前提是root权限。在这个文件中,每一个文件系统(包括分区或者设备)用一行来描述,在每一行中,用空格或TAB符号来分隔各个字段,文件中以*开头的行是注释信息。Fstab文件中的纪录的排序十分重要。由于fsck,mount或umount等程序在作它们的工做时会按此顺序进行本。下面进行详细的讲解,本文假设读者已经有挂载文件系统和分区的基础知识。


在讲解以前要说一下,每一个人所使用的系统状况都是不一样的,包括硬件种类,所用系统等,所以fstab文件确定是有所差别的。可是其基本结构,如上所述,都不会变。因此咱们先以一个fstab内容做为模板进行讲解。


首先请看下面这个例子:

/dev/hda2 / ext2 defaults 1 1

/dev/hdb1 /home ext2 defaults 1 2

/dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0

/dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0

proc /proc proc defaults 0 0

/dev/hda1 swap swap pri=42 0 0


这些看起来毫无心义的字符表明了什么?在对应相应分区或者存储设备信息的每一行中,每一列又是什么意思?先大致讲一下,第一列表示设备的名称第二列表示该设备的挂载点第三列是文件系统第四列是挂载选项第五列是dump选项(用一个数字表示),第六列(接下来的数字)表示文件系统检查选项。好了,接下来,就要详细介绍这 些参数的具体含义了。


第1、二列:设备和默认挂载点


说实话,第一列和第二列的内容是最简单最直接的,它们的做用就是告诉mount命令,我想挂载什么分区或者什么设备,以及我所但愿的挂载点在哪里。在fstab中为某一个设备指定的挂载点是其默认挂载点,也就是当你在挂载目录的时候没有手工指定其余目录的话,系统就将该设备挂载到这个目录。大多数 Linux发行版都会为挂载点建立专门的目录,大多数是在/mnt下,可是一些发行版(好比SUSE或者ubuntu)是在/media下。笔者使用的是 ubuntu,因此示例信息中也是用的/media目录。


按照咱们给出的fstab示例,若是你敲入命令


$ mount /dev/fd0


你的软驱就将挂载到/media/floppy,由于这是你告诉系统的软驱默认挂载点。若是没有这个信息,当你敲入mount命令时,mount 会感到很困惑:该死的,你想让我把这玩意挂载到哪里去呢?固然,若是你看fstab中发行版给你指定的默认挂载点不顺眼,也能够自由修改它,修改为任何一个你但愿的目录均可以。若是还不存在,就首先建立这个目录。要知道,fstab是不会把全部工做都给你包干的哦。


另外,有一些分区和存储设备是在Linux系统启动的时候就自动挂载的,好比,让咱们看看刚才列出来的fstab示例信息,有两行是这样的:

/dev/hda2 / ext2 defaults 1 1

/dev/hdb1 /home ext2 defaults 1 2


正如刚才咱们讲到的那样,这两行表示/dev/hda2默认挂载到/根目录,而 /dev/hdb1则默认挂载到/home目录,。这些工做在你Linux系统启动的时候就会经过读取fstab自动完成,不然的话……想象你会遭受什么样的折磨吧,全部的程序都在/根目录下,而你却没法使用,由于你没有挂载/根目录!恩,我保证,这将是一次让人沮丧的系统使用经历。


除了显示的使用设备名,你可使用设备的UUID或设备的卷标签,例如,你能够在这个字段写成“LABAL=root”或“UUID= 3e6be9de- 8139-11d1-9106-a43f08d823a6”,这将使系统更具伸缩性。例如,若是你的系统添加或移除了一个SCSI硬盘,这有能够改变你的设备名,但它不会修改你的卷标签。


对于NFS mount操做,这个字段应该包含host:dir格式的信息,例如:knuth.aeb.nl:/,对于进程文件系统procfs,使用proc。


第三列:文件系统类型


fstab中的第三列指示了设备或者分区的文件系统类型。它支持不少种类的文件系统,咱们在这里只介绍最为经常使用的。若是想了解你的kernel目前支持哪些文件系统,能够查看/proc/filesystems的内容。若是这个字段定义为swap,这条纪录将关联到一个用于交换目的的文件或分区。若是这个字段定义为ignored,这行将被忽略。这对于显示目前没有使用的分区很是有用。


ext2 和 ext3: Linux下的Ext2文件系统,是 GNU/Linux 系统中标准的文件系统,其特色为存取文件的性能极好,对于中小型的文件更显示出优点,这主要得利于其簇快取层的优良设计。至于Ext3文件系统,它属于一种日志文件系统,是对ext2系统的扩展。日志式文件系统的优越性在于,它会将整个磁盘的写入动做完整记录在磁盘的某个区域上,以便有须要时能够回朔追踪。因为详细纪录了每一个细节,故当在某个过程当中被中断时,系统能够根据这些记录直接回朔并重整被中断的部分,而没必要花时间去检查其余的部分,故文件系统检测不一致时,重整的工做速度至关快,几乎不须要花时间。


reiserfs: ReiserFS是一个很是优秀的文件系统。也是最先用于Linux的日志文件系统之一,其机制比Ext3要先进得多,风雷小弟一直使用的就是它,不少发行版如今也把它做为默认文件系统了。惋惜其做者前段时间出事了……具体状况就不说了,也不知道下一代reiserfs4还能不能出来,由于ext4都有了。


swap: Swap,即交换区,把它想象成虚拟内存就好了。


vfat 和 ntfs:一看就知道是Windows分区格式了,呵呵。98,me等系统都是使用的vfat,也就是最流行的fat32格式,而NT系列则多使用 NTFS,固然也不是固定的,所以2000或者XP系统要具体状况具体分析。当初Linux对NTFS的写入支持很差,因此大多数资料都建议用户使用 vfat格式,可是如今支持已经很好了,即便不从新编译内核,也能够经过ntfs-3g来进行写入支持(具体方法请参考这篇文章),所以不用太在乎这个了。


auto:固然,这不是一个文件系统类型。auto只是表示,文件系统的类型将被自动检测。在上面的示例中,你会发现软驱和光驱的文件系统类型都是auto,为何呢?由于它们的文件系统类型随时均可能改变,好比软驱,优盘这种设备,可能今天是vfat格式,明天你就把它格式化成了ntfs,所以,最明智的作法就是告诉系统,我无法肯定这东西的当前类型,仍是你本身检测吧。


udf:因为刻录光驱愈来愈流行,如今不少发行版自带的fstab中,光驱的文件格式类型是UDF,UDF是Universal Disc Format的缩写,与ISO 9660格式相容。它采用标准的封装写入技术(PW,Packet Writing)将CD-R/CD-RW看成硬盘使用,用户能够在光盘上修改和删除文件。利用UDF格式进行刻录时,刻录软件将数据打包,并在内存中临时创建一个特殊文件目录表,同时接管系统对光盘的访问。


iso9660:不少光驱也使用的这个选项。ISO9660是一种描述适合CD盘片的电脑文件结构的国际标准。采用此标准的盘片能够在不一样的操做系统上使用,如MAC和Windows。


第四列:挂载选项


fstab中的第四列表示设备或者分区所须要的挂载选项。这一列也是fstab中最复杂最容易出错的一列,固然,只要你能知道一些最经常使用的选项是什么意思,就可让你从头疼中解脱出来。若是要把可用的选项一项一项介绍……恩,我估计我会写到明天,因此,我仍是只是分析最经常使用的一些选项,若是你想知道更多的东西,仍是求助于man吧。


auto 和 noauto:这是控制设备是否自动挂载的选项。auto是默认选择的选项,这样,设备会在启动或者你使用mount -a命令时按照fstab的内容自动挂载。若是你不但愿这样,就使用noauto选项,若是这样的话,你就只能明确地经过手工来挂载设备。


user 和 nouser:这是一个很是有用的选项,user选项容许普通用户也能挂载设备,而nouser则只容许root用户挂载。nouser是默认选项,这也是让不少 Linux新手头疼的东西,由于他们发现没有办法正常挂载光驱,Windows分区等。若是你做为普通身份用户遇到相似问题,或者别的其余问题,就请把 user属性增长到fstab中。


exec 和 noexec: exec容许你执行对应分区中的可执行二进制程序,同理,noexec的做用恰好相反。若是你拥有一个分区,分区上有一些可执行程序,而刚好你又不肯意,或者不能在你的系统中执行他们,就可使用noexec属性。这种状况多发生于挂载Windows分区时。exec是默认选项,理由很简单,若是 noexec变成了你/根分区的默认选项的话……


ro: 以只读来挂载文件系统。


rw: 以可读可写的属性来挂载系统。


sync 和 async:对于该文件系统的输入输出应该以什么方式完成。sync的意思就是同步完成,通俗点讲,就是当你拷贝一个东西到设备或者分区中时,全部的写入变化将在你输入cp命令后当即生效,这个东西应该立马就开始往设备或者分区里面拷贝了。而若是是async,也就是输入输出异步完成的话,当你拷贝一个东西到设备或者分区中时,可能在你敲击cp命令后好久,实际的写入操做才会执行,换句话说,就是进行了缓冲处理。


有时候这种机制蛮不错的,由于sync会影响你系统的运行速度,可是这也会带来一些问题。想想,当你但愿将一个文件拷贝到u盘上时,你执行了 cp 命令,却忘记执行umount命令(它会强行将缓冲区内容写入),那么你拷贝的文件实际上并无在u盘上面。若是你是使用的mv命令,而你又很快将u盘拔出……恭喜你,文件会从这个星球上消失的。所以,虽然async是默认属性,可是对于u盘,移动硬盘这种可移动存储设备,最好仍是让他们使用sync选项。


defaults: 全部选项所有使用默认配置,包括rw, suid, dev, exec, auto, nouser, 和 async。


通常用户没有特殊需求,直接使用defaults就能够了。看完介绍,咱们再回过头去看看前面的示例内容,以光驱为例,主要关注挂载选项这里,能够看到,光驱和其余分区设备的不一样是ro,由于普通光驱是只读的。而exec则让你能够从光驱上直接执行某些程序。


第5、六列:dump和fsck选项


Dump和fsck?这是什么东西?恩,dump是一个备份工具,而fsck是一个文件系统扫描检查工具。我不会在这里详细介绍它们,由于用man或者google均可以得到更加详细的信息。


fstab的第五列是表示dump选项,dump工具经过这个选项位置上的数字来决定文件系统是否须要备份。若是是0,dump就会被忽略,事实上,大多数的dump设置都是0。而第六列是fsck选项,fsck命令经过检测该字段来决定文件系统经过什么顺序来扫描检查,根文件系统/对应该字段的值应该为1,其余文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。

http://lspgyy.blog.51cto.com/5264172/1297432

相关文章
相关标签/搜索