Bądź: Wyszukaj na stronie z użyciem Google
reklama:

czwartek, 20 stycznia 2011

Konfiguracja dysku SSD dla Ubuntu 10.10

Autor: , 12:06, czwartek, 20 stycznia 2011


Kilka dni temu zakupiłem nowiutki dysk SSD firmy Corsair (60GB CSSD-F60GB2-BRKT SATA). Oczywiście dziarsko przystąpiłem do instalacji nowego systemu Ubuntu 10.10 a następnie do konfiguracji.

Kupiłem nowy dysk aby poprawić wydajność mojego laptopa. Oto co zastałem...

Tekst przygotował Grzegorz Bernaś. Korekta AN.

Istnieje kilka przewodników, jak zrobić aby dysk solid-state (SSD) działał szybciej i dłużej w Linuksie. Podczas badania wsparcia dla TRIM w firmware SSD i linuksowym kernelu, nie byłem w stanie znaleźć wszystkich potrzebnych informacji w jednym miejscu. Oto przewodnik napisany w oparciu o moje doświadczenia, które mam nadzieję, będzie pomocne dla innych ludzi w podobnej sytuacji.

Mój wpis to w dużej mierze tłumaczenie tego artykułu: Tuning Solid State Drives in Linux, jednak pozwoliłem sobie dodać kilka dodatkowych informacji i wniosków do jakich doszedłem samodzielnie.

Wybór systemu plików - ext4 bez journalingu

Wiele starszych poradników na temat konfiguracji dysków SSD w Linuxie zalecamy korzystanie z ext2, ponieważ pozwala na uniknięcie dodatkowych operacji zapisu do dziennika systemu ext3 lub ext4, co przedłuża żywotność dysku.

Wraz z pojawieniem się wsparcia dla TRIM (patrz poniżej), ext2 prawdopodobnie nie jest najlepszym wyborem. Tak, polecenia TRIM można uruchomić na systemach plików ext2, ale takie rozwiązanie posiada dwie wady:

  • Ext2 obsługuje tylko offline TRIM - innymi słowy, system plików musi być zamontowany tylko do odczytu.
  • Należy ręcznie uruchomić za pomocą polecenia hdparm TRIM, lub skrypt wiper.sh

System plików ext4 nie ma tych ograniczeń, dzięki czemu system operacyjny dba o bez twojego udziału. Ponieważ funkcja księgowania (journalingu) może być wyłączana ext4, to chyba lepsze wybór niż ext2. Tylko pamiętaj, aby zdać sobie sprawę, że bez dziennika systemu plików jest bardziej podatne na utratę danych, jeśli nie jest prawidłowo odłączony (np. awaria zasilania). Ale skoro to czytasz, prawdopodobnie jesteś gotów podjąć to ryzyko i tym samym wydłużyć żywotności dysku.

Więc jak można wyłączyć w ext4 dziennik? Po pierwsze, usunięcie dziennika nie może być dokonane, gdy system plików jest zamontowany. Więc jeśli chcesz wyłączyć dziennika na dysku zawierającym system operacyjny (co jest najbardziej prawdopodobne), musisz uruchomić system z innego napędu. Najprostszym rozwiązaniem jest uruchomienie płyty Live CD Ubuntu 10.10 w trybie do testów, bez instalacji.

Po uruchomieniu Live CD, otwórz Terminal. Zakładając, że chcemy usunąć dziennik z partycji /dev/sda1, należy wydać następujące polecenie:

sudo tune2fs -O ^has_journal /dev/sda1
Teraz należy uruchomić sprawdzanie systemu plików:

sudo e2fsck -f /dev/sda1
Czytałem kilka informacji że system plików nie został zamontowany poprawnie, jeśli wykonano e2fsck, więc radzę nie pomijać - skoro masz dysk SSD, fsck działa bardzo szybko.

Teraz uruchom ponownie komputer, z dysku SSD zawierające ext4 gdzie wyłączyłeś dziennik. Otwórz wiersz polecenia (Terminal) i wykonaj:

dmesg | grep EXT4
Jeśli wszystko pójdzie dobrze pojawi się następujący komunikat:

EXT4-fs (sda1): mounted filesystem without journal
Jeśli kiedykolwiek zechcesz dodać journaling z powrotem, wystarczy uruchomić powyższe czynności, ale usunąć (^) z polecenia tune2fs.

Włączenie wsparcia dla TRIM

TRIM to sposób na umożliwienie systemowi operacyjnemu aby przekazał dyskowi SSD, jakie bloki nie są już potrzebne i można zastąpić. Bez TRIM, dyski SSD mocno spowalniają przy operacjach zapisu. Nie wnikając w szczegóły, przyczyną jest fakt, że dyski SSD usuwają dane w większych blokach niż zapisuję. Kiedy usuwanie danych bez TRIM, firmware napędu kopiuje cały blok do pamięci podręcznej, usuwa go z dysku, a następnie zapisuje blok danych minus dane usunięte - nawet jeśli wszystkie dane w bloku zostały oznaczone jako usunięte przez system plików.

Dzięki TRIM, system operacyjny może przekazać informacje do dysku jakie bloki mogą być oznaczone jako wolne w czasie usunięcia z systemu. Solid-State Drives zaczynają być wypuszczane z obsługą TRIM w ich oprogramowania, tak więc wsparcie TRIM zostało dodane do jądra Linuksa w wersji 2.6.33.

Najpierw upewnij się, że Twoje jądro (kernel), obsługuje TRIM:

