Jak poprawnie podzielić dysk flash USB i jaki system plików wybrać, biorąc pod uwagę poziom zużycia?

13

Dwa problemy. Pierwszy: jak podzielić dysk flash na partycje?

Nie powinienem tego robić, ale nie jestem już pewien, czy moja partycja jest odpowiednio wyrównana, ponieważ byłem zmuszony usunąć i utworzyć nową tablicę partycji po tym, jak gparted narzekał, kiedy próbowałem sformatować dysk z FAT na ext4.

Naiwną odpowiedzią byłoby powiedzenie „po prostu użyj domyślnego i wszystko będzie dobrze”. Jeśli jednak przeczytasz następujące linki, zrozumiesz, że nie jest to takie proste: https://lwn.net/Articles/428584/ i http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Jest jeszcze kwestia cylindrów, głowic i sektorów. Obecnie dostaję to:

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

Tak więc, z mojego obecnego zrozumienia, powinienem wyrównać partycje o 4 MiB (obecnie jest to 1 MiB). Ale wciąż nie wiem, jak prawidłowo ustawić głowice i sektory w moim urządzeniu.

Drugi problem: system plików.

Z testów, które widziałem, ext4 zapewnia najlepszą wydajność, jednak istnieje problem wyrównywania zużycia. Skąd mam wiedzieć, że mikrokontroler mojego Transcend JetFlash 700 zapewnia wyrównanie zużycia? A może po prostu szybciej zabijam swój dysk?

Widziałem wiele postów w Internecie, które mówią, nie martw się, nowsze dyski już się tym zajmują. Ale nigdy nie widziałem żadnego popartego dowodu na to i w pewnym momencie ludzie zaczynają mieszać SSD z technologią dysków flash USB. Bezpieczną opcją byłoby wybranie ext2, jednak poważny test, który przeprowadziłem, wykazał się straszną wydajnością !!!

Te wartości pochodzą z prawdziwego scenariusza, a nie z jakiegoś syntetycznego testu:

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

Przeczytaj odpowiedzi, które podałem powyżej. Byłbym również zainteresowany odpowiedziami popartymi pewnymi referencjami, ponieważ dużo zostało powiedziane i powtórzone, ale brakuje w tym faktów.

Dziękuję za pomoc.

random1
źródło
„istnieje jednak kwestia wyrównywania zużycia” - Naprawdę nie masz wyboru w tej kwestii. Kupiony dysk flash USB lub karta SD spełnia zadowalającą funkcję wyrównywania zużycia lub nie. Nie możesz / nie powinieneś używać systemu plików, który wyrównuje zużycie (np. JFFS2). I nie możesz zainstalować zarządzania woluminami UBI (najpierw musisz zainstalować MTD, ale dotyczy to surowych urządzeń Flash). Więc utkniesz z poleganiem na wbudowanym kontrolerze.
trociny

Odpowiedzi:

8

Nie martw się o cylindry, głowice i sektory i zawsze pracuj tylko z sektorami. Najłatwiejszym sposobem wyrównywania systemu plików jest po prostu brak tablicy partycji (tj. Utworzenie systemu plików /dev/sdXbezpośrednio). Większość systemów Linux poradzi sobie z tym dobrze, ale system Windows oszaleje, a Ty również nie będziesz mógł go uruchomić. Jeśli potrzebujesz tabeli partycji, sprawdź, ile 512-bajtowych sektorów tworzy blok kasowania. Kasowanie bloków wynosi około 128-512 kB, więc jeśli nie możesz dowiedzieć się, z czego korzysta twój dysk flash, wybierz 1024 sektory. Upewnij się, że partycje zaczynają się od wielokrotności tego numeru.

Chcesz także powiedzieć ext2 / 3/4 o rozmiarze bloku kasowania, aby uniknąć niepotrzebnej modyfikacji bloków. Ustaw zarówno liczbę, jak stridei stripe-widthliczbę bloków systemu plików, które składają się na blok wymazywania, więc pracując na bloku wymazywania 512 kB, użyj:

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

Pod względem wydajności brak dziennika powinien poprawić wydajność (ale zwiększyć ryzyko uszkodzenia danych, jeśli operacja zostanie przerwana). Jednak zakresy ext4 powinny poprawić wydajność, ponieważ w przypadku dużych plików należy zmodyfikować mniej metadanych. Prawdopodobnie użyłbym ext4 z wyłączonym dziennikiem:

tune2fs -O ^has_journal
mgorven
źródło
Możesz użyć, cat /proc/mtdaby dowiedzieć się, czy wymazywać rozmiary bloków dla podłączonych urządzeń flash.
Tomalak
Dyski flash bez tabeli partycji powinny działać poprawnie w systemie Windows, o ile system plików jest obsługiwany. Pendrive zazwyczaj nie mają gotowej tabeli partycji i działają dobrze.
gronostaj
Optymalizacja fs na karcie SD dla Linux / Fedory na Dreamplug pokazuje, jak ext4 „ rozpoznać ” rozmiar bloków kasowania i odpowiednio ustawić jego rozmiar bloku i wartość „kroku” . Uważam również, że / proc / mtd nie ma tu znaczenia, ponieważ jest dostępny tylko dla surowych urządzeń flash, jak powiedział trociny, a nie dla urządzeń pamięci flash SD / stick.
tuk0z
Próbowałem tego, to była strasznie zła rada. Nie należy używać tych parametrów z dyskiem flash USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - ten facet ma lepsze parametry, ale wciąż jest tylko nieznacznie lepszy, jeśli w ogóle, niż to, co domyślnie używa gparted.
Zdenek
To ten sam link, który podałem we wrześniu ^^ Poprawnie na temat parted / Gparted AFAIK.
tuk0z
4

Obecnie większość narzędzi do partycjonowania i tworzenia systemu plików Linux domyślnie przyjmuje wartości, które wyrównują dane na granicach 4K, a nawet użyje bazowego rozmiaru bloku, jeśli dysk go ujawni, więc nie jest tak źle, jak w artykule LWN:

TLDR; W przypadku korzystania z nowoczesnej dystrybucji systemu Linux (powiedzmy 2013 lub nowszej) z najnowszymi wersjami narzędzi do tworzenia partycji i systemów plików lepsze (ale nie idealne) wyrównanie nastąpi automatycznie. Uważaj też - najlepsze wartości dla karty SD mogą różnić się od wartości dla pamięci USB (uważam, że twój Transcend JetFlash to pamięć USB, a nie karta SD). Trzeba będzie przeprowadzić analizę porównawczą, aby wywnioskować prawdziwy rozmiar bloku wymazywania taniego flasha ...

Zaraz
źródło
1

Ponadto w swoim fstab należy używać opcji montowania „noatime”, aby uniknąć niepotrzebnego zapisu przy każdym dostępie do pliku.

docwebhead
źródło
Nadal jest to prawda do dziś, a to przypomniało mi, że tej opcji brakowało XD Thx
HypeWolf