Który system plików Linux działa najlepiej z dyskiem SSD

119

Z wiki:

Istotna funkcja TRIM jest obsługiwana przez system operacyjny Linux począwszy od jądra 2.6.33 (dostępne na początku 2010 roku). Jednak obsługa różnych systemów plików jest nadal niespójna lub nie występuje. Prawidłowe wyrównanie partycji nie jest również wykonywane przez oprogramowanie instalacyjne.

Który system plików działa najlepiej na dysku SSD i obsługuje wyrównanie partycji TRIM + podczas instalacji i jest dostępny na Ubuntu?

hbt
źródło

Odpowiedzi:

89

System plików EXT4 + TRIM:

  • EXT4 z TRIM poprawia wydajność, redukując niepotrzebne cykle zapisu na dysk SSD, ponieważ ograniczają cykle zapisu i zapisu.
  • Ubuntu i niektóre inne wersje Linuksa obsługują EXT 4 z TRIM po wyjęciu z pudełka.

Partycja SWAP:

  • Upewnij się, że na dysku SSD nie ma miejsca SWAP, aby ponownie skrócić cykle zapisu.
  • Jeśli masz napęd mechaniczny, powinieneś utworzyć przestrzeń SWAP na dysku mechanicznym i unikać posiadania go na dysku SSD.

Wyrównanie partycji:

  • Partycja powinna rozpoczynać się na czystej granicy 1 MB, aby rozmiar bloku systemu plików był zgodny z rozmiarem bloku dysku SSD.

Więc użyj EXT4 + TRIM z SWAP na mechanicznym dysku twardym lub bez SWAP na SSD.

Powyższe można wdrożyć, odwołując się do źródła: Jak zmaksymalizować wydajność SSD .

aliasgar
źródło
GPT jest nowoczesną metodą używającą gdisk& grub 2.0.x(chyba ktoś wspomniał o tym poniżej w odpowiedzi), a MBR jest starszą metodą używającą starej grub 0.9.7i fdisk.. można znaleźć więcej tutaj: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar
7
Nie jest konieczne określanie, nodiratimekiedy Ty również określasz noatime. Zgadza się, wygląda fajnie i jest zaawansowany dla innych kujonów, ale ponieważ noatimewyłącza atime na i-węzłach, a katalogi również są i-węzłami, to tak jakby powiedzieć „umyj ręce i umyj też kciuki”. :)
Redsandro,
Z doświadczenia mogę powiedzieć, że żaden harmonogram („noop”) nie działa szybciej niż termin.
drumfire
5
Nie, „ partycje wymiany systemu Linux domyślnie wykonują operacje TRIM, gdy bazowe urządzenie blokowe obsługuje TRIM, z możliwością ich wyłączenia lub wyboru między jednorazowymi lub ciągłymi operacjami TRIM”. dlatego partycję wymiany należy umieścić na dysku SSD, aby skorzystać z szybkiego dostępu, który zajmie dużo czasu przy każdej zamianie stron
phuclv
2
@aliasgar Czy F2FS to dobry wybór w porównaniu z ext4?
SebMa
67

Krótka odpowiedź

  • Wybierz ext4 i zamontuj go z discardopcją obsługi TRIM lub użyj FITRIM (patrz poniżej). Skorzystaj również z tej noatimeopcji, jeśli obawiasz się „zużycia SSD”.

  • Nie zmieniaj domyślnego harmonogramu we / wy (CFQ) na serwerach z wieloma aplikacjami , ponieważ zapewnia to uczciwość między procesami i ma automatyczną obsługę SSD. Jednak należy użyć terminu na komputerach stacjonarnych, aby uzyskać lepszą szybkość reakcji pod obciążeniem.

  • Aby łatwo zagwarantować prawidłowe wyrównanie danych, początkowy sektor każdej partycji musi być wielokrotnością 2048 (= 1 MiB). Możesz użyć ich fdisk -cu /dev/sdXdo utworzenia. W ostatnich dystrybucjach automatycznie zajmie się tym za Ciebie.

  • Zastanów się dwa razy, zanim użyjesz funkcji wymiany na dysku SSD. Prawdopodobnie będzie znacznie szybszy w porównaniu do wymiany na HDD, ale szybciej zużyje dysk (co może nie mieć znaczenia, patrz poniżej).

Długa odpowiedź

  • Systemy plików:

Ext4 to najpopularniejszy system plików Linux (dobrze utrzymany). Zapewnia dobrą wydajność z dyskiem SSD i obsługuje funkcję TRIM (i FITRIM), aby utrzymać dobrą wydajność SSD w czasie (to usuwa nieużywane bloki pamięci, aby umożliwić późniejszy dostęp do zapisu). NILFS jest specjalnie zaprojektowany dla napędów pamięci flash, ale tak naprawdę nie działa lepiej niż ext4 na testach porównawczych. Btrfs jest wciąż uważane za eksperymentalne (i naprawdę nie lepiej wykonać albo ).

  • Wydajność i TRIM SSD:

Funkcja TRIM usuwa bloki SSD, które nie są już używane przez system plików. Pozwoli to zoptymalizować długoterminową wydajność zapisu i jest zalecane na dyskach SSD ze względu na ich konstrukcję. Oznacza to, że system plików musi być w stanie powiedzieć napędowi o tych blokach. Opcja discardmontowania ext4 wyda takie polecenia TRIM , gdy bloki systemu plików zostaną zwolnione. To jest odrzucenie online .

Jednak takie zachowanie pociąga za sobą niewielki narzut wydajności. Od Linuksa 2.6.37 możesz uniknąć używania discardi wyboru sporadycznego odrzucania wsadowego za pomocą FITRIM (np. Z crontab). fstrimNarzędzie robi to (online), jak również -E discardopcję fsck.ext4. Będziesz jednak potrzebował „najnowszej” wersji tych narzędzi.

  • Zużycie SSD:

Możesz ograniczyć zapisy na dysku, ponieważ dysk SSD ma pod tym względem ograniczony okres użytkowania. Nie martw się jednak zbytnio , dzisiejszy najgorszy dysk SSD 128 GB może obsługiwać co najmniej 20 GB zapisanych danych dziennie przez ponad 5 lat (1000 cykli zapisu na komórkę). Lepsze (a także większe) mogą trwać znacznie dłużej: najprawdopodobniej do tego czasu je zastąpisz.

Jeśli chcesz użyć wymiany na dysku SSD, jądro zauważy dysk nieobrotowy i losowo wykorzysta zamianę (wyrównanie zużycia na poziomie jądra): SSpo włączeniu zamiany zobaczysz komunikat (Solid State) w jądrze:

Dodanie wymiany 2097148k na / dev / sda1. Priorytet: -1 w zakresie: 1 w poprzek: 2097148k SS

  • Harmonogramy we / wy:

Ponadto zgadzam się z większością odpowiedzi na aliasgar (nawet jeśli większość z nich została - nielegalnie? - skopiowana z tej witryny ), ale częściowo muszę się nie zgodzić z częścią dotyczącą harmonogramu . Domyślnie harmonogram terminów jest zoptymalizowany dla dysków obrotowych, ponieważ implementuje algorytm windy . Wyjaśnijmy więc tę część.

Długa odpowiedź na harmonogramach

Począwszy od jądra 2.6.29, dyski SSD są automatycznie wykrywane i możesz to sprawdzić za pomocą:

cat /sys/block/sda/queue/rotational

Powinieneś dostać 1na dyski twarde i 0na SSD.

Teraz program planujący CFQ może dostosować swoje zachowanie na podstawie tych informacji. Od Linuksa 3.1 cfq-iosched.txtplik dokumentacji jądra mówi :

CFQ ma pewne optymalizacje dla dysków SSD, a jeśli wykryje nierotacyjne nośniki, które mogą obsługiwać większą głębokość kolejki (wiele żądań w locie na raz), [...].

Ponadto harmonogram Ostatecznego terminu próbuje ograniczyć nieuporządkowane ruchy głowy na dyskach obrotowych w oparciu o numer sektora. Cytując dokument jądra deadline-iosched.txt, fifo_batch opis opcji :

Żądania są pogrupowane w `` partie '' określonego kierunku danych (odczyt lub zapis), które są obsługiwane w rosnącej kolejności sektorów.

Jednak dostosowanie tego parametru do 1 podczas korzystania z dysku SSD może być interesujące:

