![Linux 中的现代 SMB/CIFS 使用,支持待机和重新连接](https://linux22.com/image/1576354/Linux%20%E4%B8%AD%E7%9A%84%E7%8E%B0%E4%BB%A3%20SMB%2FCIFS%20%E4%BD%BF%E7%94%A8%EF%BC%8C%E6%94%AF%E6%8C%81%E5%BE%85%E6%9C%BA%E5%92%8C%E9%87%8D%E6%96%B0%E8%BF%9E%E6%8E%A5.png)
多年来,我一直使用 CIFS 挂载共享mount -t cifs
。我仍然倾向于使用这种方法,因为它允许我挂载特定共享,而无需运行网络发现。此外,它具有良好的 I/O 性能。
当网络连接丢失或机器进入待机/睡眠状态时,就会出现问题。常规 CIFS 安装无法处理这种情况。当网络连接丢失时,访问共享会导致任何试图访问其中文件的过程挂起,甚至命令也无济于事kill
。更糟糕的是,无法卸载该不工作的共享。有时,硬重置是唯一的选择。唤醒机器(例如笔记本电脑)时也会发生类似的问题。
因此,我研究了基于 FUSE 的解决方案,例如smbnetfs
。这些解决方案解决了上述问题,但它们确实有一个关键缺陷:它们都坚持运行网络发现。您应该选择一个挂载点,发现的机器将在该挂载点显示为子目录。但这绝对是不是我想要什么。我想挂载特定的共享,并且不是运行任何网络发现。我经常需要处理在这种网络扫描中不可见的共享。此外,我发现 CIFS 发现扫描非常不可靠。
是否有基于 FUSE 的解决方案允许我专门挂载某个共享?理想情况下,它应该是类似这样的命令行<tool> //machine/share share-mountpoint <extra commands like specifying a location where to find auth info like username and password>
。
或者是否有一些基于坐骑的即将出现的事情我需要注意?