Wie erreiche ich bessere USB-Übertragungsgeschwindigkeiten in (X) ubuntu?

14

Wenn ich mein USB 2.0-Laufwerk an Xubuntu anschließe und versuche, große Dateien zu übertragen, ist die Übertragungsgeschwindigkeit zunächst gut, sinkt jedoch nach einigen Sekunden auf 1-2 Mib / s. Nach dem, was ich gelesen habe, ist die schnelle Übertragung am Anfang nur so lange, bis der Cache voll ist, dann wird die tatsächliche USB-Übertragungsgeschwindigkeit verwendet.

Unter Windows ist die Geschwindigkeit konstant bei ca. 25Mib / s, der gleiche Stick ist an den gleichen Port angeschlossen.

Dies ist die Ausgabe von dmesg beim Anschließen des Sticks:

[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access     SanDisk  Cruzer           8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238]  sdb: sdb1

Der Stick ist automounted, hier ist die Ausgabe von "mount":

/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)

Ich muss vfat verwenden, da ich Dateien auf mein Playstation3-System übertragen möchte. Obwohl der Test unten zeigt, dass dies nicht die Hauptursache ist.

Dies scheint ein häufiges Problem in (X) ubuntu zu sein. Ich habe noch keine klare Lösung gefunden. Es scheint, dass der Stick asynchron anstatt bündig montiert werden muss, aber ich weiß nicht genau, wie ich das erreichen soll. Es macht mir nichts aus, wenn ich den Stick jedes Mal aushängen muss, bevor ich ihn trenne, solange die Übertragungsgeschwindigkeit besser ist.

Irgendwelche Ideen?

2. November: Dieser Fehlerbericht scheint im Zusammenhang zu stehen: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . Was mich beunruhigt ist, dass das Problem über 2 Jahre alt zu sein scheint und immer noch nicht gelöst ist.

10. November: Ich habe einen Lesetest mit palimpstest gestartet (aus dem Gnome-Disk-Utility-Projekt). Dies gibt mir eine minimale Übertragungsrate von 23 MBit / s. Habe es jetzt auch im krusader probiert, die Lesegeschwindigkeit ist konstant> 20 MBit / s. Das Problem ist also wirklich, nur auf den Stick zu schreiben!

Hier ist ein Bild eines Lese- / Schreibtests im selben Programm:

Bildbeschreibung hier eingeben

Ich musste das Dateisystem vor dem Test komplett löschen, was zeigt, dass vfat nicht die Hauptursache ist, wie oben erwähnt.

Ein weiterer Hinweis: Wenn ich eine 100-MB-Datei übertrage, dauert es ungewöhnlich lange, bis die Übertragung tatsächlich abgeschlossen ist. Das sieht für mich wieder so aus, als ob sich die Datei zwar in einem Cache befindet, aber das Schreiben auf das USB-Gerät sehr langsam ist.

12. November: "Gute Nachrichten". Das Problem scheint der Memory Stick selbst zu sein. Wenn ich eine externe Festplatte (My Book Elite 1 TB) versuche, erhalte ich eine konstante Schreibgeschwindigkeit von ca. 20 MiB / s. Ich habe zuerst versucht, meinen Memory Stick neu zu formatieren, damit ich die beiden wirklich vergleichen kann (Dateisysteme waren unterschiedlich). Nach der Neuformatierung werden beide Laufwerke auf die gleiche Weise gemountet:

/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Cruzer ist der Stick (die Geschwindigkeit fällt nach einigen Sekunden immer noch ab), My Book ist die externe Festplatte mit einer konstanten Schreibgeschwindigkeit von 20 MiB / s.

Schwer zu sagen, was das Problem dann wirklich ist. Wie gesagt, in Windows bekomme ich mit dem SanCruzer auch gleich hohe Schreibgeschwindigkeiten.

Bearbeiten am Ende des Kopfgeldes: Leider ist das Problem mit dem Stick immer noch nicht gelöst. Allerdings möchte ich nach 7 Tagen das Kopfgeld natürlich vergeben. Der Kommentar von aking1012 war sehr hilfreich, da er ein neues Licht auf die Angelegenheit wirft. Ich habe jedoch das Gefühl, dass ich Harrymc das Kopfgeld geben muss, da er die größte Anstrengung zeigte, um das Problem zu lösen. Vielen Dank an alle.

