我们想挂载已经提供给我们的外部存储。我们在 Ubuntu 18.04 上的 /etc/fstab 文件中使用如下内容。
//external/storage /mounting/point cifs noperm,cred=/home/user/.smbcredentials,domain=WORK,iocharset=utf8,vers=3.0,sec=ntlmv2i,uid=user,gid=WORKGROUP,dir_mode=0770,file_mode=0770 0 0
和 .smbcredentials
user=user
password=pass
不幸的是,我们遇到了越来越多的问题,即有时无法访问共享。奇怪的是,我们可以使用 smbclient 访问它,甚至可以挂载到其他操作系统(MacOS、Windows)上。在询问存储系统管理员的反馈后,我们被告知这是由数据中心设置的性质引起的:IP 可以动态更改。我们还被告知这对于 Windows 或 MacOS 来说不是问题,但在 Linux 上这会导致影响深远的问题,因为远程存储的 IP 被缓存。因此,如果其主机的 IP 发生更改,则由于缓存的 IP 不正确,客户端上将无法再找到该共享。
那么我的问题是:我们如何处理我们的设置?建议我们仅在需要时使用 smbclient 访问共享,但从不实际安装它们。我绝对不想朝这个方向发展,因为我们使用远程存储作为运行程序任务的数据存储。所以它应该随时可用。理想情况下,我正在寻找一种方法来禁用 IP 缓存,但也欢迎其他建议。目前我的注意力集中在autofs上,虽然我没有使用它的经验,而且我不确定它是否也缓存了它应该连接到的共享的 IP。
PS:这对我来说也很奇怪 - 如果 sysadmin 的分析是正确的 - 在 IP 更改 ( Host is down
) 后共享变得不可用但卸载和重新安装不起作用。sudo mount -av
只是挂起。
(最初在 Ask Ubuntu 上问过,但这里似乎更合适。)
如果我正确理解设置,您可以按名称引用您的存储主机,并且该主机名的 IP 经常更改。
名称到 IP 的映射是 DNS 的一项功能。DNS 是您需要解决缓存的地方。我建议经常刷新缓存来解决这个问题。虽然这会影响主机上的其他服务,而且看起来有点疯狂。
首先,检查缓存的统计信息:
您可以使用以下命令刷新缓存:
然后再次检查统计信息以确保缓存已刷新。
如果可行,我将添加命令以将缓存刷新到您的脚本中以安装驱动器。这样,脚本将首先刷新缓存,然后在尝试挂载驱动器时向 DNS 查询当前 IP。