为什么Ubuntu / Linux / proc / mounts对我说谎?

我有一个坏的硬盘的rootfs – 这可能导致文件系统被挂载只读…然而, /proc/mounts仍然说,它被挂载rw

 $ cat /proc/mounts rootfs / rootfs rw 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 udev /dev devtmpfs rw,relatime,size=7575440k,nr_inodes=1893860,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,nosuid,relatime,size=3033888k,mode=755 0 0 /dev/disk/by-uuid/548b00b0-bd98-4017-9e62-5c27b633268b / ext4 ro,noatime,errors=remount- ro,data=ordered 0 0 none /sys/fs/fuse/connections fusectl rw,relatime 0 0 none /sys/kernel/debug debugfs rw,relatime 0 0 none /sys/kernel/security securityfs rw,relatime 0 0 none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0 none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0 /dev/sdb1 /mnt/storage1 ext4 ro,noatime,errors=remount-ro,data=ordered 0 0 /dev/sdc1 /mnt/storage2 ext4 rw,noatime,errors=remount-ro,data=ordered 0 0 /dev/sdd1 /mnt/storage3 ext4 rw,noatime,errors=remount-ro,data=ordered 0 0 

但是文件系统是只读的:

 $ touch new touch: cannot touch `new': Read-only file system 

这是非常不幸的,因为Nagios / Icinga脚本我使用check_ro_mounts检查/proc/mounts正是这个。 它可以在/mnt/下安装其他文件系统。

这是一些Linux核心技巧? 我也不知道rootfs在这里的含义是什么?

 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.3 LTS Release: 12.04 Codename: precise $ uname -a Linux foo 3.5.0-25-generic #39~precise1-Ubuntu SMP Tue Feb 26 00:07:14 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 

/proc/mounts有多个条目,第二个条目显示有关您的真实根文件系统的信息(请注意ro标志):

 /dev/disk/by-uuid/548b00b0-bd98-4017-9e62-5c27b633268b / ext4 ro,noatime,errors=remount-ro,data=ordered 0 0 

出现rootfs文件系统types的第一个条目是因为Linux内核在启动时在内部创build了一个基于RAM的文件系统,并在那里解压initramfs文件。 那么initramfs脚本和实用程序会加载所需的驱动程序模块并挂载真正的根文件系统。