pgruetter
quelle
1
Gibt
Exzellente Idee! Vielen Dank für den Tipp, siehe das Ergebnis in meinem Update (12. November). Das Problem ist noch nicht gelöst, aber das schränkt es wirklich ein!
pgruetter
FWIW, es flushist unwahrscheinlich , dass die Option in Ihrer Mount-Ausgabe hilft. Ich denke das ist noch schlimmer als sync.
Beldaz

Antworten:

11

Der Artikel Langsame USB 2.0-Massenspeicherübertragungsrate deutet darauf hin, dass dies möglicherweise ein Problem ist, wenn das Gerät standardmäßig mit der Synchronisierungsoption aktiviert wird:

Haben Sie ein "Geräte" -Symbol auf Ihrem Desktop?
Wenn ja, öffne es. Wenn nicht, öffnen Sie media: / in konqueror.

Wählen Sie das Gerät dann -> Eigenschaften -> Montage (Tag) und deaktivieren Sie das Kontrollkästchen Synchron. (Dies wird gespeichert, sodass Sie es nur einmal pro Gerät ausführen müssen.)


Weitere Ideen stammen aus dem Fehlerbericht Write through on external hdd, wodurch das Schreiben sehr langsam wird

  • Sie wechseln zur Laufzeit zu Async, indem Sie 'sudo mount -o remount, async / dev / sda1' (oder was auch immer Ihre gemountete (n) Partition (en) ist / sind)
  • Sie erstellen einen fstab-Eintrag für sda, der es asynchron mounten soll (dies setzt voraus, dass das Gerät immer zur Startzeit angeschlossen ist)
  • Sie ändern in der pmount-Quelle 'sync' in 'async' und erstellen das Paket neu

Siehe auch die Diskussion im Artikel bezüglich pmount, falls dies auf Ihr System zutrifft.


Eine andere magische Lösung kommt von USB 2.0 langsames Schreiben aber schnelles Lesen, Lösung schon? und beinhaltet re-mount:

Wenn ich ein USB-Laufwerk an / dev / sdc1 mit der folgenden Zeile anhänge

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0

Versuchen Sie in / etc / fstab, eine 5,2-MB-Datei von der lokalen Festplatte auf das Laufwerk zu kopieren, und übertragen Sie dann nach einer ganzen Minute 244 KB. Das Kopieren einer 29-MB-Datei vom externen Laufwerk auf das lokale Laufwerk dauert ca. 10 Sekunden.

Wenn ich es dann aushänge, ändern Sie die Zeile in / etc / fstab in

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0

Das Kopieren der 29-MB-Datei auf die externe Festplatte dauert einen nicht wahrnehmbaren Sekundenbruchteil. Dasselbe gilt für das Kopieren von der externen Festplatte auf die lokale Festplatte.


Siehe diesen Artikel und den Verweis auf "usbtree". Hier erfahren Sie, wie Sie überprüfen können, ob der USB-Anschluss als 1.1 oder 2.0 funktioniert:

Linux und USB 2.0 .

Harrymc
quelle
Es scheint, dass dies spezifisch für KDE ist. Ich benutze XFCE4 (Xubuntu). Ich habe den Vorschlag trotzdem probiert, da Konquerer installiert ist. öffnende Medien: / gibt mir die Ausnahme "Protokoll nicht unterstützt". Wie kann ich herausfinden, ob es "asynchron" oder "synchron" gemountet ist?
pgruetter
Ich habe einen weiteren nützlichen Artikel hinzugefügt.
Harrymc
remount macht nichts. Die Ausgabe von "mount" ist immer noch dieselbe. Siehe meine anfängliche Nachricht dafür. Ich habe auch versucht, es mit pmount zu mounten, danke für den Vorschlag. Die Hilfe von pmount besagt, dass es standardmäßig asynchron gemountet wird. Trotzdem sind die Übertragungsgeschwindigkeiten zunächst sehr hoch und fallen nach einigen Sekunden ab. Ich fange an zu glauben, dass der Stick tatsächlich asynchron montiert ist, aber das Problem liegt woanders !?
pgruetter 10.11.10
Noch ein Versuch hinzugefügt.
Harrymc
Vielen Dank Harrymc, schätzen Sie wirklich Ihre kontinuierliche Anstrengung. Leider immer noch keine Chance. Ich habe es mit den genannten Einstellungen in / etc / fstab versucht und gemountet. Wenn ich die Option mit Synchronisierung versuche, ist es noch schlimmer. Ich bekomme nur um die 100-200 Kib / s. Ohne die Synchronisierungsoption ist es immer noch dasselbe: am Anfang schnell und auf 1-2 MiB / s abfallend.
pgruetter 10.11.10
2

