询问文件系统是否已挂载

询问文件系统是否已挂载

如何通过直接询问文件系统来查看 (ext3) 文件系统是否已挂载(即,与系统启动时查看是否未完全卸载的方式相同)?检查输出mount是没有用的,因为文件系统可能是由虚拟机挂载的。

我知道我可以运行fsck,并且如果文件系统被挂载它将中止,但我不需要实际检查文件系统。

答案1

文件系统不知道它是否已挂载,只知道它是脏的还是干净的。我不确定虚拟机运行的是什么操作系统,但有些操作系统可以以只读方式挂载它,它会保持干净。也可能它被错误地卸载了,因此很脏,但实际上并没有使用。

答案2

大多数发行版启动时使用的文件系统都是mount -a。它会使用 fstab 中auto指定的文件挂载所有文件系统,这是规范的一部分default

对于 ext2/ext3,tune2fs可以修改和显示导致文件系统被 fscked 的设置。例如,-c允许您指定文件系统被 fscked 之前需要挂载多少次。最终,您对启动过程的假设是不准确的。

mount是查看它是否已安装的解决方案。对于 ext3,我不认为“安装状态”与分区一起存储。如果您描述您不确定是共享存储还是 NFS 的原因,我们可能会提供适用于您特定情况的建议。

答案3

重新考虑您的架构。如果您需要从多个节点访问文件系统,请将其包装在 LVM 中。然后您有几个选择。

  1. 您可以在需要时导入卷,并在完成后将其导出。
  2. 或者,如果您更严格一些,您可以设置所有权标签来限制其激活位置。

那么 ext3 提供什么就不重要了;您可以限制对较低层的访问。

答案4

为什么不用以下脚本来编写FSSTAT=df | grep <filesystem mount point>

然后使用 if [ ! -n "$FSSTAT" ] 根据结果做出决定的位置进行测试

您可以通过在脚本中明确提及它们或通过从mount命令输出中 grepping 值来循环测试您想要测试的文件系统,如下所示:

for FS in <replace with back quote> mount | grep ext3 | cut -c 26-43 <replace with backquote> ;do; FSSTAT=df | grep $FS; if [ ! -n "$FSSTAT" ]; ... do somehting; else; ... do something else; fi; done

很抱歉,处理格式时代码看起来很糟糕

相关内容