我正在尝试对数百台服务器上的数千个 NFSv3 文件服务器导出进行一些测试。很多事情都可能出错,从服务器上的配置到网络连接。我能做的最完整的测试是实际尝试将其安装在客户端上。
我可以做到,但实际上安装所有东西都超出了我的需要,占用了程序执行之外的状态和资源,并且往往会给客户端带来一些压力。我不止一次看到问题似乎表明客户端上的某些内容不满意并阻止了挂载的发生。 (除了客户端重启外没有任何变化,挂载再次工作)。
我希望改为编写更轻量的代码,它可以简单地充当 NFS 客户端,并查看 NFS MOUNT 调用是否成功返回文件句柄。如果是这样,我的服务器正在运行并且我的客户端已获得授权。但我还没有找到任何简单的代码来这样做。
当我查看 Linux Source ,看起来至少有一些代码涉及到它是一个 linux 模块,这令人困惑。
是否有一些用户空间代码可以通过挂载调用请求 NFS 文件句柄,我可以将其剥离? (或者有什么理由说我的想法行不通)?这都是 AUTH_SYS,所以我不需要获取 kerberos 票证或任何东西。
最佳答案
在了解更多的情况下,我将根据我对 NFS/Linux 文件系统的了解进行一些推测。
我假设您的客户端是 linux(但同样的逻辑也适用于 Windows,如果它有 nfs 客户端的话)。
这听起来像是当您执行挂载时,您正在达到资源被消耗到客户端无法挂载更多 nfs 挂载的程度。有意义的是,当您重新启动时,它会再次开始工作,并且重新启动将丢弃 nfs 挂载(假设您正在显式/以编程方式挂载),从而允许再次进行挂载。我敢打赌你只是挂载 nfs 挂载并且永远不会卸载它们。所以我建议如下:
- 坐骑
- 访问刚刚挂载的 nfs 文件系统中的文件或目录
- 卸载nfs文件系统
关于c - 如何获得 NFS 文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364697/