etcfstab⽂件详解
有很多⼈经常修改/etc/fstab⽂件,但是其中却有很多⼈对这个⽂件所表达的意义不太清楚,因为只要按照⼀定的模式,就可以轻⽽易举地
添加⼀⾏挂载信息,⽽不需要完全理解其中的原理。下⾯就让我们来看看到底还有多少是我们不了解的。
/etc/fstab是⽤来存放⽂件系统的静态信息的⽂件。位于/etc/⽬录下,可以⽤命令less /etc/fstab 来查看,如果要修改的话,则⽤命令
vi /etc/fstab 来修改。
当系统启动的时候,系统会⾃动地从这个⽂件读取信息,并且会⾃动将此⽂件中指定的⽂件系统挂载到指定的⽬录。下⾯我来介绍如何在此
⽂件下填写信息。
在这个⽂件下,我们要关注的是它的六个域。下⾯将详细介绍这六个域的详细意义。
1、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/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。重启后,系统就会将/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。
2、mount point。挂载点,也就是⾃⼰找⼀个或创建⼀个dir(⽬录),然后把⽂件系统挂到这个⽬录上,然后就可以从这个⽬录中访问要
挂载⽂件系统。
对于swap分区,这个域应该填写:none,表⽰没有挂载点。
3、type。这⾥⽤来指定⽂件系统的类型。
下⾯的⽂件系统都是⽬前Linux所能⽀持的:
ext3、 ext2、ext、swap
nfs、hpfs、ncpfs、ntfs搞笑故事 、affs
umsdos、proc、reirfs、squashfs、ufs。
adfs、befs、cifs、iso9660
kafs、minix、msdos、vfat
4、options。这⾥⽤来填写设置选项,各个选项⽤逗号隔开。
由于选项⾮常多,⽽这⾥篇幅有限,所以不再作详细介绍,如需了解,请⽤ 命令 man mount 来查看。但在这⾥有个⾮常重要的关键字需
要了解⼀下:defaults,它代表包含了选项rw,suid,dev,exec,auto,nour和 async。
5、dump。此处为1的话,表⽰要将整个⾥的内容备份;为0的话,表⽰不备份。
现在很少⽤到dump这个⼯具,在这⾥⼀般选0。
6、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,ur,exec 0 0
/dev/fd0 /media/floppy auto rw,noauto,ur,sync 0 0
proc /proc proc defaults 0 0
/dev/hda1 swap swap pri=42 0 0
这些看起来毫⽆意义的字符代表了什么?在对应相应分区或者存储设备信息的每⼀⾏中,每⼀列⼜是什么意思?先⼤体讲⼀下,第⼀列表⽰
设备的名称,第⼆列表⽰该设备的挂载点,第三列是⽂件系统,第四列是挂载选项,第五列是dump选项(⽤⼀个数字表⽰),第六列(接
下来的数字)表⽰⽂件系统检查选项。好了,接下来,就要详细介绍这 些参数的具体含义了。
第⼀、⼆列:设备和默认挂载点
说实话,第⼀列和第⼆列的内容是最简单最直接的,它们的作⽤就是告诉mount命令,我想挂载什么分区或者什么设备,以及我所希望的挂
载点在哪⾥。在fstab中为某⼀个设备指定的挂载点是其默认挂载点,也就是当你在挂载⽬录的时候没有⼿⼯指定其他⽬录的话,系统就将
该设备挂载到这个⽬录。⼤多数 Linux发⾏版都会为挂载点创建专门的⽬录,⼤多数是在/mnt下,但是⼀些发⾏版(⽐如SUSE或者
ubuntu)是在/media下。笔者使⽤的是 ubuntu,所以⽰例信息中也是⽤的/media⽬录。
按照我们给出的fstab⽰例,如果你敲⼊命令
$ mount /dev/fd0
你的软驱就将挂载到/media/floppy,因为这是你告诉系统的软驱默认挂载点。如果没有这个信息,当你敲⼊mount命令时,mount 会感
到很困惑:该死的,你想让我把这玩意挂载到哪⾥去呢?当然,如果你看fstab中发⾏版给你指定的默认挂载点不顺眼,也可以⾃由修改
它,修改成任何⼀个你希望的⽬录都可以。如果还不存在,就⾸先创建这个⽬录。要知道,fstab是不会把所有⼯作都给你包⼲的哦。
另外,有⼀些分区和存储设备是在Lixxx老师 nux系统启动的时候就⾃动挂载的,⽐如,让我们看看刚才列出来的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格式的信息,例如::/,对于进程⽂件系统procfs,使⽤proc。
第三列:⽂件系统类型
fstab中的第三列指⽰了设备或者分区的⽂件系统类型。它⽀持很多种类的⽂件系统,我们在这⾥只介绍最为常⽤的。如果想了解你的
kernel⽬前⽀持哪些⽂件系统,可以查看/proc/filesystems的内容。如果这个字段定义为swap,这条纪录将关联到⼀个⽤于交换⽬的的
⽂件或分区。如果这个字段定义为ignored,这⾏将被忽略。这对于显⽰⽬前没有使⽤的分区⾮常有⽤。
ext2 和 ext3: Linux下的Ext2⽂件系统,是 GNU/Linux 系统中标准的⽂件系统,其特点为存取⽂件的性能极好,对于中⼩型的⽂件更
显⽰出优势,这主要得利于其簇快取层的优良设计。⾄于Ext3⽂件系统,它属于⼀种⽇志⽂件系统,是对ext2系统的扩展。亲爱的老婆 ⽇志式⽂件系
统的优越性在于,它会将整个磁盘的写⼊动作完整记录在磁盘的某个区域上,以便有需要时可以回朔追踪。由于详细纪录了每个细节,故当
在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,⽽不必花时间去检查其他的部分,故⽂件系统检测不⼀致
时,重整的⼯作速度相当快,⼏乎不需要花时间。
reirfs: ReirFS是⼀个⾮常优秀的⽂件系统。也是最早⽤于Linux的⽇志⽂件系统之⼀,其机制⽐Ext3要先进得多,风雷⼩弟⼀直使
⽤的就是它,很多发⾏版现在也把它作为默认⽂件系统了。可惜其作者前段时间出事了……具体情况就不说了,也不知道下⼀代reirfs4
还能不能出来,因为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 Disc11英语怎么说 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选项,如果这样的话,你就只能明确地通过⼿⼯感慨人生的句子 来挂载设备。
ur 和 nour:这是⼀个⾮常有⽤的选项,ur选项允许普通⽤户也能挂载设备,⽽nour则只允许root⽤户挂载。nour是默认选
项,这也是让很多 Linux新⼿头疼的东西,因为他们发现没有办法正常挂载光驱,Windows分区等。如果你作为普通⾝份⽤户遇到类似问
题,或者别的其他问题,就请把 ur属性增加到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, nour, 和 async。
⼀般⽤户没有特殊需求,直接使⽤defaults就可以了。看完介绍,我们再回过头去看看前⾯的⽰例内容,以光驱为例,主要关注挂载选项这
⾥,可以看到,光驱和其他分区设备的不同是ro,因为普通光驱是只读的。⽽exec则让你可以从光驱上直接执⾏某些程序。
第五、六列:dump和fsck选项
Dump和fsck?这是什么东西?恩,dump是⼀个备份⼯具,⽽fsck是⼀个⽂件系统扫描检查⼯具。我不会在这⾥详细介绍它们,因为⽤
man或者google都可以获得更加详细的信息。
fstab的第五列是表⽰dump选项,dump⼯具通过这个选项位置上的数字来决定⽂件系统是否需要备份。如果是0,dump就会被忽略,事
实上,⼤多数的dump设置都是0。⽽第六列是fsck选项,fsck命令通过检测该字段来决定⽂件系统通过什么顺序来扫描检查,根⽂件系统/
对应该字段的值应该为1,其他⽂件系统应该为2。若⽂件系统⽆需在启动时扫描检查,则设置该字段为0。
本文发布于:2023-04-23 17:48:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/82/511191.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |