Instalacja i konfiguracja / optymalizacja Linux SSD

Więc, panie i panowie - w końcu umieściłem dysk SSD w moim małym eee pc 🙂 Zanim nauczyłem się jak optymalizować go w Linuksie, musiałem bardzo cierpieć

Więc, panie i panowie - w końcu umieściłem dysk SSD w moim małym eee pc 🙂 Zanim nauczyłem się jak optymalizować go w Linuksie, musiałem bardzo cierpieć.

Tak więc nośnik SSD jest dobry dla wszystkich: szybkość odczytu / zapisu danych, czas dostępu, brak fragmentacji, zużycie energii (co jest bardzo ważne dla nebuk i laptopów). Najnowsza generacja tych dysków gwarantuje udoskonalenie porównywalne z konwencjonalnymi dyskami twardymi (a nawet właściwie kilkakrotnie wyższe przy odpowiedniej obsłudze), ponieważ teraz można uzyskać takie urządzenie półprzewodnikowe.

Główną wadą tych mediów i niestety minus jest wciąż duży - należy unikać bardzo częstego dostępu do dysku z częstym nagrywaniem małych plików. W porównaniu z HDD, rozmiar klastrów w SSD jest odpowiednio większy, rejestracja małego dziennika zakłóci działanie całego klastra. Gorącym przykładem jest logowanie w systemie Linux, rejestrowanie systemu plików i inne tego typu rzeczy. W związku z tym naszym zadaniem jest zmniejszenie liczby dostępów do dysku. Więc chodźmy:

1) Najważniejszą rzeczą do zbudowania jest komenda TRIM. Aby go obsłużyć, potrzebujesz jądra, które nie jest starsze niż 2.6.3.3. Jeśli jądro jest starsze, będziesz musiał umieścić nowszy rdzeń. Jak to zrobić w Debian Squeeze - możesz przeczytać tutaj . Jeśli spełnione są wszystkie warunki - musisz edytować plik / etc / fstab:

# <system plików> <punkt montowania> <typ> <opcje> <dump> <pass> proc / proc proc domyślnie 0 0 # / było na / dev / sda1 podczas instalacji UUID = eb07b6cb-e4ed-47a7-9518-19272a91a01a / ext4 noatime, nodiratime, discard, errors = remount-ro 0 1 # Partycja SWAP na dysku flash UUID = 93c7ee68-a625-44d6-b1ec-5fc1c55e1e57 swap swap domyślnie 0 0 / dev / scd0 / media / cdrom0 udf, użytkownik iso9660, około 0 0 / dev / scd0 / media / cdrom0 udf, iso9660 użytkownik / 0/0 0 0 # Pamięć podręczna przeglądarki google-chrome na tmpfs tmpfs /home/erdees/.cache/google-chrome tmpfs size = 1000M, mode = 0777 0 0 # Inne sekcje i katalogi przeniesione do tmpfs tmpfs / tmp tmpfs defaults 0 0 tmpfs / var / tmp tmpfs wartości domyślne 0 0 tmpfs / var / lock tmpfs wartości domyślne 0 0 #tmpfs / var / log tmpfs wartości domyślne 0 0 erdees @ erdees-netbook: ~ $

Najważniejszą rzeczą w tej konfiguracji jest włączenie TRIM. Parametr odrzucenia odpowiada za jego włączenie. Jeśli przyjrzysz się bliżej, możesz znaleźć parametry noatime i nodiratime obok siebie - pierwszy z nich wyłącza czas dostępu do plików, drugi wyłącza czas dostępu do katalogów. Dlatego uwzględniliśmy TRIM i nieznacznie zmniejszyliśmy liczbę wpisów na dysku SSD.
Jak widać, wszystkie katalogi, w których występują częste cykle odczytu / zapisu, znajdują się w tmpfs (tmpfs to wirtualny system plików rezydujący w pamięci RAM), gdzie oprócz tmp, var i innych rzeczy, przenoszona jest pamięć podręczna przeglądarki google-chrome. W przypadku innych przeglądarek wiersz w fstab prawie się nie różni - najważniejsze jest przeniesienie folderu pamięci podręcznej do tmpfs. Jeśli chodzi o linię z sekcją SWAP na dysku flash - nie dotykamy jej jeszcze.

2) Drugi moment - system plików musi być ext4 lub btrfs. Inne nie są obsługiwane. Zaleca się wyłączenie partycji SWAP lub użycie jej na innym dysku / nośniku. Z reguły na nowoczesnych laptopach i netbookach zawsze jest wystarczająca ilość pamięci RAM, a wymiana nie jest zaangażowana, ale czasami może tam leżeć wiele drobiazgów. Na przykład, mam SWAP wisi na dysku flash SD, możesz to zobaczyć w powyższym fstab. Ale więcej o tym później. Jeśli umieścisz system z wymianą, na razie skomentuj linię.

3) Musisz upewnić się, że TRIM działa. Są na to dwa sposoby. Jednak pierwszy nie jest w 100% dokładny i nie rzuciłem.

Metoda pierwsza:

Korzystając z narzędzia dd, tworzymy plik:

dd if = / dev / urandom z = tempfile count = 10 bs = 512k oflag = direct

Jeśli się powiedzie, zobaczymy wniosek:

10 + 0 rekordów odczytanych 10 + 0 zapisanych zapisów skopiowanych 5242880 bajtów (5,2 MB), 2,17641 c, 2,4 MB / c

Następnie poszukaj początkowego pliku LBA, który stworzyliśmy:

root @ erdees-netbook: / home / erdees / new # hdparm --fibmap tempfile plik tymczasowy: system plików wielkość bloku 4096, zaczyna się od LBA 2048; zakładając sektory 512 bajtów. byte_offset begin_LBA sektory end_LBA 0 2886656 2888703 2048 1048576 2983936 2985983 2048 2097152 2979840 2983935 4096 4194304 2992128 2994175 2048

Po przeprowadzeniu wyszukiwania begin_LBA:

hdparm - sektor odczytu [numer sektora] / dev / sda

Zobaczymy coś takiego:

fdbcc 3942 a154 1919 52ec b58e 410a ba61 f8bb 4811 54fc 95c5 5096 aae7 1670 423c 2aa4 0a48 6e1f de3d 6661 3f6d 2a3a e9e6 a082 b72a 87c9 2fa1 7a8b 9b97 1db6

Teraz usuń plik:

rm tempfile

Wykonaj synchronizację:

synchronizacja

Teraz ponownie wykonałem hdparm –read-sector [numer sektora] / dev / sda, po czym zamiast poprzedniego wyjścia sektorów powinieneś mieć tylko zera. Niestety tego nie przegapiłem. Metoda weryfikacji jest bardzo wizualna, jednak synchronizacja nie gwarantuje synchronizacji fs.

Metoda druga to tylko jedno polecenie:

root @ erdees-netbook: / home / erdees / new # hdparm -I / dev / sda | grep TRIM * Zarządzanie zestawem danych Obsługa TRIM (limit nieznany)

W związku z tym obecność etykiety „obsługiwane” oznacza, że ​​TRIM jest obsługiwany, a gwiazdka po lewej stronie oznacza, że ​​jest ona aktualnie aktywowana. To jest to.

4) Kolejna para konfiguracji i zaleceń. Ustawiłem odroczone wejście. Oznacza to, że wszystkie procesy w systemie są zapisane w tmpfs, a gdy nadejdzie określony czas, jest on już zaadresowany na dysk. Dodaj linie do /etc/sysctl.conf

vm.laptop_mode = 5 vm.dirty_writeback_centisecs = 15000

W tym wszystkim sysctl. Radziłbym również wyłączyć program planujący I / O, ponieważ nie może on pracować z SSD. Przejdź do konfiguracji GRUB, / etc / default / grub i zastąp linię

GRUB_CMDLINE_LINUX_DEFAULT = „cichy plusk”

na

GRUB_CMDLINE_LINUX_DEFAULT = "winda = noop"

I jeszcze jeden dziwak z GRUB-em: Wyłączyłem opóźnienie przy wyborze jądra po włączeniu systemu, aby skrócić czas włączania netbooka. Edytowanie pliku /boot/grub/grub.cfg i parametru

set timeout = 5

Ustaw go na „0”. Włączono także automatyczne logowanie. Krótko mówiąc, system od czasu przejścia POST jest ładowany w 5-7 sekund, wyłącza się w ciągu 4 sekund.

5) Monitorujemy intensywność odczytu / zapisu z dysku. Pomogło mi to bardzo dobrze - iotop. Zainstaluj:

aptitude install iotop

I uruchom iotop jako root. Narzędzie wygląda dokładnie tak samo jak zwykły top, jednak wyświetla informacje o procesach zapisu / odczytu z dysku.

W zasadzie to wszystko, co wykopałem na temat dysków SSD pod Linuksem. Również w sieci poszło wiele informacji o wyłączaniu księgowania systemu plików. Jeśli to zrobisz, możesz zmniejszyć liczbę cykli zapisu na dysku. Uważam jednak, że jest to trochę ryzykowne: po pierwsze, jeśli wyłączysz nieprawidłowe księgowanie, możesz stracić TRIM, po drugie, jeśli wyłączysz zasilanie, możesz utracić ważne dane.