uname -a
Sprawdzić numer wersji jądra, i jeśli jest to 2.6.33 lub wyższą, jądro będzie wspierać TRIM.
Następnie sprawdź, czy dysk obsługuje TRIM za pomocą polecenia hdparm. Zakładając, że dysk SSD to /dev/sda, wydaj polecenie:

sudo hdparm -I /dev/sda
Ta komenda wyświetli listę funkcji jakie posiada Twój dysk. Jeżeli znajduje się tam poniższa linijka oznacza to, że możesz włączyć obsługę TRIM.

* Data Set Management TRIM supported
Zakładając, że zarówno jądro i dysk twardy posiada wsparcie TRIM, a używasz systemu plików ext4, jak opisano powyżej, możesz włączyć tą opcję.

Otwórz Twój plik /etc/fstab w ulubionym edytorze, na przykład:

sudo gedit /etc/fstab
Odnajdź linię podobną do tej:

# / was on /dev/sda1 during installation
UUID=(...) / ext4 errors=remount-ro 0 1

I dodaj opcje "discard", wtedy twój plik będzie mniej więcej wyglądał tak:

# / was on /dev/sda1 during installation
UUID=(...) / ext4 discard,errors=remount-ro 0 1

Aby jeszcze przyśpieszyć swój dysk możesz wyłączyć zapisywanie daty ostatniego dostępu do pliku - do tego służy opcja "noatime".

# / was on /dev/sda1 during installation
UUID=(...) / ext4 noatime,discard,errors=remount-ro 0 1

Aby przetestować nowo zmodyfikowanego pliku fstab, uruchom następującą komendę:

sudo mount -oremount /dev/sda1
Następnie:

sudo mount
Powinno pojawić się coś mniej więcej takiego:

/dev/sda1 on / type ext4 (rw,noatime,discard,errors=remount-ro)

Co zrobić ze SWAP-em...

Przestrzeń wymiany jest to delikatna kwestia jeśli chodzi o dyski SSD. Potrzeba wymiany znacznie spadła skoro średnia system ma kilka GB pamięci. Jeśli wprowadzić komputer w stan hibernacji, trzeba mieć przestrzeń wymiany co najmniej równą ilości pamięci w systemie. Powodem jest to, że zawartość pamięci zapisywane są do wymiany podczas hibernacji.

Zakładając, że masz swap, polecam zmianę twojego parametru "swappiness". Swappiness jest liczbą od 0 do 100, który reprezentuje, jak agresywnie Linux będzie przenosić dane z pamięci RAM do przestrzeni wymiany na dysku. Im wyższy numer, tym bardziej prawdopodobne, że system przeniesie informacje z pamięci i do wymiany swap.

Aby poznać aktualne ustawienia swappiness, po prostu przejrzeć zawartość pliku /proc/sys/vm/swappiness:

cat /proc/sys/vm/swappiness
Podczas korzystania z dysków solid-state, mogę ustawić "swappiness" na 1. Nadal posiadasz przestrzeń wymiany, ale zapewnia, że zostaną użyte wyłącznie na najbardziej wymagających okolicznościach. Ponownie, to powinno przedłużyć żywotność dysku poprzez zmniejszenie ilości zapisów. Aby zmienić wartość swappiness, dodaj następującą linię do /etc/rc.local:

echo 1 > /proc/sys/vm/swappiness
rc.local to plik, który jest wykonywany podczas uruchamiania systemu, gdy wszystkie inne skrypty startowe został uruchomiony i jest używany do zastosowań administracyjnych, które nie pasują do żadnej z innych skryptów startowych.

Użyj schedulera dysku "noop"

Linux ma kilka różnych schedulerów dysku, które są odpowiedzialne za określenie, w jakiej kolejności żądania odczytu i zapisu są obsługiwane. Korzystanie z schedulera noop oznacza to, że Linux po prostu będzie obsługiwać żądania w kolejności ich otrzymania, nie biorąc pod uagę, gdzie dane fizycznie znajdują się na dysku. To jest dobre rozwiązanie dla dysków SSD, ponieważ nie mają ruchomych części, i czas wyszukiwanie dla wszystkich sektorów na dysku jest identyczny.

Aby zobaczyć, który scheduler system może używać, przejrzeć zawartość pliku /sys/block/sda/queue/scheduler:

cat /sys/block/sda/queue/scheduler
Aktualnie używany scheduler jest w klamrach [ ].

[noop] deadline cfq
Aby zmusić system do używania noop domyślnie dodaj następującą linię do /etc/rc.local:

echo noop > /sys/block/sda/queue/scheduler

Podsumowanie

Jeśli zrozumiesz podstawowe różnice między tradycyjnymi dyskami twardymi a dyskiem SSD, to łatwo zrozumieć, dlaczego te modyfikacje mają sens.Domyślam się, że w ciągu roku lub dwóch, większość tych zmian nie będzie koniecznych - dyski SSD staną się coraz bardziej powszechne, a dystrybucje Linuksa większość konfiguracji zrobią za Ciebie. Ale teraz, mam nadzieję, że przewodnik ten okaże się pomocny.

Mały szybki test sda1 to dysk SSD, sdb1 to standardowy dysk, oto wynik komendy

sudo hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 11538 MB in 1.99 seconds = 5798.61 MB/sec3
Timing buffered disk reads: 558 MB in 3.01 seconds = 185.13 MB/sec


/dev/sdb1:
Timing cached reads: 9956 MB in 1.99 seconds = 5000.01 MB/sec
Timing buffered disk reads: 98 MB in 3.05 seconds = 32.18 MB/sec
blog comments powered by Disqus

Prześlij komentarz


Popularne posty

Etykiety