Username: Password:

学会理解并编辑fstab (附:my fstab &mbr备份)
来源: ChinaUnix博客  作者: 发布时间:2007-01-01 20:23:00


                                可能玩Linux的朋友都知道fstab这个文档,假如要用好linux,熟悉linux的一些核心配置文档是必要的,而fstab则是其中之一。这个文
件描述系统中各种文档系统的信息,应用程式读取这个文档,然后根据其内容进行自动挂载的工作。因此,我们需要理解其中的内容,了解他怎样和mount命令
配合工作,并能够针对自己的情况进行修改。
作为系统配置文档,fstab通常都位于/etc目录下,他包括了任何分区和存储设备的信息,连同他们应该挂载到哪里,以什么样子的方式挂载。假如碰到一
些类似于无法挂载您的windows分区阿,无法使用您的光驱阿,无法对某个分区进行写入操作阿什么的,那么基本上能够断定,您的fstab内容有问题
了。也就是说,您能够通过修改他来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。
说了半天,/etc/fstab其实就是个文本文档,用gedit或vi都能够打开,当然,前提是root权限。在这个文档中,每个文档系统(包括分
区或设备)用一行来描述,在每一行中,用空格或TAB符号来分隔各个字段,文档中以*开头的行是注释信息。Fstab文档中的纪录的排序十分重要。因为
fsck,mount或umount等程式在做他们的工作时会按此顺序进行本。下面进行周详的讲解,本文假设读者已有挂载文档系统和分区的基础知识。
Table of Contents

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

  • 第三列:文档系统类型

  • 第四列:挂载选项

  • 第五、六列:dump和fsck选项
    在讲解之前要说一下,每个人所使用的系统情况都是不同的,包括硬件种类,所用系统等,因此fstab文档肯定是有所差异的。但是其基本结构,如上所述,都不会变。所以我们先以一个fstab内容作为模板进行讲解。
    首先请看下面这个例子:/dev/hda2/ext2defaults1 1/dev/hdb1/homeext2defaults1 2/dev/cdrom/media/cdromautoro,noauto,user,exec0 0/dev/fd0/media/floppyautorw,noauto,user,sync0 0proc/procprocdefaults0 0/dev/hda1swapswappri=420 0这
    些看起来毫无意义的字符代表了什么?在对应相应分区或存储设备信息的每一行中,每一列又是什么意思?先大体讲一下,第一列表示设备的名称,第二列表示该
    设备的挂载点,第三列是文档系统,第四列是挂载选项,第五列是dump选项(用一个数字表示),第六列(接下来的数字)表示文档系统检查选项。好了,接下
    来,就要周详介绍这些参数的具体含义了。
    第一、二列:设备和默认挂载点说实话,第一列和第二列的内容是最简单最直接的,他们的作用就是告诉mount命令,我想挂载什么分区或什么设备,连同我
    所希望的挂载点在哪里。在fstab中为某一个设备指定的挂载点是其默认挂载点,也就是当您在挂载目录的时候没有手工指定其他目录的话,系统就将该设备挂
    载到这个目录。大多数Linux发行版都会为挂载点创建专门的目录,大多数是在/mnt下,但是一些发行版(比如SUSE或ubuntu)是在
    /media下。笔者使用的是ubuntu,所以示例信息中也是用的/media目录。
    按照我们给出的fstab示例,假如您敲入命令
    $ mount /dev/fd0
    您的软驱就将挂载到/media/floppy,因为这是您告诉系统的软驱默认挂载点。假如没有这个信息,当您敲入mount命令时,mount会感到很
    困惑:该死的,您想让我把这玩意挂载到哪里去呢?当然,假如您看fstab中发行版给您指定的默认挂载点不顺眼,也能够自由修改他,修改成任何一个您希望
    的目录都能够。假如还不存在,就首先创建这个目录。要知道,fstab是不会把任何工作都给您包干的哦。
    另外,有一些分区和存储设备是在Linux系统启动的时候就自动挂载的,比如,让我们看看刚才列出来的fstab示例信息,有两行是这样的:/dev/hda2/ext2defaults1 1/dev/hdb1/homeext2defaults1 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
    DiscFormat的缩写,和ISO
    9660格式相容。他采用标准的封装写入技术(PW,PacketWriting)将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则让您能够从光驱上直接执行某些程式。
    第五、六列:dump和fsck选项Dump和fsck?这是什么东西?恩,dump是个备份工具,而fsck是个文档系统扫描检查工具。我不会在这里周详介绍他们,因为用man或google都能够获得更加周详的信息。
    fstab的第五列是表示dump选项,dump工具通过这个选项位置上的数字来决定文档系统是否需要备份。假如是0,dump就会被忽略,事实上,大多
    数的dump配置都是0。而第六列是fsck选项,fsck命令通过检测该字段来决定文档系统通过什么顺序来扫描检查,根文档系统/对应该字段的值应该为
    1,其他文档系统应该为2。若文档系统无需在启动时扫描检查,则配置该字段为0。
    我的 fstab:
    /dev/hdc /media/cdrom0 udf,iso9660 user,utf8 0 0
    /dev/sdb /media/sdb vfat rw,user,utf8,noauto,sync,umask=0 0 0
    /dev/sdb1 /media/sdb1 vfat rw,user,utf8,noauto,sync,umask=0 0 0
    /dev/sdc /media/sdc vfat rw,user,utf8,noauto,sync,umask=0 0 0
    #LABEL=USB-FAT /media/USB-FAT vfat rw,user,utf8,auto,sync,umask=0 0 0

    #LABEL=USB-EXT3 /media/USB-EXT3 ext3 rw,user,auto,sync 0 0
    # windows
    /dev/sda1 /media/c ntfs-3g silent,umask=0,locale=zh_CN.utf8 0 0
    /dev/sda5 /media/d vfat auto,user,utf8,umask=0 0 0
    /dev/sda6 /media/e ntfs-3g silent,umask=0,locale=zh_CN.utf8 0 0
    /dev/sda7 /media/f ntfs-3g silent,umask=0,locale=zh_CN.utf8 0 0


    附mbr备份命令:
    假如您的是IDE硬盘代码:
    sudo dd if=/dev/hda of=~/linux.bin bs=512 count=1

    假如您硬盘的被识别为sda 代码:
    sudo dd if=/dev/sda of=~/linux.bin bs=512 count=1
                   
                   
                   
                   

  • 喜欢本文,那就收藏到:

      Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
    相关评论  我也要评论
    还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