浅谈etc下fstab的含义

   在咱们用busybox处理完了rootfs后,有些部分还需要得到进一步的优化和配置,比如:我想在划分一个ram盘大小为3M用来临时存放应用程序一些临时log,但又不希望它们写进nandflash,毕竟nand这玩意写一次寿命就少一次,所以此时就会用到对fstab下的配置和分区来解决问题。下面来简单学习下吧:

如何编辑和理解/etc/fstab文件
    在你的LINUX系统中,常常有一个称为/etc/fstab的文件,学习其中的内容,并且掌握如何将它与mount命令结合起来使用,(将会给你带来方便),当你理解了这个文件的内容,你就可以亲自来编辑它.
    
    什么是fstab?与为什么它有用?
    fstab是一个配置文件,它包含了所有分区以及存储设备的信息,这个文件在/etc目录下边,所以它的完整路径是/etc/fstab。
    /etc/fstab包含了你的磁盘分区以及存储设备如何挂载,以及挂载在什么地方的信息,如果你从LINUX系统中不能访问WINDOWS的分区,或者做为一名普通用户,不能挂载你的CD和向软盘中写入数据,或者在管理CD-RW的过程中遇到了问题,你就可能是错误地配置了/etc/fstab这个文件,所以你通常可以通过编辑/etc/fstab这个文件来解决前面提到的问题。
    /etc/fstab只是一个简单的文本文件,所以你可以用任何你熟悉的文件编辑器去编辑它,然而,请注意,在你编辑fstab文件前,必须确保你有根权限,所以,在编辑之前,你必须要么以根用户登录或者用su命令切换到根用户。

   fstab文件总览

   当然,由于每个人的分区和设备属性或者所在的系统不同,所以fstab文件不尽相同,但是基本的结构总是相似的,下面是/etc/fstab中内容的一些示例:

/etc/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 options
 我并不是很了解是什么意思,从字面上译,但实际中我们用到这一列及后一列已经很少]
 第六列[另一个数字]是文件系统检查选项。

 让我们来深入看一下这些内容吧。

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

    第一列和第二列的内容很直接,易于理解,它像我们手动挂载那样精确地告诉mount命令:哪个是设备和分区,哪里是挂载点。对应于每个设备的挂载点是其默认挂载点,即如果你在挂载设备时不指出挂载点,那个设备或分区默认要被挂载的地方。
    大多数的LINUX发行版为每个挂载点都了一个特殊的目录,大多数发行版选择在/mnt下创建挂载点,但是某些[如SuSE]则是在/media下创建。
    如果我打下这些命令,它究竟是指什么呢?

    $ mount /dev/fd0

    上面的命令表明,我的软驱会被挂载到/media/floppy中,因为在前面的fstab示例中,它被指定到默认挂载点/media/floppy,如果在/etc/fstab中没有对应于/dev/fd0的项目,mount命令会变得迷惑(作者写东西很生动)因为它不知道如何挂载floppy.

    如果你不满足于发行版在/etc/fstab指定的默认挂载点,你可任意改变默认挂载点,你只需确认你设定的默认挂载点真实地存在于你的系统中,如果不存在,创建一个即可
    当你的LINUX系统启动时,一些分区和设备同样会被自动地挂载,拿刚才的/etc/fstab示例来看,里边有这些的几行:

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

     正如我们前面所讲,这些代表/dev/hda2会被挂载到/而/dev/hdb1被挂载到/home。这些会在LINUX系统启动时自动完成,如果此过程没有成功执行,那么你的LINUX系统将会感动十分痛苦,此时所用的位于/下的程序你将不能执行,因为/没有被挂载,但是为什么系统知道你需要挂载/dev/hdb1?当然还是要看/etc/fstab中的那些行。

    第三列:文件系统格式

    第三列指定了设备和分区的文件系统格式,LINUX支持很多的文件系统,这里我仅取一些常用的格式。

    ext2和ext3:
    通常你的LINUX分区是ext3格式,过去ext2曾被当做是LINUX的标准文件系统,但是如今,对于每一个新的发行版,ext3和reiserfs通常被做为标准的文件系统格式,ext3是一个新的文件系统,它和ext2的不同之外是在于它是日志化的,这意味着如果你不恰当的关闭了计算机,你将不会选择任何数据,并且你的系统在你下次启动时不会做文件系统检查。
    Reiserfs:
    你的LINUX分区可能会被格式化为reiserfs格式,像ext3一样,reiserfs是一个日志式文件系统,但是它相比于ext3,有很大的进步,许多LINUX发行版[包括SuSE]已经开始使用reiserfs做为它们的LINUX分区的默认文件系统。[见后注]
    Swap:
    这种分区格式从其字面上就可知道它的作用,swap文件系统用于swap分区,即交换分区。
    vfat和ntfs:
    你的WINDOWS分区要么是vfat或者ntfs。WIN 9X系统(95,98,ME)全部使用vfat(即通常所说的fat32),而NT系统(NT,2000,XP)则使用ntfs。在2000和XP系统中,你可选择文件系统格式,所以2000和XP的分区同样可以被格式化为vfat。如果你想在LINUX分区中向WINDOWS分区中写放数据,我建议你把它们格式化为vfat格式,因为LINUX在对ntfs的写入支持方面目前还是比较困难。
    auto:
    不,这不是一种文件系统格式,"auto"选项简单地表示文件系统格式由系统自动检测,如果你再回头看一遍刚才的fstab示例文件,你将会看到floppy和CD-ROM在文件系统格式上都被标为auto,为什么?这是因为它们的文件系统可能会有很多种,一个软盘可能在WINDOWS上被格式化为vfat格式,也可能被格式化为LINUX的ext2格式,这就为什么对于这种存储介质让系统来自动检测文件系统,是一种比较明智的选择的原因。

     第四列:挂载选项

     第四列列出了对于每一个设备或者分区的所有挂载选项,这也常常是最让人觉得不解的一列,但是通过了解一些基本的选项,将会使你从头痛中解脱出来。是的,这里有选项可以用,但是我却只对我最常用的进行研究,至于深入的研究,可能通过查开mount的man page进行学习。
    auto和noauto:
    通过使用auto选项,那些设备会在系统启动时自动挂载,auto是默认选项,如果你不想让某些设备自动被挂载,在/etc/fstab的对应地方,把auto选项改为noauto即可。通过使用noauto选项,你可以在需要的时候挂载那些设备。
    user和nouser:
    它们是很有用的选项,user选项允许一般用户挂载设备,然而nouser却仅仅让根用户挂载设备。nouser是默认选项,主要原因在于防止新用户的越权行为。如果你做为一般用户,不能挂载你的cdrom,floppy,WINDOWS分区,或者其他,那些请告诉你的管理员,在/etc/fstab里边加入user选项[当然,至于如何做到这一点,就请咨讯你管理员了。]
    exec用noexec:
    exec选项允许你执行那个被设为exec分区上的二进制文件,然而noexec选项却不允许你这样做。noexec选项在你不想让其他人执行你的某些分区上的二进制文件时将会有用,这就包括WINDOWS分区。exec是默认的选项,这是一件好事,想象一下如果你偶然地把/分区的挂载选项改成了noexec!!!
    ro:
    ro选项使文件系统被挂载后只读。
    rw:
    rw选项使文件系统被挂载后可读可写,再一次说明,如果你使用这样的选项,那么对于许多新LINUX用户可能由于临界访问的原因使他们不能访问自己的软盘,因为这些软盘对于其他用户也是可写的。
    sync和async:
    这两个选项指出了文件系统的IO将以何种方式进行,sync表示IO将会同步进行,如果再回头看一下/etc/fstab示例,你将会注意到,对于软盘,我们使用了该选项。用通俗的话来讲,这意味着当你,例如,拷贝一个文件到软盘时,那些改变将会在你执行命令的同时物理性地写入到软盘中。
