/etc/fstab 文件详解 及 /etc/mtab

/etc/fstab 文件解释

文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。

这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。

具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。对于Windows与arch双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源。

fstab文件示例

现在让我们看一下一个典型的fstab文件:

# <file system><dir><type><options><dump><pass>
none                   /dev/pts      devpts    defaults                0      0
none                   /dev/shm      tmpfs     defaults                0      0

/dev/cdrom             /media/cd     iso9660   ro,user,noauto,unhide   0      0
/dev/dvd               /media/dvd    udf       ro,user,noauto,unhide   0      0
/dev/fd0               /media/fl     auto      user,noauto             0      0

/dev/hda1              swap          swap      defaults                0      0
/dev/hda4              /             ext3      defaults                0      1
/dev/hda3              /home         xfs       rw,suid,exec,auto,nouser,async 0      2
</pass></dump></options></type></dir></file>

fstab详解

让我们对fstab的用法进行一个详细的了解。一个典型的entry有下面的fields (fields用空格或tab分开):

<file system><dir><type><options><dump><pass></pass></dump></options></type></dir></file>
  • <file systems> 不是我们通常理解的文件系统,而是指设备(硬盘及其分区,DVD光驱等)。它告知我们设备(分区)的名字,这是你在命令行中挂载(mount)、卸载(umount)设备时要用到的。so one should substitute for this entry the device name, remote partition, or similar. </file>
  • , 告诉我们设备挂载到哪里。
  • <type> 指挂载设备或分区为何种文件系统类型(例如:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap等)。 archLinux支持许多文件系统。 要得到一个完整的支持名单查找mount man-page。典型 的名字包括这些:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap和auto, ‘auto‘ 不是一个文件系统,而是让mount命令自动判断文件类型,特别对于可移动设备,软盘,DVD驱动器,这样做是很有必要的,因为可能每次挂载的文件类型不一致。 </type>
  • <options>,选项,这部分是最有用的设置!!! </options>

它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。它是与mount命令的用法相关的,要想得到一个完整的列表,参考mount manpage.

    • 推荐参数
   noatime   关闭atime特性,提高性能,这是一个很老的特性,放心关闭,还能减少loadcycle
    • 默认设置
   defaults  使用默认设置。等于rw,suid,dev,exec,auto,nouser,async,具体含义看下面的解释。
    • 自动与手动挂载
   auto  在启动或在终端中输入mount -a时自动挂载
   noauto  设备(分区)只能手动挂载 The file system can be mounted only explicitly.
    • IO编码设置
   iocharset=   在=号后面加入你的本地编码,似乎在这个设备(分区)中做文件IO的时候就会自动做编
   码的格式转换。
   例如:你的某个分区是编码是utf8,而设备中文件的编码是gb2312,当是复制你设备中的文件到你的这
   个分区时,它将自动做编码转换。  

   (不知道我的理解对不对,但是好像用下面的nls就可以实现转换。)
    • 中文乱码的解决
   nls=     在=号后面加入你的本地编码,你的中文就不会出现乱码。
    • 读写权限
   umask=   这是关于读写权限的,好像比下面的ro,rw选项更管用!!!
   例如:umask=000或0222,使得挂载时option中有default,普通用户仍然能读写挂载设备中的东西。

   请大家补充!!!

   ro  挂载为只读权限
   rw   挂载为读写权限
    • 可执行
   exec     是一个默认设置项,它使在那个分区中的可执行的二进制文件能够执行。
   noexec  二进制文件不允许执行。千万不要在你的root分区中用这个选项!!!
    • I/O同步
   sync	  所有的I/O将以同步方式进行
   async  所有的I/O将以非同步方式进行
    • 用户挂载权限
   user  允许任何用户挂载设备。 Implies noexec,nosuid,nodev unless overridden.
   nouser  只允许root用户挂载。这是默认设置。
   suid     Permit the operation of suid, and sgid bits. They are mostly used to allow users on a computer system to execute binary executables with temporarily elevated privileges in order to perform a specific task.
   nosuid   Blocks the operation of suid, and sgid bits.
  • <dump> 是dump utility用来决定是否做备份的. 安装之后(Arch Linux默认是不安装dump的), dump会检查entry并用数字来决定是否对这个文件系统进行备份。允许的数字是0和1。如果是0,dump就会忽略这个文件系统,如果是1,dump就会作一个备份。大部分的用户是没有安装dump的,所以对他们而言<dump>这个entry应该写为0。 </dump></dump>
  • <pass> fsck会检查这个头目下的数字来决定检查文件系统的顺序(looks at the number substituted for <pass> and determines in which order the file systems should be checked)。允许的数字是0, 1, 和2。 文件系统的<pass>选项是0将不会被fsck utility检查。root文件系统应该拥有最高的优先权, 1,而所有其它的文件系统,如果你想让它被check的话,应该写成2。 </pass></pass></pass>

