/etc/fstab,/etc/mtab,和 /proc/mounts

如今的 Linux 系统里通常都有这么三个文件:/etc/fstab,/etc/mtab,和 /proc/mounts,比较容易让人迷惑。简单解释一下。linux

/etc/fstab 是只读不写的,它提供的是系统上挂载设备的静态信息,好比 mount -a 就会挂载 /etc/fstab 里面指定的文件系统。spa

/etc/mtab 是供 mount/umount 进行读写的,是相对动态的。读的话,好比你在挂载一个文件系统时缺乏一个参数,它就会自动去/etc/mtab 或者 /etc/fstab 里去查,若是找到的话,只要一个参数也够。写的话,好比你umount了一个文件系统,umount 就会删掉/etc/mtab 里面的相关记录。进程

看似上面的这两个文件已经够用了,可是新的状况出现了。Linux 内核引入了一个 mount namespace,是给container用的。由于这个的出现,Linux 不得不引入 /proc/mounts。为何呢?由于记录 mount 信息的 /etc/mtab 是全局的,也就是说,就算你的某个进程有本身的 namespace,但只要还和外面共享同一个 /etc/mtab,那么,里面进行umount/mount操做的信息也会被记录到/etc/mtab里,外面也会看到!凌乱了!因而可知,咱们不能有全局的mtab,肿么办呢?/proc/mounts 出来了,有人可能以为它也是全局的啊!可你仔细看一下的话会发现,它实际上是到 /proc/self/mounts 的一个符号连接!如此以来,container 里面的 /proc/mounts 和外面的固然就不会同样了!聪明啊!tab

因此,/etc/mtab 已通过时了,应该被抛弃,或者直接符号连接到/proc/mounts。同理,查看系统上挂载的文件系统的话,直接调用无参数的mount也是不妥的,由于那样也是读 /etc/mtab。咱们应该使用 util-linux-ng 提供的一个新命令: findmnt,它是读的 /proc/self/mountinfo。文件

相关文章
相关标签/搜索