然而,当你使用了async选项,IO将会被异步执行,这时当你拷贝一个文件到软盘中时,你所做的改变会在你的命令执行后的较长时间后才被物理性地写入到软盘中。这并没有什么坏处,并且有时可能确实会有实际效用,但是通常会造成不愉快的后果,就是当你刚刚拔出软盘时,你所拷贝的文件并没有物理性的写放到你的软盘中,即你并没有得到想要的数据!async默认的选项,然而对于软盘来说,sync选项或许是明智的选择,特别是如果你有按你常常在WINDOWS中做的那样,在没有卸载软盘就*出它时。
    defaults:
    使用此选项与rw,suid,dev,exec,auto,nouser,async等价。

    第五列和第六列:转储和文件系统检查选项

    dump,嗯,到底是什么选项呢?对了,dump是一个备份工具而fsck是一个文件系统检查工具。在这里我不想花篇幅来讨论它们,但是我会提到它们,因为如果不提到的话,你将会花一天里剩下的时间在想,到底这些东东是什么意思呢?
    /etc/fstab中的第五列是dump选项,dump检查文件系统并用一个数字来决定是否该文件系统需要备份。如果它是零,dump将会忽略该文件系统,也即不做备份,如果你注意了我给出的/etc/fstab文件示例,那么你将会注意到在大多数情况下它都是0。
    第六列是fsck选项,fsck通过检验第六列中的数字来决定以何种顺序来检查文件系统,如果它是0,fsck将不会检查该文件系统。

     /etc/fstab内容示例

做为一个示例,我们将看一组fstab中的项,这通常是最让LINUX新用户迷茫和沮丧的:floppy和CD-ROM(尽管现在flppies已经远不是那么重要了)。

/dev/fd0 /media/floppy auto rw,nouser,sync 0 0

这一行指软盘将被默认挂载到/media/flppy下边,并且它的文件系统将由系统自动检测,由于软盘的格式可能不同[如前如讲,有可能为vfat或者ext2格式等],这将比较实用。注意特别是rw和users选项:如果你想做为一个普通用户,却挂载它们,并且想具有写入权限,那么这两个选项是必须。如果你在这方面遇到问题,请检查你的fstab文件,去看这两个选项是否存在。同样需要注意的是sync选项,当然也可以用async选项,但是由于前面谈到的原因,这里我们使用了sync选项。

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

再次注意,user选项使得普通用户可以挂载CD,CD-ROM具有只读选项这是因为通常使用可读可写的rw选项是没有意义的,因为对于只读光盘,你无论如何都不可能写入数据。同样注意exec选项,如果你想执行CD-ROM上的一些东西,它将非常有用。

同样注意在floppy和CD-ROM中我们都使用了的noauto选项,这意味着它们在系统启动时将不会被自动挂载,这对于可移动介质将非常有效,因为通常在系统启动时并没有floppy和CD-ROM已经放到相应的驱动器中,所以没有理由要去挂载什么东西。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值