Der Zugriff auf das Laufwerk wird normalerweise im asynchronen Modus gepuffert. Der anfängliche schnelle Burst führt wahrscheinlich zum Cache-Speicher. Langsame Geschwindigkeit ist die tatsächliche Schreibgeschwindigkeit.

Wenn Sie einen USB-Stick haben, der während der Übertragung blinkt, versuchen Sie es mit einigen Tests. Ich fand, dass die Schreibvorgänge noch eine Weile dauern können, nachdem der Kopiervorgang abgeschlossen ist.

Durch das Aktivieren im asynchronen Modus anstelle des Synchronisierungsmodus wird der Kopiervorgang beschleunigt, es wird jedoch nicht die gleiche Sicherheit wie bei der tatsächlichen Übertragung von kopierten Daten geboten.

Überprüfen Sie die Optionen in man mount. In einigen Formaten können Aktualisierungen von Metadaten (Verzeichnis, Dateizuordnungstabelle usw.) zurückgestellt werden. Dadurch wird die Datenmenge verringert, die kopiert werden muss. Dies erhöht das Risiko von Datenverlusten geringfügig.

BillThor
quelle
Danke für die Info, das bestätigt tatsächlich meine Vermutungen. Das Laufwerk blinkt während der Übertragung ständig, es blinkt jedoch nicht lange nach der Übertragung. Ich vermute das nur, weil der Dateimanager noch auf den Stick zugreift. Sicherheit wäre kein großes Problem, ich bin wirklich nur an der Geschwindigkeit interessiert. Interessant an den Metadaten, ich werde das überprüfen. Glauben Sie jedoch, dass sich dadurch beim Übertragen großer Dateien (500 MiB) etwas ändert?
pgruetter
Auch, was mich immer noch verwundert, warum ist es mit der externen Festplatte sehr schnell, aber nicht mit dem Stick? Die Einhängeoptionen sind exakt gleich, ich habe genau die gleiche Testdatei übertragen.
pgruetter
1
Ein 4-KB-Schreibzugriff auf eine Festplatte ist in der Regel ein Schreibzugriff von 4 KB, der vom Festplattencontroller implementiert wird. Ein 4-KByte-Schreibzugriff auf einen Flash-Speicher ist typischerweise ein 128-KByte-Lesezugriff auf einen temporären Speicher, ein 4-KByte-Überschreibvorgang bei korrektem Versatz des temporären Speichers, eine 128-KByte-Löschoperation und ein 128-KByte-Schreibzugriff, die alle oben durch das implementiert wurden Flash-Speichercontroller. Mehr oder weniger :)
tzot
1

Ich bin zu dieser Seite über eine Google-Suche mit demselben Thema gekommen ("Ubuntu 15 beschleunigt die USB-Übertragung"), da meine Übertragungen mit 75 KBit / s ausgeführt wurden.

Dies war wahrscheinlich nur die Lösung für mein Setup, aber mein 16-GB-USB-3-Laufwerk wurde auf GPT fat32 formatiert. Ich habe alle Partitionen gelöscht, auf MBR initialisiert, eine einzelne NTFS-Partition erstellt, sie wieder in meinen Ubuntu-PC gesteckt und überträgt jetzt eine 10-GB-Datei bei über 50 MB / s. Für mich ist das Problem gelöst.

Orb Server
quelle
Es wurde bestätigt, dass der Wechsel von fat32 zu ntfs für Mint 18.3 (Ubuntu 16.04) eine massive Verbesserung darstellt.
Raven
0

Wir müssen sicherstellen, dass das System versucht, in Programm- / Löschblockblöcke zu schreiben. Mit modernen Flash-Speichern haben sie normalerweise eine Größe von 1 bis 4 MB. Um dies zu tun, möchten Sie sicherstellen, dass Ihr FS so ausgerichtet ist, dass er Blöcke löscht, und dass diese Schnittstelle den gesamten Blocktransfer auf einmal ermöglicht (für billige Sticks). Andernfalls würden wir eine Schreibverstärkung erhalten, da das System versucht, in kleinere Blöcke zu schreiben, als Block löschen (Lesen / Modifizieren / Schreiben) + Blockfehlausrichtung.

Um Ihre aktuelle Einstellung zu überprüfen, gehen Sie wie folgt vor:

