我有一台服务器,其中分区 ( /var
) 切换为只读。所以我尝试使用以下命令在另一台服务器上重现此问题。
mount -o remount,ro /var/ -f
当我检查同一分区上的应用程序日志时,我重新安装了 ro,我看到最近添加的条目。
tail -f /var/log/httpd/*
CentOS 6.7
阿帕奇:2.2.15
uname -r
:2.6.32-573.7.1.el6.x86_64
答案1
这是正确的行为。
您使用该-f
标志,这意味着:
-f
,--fake
: 导致除了实际的系统调用之外的所有事情都完成;如果不明显的话,这个「赝品」挂载文件系统。此选项与标志结合使用-v
可以确定 mount 命令尝试执行的操作。它还可用于为之前使用该-n
选项安装的设备添加条目。该-f
选项检查现有记录,/etc/mtab
并且当记录已经存在时失败(对于常规非假挂载,此检查由内核完成)。
也可以看看将繁忙的磁盘重新挂载为只读模式。
答案2
我同意@GiacomoCatenazzi 的观点。 /var/log/
有时会被赋予自己的分区。 (检查 的输出df
)。如果不是单独的分区,我会尝试卸载,然后重新安装以测试重新安装是否有效。 编辑 /etc/fstab 中的挂载选项,然后重新启动。 (使用 /var 获得已知的新鲜安装的唯一方法)。
mount
另外,检查(无选项)(或 cat /etc/mtab)的结果。mount
不带任何选项将显示 /etc/mtab 的版本。查看 /var(可能还有 /var/log)实际是如何挂载的。 /etc/mtab 显示正在使用的实际参数(包括未被覆盖的默认值。)
答案3
如上所述,-f 可能是您在测试盒上看不到更改的原因。
然而,话虽如此……一般来说,当遇到 I/O 错误时,Linux 会将分区置于只读模式。如果突然变为只读的系统仍在运行,您可能需要考虑检查日志中是否有 i/o 错误。您可能无法在“良好”硬件上重现该问题。检查 dmesg 以及受影响系统上的系统日志。可能性很大,这是您需要解决的硬件退化问题。