/etc/fstab详解

1. fstab文件的作用 
文件/etc/fstab存放的是系统中的文件系统信息。
当正确的设置了该文件,则可以通过mount /directoryname命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。
同时fsck、 mount、umount的等命令都利用该程序。
2. fstab文件格式
下面是/etc/fatab文件的一个示例行:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
/dev/hda1 / ext2 defaults 1 1
fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdaXN,X是IDE设备通道 (a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN。对于NFS情况,格式一般为: ,例如:`knuth.aeb.nl:/。对于procfs,使用`proc来定义。
fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。
fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。 codepage国家语言代码页 iocharset字符集 fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用defaults就可以满足需要。其他常见的选项包括: 选项 含义 ro 以只读模式加载该文件系统 rw async 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 user 允许普通用户加载该文件系统 quota 强制在该文件系统上进行磁盘定额限制 noauto 不再使用mount -a命令(例如系统启动时)加载该文件系统
fs_dump - 该选项被dump命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0
3. 示例文件
# /etc/fstab
/dev/hda8 swap swap defaults 0 0
/dev/hda9 / ext2 defaults 1 1
/dev/hda6 /wine vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda7 /winf vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hdb /cdrom iso9660 noauto,user 0 0 none
/proc proc defaults 0 0 none
/dev/pts devpts gid=5,mode=620 0 0
fstab中存放了与分区有关的重要信息,其中每一行为一个分区记录,每一行又可分为六个部份,
下面以/dev/hda7 / ext2 defaults 1 1为例逐个说明:
1. 第一项是您想要mount的储存装置的实体位置,如hdb或/dev/hda6。
2. 第二项就是您想要将其加入至哪个目录位置,如/home或/,这其实就是在安装时提示的挂入点。
3. 第三项就是所谓的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如ext2,可以参见/prco /filesystems说明。
4. 第四项就是您mount时,所要设定的状态,如ro(只读)或defaults(包括了其它参数如rw、suid、exec、auto、nouser、 async),可以参见「mount nfs」。
5. 第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。
6. 第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它皆可视需要设定,内定值是0。
/etc/fstab内容主要包括六项:
例如:打印出中间的两行内容,如下
LABEL=/ / ext3 defaults 1 1
/dev/sda2 /mnt/D/ vfat defaults 0 0
第一列:设备名或者设备卷标名,(/dev/sda10 或者 LABEL=/)
第二列:设备挂载目录 (例如上面的“/”或者“/mnt/D/”)
第三列:设备文件系统 (例如上面的“ext3”或者“vfat”)
第四列:挂载参数 (看帮助man mount) 对于已经挂载好的设备,例如上面的/dev/sda2,
现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设备,remount 这个参数无效)
#mount /mnt/D/ -o remount,ro (改defaults为ro)
为了安全起见,可以指明其他挂载参数,例如: noexec(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了! nodev(不允许挂载设备文件) nosuid,nosgid(不允许有suid和sgid属性) nouser(不允许普通用户挂载)
第五列:指明是否要备份,(0为不备份,1为要备份,一般根分区要备份)
第六列:指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
如果想开机就自动挂载(mount)上,可以在/etc/fstab上添加如下几行:
/dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
同时也解决了中文文件名的乱码问题,我的fstab文件如下,仅供参考:
LABEL=/12 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda4 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/hda1 /mnt/c vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda6 /mnt/e vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda7 /mnt/f vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda8 /mnt/g vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

 

/******************************************************************************/

先提一下我的标题的问题吧,系统运行久了后竟然忘记分区的文件格式因为看到ext3比ext2读写小文件要快才想到我的很多系统貌似手工做成了ext2格式的想统计一下,于是乎就产生了这个标题。

两个文件 /etc/fstab 和/etc/mtab (至于这两个文件后便介绍)可以看到分区的格式信息,另外运行一条命令也可以 df -T 不过他读取的是 /etc/mtab中的信息 貌似这样不挂载的分区信息将无法展现出来。

另外 fdisk 可以查看磁盘的分区的类型,这个类型不是格式 是指是哪类文件系统。

例如:fdisk -l 可以列出分区信息里边有一个ID这个是就是分区的类型ID 可以到 fdisk 里用l命令查看具体分类!

关于/etc/fstab和/etc/mtab 摘抄自龙行天向

/etc/fstab是个配置文件,而/etc/mtab则显示的是已经被挂载的fs的清单文件。
fstab 记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
除了 fstab 文件之外,还有一个 mtab 文件,和 fstab 文件一样在 /etc 文件下,位于 /etc/mtab ,这个文件又是干什么用的呢?
乍看上去,和 fstab 文件的结构和内容基本相同,但是不同的是,mtab 文件记录的是,当前已挂载的分区信息。
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。

posted @ 2013-05-28 10:19  simpman  阅读(3308)  评论(0编辑  收藏  举报