我们想要挂载已提供给我们的外部存储。我们在 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 缓存,但也欢迎其他建议。目前我关注的是自动文件系统,虽然我没有使用过它,而且我不确定它是否还缓存了它应该连接的共享的 IP。
附言:对我来说这也很奇怪 - 如果系统管理员的分析是正确的 - 在 IP 更改后共享变得不可用(Host is down
)但卸载和重新安装不起作用。sudo mount -av
只是挂起。
(最初是在 Ask Ubuntu 上询问的,但似乎更适合这里。)
答案1
如果我正确理解了设置,您可以通过名称引用存储主机,并且该主机名的 IP 会经常更改。
名称到 IP 的映射是 DNS 的功能。DNS 是您需要解决缓存问题的地方。我建议经常刷新缓存以解决此问题。虽然这可能会影响主机上的其他服务,而且确实看起来有点疯狂。
首先,检查缓存的统计信息:
sudo systemd-resolve --statistics
您可以使用以下命令刷新缓存:
sudo systemd-resolve --flush-caches
然后再次检查统计数据以确保缓存已被刷新。
如果可行,我会将刷新缓存的命令添加到脚本中以安装驱动器。这样,脚本将首先刷新缓存,然后在尝试安装驱动器时向 DNS 查询当前 IP。