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

kei*_*u4U 0 linux ubuntu filesystems mount rootfs

我的 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
Run Code Online (Sandbox Code Playgroud)

但是文件系统是只读的:

$ touch new
touch: cannot touch `new': Read-only file system
Run Code Online (Sandbox Code Playgroud)

这很不幸,因为我使用的 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
Run Code Online (Sandbox Code Playgroud)

Ser*_*sov 5

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

/dev/disk/by-uuid/548b00b0-bd98-4017-9e62-5c27b633268b / ext4 ro,noatime,errors=remount-ro,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

rootfs出现文件系统类型的第一个条目是因为 Linux 内核在引导期间在内部创建了一个基于 RAM 的文件系统,并在那里解压了initramfs存档;然后 initramfs 脚本和实用程序加载所需的驱动程序模块并挂载真正的根文件系统。