web-dev-qa-db-fra.com

Comment puis-je obtenir de meilleures vitesses de transfert USB dans (x) Ubuntu?

Lorsque je connecte mon lecteur USB 2.0 à Xubuntu et essayez de transférer de gros fichiers, les vitesses de transfert sont bonnes au début, mais déposez après quelques secondes à 1 à 2 mibr. D'après ce que j'ai lu, le transfert rapide au début est juste jusqu'à ce que le cache soit plein, puis la véritable vitesse de transfert USB est utilisée.

Sous Windows, la vitesse est constante à environ 25 MiB/s, même stick, connecté au même port.

Ceci est la sortie de DMESG lors de la connexion du bâton:

[ 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

Le bâton est automobile, voici la sortie de "montage":

/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)

Je dois utiliser VFAT car je souhaite transférer des fichiers sur mon système PlayStation3. Althouth Le test ci-dessous montre que ce n'est pas la cause principale.

Il semble que cela soit un problème commun dans (x) ubuntu. Je n'ai pas encore trouvé de solution claire. Il semble que le bâton doit être monté comme async au lieu de chasser, mais je ne suis pas vraiment sûr comment y parvenir. Cela ne me dérange pas si je dois démonter le bâton à chaque fois avant de le déconnecter tant que les vitesses de transfert sont meilleures.

Des idées?

Le 2 novembre: Ce rapport de bogue semble être associé: https://bugs.launchpad.net/ubuntu/+source/linux/ + Bug/182931 . Qu'est-ce qui m'inquiète, c'est que le problème semble avoir plus de 2 ans et n'est toujours pas résolu.

Le 10 novembre: J'ai lancé un test de lecture avec PALIMPSTEST (du projet GNOME-DISK-UTILITY). Cela me donne un taux de transfert minimal de 23 Mbit/s. Aussi essayé à Krusader maintenant, la vitesse de lecture est constamment> 20 mbit/s. Donc, le problème est vraiment d'écrire au bâton!

Voici une image d'un test en lecture-écriture dans le même programme:

enter image description here

Je devais supprimer complètement le système de fichiers avant le test qui montre que VFAT n'est pas la cause principale telle que mentionnée ci-dessus.

Un autre indice: si je transférais un fichier de 100 Mo, une fois qu'il est à 100%, il faut une longue période inhabituelle pour terminer le transfert. Cela me semble à nouveau que le fichier est en effet dans une cache, mais écrire sur le périphérique USB est très lent.

12 nov .: "Bonne nouvelle". Les problèmes semblent être un bâton de mémoire lui-même. Essayer un disque dur externe (mon livre ELITE 1TB) me donne une vitesse d'écriture constante d'environ 20 mib/s. J'ai d'abord essayé de reformater mon bâton de mémoire afin que je puisse vraiment comparer les deux (fichiers Sytems étaient différents). Après reformatage, les deux lecteurs sont montés exactement de la même manière:

/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 est le bâton (vitesse tombant encore après quelques secondes), mon livre est le disque dur externe avec une vitesse d'écriture constante de 20 mib/s.

Difficile de dire ce que le problème est vraiment. Comme je l'ai dit, dans Windows, je reçois aussi des vitesses d'écriture rapides avec le Sancruzer.

Modifier à la fin de Bounty: Pose-truisse, le problème avec le bâton n'est toujours pas résolu. Cependant, après 7 jours, je souhaite attribuer la prime bien sûr. Le commentaire d'Aking1012 était vraiment utile car elle a versé une nouvelle lumière sur la question. Cependant, je pense que je dois donner la prime à Harrymc alors qu'il a montré le plus d'effort d'avoir résolu le problème. Merci a tous.

14
pgruetter

L'article taux de transfert de stockage de masse USB 2.0 lente suggère que cela pourrait être un problème de l'appareil qui est monté par défaut avec l'option Sync:

Avez-vous une icône "Périphériques" sur votre bureau?
[.____] Si oui, ouvrez-le. Sinon, essayez d'ouvrir les supports:/à Konqueror.

Selct the Device puis -> Propriétés -> Montage (tag) et décochez la case synchrone. (Cela se souvient de vous rappeler, vous devez donc seulement avoir besoin de le faire une fois par périphérique).


Quelques idées supplémentaires proviennent du rapport de bogue Ecrivez sur le disque dur externe qui rend l'écriture très lente

  • vous passez à l'ASYNC à l'exécution de 'sudo mont -o remonte, async/dev/sda1' (ou quelle que soit votre partition montée/sont/sont)
  • vous créez une entrée FSTAB pour SDA qui le monte ASYNC (cela nécessite que le périphérique soit toujours branché à BOOTTIME)
  • vous changez de "synchronisation" sur 'async' dans la source PMount et reconstruisez le paquet

Voir aussi la discussion dans l'article en ce qui concerne PMOUT, si cela s'applique à votre système.


