Warum ist Samba SMB auf einem NAS in meinem LAN langsamer als die HTTP / NFS / FTP-Übertragung?

4

Ich möchte ein NAS einrichten, das ich kürzlich mit einem Raspberry Pi 2 (Quad-Core ARM Cortex-A7, 1 GB RAM, 32 GB microSD) mit Raspbian „Jessie“ ausgeführt habe:

  • Ich habe einen Laptop - einen HP Pavilion G6 -, der Ubuntu 14.04 ausführt und 802.11b / g / n verwendet.
  • Ich habe eine externe USB 2.0 NTFS-Festplatte, die mit Samba und Apache an ein Raspberry Pi 2 angeschlossen ist und mit 100 Mbps an das LAN meines WLAN-Routers angeschlossen ist.
  • Wenn ich versuche, eine Datei mit Samba SMB vom Raspberry Pi 2 zu übertragen, erhalte ich Übertragungsraten von weniger als 1 MB / s.
  • Wenn ich eine Datei mit HTTP vom Raspberry Pi 2 übertrage, erhalte ich eine typische Übertragungsrate von ca. 3-4 Mib / s [besser, aber immer noch ziemlich langsam].
  • Wenn ich eine Datei per FTP vom Raspberry Pi 2 übertrage, erhalte ich eine typische Übertragungsrate von etwa 2-4 MB / s [besser, aber nicht so gut wie HTTP].

Warum würde die Übertragung von Dateien mit Samba SMB übertragen Langsamer [3-4 mal] als die gleiche Datei mit HTTP?

Ich erwarte von meinem lokalen Netzwerk keine 10-12Mib / s - obwohl es in der Nähe schön wäre -, da die Geschwindigkeit des Netzwerks bei 100Mbs eingeschränkt ist und USB 2.0- und WLAN-Beschränkungen bestehen, aber dies sollte zumindest der Fall sein Sei besser als das Internet, das all diese Engpässe hat und was auch immer draußen ist.

Könnte es ein Problem mit der Samba-Konfiguration sein?

Testergebnisse [1,5 Gb Dateiübertragungsraten]:

  • USB 3.0 : 70-80 MB / s

    Nur USB.

    An den USB3.0-Anschluss des HP Pavilion G6-Laptops angeschlossene externe USB3.0-Festplatte

    Mit dem Dolphin-Dateimanager übertragene Datei.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

  • USB 2.0 : 20-30 MB / s

    Nur USB.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    Datei getestet mit pv raspberry~$ pv source > destination.

  • Ethernet LAN: 8-9MiB / s

    Verdrahtet.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    HP Pavilion G6 Laptop über Ethernet LAN mit dem Netzwerk verbunden.

    Datei mit Samba übertragen smb://.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

  • Internetdatei: 2-3MiB / s

    W-lan.

  • HTTP-WLAN-Geschwindigkeit: 3-4MiB / s

    W-lan.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    HP Pavilion G6-Laptop, der über 802.11b / g / n Wi-Fi mit dem Netzwerk verbunden ist.

    Datei auf dem Apache-Webserver http://.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

  • NFS-WLAN-Geschwindigkeit: 3-4MiB / s

    W-lan.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    HP Pavilion G6-Laptop, der über 802.11b / g / n Wi-Fi mit dem Netzwerk verbunden ist.

    Mit dem Dolphin-Dateimanager übertragene Datei.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

  • FTP-WLAN-Geschwindigkeit: 2-4MiB / s

    W-lan.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    HP Pavilion G6-Laptop, der über 802.11b / g / n Wi-Fi mit dem Netzwerk verbunden ist.

    Datei auf dem vsftp-Server ftp://.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

  • SMB-WLAN-Geschwindigkeit: & lt; 900KiB / s

    W-lan.

    Externe USB3.0-Festplatte, die an den USB2.0-Port des Raspberry Pi angeschlossen ist.

    HP Pavilion G6-Laptop, der über 802.11b / g / n Wi-Fi mit dem Netzwerk verbunden ist.

    Datei mit Samba übertragen smb://.

    Quelle: USB3.0-Festplatte

    Ziel: HP Pavilion G6 Laptop

Wie kann ich das verbessern?

Hier ist die Ausgabe von iwconfig Auf meinem Laptop:

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

Hier finden Sie Informationen zur Netzwerkverbindung meines Raspberry Pi über dmesg | grep eth0:

smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
teak
quelle
Was genau ist das "USB-Laufwerk"? Eine normale Festplatte? Wie ist die CPU-Last auf Ihrem Pi?
Daniel B
USB-Laufwerk = 3 1/4 Zoll Festplatte mit externem Gehäuse. CPU-Belastung für den Pi-Auftrag bei der Übertragung der Datei nur 5-6%
teak
Bitte bearbeiten Sie Ihre Frage, um folgende Fragen zu beantworten: Sie sagen, Sie verwenden "802.11 Wi-Fi", aber welche Variante? 802.11b? 802.11g? 802.11n? 802.11ac? Es kann hilfreich sein, genau zu wissen, um welche Marke / welches Modell Ihres Laptops es sich handelt, wie Ihr WLAN bereitgestellt wird und welche Marke und welches Modell genau sind.
JakeGould
danke, ich habe das hinzugefügt; Obwohl die Laptop- und WLAN-Variante in beiden Szenarien üblich sind.
teak
Ist es möglich, den HP über ein drahtgebundenes Ethernet zu testen, um zu sehen, ob die Ergebnisse unterschiedlich sind?
Rod MacPherson

Antworten:

2

Das auf dem Pi verwendete SoC-Gerät verfügt nicht über integrierte Ethernet-Unterstützung. Daher wird die Ethernet-Funktionalität des Pi von einem USB-Ethernet-Chip bereitgestellt, der den gleichen USB-Bus wie jedes andere möglicherweise angeschlossene USB-Peripheriegerät (einschließlich USB) verwendet Flash-Laufwerke). Dies ist wahrscheinlich der Hauptgrund, warum Sie eine miserable Leistung sehen.

Lösung? Leider gibt es keine, es ist eine Hardwarebeschränkung. Es hat nichts mit der Geschwindigkeit Ihrer Festplatte oder der Netzwerkkonfiguration zu tun, die Sie haben. Der USB-Bus des Pi ist an seine Grenzen gestoßen, während sowohl die Festplatte als auch das Ethernet gleichzeitig laufen.

Vielleicht möchten Sie etwas mehr in Ihr NAS-Setup investieren und einen Single-Board-Computer erwerben, der tatsächlich Ethernet enthält. Es gibt verschiedene Plattformen mit Gigabit-Ethernet-Unterstützung.

Hamza
quelle
Danke, Hamza, ich weiß von diesem gemeinsam genutzten Chip, aber ich bin nicht sicher, ob es sich hier um ein Problem handelt. Ich denke, da die Verwendung der Ethernet-Schnittstelle alleine ok ist, kann ich ~ 9Mib / s damit bekommen. der gemeinsame Faktor hier sieht aus wie Samba und / oder Wi-Fi
teak
Ich konnte die WLAN-Übertragungsgeschwindigkeit mithilfe von HTTP auf 3-4MiB / s erhöhen.
teak
2

TLDR: SMB & amp; AFP verfügt über eine umfangreichere Verschlüsselung und zeigt tatsächlich mehr als nur einen Index der Dateien. FTP und NFS geben Ihnen nur eine Liste und erledigen die Arbeit. Wie in einem anderen Kommentar erwähnt, ist Ihr RPI auf den USB-Bus beschränkt, der alle E / A-Daten bewegt. Aber 2-4Mbps ist garbo. Überprüfen Sie also Ihren Client und aktualisieren Sie Ihre gesamte Software. 10-18Mbps klingt mehr legitim, wenn Ihr RPI oder Comp nicht defekt ist.

Anscheinend spielt es keine Rolle, welche Hardware verwendet wird, Samba ist einfach langsam. AFP (Apple File Protocol) ist nicht besser. Ich arbeite seit 2008 sowohl mit Windows als auch mit Mac mit AFP und SMB. Es ist offensichtlich, dass ich mit Linux mehr Freiheit gefunden habe, zumal sie die WLAN-Fähigkeiten von Laptops wirklich verbessert haben und die Wirtschaft sprengt Dinge wie CHIP und RPIs aus den Ohren. Aber der Punkt ist, SMB, AFP, NFS und FTP haben alle Nachteile. SMB kann verbessert werden, wenn Sie einige der Sicherheitsfunktionen entfernen. Dies gilt auch für AFP. Der Grund, warum Sie eine Verbesserung bei FTP sehen können, ist die Tatsache, dass sehr bloße Knochen übertragen werden, da es keinen verschlüsselten Handshake gibt. NFS sperrt Dateien und ähnelt FTP nicht dem "Öffnen" (Kopieren von der Hostmaschine in den Arbeitsspeicher) und der Bearbeitung von Dateien, im Gegensatz zu SMB und AFP, die so aussehen, als würden Sie die Hostmaschine durchsuchen.

Tmanok
quelle
0