注意: 除了直接用设备(分区)名字,你也可以用UUID或卷名。格式 LABEL= or UUID=<uuid>。例如, `LABEL=Boot‘ or `UUID=3e6be9de-8139-11d1-9106-a43f08d823a6‘. </uuid>

用fstab自动挂载FAT32和NTFS分区

1.先在用fdisk -l(可能需要在root权限下)得到硬盘信息表,例如:

#  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2397    19253871    b  W95 FAT32
/dev/sda2            2398        3144     6000277+  83  Linux
/dev/sda3            3145        9729    52894012+   5  Extended
/dev/sda5            3145        3152       64228+  83  Linux
/dev/sda6            3153        3276      995998+  82  Linux swap / Solaris
/dev/sda7            3277        7340    32644048+  83  Linux
/dev/sda8            7341        9729    19189611    7  HPFS/NTFS

从上面知道,这台电脑上只有一个硬盘,其中分区sda1和sda8为NTFS格式,sda1为可以启动的,因而可能为window的系统所在盘。下面把系统盘以只读方式持载上去,非系统盘sda8以读写方式挂载上去(不能挂载在"/"及其以下的任何目录)。

2.用你喜欢的编辑器在终端中打开/etc/fstab,例如:

                    nano /etc/fstab

在文件末尾加入:

/dev/sda1 /mnt/WindowsC vfat defaults,codepage=936,iocharset=cp936,umask=0222 0 0
/dev/sda8 /mnt/WindowsD ntfs defaults,iocharset=utf8,umask=000,nls=utf8 0 0

保存,退出。

警告:使用936的codepage挂在fat32分区可能会造成linux下识别中文正常但是到windows下反而出现乱码,推荐替换成utf8,但是dmesg提示警告,没有关系,n多人用了这么长时间都没有问题

/dev/sda1 /mnt/WindowsC vfat user,utf8,umask=000 0 0

3.在终端中输入

mount -a

你就应该能在/mnt/WindowsC下找到你的系统分区sda1内容,在/home/username/WindowsD中找到sda8的内容(其中username指用户名)。

/etc/mtab 何 /etc/fstab的关系

这个文件最好不要动它,是给你看的,不是给你改的
fstab 文件想必大家都很熟悉,记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
我们可以看一下 mtab 文件的内容 (这是我电脑上的 mtab 文件内容):
# cat /etc/mtab
/dev/sda4 / reiserfs rw,noatime 0 0
proc /proc proc rw,nosuid,nodev,noexec 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,nosuid 0 0
devpts /dev/pts devpts rw,nosuid,noexec 0 0
/dev/sda2 /boot ext2 rw,noatime 0 0
shm /dev/shm tmpfs rw,noexec,nosuid,nodev 0 0
/dev/sda1 /mnt/winxp ntfs rw,utf8,umask=0 0 0
usbfs /proc/bus/usb usbfs rw,noexec,nosuid,devmode=0664,devgid=85 0 0
/dev/sdb5 /media/SWAP vfat rw,nosuid,nodev,shortname=lower,uid=1000 0 0
乍看上去,和 fstab 文件的结构和内容基本相同,但是不同的是,mtab 文件记录的是,当前已挂载的分区信息。
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。

