如何强制 Nautilus 在 Ubuntu 22.04 上使用 SMB3?

如何强制 Nautilus 在 Ubuntu 22.04 上使用 SMB3?

我有 1Gbs 以太网,但其上的所有 Ubuntu 22.04 机器的速度都为 40MBs,并回退到 SMB2。我使用 iperf 验证了网络有 1Gbs,Windows 机器也有正常的 110MBs。

当我使用以下命令手动挂载 Samba 共享时,Ubuntu 上也有 110MB 的空间:

sudo mount -t cifs //192.168.8.1/crucial1tb-glinet ~/Desktop/smbshare

但是当我使用 Nautilus 的 mount 时,我有 40MB。我安装sudo apt install smbclient并添加了它,/etc/samba/smb.conf但 Nautilus 忽略了它,没有使用它。

server min protocol = SMB2
server max protocol = SMB3 
client min protocol = SMB2
client max protocol = SMB3

我假设 Nautilus 使用了其他 samba 客户端,我只有在运行时才能看到 Nautilus 挂载gio mount -l,而在运行时则看不到smbclient -L 192.168.8.1

Nautilus 使用的 samba 配置在哪里,或者如何强制 Nautilus 使用配置,/etc/samba/smb.conf以便我可以将其设置为使用 SMB3,并在 1Gbs 网络上拥有完整的 110MB,而不是当前的 40MB?

答案1

当我使用以下命令手动挂载 Samba 共享时,Ubuntu 上也有 110MB 的空间:

sudo mount -t cifs //192.168.8.1/crucial1tb-glinet ~/Desktop/smbshare

在客户方面

首先:卸载该共享:

sudo umount ~/Desktop/smbshare

然后打开终端并运行:

nautilus smb://192.168.8.1/crucial1tb-glinet

在服务器(192.168.8.1)上运行以下命令:

sudo smbstatus

服务器上该命令的输出将告诉您客户端如何访问您的共享。

我以我自己的网络为例来说明:

在我的客户端(vub2204)上,我将通过在终端中运行 nautilus 来访问我的服务器(vxub2204):

nautilus smb://vxub2204.local/public

在我的服务器(vxub2204)上,我运行 smbstatus 命令来查明客户端如何访问:

tester@vxub2204:~$ sudo smbstatus
[sudo] password for tester: 

    Samba version 4.15.13-Ubuntu
    PID     Username     Group        Machine                                   Protocol Version              
    ---------------------------------------------------------------------------------------------
    4581    (auth in progress)        192.168.1.154 (ipv4:192.168.1.154:38094)  SMB3_11                              -                    
    4578    nobody       nogroup      vub2204 (ipv4:192.168.1.154:52652)        SMB3_11

您会注意到我的客户端正在使用 SMB3_11 访问我的服务器。我的意思是您将看到相同的结果。

这并不是说 Nautilus 没有使用 SMB3,而是 cifs 的挂载方式与 nautilus 的挂载方式有所不同。

mount.cifs 由 Linux 内核本身控制,不需要参考客户端 smb.conf 来了解如何控制。

Nautilus 调用 gvfs ( gio ),后者又调用 samba 客户端库 ( libsmbclient ),后者可以引用 smb.conf。GVFS 有大量开销,因此 cifs 挂载比 gvfs 挂载更快也就不足为奇了。

可能的解决方法:

在 /etc/fstab 中添加一个条目,以创建此共享的按需 cifs 挂载。如下所示:

//192.168.8.1/crucial1tb-glinet /home/marko/Desktop/smbshare cifs username=xxxx,password=yyyy,uid=marko,noauto,user 0 0
  • 禁止自动== 共享不会在启动时挂载
  • 用户== 允许普通(非 sudo)用户挂载共享。
  • uid=marko== 使您成为坐骑的主人。
  • 并用真实值替换 xxxx 和 yyyy。

在 fstab 中输入该内容后,将在文件左侧面板上创建一个启动器图标,选择后将执行 fstab 行并挂载共享。这将允许您根据需要挂载共享。当不再需要共享时,可以使用相同的图标来卸载共享。

相关内容