如今的 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。文件