Kiedy podłączam dysk USB 2.0 do Xubuntu i próbuję przesyłać duże pliki, prędkości przesyłania są na początku dobre, ale po kilku sekundach spadają do 1-2 Mib / s. Z tego, co przeczytałem, szybki transfer na początku trwa tylko do momentu zapełnienia pamięci podręcznej, wtedy używana jest prawdziwa prędkość transferu USB.
W systemie Windows prędkość jest stała i wynosi około 25 Mb / s, ten sam drążek, podłączony do tego samego portu.
Oto wynik działania dmesg podczas podłączania drążka:
[ 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
Drążek jest automatycznie montowany, oto wyjście „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)
Muszę użyć vfat, ponieważ chcę przenieść pliki do mojego systemu Playstation3. Althouth poniższy test pokazuje, że nie jest to główna przyczyna.
Wygląda na to, że jest to powszechny problem w (X) ubuntu. Nie znalazłem jeszcze jasnego rozwiązania. Wygląda na to, że kij musi być zamontowany asynchronicznie zamiast spłukiwania, ale nie jestem do końca pewien, jak to osiągnąć. Nie mam nic przeciwko, jeśli muszę odmontowywać drążek za każdym razem, zanim go odłączę, o ile prędkości transferu są lepsze.
Jakieś pomysły?
2 listopada: Wygląda na to, że ten raport o błędzie jest powiązany: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . Martwi mnie to, że problem ma ponad 2 lata i nadal nie został rozwiązany.
10 listopada: Rozpocząłem test odczytu od palimpstest (z projektu gnome-disk-utility). Daje mi to minimalną szybkość transferu 23 MBit / s. Wypróbowałem to także teraz w krusader, prędkość odczytu wynosi stale> 20 MBit / s. Tak więc problemem jest po prostu pisanie na patyku!
Oto obraz testu odczytu i zapisu w tym samym programie:
Musiałem całkowicie usunąć system plików przed testem, który pokazuje, że vfat nie jest główną przyczyną, jak wspomniano powyżej.
Kolejna wskazówka: jeśli przesyłam plik 100 MB, gdy jest on w 100%, ukończenie transferu zajmuje nietypowo dużo czasu. To znów wygląda na to, że plik rzeczywiście znajduje się w pamięci podręcznej, ale zapis na urządzenie USB jest bardzo wolny.
12 listopada: „Dobre wieści”. Problemem wydaje się być sama pamięć. Wypróbowanie zewnętrznego dysku twardego (My Book Elite 1 TB) zapewnia stałą prędkość zapisu wynoszącą około 20 MiB / s. Najpierw próbowałem sformatować kartę pamięci, aby naprawdę móc je porównać (systemy plików były różne). Po ponownym sformatowaniu oba dyski są montowane dokładnie w ten sam sposób:
/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 to patyk (prędkość wciąż spada po kilku sekundach), My Book to zewnętrzny dysk twardy o stałej prędkości zapisu 20 MiB / s.
Trudno powiedzieć, na czym tak naprawdę polega problem. Jak powiedziałem, w systemie Windows uzyskuję równie szybkie prędkości zapisu dzięki SanCruzer.
Edycja pod koniec nagrody: Niestety, problem z kijem nadal nie został rozwiązany. Jednak po 7 dniach chcę przyznać nagrodę oczywiście. Komentarz od aking1012 był naprawdę pomocny, ponieważ rzucił nowe światło na tę sprawę. Czuję jednak, że muszę dać nagrodę harrymcowi, ponieważ wykazał największy wysiłek w rozwiązaniu problemu. Dziękuje wszystkim.
flush
opcja w wyjściu montowania raczej nie pomoże. Myślę, że to nawet gorsze niżsync
.Odpowiedzi:
Artykuł Powolna masowa prędkość transferu USB 2.0 sugeruje, że może to być problem z domyślnym podłączeniem urządzenia z opcją synchronizacji:
Więcej pomysłów pochodzi z raportu o błędach. Pisz na zewnętrznym dysku twardym, co powoduje, że pisanie jest bardzo wolne
Zobacz także dyskusję w artykule dotyczącą pmount, jeśli dotyczy to twojego systemu.
Innym magicznym rozwiązaniem jest powolny zapis USB 2.0, ale szybki odczyt, rozwiązanie? i obejmuje ponowne zamontowanie:
Zobacz ten artykuł i odniesienie do „usbtree”. Mówi, jak sprawdzić, czy usb działa jako 1.1 lub 2.0:
Linux i USB 2.0 .
źródło
Dostęp do dysku jest zwykle buforowany w trybie asynchronicznym. Początkowa szybka seria prawdopodobnie spowoduje pamięć podręczną. Wolna prędkość to rzeczywista prędkość zapisu.
Jeśli masz pamięć USB, która miga podczas przesyłania, wypróbuj kilka testów. Odkryłem, że zapisy mogą być kontynuowane przez dłuższy czas po zakończeniu kopiowania.
Montowanie w trybie asynchronicznym zamiast w trybie synchronizacji pozwala na szybsze kopiowanie, ale nie zapewnia takiego samego bezpieczeństwa, jak kopiowane dane są przesyłane.
Sprawdź opcje w
man mount
. Niektóre formaty umożliwiają odroczenie aktualizacji metadanych (katalog, tabela alokacji plików itp.). Spowoduje to zmniejszenie ilości danych, które należy skopiować. Zwiększa to nieznacznie ryzyko utraty danych.źródło
Tak więc doszedłem do tej strony, szukając w Google tego samego problemu („transfer Ubuntu 15 przyśpieszyć usb”), ponieważ moje transfery były wykonywane z prędkością 75 kb / s.
Prawdopodobnie było to tylko rozwiązanie dla mojej instalacji, ale mój dysk 16 GB USB 3 został sformatowany na GPT fat32, usunąłem wszystkie partycje, zainicjowałem MBR, utworzyłem pojedynczą partycję NTFS, podłączyłem ją z powrotem do mojego komputera Ubuntu i teraz przesyłam plik 10 GB z prędkością ponad 50 MB / s. Dla mnie problem rozwiązany.
źródło
Musimy upewnić się, że system próbuje pisać w programie / kasować fragmenty bloku. Dzięki nowoczesnej pamięci flash mają zwykle rozmiar 1M-4M. Aby to zrobić, musisz upewnić się, że twój FS jest ustawiony tak, aby kasować bloki, a ten interfejs pozwala na transfer całego bloku za jednym razem (w przypadku tanich drążków). W przeciwnym razie uzyskalibyśmy wzmocnienie zapisu, ponieważ system próbuje pisać mniejszymi fragmentami niż kasowanie bloku (wykonywanie odczytu / modu / zapisu) + niewspółosiowość bloku.
Aby sprawdzić swoje obecne ustawienia:
cat /sys/block/sd**X**/device/max_sectors
Możesz dostroić reguły hal dla tych urządzeń. Zobacz /unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .
W tym przypadku zastąpiłem max_sectors dla wszystkich urządzeń, które używały domyślnie 240 (pamięć USB) na sektory 32K lub sektory 2K:
(użyj ==, aby sprawdzić, a =, aby przypisać):
W moim systemie (Mageia 4, 3.14.24 core i7) musiałem to zrobić z powodu strasznie niskiej prędkości zapisu (2 MB / s) na Kingston DT101 G2 16 GB:
vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules
i dodaj:SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"
A prędkość zapisu dd wzrosła trzykrotnie :-) mc cp prawdopodobnie 10-20x w górę (po tym jak zacząłem pierwszą partycję na 8192 sektorze i sformatowałem z 64k wyrównanymi klastrami):
fdisk -u /dev/sdh
(wyłącz DOS kompatybilny, jeśli jest włączony),mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**
I użyćfsck.vfat -v /dev/sdh1
do sprawdzenia wyrównania (sprawdź [sektor początkowy danych] powinien być wielokrotnością 128 (rozmiar klastra)). W razie potrzeby dostosuj liczbę zarezerwowanych sektorów (-R).Domyślnie max_sectors (240) wydaje się powodować wysokie wzmocnienie zapisu na niektórych tanich nowych dyskach. Ale bądź bardzo ostrożny z tak wysokim ustawieniem, podobny efekt osiąga się w 2048 sektorach (prawdopodobnie bloki usuwania 1M:
SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"
Przetestuj wszystkie stare urządzenia USB, aby nadal działały dobrze. Użyj bardziej szczegółowych atrybutów dostawcy / modelu w plikach reguł.
PS: W przypadku korzystania z ext3 / 4:
Wyłącz kronikowanie i ustaw stride / stripe_width dla mkfs.ext3:
mkfs.ext3 -O ^ has_journal -E stride = [czytaj bloki fs strony] -E stripe-width = [kasuj bloki fs bloki]
źródło
Miałem też pewne problemy z szybkością transferu na zewnętrznym dysku WD, po otwarciu go w Windows SO, zawsze korzystałem z LINUX, po czym szybkość transferu wynosiła około 1,5 Mb / s niż odłączyłem zewnętrzny dysk twardy, uruchomiłem tam dmesg mówił, że sdb1 jest niepoprawnie odmontowany, uruchomił fsck, który dokonał kilku napraw, a następnie ponownie 20 Mb / s prędkości transferu przy kopiowaniu z sda na dysk zewnętrzny.
„fsck zawsze stanowi ryzyko, jeśli masz dane, ale działało dla mnie bez utraty danych”
źródło
Sprawdź, naprawdę sprawdź , czy urządzenie jest podłączone do portu USB, który obsługuje pełną prędkość.
Chociaż może to zabrzmieć głupio, czasem rzeczy się mieszają. Niektóre płyty główne mają porty o wysokiej i niskiej prędkości. Użyj narzędzia takiego jak usbview (uwaga, aby wykonać to z uprawnieniami administratora
sudo usbview
), aby sprawdzić, czy Twoje urządzenie działa z prędkością 480 Mb / s (USB 2.0) lub wyższą.Na przykład, gdy zwykle podłączasz urządzenie za pomocą jakiegoś przedłużacza, koncentratora na ekranie itp., Może się zdarzyć - po ponownym podłączeniu kabli w komputerze stacjonarnym lub podobnym - że przypadkowo podłączysz koncentrator do niskiej prędkości (USB 1.) port. Następnie wszelkie urządzenia podłączone do koncentratora będą działać z niską prędkością, podczas gdy inne, podłączone gdzie indziej, będą działać z dużą prędkością. Może być bardzo mylące - i jest prostą rzeczą sprzętową ... Zdarzyło mi się to raz i nie jest związane z żadnymi modułami jądra USB, opcjami montowania czy coś podobnego.
źródło