/etc/fstab和/etc/mtab是啥关系?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了/etc/fstab和/etc/mtab是啥关系?相关的知识,希望对你有一定的参考价值。
这是我从别处引用的,说的很清楚。这个文件最好不要动它,是给你看的,不是给你改的fstab 文件想必大家都很熟悉,记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。我们可以看一下 mtab 文件的内容 (这是我电脑上的 mtab 文件内容):# cat /etc/mtab/dev/sda4 / reiserfs rw,noatime 0 0proc /proc proc rw,nosuid,nodev,noexec 0 0sysfs /sys sysfs rw,nosuid,nodev,noexec 0 0udev /dev tmpfs rw,nosuid 0 0devpts /dev/pts devpts rw,nosuid,noexec 0 0/dev/sda2 /boot ext2 rw,noatime 0 0shm /dev/shm tmpfs rw,noexec,nosuid,nodev 0 0/dev/sda1 /mnt/winxp ntfs rw,utf8,umask=0 0 0usbfs /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 文件,才能获得当前系统中的分区挂载情况。 参考技术A /etc/fstab文件记录静态文件系统信息,按照维基百科/etc/fstab上的介绍,该文件记录计算机硬盘分区相关信息,启动Linux、mount挂载分区等命令执行都,都会用到fstab信息,看页面示例也是带有:<file system> <mount point> <type> <options> <dump> <pass>
文件系统 挂载点 分区类型 挂载选项 dump选项
这样的格式内容,但天缘自己从Ubuntu 11.04上抓到却是这么个内容,其它细节没看,至少直接打开来查询外部SD卡驱动器路径有点问题。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda8 during installation
UUID=f600226f-cc64-4b40-b9a8-8888888888888 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda7 during installation
UUID=3b67dd55-b0ef-4940-a4f1-8888888888888 none
swap sw 0 0
如果需要解析/etc/fstab,只需参照/etc/fstab的字段定义进行解析即可,具体可参考上文维基百科链接
。
/etc/mtab该文件也是记载当前系统已经装载的文件系统,包括一些操作系统虚拟文件,这跟/etc/fstab有些不同。/etc/mtab文件在mount挂载、umount卸载时都会被更新,时刻跟踪当前系统中的分区挂载情况。下图我台式机上的/etc/mtab中的内容:
/dev/sda8 / ext4 rw,errors=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
none /sys/fs/cgroup tmpfs rw 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
udev /dev devtmpfs rw,mode=0755 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
none /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880 0 0
none /run/shm tmpfs rw,nosuid,nodev 0 0
none /run/user tmpfs rw,noexec,nosuid,nodev,size=104857600,mode=0755 0 0
none /sys/fs/pstore pstore rw 0 0
systemd /sys/fs/cgroup/systemd cgroup rw,noexec,nosuid,nodev,none,name=systemd 0 0
gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,user=john 0 0
/dev/sda6 /media/john/BKUP fuseblk rw,nosuid,nodev,allow_other,default_permissions,blksize=4096 0 0
需要解析/etc/mtab,方法同上,只需了解各个字段的定义即可,/etc/mtab定义如下:驱动器 挂载点 文件系统 读写权限 参考技术B 可以看一下 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 文件,才能获得当前系统中的分区挂载情况。
The programs mount and umount maintain a list of currently mounted file
systems in the file /etc/mtab. If no arguments are given to mount,
this list is printed. When the proc filesystem is mounted (say at
/proc), the files /etc/mtab and /proc/mounts have very similar con-
tents. The former has somewhat more information, such as the mount
options used, but is not necessarily up-to-date (cf. the -n option
below). It is possible to replace /etc/mtab by a symbolic link to
/proc/mounts, but some information is lost that way, and in particular
working with the loop device will be less convenient.
/etc/fstab文件的作用:
文件/etc/fstab存放的系统启动时需要挂载的文件系信息。
系统启动时会读该文件,当需要启动时挂载时,系统就自动挂载;
当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。
/etc/mtab文件的作用:
动态的记录现在系统已经挂载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是为系统启动挂载文件系统准备的。直接使用mount和确定就是通过查询它而来的。
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。
/etc/fstab 是开机时的设定档,不过,实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 这两个档案当中的。每次我们在更动 filesystem 的挂载时,也会同时更动这两个档案喔!但是,万一发生您在 /etc/fstab 输入的资料错误,导致无法顺利开机成功,而进入单人维护模式当中,那时候的 / 可是 read only 的状态,当然您就无法修改 /etc/fstab ,也无法更新 /etc/mtab 啰~那怎么办? 没关系,可以利用底下这一招:
[root@www ~]# mount -n -o remount,rw /
cat命令
- 概述
文件文本查看工具 - 选项
-n:给显示的文本行编号
-E:显示行结束符$ - 实例
[[email protected] ~]# cat /etc/fstab
[[email protected] ~]# cat -n /etc/fstab 1 2 # 3 # /etc/fstab 4 # Created by anaconda on Mon Aug 6 17:47:50 2018 5 # 6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘ 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 /dev/mapper/centos-root / xfs defaults 1 1 10 UUID=bd40ba81-2c3a-4234-8057-816e098a03fd /boot xfs defaults 1 2 11 /dev/mapper/centos-home /home xfs defaults 1 2 12 /dev/mapper/centos-swap swap swap defaults 0 0
以上是关于/etc/fstab和/etc/mtab是啥关系?的主要内容,如果未能解决你的问题,请参考以下文章
Linux初学者求助,更改/etc/fstab后仍无法自动挂载