【问题标题】:Fastest way to determine a stale Samba mount on Linux在 Linux 上确定过时 Samba 挂载的最快方法
【发布时间】:2010-01-21 00:05:52
【问题描述】:

在 Linux 上确定 Samba 挂载点是否失效的最佳(最快)方法是什么? 我需要在 C 中执行此操作。当在陈旧的挂载上调用时,诸如 statfs()、statvfs() 之类的系统调用会阻塞 30-40 秒,在这种情况下它们甚至不会返回错误。 stat() 似乎比其他人失败得更快(大约 10 秒)并返回错误。挂载点可能会因为另一台主机宕机或那里的 Samba 守护进程被杀死而过时。 任何建议表示赞赏..

【问题讨论】:

    标签: c linux filesystems samba


    【解决方案1】:

    您可以设置几秒钟后超时的闹钟(请参阅alarm()setitimer())。

    【讨论】:

      【解决方案2】:

      好吧,我不知道如何进行更快的检查,但我可能会建议您同时并行检查所有挂载点,这样您将始终拥有相同的总时间,即使有许多 samba 挂载.

      【讨论】:

        【解决方案3】:

        我正在回答我自己的问题。目标是尽量减少尝试访问陈旧挂载点的多个进程所花费的时间。通常,系统调用将在亚秒级时间内完成。将陈旧的共享阻塞 10 秒,甚至 3 秒是不可接受的,因为这些调用是在多个地方多次完成的,并且延迟时间会累积。 所以,我最终编写了一个监控进程,它每 n 秒检查一次挂载,如果它们无法访问,则卸载它们。我还从我的配置中读取了信息,说明哪些文件系统应该是远程的(挂载的)并检查 mtab 文件 - 如果它们不存在,那就是错误。代码检查 mtab 在亚秒级时间内完成。 花了一两天时间来实现,但对我来说效果很好。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-21
          • 1970-01-01
          • 1970-01-01
          • 2014-01-07
          • 1970-01-01
          • 2012-02-10
          相关资源
          最近更新 更多