cat /sys/block/sd**X**/device/max_sectors

Sie können die Hallenregeln für diese Geräte anpassen. Siehe /unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .

In diesem Fall hatte ich max_sectors für alle Geräte ersetzt, die standardmäßig 240 (USB-Speicher) für 32-KB-Sektoren oder 2-KB-Sektoren verwendeten:

(mit == prüfen und = zuweisen):

Auf meinem System (Mageia 4, 3.14.24 Core i7) musste ich dies aufgrund der extrem langsamen Schreibgeschwindigkeit (2 MB / Sek.) Auf dem Kingston DT101 G2 16GB tun:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules und füge hinzu:

SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"

Und die dd-Schreibgeschwindigkeit stieg um das 3-fache :-) mc cp wahrscheinlich um das 10-20-fache (nachdem ich die erste Partition im 8192-ten Sektor gestartet und mit 64k-ausgerichteten Clustern neu formatiert hatte):

fdisk -u /dev/sdh (DOS-Kompatibilität deaktivieren, wenn aktiviert),

mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**und fsck.vfat -v /dev/sdh1zur Überprüfung der Ausrichtung verwenden (überprüfen Sie, ob [Datenstartsektor] ein Vielfaches von 128 (Clustergröße) sein sollte). Passen Sie bei Bedarf die Anzahl der reservierten Sektoren (-R) an.

Die Standardeinstellung max_sectors (240) scheint auf einigen der billigen neuen Laufwerke eine hohe Schreibverstärkung zu verursachen. Aber seien Sie sehr vorsichtig mit solch einer hohen Einstellung, der ähnliche Effekt wird bei 2048 Sektoren erzielt (wahrscheinlich 1 Million Löschblöcke:

SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"

Testen Sie alle Ihre alten USB-Geräte, dass sie immer noch gut funktionieren. Verwenden Sie Hersteller- / Modellattribute in den Regeldateien, um genauere Angaben zu erhalten.

PS: Bei Verwendung von ext3 / 4:

Deaktiviere Journaling und setze stride / stripe_width für mkfs.ext3:

mkfs.ext3 -O ^ has_journal -E stride = [Seite fs-Blöcke lesen] -E stripe-width = [Block fs-Blöcke löschen]

Kennzeichen
quelle
0

Ich hatte auch einige Probleme mit der Übertragungsrate auf einer externen WD-Festplatte, nachdem ich sie in einem Windows-SO geöffnet hatte, benutzte ich immer LINUX, danach betrug die Übertragungsrate etwa 1,5 MB / s, als ich die externe Festplatte abmeldete, und ließ sie dort laufen habe gesagt, dass sdb1 unversehens unmontiert war, habe ein fsck ausgeführt, das ein paar reparaturen gemacht und danach 20mb / s transferrate beim kopieren von sda auf externe festplatte wieder.
"fsck ist immer ein Risiko, wenn Sie Daten haben, aber es hat bei mir funktioniert, ohne Datenverlust"

Anymamundy
quelle
0

Überprüfen Sie wirklich , ob Ihr Gerät an einen USB-Anschluss angeschlossen ist, der volle Geschwindigkeit unterstützt.

Obwohl dies albern klingt, geraten die Dinge manchmal durcheinander. Einige Motherboards verfügen über Hoch- und Niedriggeschwindigkeitsanschlüsse. Verwenden Sie ein Tool wie usbview (Hinweis, um es mit Superuser-Rechten auszuführen sudo usbview), um zu überprüfen, ob Ihr Gerät mit 480 MBit / s (USB 2.0) oder mehr betrieben wird.

Wenn Sie Ihr Gerät beispielsweise normalerweise über ein Verlängerungskabel, einen Hub an Ihrem Bildschirm usw. anschließen, kann es vorkommen, dass Sie den Hub versehentlich mit einer geringen Geschwindigkeit angeschlossen haben, nachdem Sie die Kabel an Ihrem Desktop-Computer neu angeschlossen haben (USB 1.) Anschluss. Dann arbeiten alle an den Hub angeschlossenen Geräte mit niedriger Geschwindigkeit, während andere, die an einer anderen Stelle angeschlossen sind, mit hoher Geschwindigkeit arbeiten. Kann sehr verwirrend sein - und ist eine einfache Hardware-Sache ... Ist mir einmal passiert und hat nichts mit USB-Kernel-Modulen, Mount-Optionen oder so zu tun.

isync
quelle