inf*_*rno 6 samba mount speed nautilus cifs
我有带有 Gnome 3 和 Nautilus 3.18.5-1.fc23 的 Fedora 23。我在使用 Nautilus 时遇到了 SMB 速度问题。它大约是 4.4MB/s,而通过任何其他方法(例如来自终端的 smbclient),我从 Samba 服务器获得了 11MB/s。有没有办法调试这个。我在一些论坛上读到,也许 Nautilus 没有rsize
通过安装驱动器正确设置。我不确定。我没有找到安装的驱动器lsblk
。根据一些论坛,网络驱动器被安装/run
到一个gvfs
文件夹中。这我可以确认,我得到了以下路径:
/run/user/1000/gvfs/smb-share:server=odroid-server,share=asmedia-hdd
Run Code Online (Sandbox Code Playgroud)
通过mount | grep gvfs
我得到了以下内容:
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
Run Code Online (Sandbox Code Playgroud)
我没有找到检查这个rsize
东西的方法。它可能无法解决我的问题,我不确定。我想通过驱动器关闭的另一件事是 relatime。至少它在服务器上设置为 noatime。
有没有办法在 Nautilus 配置中做到这一点(我知道在 fstab 中是可能的)?有没有另一种方法可以以某种方式调试这个缓慢的 SMB 速度问题?
根据论坛,问题出在 gvfs 和 cifs 上,效果要好得多。我不熟悉这些术语,但我可以确认这一点。通过手动安装驱动器:
mount -t cifs -o username=root,password=xxxxx //192.168.0.186/asmedia-hdd /media/asmedia-hdd
Run Code Online (Sandbox Code Playgroud)
我可以在 Nautilus 中达到 10MB/s。唯一的问题是我没有网络发现,我无法从 nautilus 卸载驱动器。所以我认为这不是一个真正的解决方案。
有没有办法强制 Nautilus 使用 cifs 而不是 gvfs?
下一个
我找到了一个配置文件,它似乎非常相关:
/usr/share/gvfs/mounts/smb.mount
[Mount]
Type=smb-share
Exec=/usr/libexec/gvfsd-smb
AutoMount=false
Scheme=smb
Run Code Online (Sandbox Code Playgroud)
我猜 gvfs 不是分区类型,它也是使用 cifs 的东西。所以我想我可以在这里以某种方式设置 cifs 缓冲区大小。我还无法找到如何做到这一点。
根据 wiki,gvfs 是一个虚拟文件系统,因此它可以位于 cifs 之上,所以我是对的。
下一个
我通过尝试从终端挂载 gvfs找到了这个答案:https : //unix.stackexchange.com/a/44318/126217。根据它,export $(dbus-launch)
在使用任何 gvfs 命令之前,这是很重要的。我确认,我无法从终端使用 gvfs 命令,并且我只收到有关该问题的模糊错误消息。
我能够使用 gvfs 手动安装驱动器:
gvfs-mount smb://WORKGROUP\;root@192.168.0.186/asmedia-hdd
Run Code Online (Sandbox Code Playgroud)
我能够列出已安装的驱动器
gvfs-mount -l
Drive(0): KINGSTON SV300S37A120G
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Drive(1): ST31000528AS
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Volume(0): data
Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
Volume(1): system
Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
Volume(2): Rendszer számára fenntartott
Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
Drive(2): TSSTcorp CDDVDW SH-222AB
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Mount(0): asmedia-hdd on 192.168.0.186 -> smb://WORKGROUP;root@192.168.0.186/asmedia-hdd/
Type: GDaemonMount
Run Code Online (Sandbox Code Playgroud)
关于这些已安装驱动器的配置的信息仍然不多。Nautilus 没有显示安装的驱动器。这很有趣,因为当我在终端中使用 mount 命令时,安装的驱动器出现在 nautilus 中。
我在这里找到了挂载点:
cd ~/.gvfs/smb-share\:domain\=WORKGROUP\,server\=192.168.0.186\,share\=asmedia-hdd\,user\=root/
Run Code Online (Sandbox Code Playgroud)
我能够从 gvfs 安装的驱动器 cp 一个 mkv 文件,我使用
watch -- du -h test.mkv
Run Code Online (Sandbox Code Playgroud)
测量传输速度,大约是 4.3MB/s。当我使用 smbclient 命令时,我通过测量 cp 速度使用了相同的技术。所以我能够重现 Nautilus 在后台所做的事情。现在我唯一需要的是添加一个选项来更改 cifs 缓冲区大小,如果可能的话。
结论:
我最终将以下内容添加到 fstab:
//192.168.0.186/asmedia-hdd /media/asmedia-hdd cifs rw,workgroup=WORKGROUP,username=root,password=xxxxx,noauto,users,iocharset=utf8 0 0
Run Code Online (Sandbox Code Playgroud)
并使用
chmod 4755 /usr/sbin/mount.cifs
Run Code Online (Sandbox Code Playgroud)
因为 nautilus 写道,只有 root 可以挂载驱动器,而不是显示 root 密码提示。
我不喜欢这个解决方案,因为 nautilus 不会以这种方式发现网络驱动器。另一个问题是我必须授予所有用户安装此驱动器的权限,并且我必须提供 smb 密码,因为我也没有提示。下载速度还可以,我上传也一样。通过上传,我从 nautilus 得到了错误的速度和文件大小报告,它在开始时写入 120MB/s,不断下降。通过使用 gvfs 安装驱动器检查文件大小,我设法获得了有关实际速度的信息。大约是 10MB/s。
我尝试用 gvfs 解决这个问题。如果我设法这样做,我会发布一个答案,但在此之前我将使用此 cifs 安装的解决方法。
下一个 ~ 2016
在此处添加了错误报告:https : //bugzilla.gnome.org/show_bug.cgi? id =762384也许他们有答案。
下一个 ~ 2017
根据 Gnome 开发人员的说法,这是一个 Samba 错误。他们可能会写一个补丁,但不能保证。Samba 开发人员在过去 3 年(2014-17 年)中并不关心它,我什至不确定该项目是否得到维护。
注意:
我通过 wifi 连接测量了这个 10MB/s。当我尝试调试它时,我使用相同的 Odroid XU4 通过以太网进行了一些测量。(GVFS 使用 libsmbclient,所以它的作用类似于调用smbget
.)
使用 nautilus 复制 (18-19MB/s)
# mount with nautilus on GUI
# copy with nautilus on GUI
Run Code Online (Sandbox Code Playgroud)
使用 smbget 默认块大小复制(23-24MB/s)
# mount with nautilus on GUI
smbget -u root -w WORKGROUP smb://192.168.0.186/asmedia-hdd/testfile
Run Code Online (Sandbox Code Playgroud)
使用 smbget 复制 16K (1-64K) 块大小 (38-57MB/s)
# mount with nautilus on GUI
smbget -u root -w WORKGROUP smb://192.168.0.186/asmedia-hdd/testfile --blocksize=16777216
Run Code Online (Sandbox Code Playgroud)
使用 CIFS 挂载复制 (70-90MB/s)
# mount in fstab
//192.168.0.186/asmedia-hdd /media/asmedia-hdd cifs rw,workgroup=WORKGROUP,username=root,password=...,noauto,users,iocharset=utf8 0 0
# copy with nautilus on GUI
Run Code Online (Sandbox Code Playgroud)
所以一个明显的瓶颈是GVFS这里的块大小太小,但速度最高在1k块大小左右,最多达到CIFS速度的63%,所以smb lib中肯定还有另一个未识别的瓶颈。
归档时间: |
|
查看次数: |
6613 次 |
最近记录: |