为什么 Samba SMB 比 LAN 上 NAS 上的 HTTP/NFS/FTP 传输慢?

tea*_*eak 5 samba nas wireless-networking home-networking raspberry-pi

我想设置一个我最近使用运行 Raspbian “Jessie”的 Raspberry Pi 2(四核 ARM Cortex-A7,1GB RAM,32GB microSD)完成的 NAS:

  • 我有一台笔记本电脑——HP Pavilion G6——运行 Ubuntu 14.04 并使用 802.11b/g/n。
  • 我有一个外部 USB 2.0 NTFS 硬盘连接到 Raspberry Pi 2,使用 Samba 和 Apache,以 100Mbps 的速度连接到我的无线路由器的 LAN。
  • 当我尝试使用 Samba SMB 从 Raspberry Pi 2 传输文件时,传输速率低于 1Mib/s。
  • 当我使用 Raspberry Pi 2 中的 HTTP 传输文件时,我得到的典型传输速率约为 3-4Mib/s [更好,但仍然很慢]。
  • 当我使用 FTP 从 Raspberry Pi 2 传输文件时,我得到的典型传输速率约为 2-4Mib/s [更好,但不如 HTTP]。

为什么使用 Samba SMB 传输文件会比使用 HTTP 传输相同文件[3-4 倍]?

我不希望 10-12Mib/s(尽管接近它会很好)来自我的本地网络,因为网络速度为 100Mbs,连接为 USB 2.0 和 Wi-Fi 限制,但至少它应该比拥有所有这些瓶颈以及其他任何东西的互联网要好。

可能是 Samba 配置问题吗?

测试结果【1.5Gb 文件传输速率】:

  • USB 3.0:70-80MiB/s

    只有USB。

    USB3.0 外置硬盘连接到 HP Pavilion G6 笔记本电脑的 USB3.0 端口。

    使用 Dolphin 文件管理器传输的文件。

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

  • USB 2.0:20-30MiB/s

    只有USB。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    使用 pv 测试的文件raspberry~$ pv source > destination

  • 以太网 LAN: 8-9MiB/s

    有线。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    HP Pavilion G6 笔记本电脑通过以太网 LAN 连接到网络。

    使用 samba 传输的文件smb://

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

  • 互联网文件: 2-3MiB/s

    无线上网。

  • HTTP Wi-Fi LAN速度: 3-4MiB/s

    无线上网。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    HP Pavilion G6 笔记本电脑通过 802.11b/g/n Wi-Fi 连接到网络。

    apache 网络服务器上的文件http://

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

  • NFS Wi-Fi LAN速度: 3-4MiB/s

    无线上网。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    HP Pavilion G6 笔记本电脑通过 802.11b/g/n Wi-Fi 连接到网络。

    使用 Dolphin 文件管理器传输的文件。

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

  • FTP Wi-Fi 局域网速度: 2-4MiB/s

    无线上网。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    HP Pavilion G6 笔记本电脑通过 802.11b/g/n Wi-Fi 连接到网络。

    vsftp 服务器上的文件ftp://

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

  • SMB Wi-Fi LAN 速度: < 900KiB/s

    无线上网。

    USB3.0 外置硬盘连接到树莓派的 USB2.0 端口。

    HP Pavilion G6 笔记本电脑通过 802.11b/g/n Wi-Fi 连接到网络。

    使用 samba 传输的文件smb://

    来源:USB3.0硬盘

    目的地:HP Pavilion G6 笔记本电脑

我该如何改进?

这是iwconfig我的笔记本电脑上的输出:

wlan0     IEEE 802.11bgn  ESSID:"Irk"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: 34:31:C4:02:46:2D   
          Bit Rate=65 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=63/70  Signal level=-47 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:1369  Invalid misc:12350   Missed beacon:0
Run Code Online (Sandbox Code Playgroud)

以下是有关我的 Raspberry Pi 网络连接的信息dmesg | grep eth0

smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
Run Code Online (Sandbox Code Playgroud)

thi*_*a R 0

根据问题中提供的详细信息,以下是一些可能影响本地传输速率的因素:

  1. Raspberry Pi 上的资源
  2. 通过USB连接的硬盘的读取速度(读取速度通常应该很高,但不确定驱动器是否有故障)
  3. Raspberry Pi 上的 USB 驱动程序
  4. 将硬盘连接到 Raspberry Pi 的 USB 连接器/外壳

可以采取以下措施来隔离问题:

  1. 将“USB 驱动器”直接连接到您正在使用的工作站并检查传输速度
  2. 在 Raspberry Pi 上使用有线连接(如果尚未以这种方式设置)
  3. 将文件从“USB 驱动器”复制到 Raspberry Pi 上的其他存储并检查传输速度
  4. 从 Raspberry Pi 复制文件(从 eMMC,而不是从 USB)
  5. 在 Raspberry Pi 上创建 Web 服务器和/或 ftp 服务器,并在工作站同时使用无线和有线连接时,通过 http 和 ftp 将文件传输到工作站(4 种不同的场景 - http 与笔记本电脑连接有线,http 与笔记本电脑连接无线) ,通过有线方式与笔记本电脑进行 ftp,通过无线方式与笔记本电脑进行 ftp)
  6. 将“USB 驱动器”连接到网络上除 Raspberry Pi 之外的其他工作站,并检查传输速度。使用有线和无线连接尝试此操作。

假设:

  • 没有其他设备从已设置的“NAS”读取数据,这也可能影响传输速率。
  • 您未同时使用有线和无线连接连接到网络。如果是,则互联网流量有可能使用一个接口,而本地流量使用另一个接口,这也可能会影响传输速度。

  • 他还可以使用 dd 从 Pi 到驱动器进行测试,看看是否只是 Pi 在驱动器上读/写的能力。 (2认同)