当我通过 Nautilus 安装 SMB 共享时,传输速度很慢。因此,我进行了一些研究,发现当我通过 CLI 安装共享并专门将协议版本设置为 2.0 时,速度会快得多。
这是我在 CLI 上使用的命令:
sudo mount -t cifs -o vers=2.0,username=Lukas,password=xxxx,uid=1000,gid=1000 //nas/video /media/lukas/nas
我怎样才能让 Nautilus 在挂载我的共享时使用 2.0 版本?
- Nautilus 版本是“GNOME nautilus 3.26.3”
- Gnome Shell 版本为“GNOME Shell 3.28.3”
- Ubuntu 版本为“18.04.1 LTS”
答案1
如果您感兴趣的话,我有一个替代建议。与其费心研究 Samba 客户端如何访问 NAS(正如我所说,这应该是不必要的,因为如果需要,它会自行使用 SMB2/3),为什么不直接自动使用 CIFS 呢?
在 /etc/fstab 末尾添加以下行:
//nas/video /media/lukas/nas cifs vers=2.0,username=Lukas,password=xxxx,uid=1000,gid=1000,noauto,user 0 0
注意:如果服务器支持,也可以将其表示为 mDNS 合格主机名://nas.local/视频 或者 IP 地址://192.168.0.100/视频
如何运作:
禁止自动= 将使其不会在启动时挂载。我们将设置它以在您需要时按需使用 CIFS - 如果您有笔记本电脑,这将非常有用。
用户= 将使普通用户(非 sudo )可以挂载该共享。
挂载点= 由于它位于 /media 下,因此它将引发 udisks 响应:
(1)Nautilus 的侧面板上会出现一个图标。
(2)它将是“可操作的” - 单击它,系统将转到 fstab 以找出如何挂载它,然后挂载它 - 再次单击它即可卸载共享。
这种方法还有一个好处。它将添加到 Nautilus 的图标也将显示在大多数应用程序中 - 例如 gedit > Open。然后您可以直接从应用程序安装共享。
任何读到这篇文章的人请注意:挂载点在这里很重要。要使 udisks magic 发挥作用,挂载点必须位于 /media 或您的主目录下。
答案2
简而言之,Nautilus 已经在这么做了。您可能遇到的是 CIFS(由 Linux 内核控制)与 gvfs/smbclient(Nautilus 使用)共享挂载之间的差异。CIFS 方法似乎更快,也许是因为 gvfs 的开销。
Nautilus 使用的 samba 客户端将与服务器协商,在早于 SMB1 的“最小值”一直到 SMB3_11 的“最大值”之间找到最佳的 SMB 方言。
从 4.13.5 开始的 Linux 内核也会在 SMB2.1 和 SMB3 之间使用 CIFS 与服务器进行协商。
我想你可以通过在 /etc/samba/smb.conf 中添加最小值来覆盖 samba 客户端在 Nautilus 中自然执行的操作,但这不应该有任何区别:将此行放在 [global] 部分中,就像工作组 = 工作组线:
client min protocol = SMB2
SMB2 有不同的变体:SMB2_02、SMB2_10、SMB2_22、SMB2_24。默认情况下,“SMB2”选择“SMB2_10”,只需确保不要为最大值添加任何内容即可。
编辑:似乎有人对“客户端最小协议”行的放置位置有些困惑 - 在服务器中还是在客户端中。有人建议将其放在服务器中。
如果我设置了一个 18.04 服务器并在服务器上指定“客户端最小协议 = SMB2”,然后使用 Ubuntu 16.04 客户端访问它,该客户端根据设计最多(无需修改)只能使用 SMB1(又名 NT1)访问服务器,以下是在服务器上访问的结果:
xxx@srvub1804:~$ sudo smbstatus
Samba version 4.7.6-Ubuntu
PID Username Group Machine **Protocol**
-------------------------------------------------------------------------------------
4681 nobody nogroup vub1604 (ipv4:192.168.1.140:45648) **NT1**
没有变化,因为客户端仍然使用 SMB1(NT1)访问服务器。
但是,如果我将客户端上的客户端最小/手动设置修改为“客户端最小协议 = SMB2”和“客户端最大协议 = SMB3”,并从服务器中删除“客户端最小协议”,我最终会得到预期的结果:
xxx@srvub1804:~$ sudo smbstatus
Samba version 4.7.6-Ubuntu
PID Username Group Machine **Protocol**
-------------------------------------------------------------------------------------
4915 nobody nogroup vub1604 (ipv4:192.168.1.140:45664) **SMB3_11**
我认为混淆源自另一个参数“最小协议”(又称“服务器最小协议”),该参数确实规定了允许访问的 smb 最小方言。该参数在服务器上完成。“客户端最小/最大协议”在客户端上完成。
如果客户端上有 smb.conf,那就太好了。如果没有,您可以按如下方式安装:
sudo apt install smbclient