Ten parametr dostraja równowagę między opóźnieniem na żądanie a zagregowaną przepustowością. Gdy głównym problemem jest małe opóźnienie, mniejsze jest lepsze (gdzie wartość 1 powoduje zachowanie kolejności zgłoszeń). Zwiększenie partii fifo_batch ogólnie poprawia przepustowość kosztem zmian opóźnienia.

Niektóre testy porównawcze sugerują, że istnieje niewielka różnica w wydajności między różnymi programami planującymi. Dlaczego więc nie zalecić uczciwości ? kiedy CFQ rzadko jest zły na ławce . Jednak w konfiguracjach pulpitu zazwyczaj można uzyskać lepszą szybkość reakcji przy użyciu terminu pod obciążeniem, ze względu na jego konstrukcję (prawdopodobnie jednak przy niższych kosztach przepustowości).

To powiedziawszy, lepszym punktem odniesienia byłoby spróbowanie użycia terminu z fifo_batch=1.

Aby domyślnie używać terminu na dyskach SSD, możesz utworzyć plik, powiedz /etc/udev.d/99-ssd.rulesw następujący sposób:

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
Totor
źródło
Co masz na myśli, mówiąc, że wyrównanie partycji jest automatycznie obsługiwane w ostatnich dystrybucjach? Czy dotyczy to również partycjonowania ręcznego podczas instalacji np. Ubuntu lub partycjonowania przez gparted?
jarno
2
@jarno w najnowszych dystrybucjach (od kilku lat), narzędzia do partycjonowania, od fdisk po grafikę, mają tendencję do automatycznego ustawiania domyślnego do tworzenia wyrównania partycji przy wielokrotności 1 Mb od początku urządzenia. To zapobiegawczo wyrównuje się z 512 bajtami, 4k, 8k i pół bazillionem innych rozmiarów bloków / klastrów, które mają charakter 2 ^ n. Prawie niemożliwe jest nieprawidłowe wyrównanie partycji, chyba że dołożysz znacznego wysiłku, aby to zrobić.
killermist
13

Artykuł archlinux Dyski półprzewodnikowe mówi w sekcji Wybór systemu plików :

Istnieje wiele opcji dla systemów plików, w tym Ext2 / 3/4, Btrfs itp.

Btrfs Obsługa
Btrfs została dołączona do głównej wersji jądra Linuksa 2.6.29. Niektórzy uważają, że nie jest on wystarczająco dojrzały do ​​użytku produkcyjnego, podczas gdy są też pierwsi użytkownicy tego potencjalnego następcy ext4. Zachęcamy użytkowników do przeczytania artykułu Btrfs, aby uzyskać więcej informacji.

Ext4
Ext4 to kolejny system plików, który obsługuje SSD. Jest uważany za stabilny od wersji 2.6.28 i jest wystarczająco dojrzały do ​​codziennego użytku. W przeciwieństwie do Btrfs, ext4 nie wykrywa automatycznie natury dysku; użytkownicy muszą jawnie włączyć obsługę komend TRIM za pomocą opcji discard mount w fstab (lub z tune2fs -o discard / dev / sdaX).

Zarówno Btrfs, jak i Ext4 spełniają dwa główne wymagania dotyczące efektywnego wykorzystania dysku SSD:

  • System plików musi być w stanie wydawać polecenia ATA_TRIM na podstawowy dysk SSD
  • System plików nie może wykonywać niepotrzebnych zapisów na dysku

Dla wydajności istnieją dwa inne wymagania:

  • Partycje muszą być wyrównane do rozmiaru bloku SSD
  • TRIM musi być jawnie włączony dla każdej partycji sformatowanej w Ext4

Pierwszy jest obecnie automatyczny w większości instalatorów Linuksa. fdisk utworzy również partycje na granicy 1024 KB, jeśli zostanie uruchomiony z flagami „-cu”.

Drugi jest automatyczny dla Btrfs, ale dla Ext4 odbywa się to ręcznie poprzez dodanie „discard” do listy opcji montowania dla każdej partycji Ext4 w pliku „/ etc / fstab”. Aby uzyskać więcej informacji, zobacz to howto .

Moim zdaniem, to wymagało niewielkiego kręcenia fstabem dla Ext4, nie jest powodem, aby nie używać tego dojrzałego i doskonałego systemu plików.

harrymc
źródło