Linux之/etc/fstab文件解析

本文详细介绍了fstab文件的结构与作用,包括如何通过fstab自动挂载不同文件系统格式的硬盘分区,如FAT32和NTFS,以便在Linux系统中访问Windows资源。

收藏于 2013-04-15

迁移自本人的百度空间

----------------------------

转载自 http://ckc620.blog.51cto.com/631254/394238

 

文件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指用户名)。

<think> 我们被要求解释执行'cat /etc/fstab'命令的作用及输出内容含义。根据提供的引用,我们可以整理如下: 1. 引用[1]指出:/etc/fstab存放系统中的文件系统信息,系统启动时会自动读取此文件并挂载指定的文件系统。它还提到,正确设置该文件后,可以通过`mount /directoryname`加载文件系统,且fsck、mount、umount等命令都利用该文件。 2. 引用[2]提到:可以修改/etc/fstab文件中的参数,比如为/home分区添加`noauto,x-systemd.automount`参数,以实现按需挂载或延迟挂载。 3. 引用[3]给出了一个/etc/fstab文件的示例,并标注了每列的含义(虽然该示例中每列是用空格分隔的,但通常每行有6个字段,分别表示文件系统、挂载点、类型、选项、dump备份标志和文件系统检查顺序)。 4. 引用[4]介绍了cat命令的作用,但这里我们主要关注cat /etc/fstab,即显示/etc/fstab文件的内容。 因此,我们可以这样回答: **作用:** 执行`cat /etc/fstab`命令的作用是显示Linux系统中`/etc/fstab`文件的内容。该文件是系统文件系统表(File System Table)的配置文件,它存储了关于磁盘分区、存储设备以及如何挂载这些设备的信息。系统启动时会自动读取此文件,并按配置挂载文件系统。此外,手动执行挂载(mount)、卸载(umount)和文件系统检查(fsck)等命令时也会参考此文件。 **输出内容含义:** `cat /etc/fstab`输出的内容通常每行代表一个文件系统的配置,每行包含6个字段,字段之间由空格或制表符分隔。每个字段的含义如下: 1. **<file system>**: 指定要挂载的设备或文件系统。可以是设备文件(如`/dev/sda1`)、卷标(LABEL=)或UUID(UUID=),也可以是通过网络挂载的设备(如NFS)。 2. **<dir>**: 指定文件系统的挂载点(Mount Point),即文件系统被挂载到的目录路径(如`/`、`/home`等)。 3. **<type>**: 指定文件系统类型,如ext4、xfs、ntfs、swap、tmpfs等。 4. **<options>**: 指定挂载选项,多个选项之间用逗号分隔。常见选项有: - `defaults`: 使用默认选项(包括rw, suid, dev, exec, auto, nouser, async)。 - `noatime`: 不更新文件的访问时间,可提升性能。 - `ro`/`rw`: 只读/读写挂载。 - `noauto`: 系统启动时不自动挂载,需要手动挂载。 - 其他选项如`user`(允许普通用户挂载)、`nofail`(设备不存在时不报错)等。 5. **<dump>**: 备份选项,由dump程序使用。设置为0表示不备份,1表示需要备份(通常只有根文件系统设置为1)。 6. **<pass>**: 指定系统启动时fsck检查文件系统的顺序。0表示不检查,根文件系统通常设置为1(表示最先检查),其他文件系统可以设置为2(表示检查顺序次于1)或0(不检查)。 示例(来自引用[3]): ``` tmpfs /tmp tmpfs nodev,nosuid 0 0 /dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 none swap defaults 0 0 /dev/sda3 /home ext4 defaults,noatime 0 2 ``` - 第一行:将tmpfs(临时文件系统)挂载到/tmp目录,选项为nodev(不允许设备文件)和nosuid(不允许set-user-id),不备份也不检查。 - 第二行:将/dev/sda1(通常是根分区)挂载到/目录,文件系统类型为ext4,使用默认选项并加上noatime,不备份,但检查顺序为1(最先检查)。 - 第三行:将/dev/sda2作为交换分区(swap),挂载点设为none(因为swap不需要挂载点),类型为swap,使用默认选项,不备份也不检查。 - 第四行:将/dev/sda3挂载到/home目录,类型为ext4,选项为defaults和noatime,备份标志为0,检查顺序为2(在根文件系统之后检查)。 **注意:** 修改此文件需要管理员权限,且修改错误可能导致系统启动失败,因此修改前应备份。 最后,按照要求生成相关问题。 </think> ### `cat /etc/fstab` 命令详解 #### 作用 `cat /etc/fstab` 命令用于**显示 Linux 系统中 `/etc/fstab` 文件的内容**。该文件是系统的**文件系统静态信息表**,核心作用包括: 1. **系统启动自动挂载**:系统开机时自动读取此文件,挂载指定的文件系统(引用[1])。 2. **简化挂载操作**:配置后可通过 `mount /挂载点` 直接挂载文件系统(引用[1])。 3. **支持系统工具**:`fsck`(磁盘检查)、`mount`、`umount` 等命令依赖此文件(引用[1])。 4. **高级挂载控制**:支持延时挂载、按需挂载等高级配置(如 `noauto,x-systemd.automount`)(引用[2])。 #### 输出内容含义 输出每行定义一个文件系统,包含 **6 个字段**(空格/Tab 分隔),以引用[3]的示例解析: ```bash # <file system> <dir> <type> <options> <dump> <pass> tmpfs /tmp tmpfs nodev,nosuid 0 0 /dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 none swap defaults 0 0 /dev/sda3 /home ext4 defaults,noatime 0 2 ``` 1. **文件系统 (`<file system>`)** - 设备路径:如 `/dev/sda1`(物理分区)、`/dev/sdb2` 等 - 特殊类型:`tmpfs`(内存文件系统)、`UUID=...` 或 `LABEL=...`(唯一标识) - 网络文件系统:`nas:/share`(NFS/CIFS) 2. **挂载点 (`<dir>`)** - 文件系统的挂载目录:如 `/`(根分区)、`/home`(用户目录) - 特殊值:`none`(适用于 swap 分区) 3. **文件系统类型 (`<type>`)** - `ext4`/`xfs`:常见磁盘格式 - `swap`:交换分区 - `tmpfs`:临时内存文件系统 - `nfs`/`cifs`:网络文件系统 4. **挂载选项 (`<options>`)** - `defaults`:默认选项(等价于 `rw,suid,dev,exec,auto,nouser,async`) - `noatime`:不更新文件访问时间(提升性能) - `noauto`:开机不自动挂载(需手动 `mount`) - `x-systemd.automount`:按需挂载(引用[2]) - 多选项用逗号分隔:如 `defaults,noatime` 5. **备份标记 (`<dump>`)** - `0`:禁止 `dump` 命令备份此分区 - `1`:允许备份(通常仅根分区设置为 1) 6. **开机检查顺序 (`<pass>`)** - `0`:开机不检查文件系统 - `1`:根分区优先检查 - `2`:非根分区检查(数字越大优先级越低) --- ### 关键注意事项 1. **修改风险**:错误配置可能导致系统无法启动,修改前需备份。 2. **生效方式**: - 重启系统 - 执行 `mount -a` 重新加载配置 3. **命令风险**:`cat` 命令仅查看内容,不会修改文件(引用[4])。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值