Dlaczego kopiowanie na mój dysk USB jest tak wolne w systemie Linux (i szybsze w systemie Windows)?
Buforowanie Powód 1. Plik może zapisy pojawiają się wolniej lub szybciej
Problem, który wydaje mi się widoczny w interfejsie GUI, polega na tym, że pasek postępu prawie natychmiast osiąga 90%, kończy się do 100% nieco wolniej, a następnie zawiesza się tam przez 10 minut.
Jedną rzeczą, którą musisz zrozumieć, jest buforowanie plików. Linux (i Windows) użyje inaczej „pustej” pamięci RAM do buforowania operacji odczytu / zapisu i przyspieszenia ich przy kolejnych dostępach. Buforowanie operacji kopiowania na wolne urządzenia powoduje zachowanie, które widzisz - „szybkie zakończenie” faktycznie zapisuje w pamięci podręcznej, a następnie spowalnia i zatrzymuje się, ponieważ faktyczne opróżnianie danych w pamięci podręcznej (synchronizacji) na wolne urządzenie jest trwa bardzo długo. Jeśli przerwiesz w tym momencie, dane zostaną uszkodzone (jak zauważyłeś), ponieważ synchronizacja nigdy się nie zakończyła.
Takie kopiowanie w systemie Windows może wydawać się szybsze (w tym zgłaszane prędkości MB / s), ponieważ czasami system Windows nie będzie czekać na synchronizację i zadeklaruje ukończenie zadania, gdy tylko dane zostaną zapisane w pamięci podręcznej.
Powód 2. Pisanie dużej liczby plików, zwłaszcza małych, jest powolne
Aby skopiować 1,8 GB
Ze względu na sposób działania pamięci flash i systemów plików najszybszą przepustowość (szybkość) osiąga się przy pisaniu bardzo dużych plików. Pisanie wielu małych plików, a nawet mieszanych danych zawierających wiele małych plików, może znacznie spowolnić proces. Dotyczy to również dysków twardych, ale w nieco mniejszym stopniu.
Powód 3. Nie można porównać prędkości zapisu w pamięci USB i dysku SSD
Mam super talent 32 GB SSD USB w sąsiednim porcie i działa z oczekiwanymi prędkościami.
Pamięć USB w odmianie ogrodowej zwykle składa się z układów pamięci flash, które są zapisywane szeregowo (sekwencyjnie) i nie mają własnego bufora.
Z drugiej strony dysk SSD zawiera kontroler, który zapisuje równolegle w układach pamięci flash , zwiększając przepustowość o 2 lub więcej razy w stosunku do pamięci USB.
- Gdyby twój dysk SSD o pojemności 32 GB posiadał 4 x 8 GB układów, byłby nadal 4x szybszy niż pamięć USB przy każdej operacji zapisu.
- Dysk SSD zawiera również pamięć podręczną RAM (podobnie jak dyski twarde), dzięki czemu może szybko przechowywać przychodzące dane w pamięci podręcznej i informować system operacyjny o tym, że zostało wykonane, podczas gdy nadal musi zapisywać te dane w pamięci flash.
Tak więc, z jednym dużym plikiem, twoja 32 GB GB ze strukturą 4x, którą zakładamy, byłaby 4x tak szybka; przy wielu małych plikach byłoby 10 razy szybsze, ponieważ mógłby inteligentnie przechowywać je w pamięci podręcznej.
Podsumowując , są to powody, dla których kopiowanie plików na pamięci USB może wydawać się wolniejsze w systemie Linux. Czy faktycznie jest wolniejszy z powodu problemu ze sprzętem / sterownikiem lub czegoś innego ...
Właściwe porównanie prędkości zapisu między Linuksem a Windowsem
- Przede wszystkim zapomnij o dysku SSD z powodu przyczyny 3. To jest jak pomarańcze i jabłka.
- Aby zneutralizować skutki przyczyny 1 (buforowanie) i przyczyny 2 (małe pliki), musisz przetestować pojedynczy duży plik, większy niż ilość pamięci RAM w systemie testowym.
- W systemie Linux możesz go utworzyć za pomocą
dd if=/dev/urandom of=largetest bs=1M count=7500
, co daje 7500 MB pliku testowego. Zakładając, że twój system ma mniej niż 4 GB pamięci RAM, jest wystarczająco dobry. Skopiuj go na świeżo sformatowany dysk Sandisk 8 GB i zmierz czas.
- Uruchom ponownie w systemie Windows i skopiuj
largetest
z pamięci USB na dysk twardy. Uruchom ponownie (aby usunąć go z pamięci podręcznej). Następnie sformatuj pamięć USB (ten sam vat / FAT32!) I skopiuj largetest
z dysku twardego na pamięć.
- Jak się mają czasy?
sync
i sprawdź, czy to nie przyspieszy procesu. <- niesprawdzone, ale możliwe