首页 > Linux&Fedora专区 > df出现df: cannot read table of mounted file systems的解决方法
2015
03-19

df出现df: cannot read table of mounted file systems的解决方法

   出现df: cannot read table of mounted file systems,按照网上的说法使用grep -v rootfs /proc/mounts > /etc/mtab即可,我这边测试之后确实如此。

  但今天早上又遇到一个问题,如下

[root@image ~]#mount -o remount tmpfs
can't create lock file /etc/mtab~12469: Permission denied (use -n flag to override)

  重新加载tmpfs分区即提示权限不足。

  先来了解一下/etc/fstab和/etc/mtab的区别和联系。

   /etc/fstab文件的作用记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。 

    /etc/mtab文件的作用记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 

   每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息。

  这就解释了df会出现问题的所在。从上面的资料中我们可以看出/etc/mtab是动态在变化的,每一次的挂载分区都会修改这个文件,那为何mount -o remount tmpfs会提示权限不足呢?

  仔细折腾了一下,原来是chattr的问题。看以下实验。

[root@sb20 tmp]# echo '11111' > fangdm/aa.txt
[root@sb20 tmp]# ll fangdm/
total 2873940
-rw-r--r-- 1 root root 68616766 Mar 13 17:18 2013_article.sql
-rw-r--r-- 1 root root 6 Mar 19 10:26 aa.txt
[root@sb20 tmp]# lsattr fangdm/
-------------e- fangdm/aa.txt
-------------e- fangdm/2013_article.sql
[root@sb20 tmp]# chattr +i fangdm/
[root@sb20 tmp]# echo '2222' > fangdm/aa.txt
[root@sb20 tmp]# more fangdm/aa.txt
2222
[root@sb20 tmp]# echo '2222' > fangdm/bb.txt
-bash: fangdm/bb.txt: Permission denied

   从上面的测试中可以看出,chattr对目录进行加i的权限限制,我们是可以用系统命令来修改文件的,但不能新增文件。而在mount里会产生一个临时文件,然后/etc这个目录有加锁,所以就出现不会重新挂载了。

最后编辑:
作者:admin
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。