时间: 2024-11-05 19:41:36

/etc/fstab 文件详解 及 /etc/mtab的相关文章

Linux学习— /etc/fstab文件详解

目录 /etc/fstab介绍 参数介绍 配置该文件的一些问题 一.介绍 在介绍/etc/fstab之前,需要先了解挂载和该文件的关系: 其实windows也一样需要挂载的,只不过在分区的时候windows被"挂载"到了C,D,E等盘. 任何硬件设备连接后,操作系统使用硬件,即需要挂载.windows只不过是自动"挂载"了,linux需要手动自己搞.在Linux系统下,例如每次挂载/dev/sr0(光盘设备文件)需要手动使用命令mount.当然,每次重启,开启时,硬

[转载] CentOS系统开机自动挂载光驱 和 fstab文件详解

参考 http://blog.itpub.net/12272958/viewspace-676977/ 一.开机自动挂载光驱 1.按习惯,root用户,在/media目录下建立目录cdrom——mkdir/media/cdrom 2.修改/etc/fstab文件.在该文件最后按顺序添加如下内容: /dev/cdrom /media/cdrom auto exec 0 0 3.重启CentOS系统 4.执行命令:mount -tiso9660 /dev/cdrom /media/cdrom 完成光

mount命令及/etc/fstab文件详解

挂载:mount 卸载:umount 自动挂载配置文件:/etc/fstab 一.手动挂载设备 mount 挂载命令 格式: mount [options] [-t fstype] [-o option] 设备 挂载点 常用选项 [ options ]: 常用选项:     -t fstype(ext2.ext3.ext4.xfs.iso9660.smb等)     -r: 只读挂载     -w: 读写     -L lable: 以卷标指定, LABLE="label"     -

配置启动挂载:fstab文件详解

fstab文件介绍 fstab文件包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的文件.具体来说:用fstab可以自动挂载各种文件系统格式的硬盘.分区.可移动设备和远程设备等.对于Windows与Linux双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源. 这个文件的全路径是/etc/fstab.它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它

Linux配置启动挂载:fstab文件详解

1,fstab文件介绍fstab文件包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的文件.具体来说:用fstab可以自动挂载各种文件系统格式的硬盘.分区.可移动设备和远程设备等.对于Windows与Linux双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源. 这个文件的全路径是/etc/fstab.它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑

/etc/fstab文件详解

这个配置文件主要是配置系统对于分区的挂载和使用,并附带一些参数. 第一列:磁盘设备文件或者该设备的Label或者UUID. 查看:1.#dumpe2fs -h /dev/sda1 2.#blkid 3.# 第二列:挂载点,在挂载前挂载点必须存在. 第三列:此文件系统的分区类型. 第四列:挂载选项. Async/sync 设置是否为同步方式运行,默认为async auto/noauto  当下载mount -a 的命令时,此文件系统是否被主动挂载.默认为auto rw/ro         是否以

fstab文件详解

挂载分区的位置 挂载点 分区格式 设置 备份自检 UUID=94e4e... / ext4 defaults,barrier=0 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 第一列:设备名 第二列:设备挂载目录 (例如上面的“/”或者“/mnt”) 第三列:设备文件

【转】 /etc/fstab功能详解

[转] /etc/fstab功能详解 最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义.供大家参考有不正确的地方敬请指正. 一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘.这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要

Linux下inittab文件详解

/etc/inittab文件详解 Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程 我们看到,Linux系统启动的最后是启动init进程,而init进程是怎么工作的呢?init进程就是根据/etc/inittab这个文件来在不同的运行级别启动相应的进程或执行相应的操作. /etc/inittab这个文件中定义的登记项都是以:隔开的四个段,即: id:ru