Come posso ottenere migliori velocità di trasferimento USB in (X) Ubuntu?


14

Quando collego la mia unità USB 2.0 a Xubuntu e provo a trasferire file di grandi dimensioni, inizialmente le velocità di trasferimento sono buone ma scendono dopo pochi secondi a 1-2 Mib / s. Da quello che ho letto, il trasferimento rapido all'inizio è solo fino a quando la cache è piena, quindi viene utilizzata la velocità di trasferimento USB reale.

In Windows, la velocità è costante a circa 25 Mb / s, stesso stick, collegato alla stessa porta.

Questo è l'output di dmesg quando si collega lo stick:

[ 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

Lo stick è montato automaticamente, ecco l'output di "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)

Devo usare vfat perché voglio trasferire file sul mio sistema Playstation3. Anche il test di seguito mostra che questa non è la causa principale.

Sembra che questo sia un problema comune in (X) Ubuntu. Non ho ancora trovato una soluzione chiara. Sembra che lo stick debba essere montato come asincrono anziché a filo, ma non sono esattamente sicuro di come raggiungere questo obiettivo. Non mi dispiace se devo smontare la levetta ogni volta prima di scollegarla finché le velocità di trasferimento sono migliori.

Qualche idea?

2 nov: questa segnalazione di bug sembra essere correlata: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . Ciò che mi preoccupa è che il problema sembra avere più di 2 anni e non è ancora risolto.

10 nov: Ho iniziato un test di lettura con palimpstest (dal progetto gnome-disk-utility). Questo mi dà una velocità di trasferimento minima di 23 MBit / s. Anche provato in krusader ora, la velocità di lettura è costantemente> 20 MBit / s. Quindi il problema è proprio scrivere sul bastone!

Ecco un'immagine di un test di lettura-scrittura nello stesso programma:

inserisci qui la descrizione dell'immagine

Ho dovuto eliminare completamente il filesystem prima del test, il che dimostra che vfat non è la causa principale come menzionato sopra.

Un altro suggerimento: se trasferisco un file da 100 MB, una volta che è al 100% ci vuole un tempo insolito per completare il trasferimento. Questo mi sembra nuovamente che il file sia effettivamente in una cache ma la scrittura sul dispositivo USB è molto lenta.

12 nov: "Buone notizie". Il problema sembra essere il memory stick stesso. Provare un hard disk esterno (My Book Elite 1TB) mi dà una velocità di scrittura costante di circa 20 MiB / s. Prima ho provato a riformattare il mio memory stick in modo da poter davvero confrontare i due (i sistemi di file erano diversi). Dopo la riformattazione, entrambe le unità vengono montate esattamente allo stesso modo:

/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 è lo stick (la velocità scende ancora dopo alcuni secondi), My Book è l'hard disk esterno con una velocità di scrittura costante di 20 MiB / s.

Difficile dire quale sia il problema allora. Come ho detto, in Windows ottengo velocità di scrittura ugualmente elevate anche con SanCruzer.

Modifica alla fine della taglia: sfortunatamente, il problema con il bastone non è ancora risolto. Tuttavia, dopo 7 giorni, voglio assegnare la generosità, ovviamente. Il commento di aking1012 è stato davvero utile in quanto ha gettato una nuova luce sulla questione. Tuttavia, sento che devo dare la grazia ad harrymc mentre mostrava il massimo sforzo per risolvere il problema. Ringrazia tutti.



1
c'è una differenza tra la velocità di scrittura per unità flash e veri HD esterni ... solo una domanda
RobotHumans,

Ottima idea! Grazie mille per il tipp, si prega di vedere il risultato nel mio aggiornamento (12 novembre). Il problema non è ancora risolto, ma questo lo restringe davvero!
pgruetter,

FWIW, flushè improbabile che l' opzione nell'output di montaggio sia di aiuto. Penso che sia anche peggio di sync.
Beldaz,

Risposte:


11

L'articolo Velocità di trasferimento di massa di USB 2.0 lento suggerisce che questo potrebbe essere un problema di montaggio del dispositivo di default con l'opzione di sincronizzazione:

Hai un'icona "Dispositivi" sul desktop?
In tal caso, aprilo. In caso contrario, prova ad aprire media: / in konqueror.

Seleziona quindi il dispositivo -> Proprietà -> Montaggio (tag) e deseleziona la casella Sincrona. (Questo viene ricordato, quindi dovresti farlo solo una volta per dispositivo).


Altre idee provengono dalla segnalazione di bug. Scrivere su hdd esterno rendendo la scrittura molto lenta

  • si passa ad asincrono in fase di runtime tramite 'sudo mount -o remount, async / dev / sda1' (o qualunque sia la / le partizione montata / sono)
  • crei una voce fstab per sda che lo monta in modo asincrono (ciò richiede che il dispositivo sia sempre collegato all'avvio)
  • si cambia 'sync' in 'async' nell'origine pmount e si ricostruisce il pacchetto

Vedi anche la discussione nell'articolo riguardante pmount, se questo vale per il tuo sistema.


Un'altra soluzione magica viene da USB 2.0 scrittura lenta ma lettura veloce, soluzione ancora? e comporta il re-mount:

Quando monto un'unità USB su / dev / sdc1 con la seguente riga

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

in / etc / fstab e provare a copiare un file da 5,2 MB nell'unità dal disco rigido locale, quindi dopo un minuto intero sono stati trasferiti 244 KB. La copia di un file da 29 MB dall'unità esterna all'unità locale richiede circa 10 secondi.

Quindi se lo smonto, cambio la linea in / etc / fstab in

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

quindi la copia del file da 29 MB sul disco esterno richiede una frazione impercettibile di secondo. Lo stesso vale per la copia sul disco locale dal disco esterno.


Vedi questo articolo e il riferimento a "usbtree". Spiega come verificare se l'USB funziona come 1.1 o 2.0:

Linux e USB 2.0 .


Sembra che questo sia specifico per KDE. Sto usando XFCE4 (Xubuntu). Ho provato comunque il suggerimento, poiché Konquerer è installato. media di apertura: / mi dà l'eccezione "Protocollo non supportato". In qualsiasi altro modo posso scoprire se è montato "asincrono" o "sincronizzato"?
pgruetter,

Ho aggiunto un altro articolo utile.
harrymc,

rimontaggio non fa nulla. L'output di "mount" è sempre lo stesso. Vedi il mio messaggio iniziale per questo. Ho anche provato a montarlo con pmount ora, grazie per il suggerimento. L'aiuto di pmount afferma che monta asincrono di default. Tuttavia, le velocità di trasferimento sono molto elevate prima e diminuiscono dopo pochi secondi. Sto iniziando a credere che lo stick sia effettivamente montato asincrono ma il problema è altrove !?
pgruetter,

Aggiunto un altro tentativo.
harrymc,

Grazie harrymc, apprezzo molto il tuo continuo sforzo. Sfortunatamente, non è ancora possibile. L'ho provato con le impostazioni menzionate in / etc / fstab e installandolo. Se provo l'opzione con la sincronizzazione, è anche peggio. Ottengo solo circa 100-200 Kib / s. Senza l'opzione di sincronizzazione, è sempre lo stesso: veloce all'inizio, scendendo a 1-2 MiB / s.
pgruetter,

2

L'accesso all'unità è di solito bufferizzato in modalità asincrona. È probabile che il burst veloce iniziale tocchi la cache di memoria. La velocità lenta è la velocità di scrittura effettiva.

Se si dispone di una chiavetta USB che lampeggia durante il trasferimento, provare alcuni test. Ho scoperto che le scritture possono continuare per un po 'dopo che la copia è stata completata.

Il montaggio in modalità asincrona anziché in modalità sincronizzazione consente alla copia di procedere più velocemente, ma non offre la stessa sicurezza con cui i dati copiati vengono realmente trasferiti.

Controlla le opzioni in man mount. Alcuni formati consentono di rinviare gli aggiornamenti dei metadati (directory, tabella di allocazione dei file, ecc.). Ciò ridurrà la quantità di dati che devono essere copiati. Ciò aumenta leggermente il rischio di perdita dei dati.


Grazie per le informazioni, questo in realtà conferma le mie ipotesi. L'unità lampeggia costantemente durante il trasferimento, tuttavia non lampeggia a lungo dopo il trasferimento. Sospetto che ciò avvenga solo perché il file manager sta ancora accedendo allo stick. La sicurezza non sarebbe un grosso problema, sono davvero solo interessato alla velocità. Interessante sui metadati, lo controllerò. Tuttavia, pensi che questo cambierà qualcosa durante il trasferimento di file di grandi dimensioni (500 MiB)?
pgruetter,

Inoltre, ciò che mi confonde ancora, perché è molto veloce con l'hard disk esterno ma non con lo stick? Le opzioni di montaggio sono esattamente le stesse, ho trasferito esattamente lo stesso file di test.
pgruetter,

1
Una scrittura di 4 KiB su un disco rigido è in genere una scrittura di 4 KiB, implementata dal controller del disco rigido. Una scrittura di 4 KiB su una memoria Flash è in genere una lettura di 128 KiB su una memoria temporanea, una sovrascrittura di 4 KiB all'offset corretto di detta memoria temporanea, un'operazione di cancellazione di 128 KiB e una scrittura di 128 KiB, tutto quanto sopra implementato dal Controller di memoria flash. Più o meno :)
tzot

1

Quindi sono arrivato a questa pagina tramite una ricerca su Google dello stesso problema ("Ubuntu 15 velocizza il trasferimento USB") perché i miei trasferimenti erano in esecuzione a 75kb / s.

Questa probabilmente era solo la soluzione per la mia configurazione, ma il mio drive USB 3 da 16 GB è stato formattato in GPT fat32, ho cancellato tutte le partizioni, inizializzato su MBR, creato una singola partizione NTFS, ricollegato al mio PC Ubuntu e ora sta trasferendo un file da 10 GB a oltre 50 MB / s. Per me, problema risolto.


Confermato che per Mint 18.3 (Ubuntu 16.04) il passaggio da fat32 a ntfs è stato un enorme miglioramento.
Raven,

0

Dobbiamo assicurarci che il sistema tenti di scrivere nel programma / cancellare blocchi di blocchi. Con la moderna memoria flash sono generalmente di dimensioni 1M-4M. Per fare ciò, assicurati che il tuo FS sia allineato per cancellare i blocchi e che l'interfaccia consenta il trasferimento dell'intero blocco in una volta (per stick economici). Altrimenti otterremmo un'amplificazione in scrittura, poiché il sistema tenta di scrivere in blocchi più piccoli, che cancellare il blocco (facendo lettura / mod / scrittura) + disallineamento del blocco.

Per verificare le impostazioni correnti, procedi come segue:

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

È possibile ottimizzare le regole di sala per tali dispositivi. Vedi /unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .

In questo caso avevo sostituito max_sector per tutti i dispositivi, che utilizzavano valori predefiniti da 240 (archiviazione USB) a settori 32K o settori 2K:

(utilizzare == per verificare e = per assegnare):

Sul mio sistema (Mageia 4, 3.14.24 core i7) ho dovuto farlo a causa di velocità di scrittura terribilmente lente (2 MB / sec) su Kingston DT101 G2 16GB:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules e aggiungi:

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

E la velocità di scrittura del dd è aumentata di 3 volte :-) mc cp probabilmente di 10-20 volte (dopo che avevo avviato la prima partizione all'8192 ° settore e riformattata con cluster allineati a 64k):

fdisk -u /dev/sdh (disattiva la compatibilità DOS se attivata),

mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**e utilizzare fsck.vfat -v /dev/sdh1per verificare l'allineamento (selezionare [settore avvio dati] deve essere multiplo di 128 (dimensione del cluster)). Regola il numero dei settori riservati (-R) se necessario.

I max_sector predefiniti (240) sembrano causare un'elevata amplificazione in scrittura su alcune delle nuove unità economiche. Ma fai molta attenzione con un'impostazione così alta, l'effetto simile si ottiene in 2048 settori (probabilmente blocchi di cancellazione 1M:

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

Metti alla prova tutti i tuoi vecchi dispositivi USB, che funzionino ancora bene. Utilizzare gli attributi fornitore / modello nei file delle regole per essere più specifici.

PS: se si utilizza ext3 / 4:

Disabilita Journaling e imposta stride / stripe_width per mkfs.ext3:

mkfs.ext3 -O ^ has_journal -E stride = [leggi blocchi fs pagina] -E stripe-width = [cancella blocco blocchi fs]


0

Ho avuto dei problemi anche con la velocità di trasferimento su un disco esterno WD, dopo averlo aperto in un SO Windows, ho sempre usato LINUX, dopo che la velocità di trasferimento era di 1,5 mb / s rispetto a quando ho smontato il disco rigido esterno, ho eseguito dmesg lì stava dicendo che sdb1 era smontato in modo non corretto, funzionava con un fsck, che faceva alcune riparazioni e dopo che 20 mb / s di velocità di trasferimento di nuovo quando si copiava da sda a disco esterno.
"fsck è sempre un rischio se si dispone di dati, ma ha funzionato per me, senza perdita di dati"


0

Controlla, controlla davvero , che il tuo dispositivo sia collegato a una porta USB che supporti la massima velocità.

Anche se questo può sembrare sciocco, a volte le cose si confondono. Alcune schede madri hanno porte ad alta e bassa velocità. Utilizzare uno strumento come usbview (nota per eseguirlo con i diritti di superutente sudo usbview) per verificare che il dispositivo funzioni a 480 Mb / s (USB 2.0) o più.

Ad esempio, quando di solito si collega il dispositivo tramite una prolunga, un hub sul display ecc., Potrebbe accadere - dopo aver ricollegato i cavi sul computer della scrivania o giù di lì - che si è accidentalmente collegato l'hub a bassa velocità Porta (USB 1.). Quindi, tutti i dispositivi collegati all'hub funzioneranno a bassa velocità, mentre altri, collegati altrove, funzioneranno ad alta velocità. Può essere molto confuso - ed è una cosa hardware semplice ... Mi è successo una volta, e non è correlato a nessun modulo del kernel USB, opzioni di montaggio o simili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.