Une autre solution magique vient de SB 2.0 lente écriture mais lue rapide, solution encore? et implique de re-monter:

Lorsque je monte un lecteur USB sur/dev/sdc1 avec la ligne suivante

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

dans/etc/fstab, et essayez de copier un fichier de 5,2 Mo sur le lecteur du disque dur local, puis après une minute entière, 244 Ko ont été transférés. Copier un fichier de 29 Mo du lecteur externe sur le lecteur local prend environ 10 secondes.

Ensuite, si je le démonque, changez la ligne dans/etc/fstab en

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

ensuite, la copie du fichier de 29 Mo sur le disque externe prend une fraction imperceptible d'une seconde. Même avec la copie sur le disque local à partir du disque externe.


Voir cet article et la référence à "USBtree". Il indique comment vérifier si l'USB fonctionne comme 1,1 ou 2.0:

Linux et USB 2. .

11
harrymc

Vérifiez, Vérifiez vraiment , que votre appareil est branché sur un port USB qui prend en charge la vitesse totale.

Bien que cela puisse sembler idiot, des choses se mêlent parfois. Certaines cartes mères ont des ports haute et basse vitesse. Utilisez un outil comme SBView (note pour l'exécuter avec des droits superutilisateurs, Sudo usbview) Pour vérifier que votre appareil fonctionne à 480 Mo/s (USB 2.0) ou plus.

Par exemple, lorsque vous branchez habituellement votre appareil via une rallonge, un concentrateur de votre écran, etc., cela peut arriver - après les câbles de ré-pluggin sur votre ordinateur de bureau ou vous brancher accidentellement le moyeu à basse vitesse. (USB 1.) Port. Ensuite, tout appareil branché sur le moyeu fonctionnera à basse vitesse, tandis que d'autres, branchés ailleurs, fonctionnent à grande vitesse. Peut être très déroutant - et est une simple chose matérielle ... est arrivée à moi une fois et n'est pas liée à aucun modules de noyau USB, à montez des options.

0
isync

Nous devons nous assurer que le système essaie d'écrire dans les morceaux de bloc de programme/effacement. Avec la mémoire flash moderne, ils sont généralement de 1m-4m de taille. Pour ce faire, vous voulez vous assurer que le vôtre FS est aligné sur des blocs d'effacement et cette interface permet de transférer de bloc complet en une fois (pour des bâtons bon marché). Sinon, nous aurions une amplification en écriture, comme le Le système tente d'écrire dans des morceaux plus petits que d'effacer le bloc (faire de la lecture/MOD/ECRIRE) + Mauvais alignement.

Pour vérifier votre réglage actuel DO:

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

Vous pouvez régler les règles de la salle pour ces appareils. Voir https://unix.stackexchange.com/questions/67719/change-value-of-usb-max-sectors-for-an-entiper-family-of-devices .

Dans ce cas, j'avais remplacé max_sectors pour tous les périphériques, qui utilisaient la valeur par défaut de 240 (stockage USB) aux secteurs 32K ou 2K:

(Utilisez == pour vérifier, et = à attribuer):

Sur mon système (MAGEIA 4, 3.14.24 CORE I7) Je devais procéder à cette vitesse d'écriture terriblement lente (2 Mo/s) sur Kingston DT101 G2 16GB:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules et ajouter:

Subsystems == "SCSI", attr {max_sectors} == "240", attr {max_sectors} = "32678"

Et la vitesse de l'écriture DD a augmenté 3x fois :-) MC CP probablement 10-20X (après avoir commencé la première partition @ 8192'th, et reformaté avec des grappes alignées 64K):

fdisk -u /dev/sdh (faire compat DOS OFF),

mkfs.vfat /dev/sdh1 -n Kingston16G -s 128 **-R 4592** et utilise fsck.vfat -v /dev/sdh1 Pour vérifier l'alignement (chèque [Secteur de démarrage des données] doit être multiple de 128 (taille du cluster)). Ajustez le numéro des secteurs réservés (-R) si nécessaire.

Default max_Sectors (240) semblent provoquer une amplification d'écriture élevée sur certains des nouveaux lecteurs bon marché. Mais soyez très prudent avec un paramètre aussi élevé, l'effet similaire est atteint dans 2048 secteurs (probablement des blocs d'effacement de 1 m:

Subsystems == "SCSI", attr {max_sectors} == "240", attr {max_sectors} = "2048"

Testez tous vos anciens périphériques USB, qu'ils fonctionnent toujours bien. Utilisez les attributs de fournisseur/modèle dans les fichiers de règles pour être plus précis.

PS: Si vous utilisez EXT3/4:

Désactiver la journalisation et la foulée/stripe_width pour mkfs.ext3:

mkfs.ext3 -o ^ has_journal -e stride = [Lire la page FS Blocks] -E Stripe-largeur = [Bloc d'effacement des blocs FS]

0
Mark