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.
Odpowiedzi:
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/sdX
bezpoś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
stride
istripe-width
liczbę bloków systemu plików, które składają się na blok wymazywania, więc pracując na bloku wymazywania 512 kB, użyj: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:
źródło
cat /proc/mtd
aby dowiedzieć się, czy wymazywać rozmiary bloków dla podłączonych urządzeń flash.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 ...
źródło
Ponadto w swoim fstab należy używać opcji montowania „noatime”, aby uniknąć niepotrzebnego zapisu przy każdym dostępie do pliku.
źródło