Basierend auf den in der Frage angegebenen Details können hier einige Faktoren die lokale Übertragungsrate beeinflussen:

  1. Die Ressourcen auf dem Raspberry Pi
  2. Die Lesegeschwindigkeit der über USB angeschlossenen Festplatte (die Lesegeschwindigkeit sollte normalerweise hoch sein, ist jedoch nicht sicher, ob das Laufwerk fehlerhaft ist)
  3. Die USB-Treiber des Raspberry Pi
  4. Der USB-Anschluss / das externe Gehäuse, das die Festplatte mit dem Raspberry Pi verbindet

Mögliche Maßnahmen zur Isolierung des Problems:

  1. Schließen Sie das "USB-Laufwerk" direkt an die von Ihnen verwendete Workstation an und überprüfen Sie die Übertragungsgeschwindigkeit
  2. Verwenden Sie eine Kabelverbindung am Raspberry Pi (falls noch nicht auf diese Weise eingerichtet).
  3. Kopieren Sie Dateien vom "USB-Laufwerk" auf einen anderen Speicherort des Raspberry Pi und überprüfen Sie die Übertragungsgeschwindigkeit
  4. Dateien vom Raspberry Pi kopieren (vom eMMC nicht von einem USB)
  5. Erstellen Sie einen Webserver und / oder FTP-Server auf dem Raspberry Pi, und lassen Sie die Dateien über http und ftp auf die Workstation übertragen, während sich die Workstation sowohl über drahtlose als auch über kabelgebundene Verbindungen befindet (4 verschiedene Szenarien - http mit Laptop auf Kabel, http mit Laptop auf Wireless) , ftp mit Laptop auf Kabel, ftp mit Laptop auf kabellos)
  6. Verbinden Sie das "USB-Laufwerk" mit einer anderen Workstation als dem Raspberry Pi und überprüfen Sie die Übertragungsgeschwindigkeit. Probieren Sie dies sowohl über Kabel- als auch über WLAN-Verbindungen aus.

Annahmen:

  • Es wurden keine anderen Geräte vom "NAS" ausgelesen, die eingerichtet wurden und die Übertragungsrate ebenfalls beeinflussen können.
  • Sie sind nicht über eine kabelgebundene UND eine drahtlose Verbindung mit Ihrem Netzwerk verbunden. In diesem Fall besteht die Möglichkeit, dass der Datenverkehr im Internet eine Schnittstelle verwendet und der lokale Datenverkehr eine andere, was die Übertragungsgeschwindigkeit beeinflussen kann.
thilina R
quelle
2
Er könnte auch mit dd vom Pi zum Laufwerk testen und sehen, ob es nur die Fähigkeit des Pi ist, auf dem Laufwerk zu lesen / schreiben.
MaQleod
Kommentare sind nicht für eine erweiterte Diskussion vorgesehen. Dieses Gespräch ist gewesen zum Chat verschoben .
Mokubai
0

Einfach ausgedrückt: NFS, FTP und HTTP sind schlankere Protokolle als die früheren SMB-Versionen. Obwohl ich immer gegen die Verwendung von FTP für die Dateiübertragung plädiere, fehlt es, wenn es schlanker als SMB ist, an vielen Funktionen, die den Remote-Speicher sicher machen.

Spätere Versionen von SMB bringen es zwar mehr mit NFS inline, aber es klingt, als würden Sie Samba 3.x ausführen, was ziemlich alt ist (wenn auch viel einfacher einzurichten).

Während wir über den Durchsatz sprechen, würde ich auch davon abraten, NTFS auf dem Raspberry Pi auszuführen, da der NTFS-Treiber von Linuxes ntfs3g ist, der in FUSE läuft. Für diejenigen, die sich mit FUSE nicht auskennen, ist dies eine Möglichkeit, Dateisystemtreiber zu schreiben, die im Benutzerbereich ausgeführt werden, und nicht über den FUSE-Wrapper, anstatt dass Entwickler Kernel-Module schreiben müssen. Dies bedeutet, dass Sie Treiber schneller, sicherer und interessanter schreiben können (z. B. habe ich FUSE-Treiber geschrieben, die den Inhalt von Textdateien in ein virtuelles Dateisystem konvertieren). Dies ist jedoch mit Kosten verbunden, da Sie ständig Daten zwischen den Computern austauschen Kernel und User Space. Dies wird auf PCs weniger auffällig sein - und ntfs3g ist auch ziemlich gut geschrieben. Dies hilft jedoch bei einem Gerät mit geringerem Platzbedarf wie dem Raspberry Pi, dass ein zusätzlicher CPU- und Speicher-Overhead die Leistung im Vergleich zu einem Streaming von Daten aus einer Linux-nativen Datei beeinträchtigen wird System wie ext3 / 4 oder XFS.

lmorg
quelle