Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Optymalizacja pracy dysku SSD — pamięć na lata

Dyski SSD w odróżnieniu od klasycznych dysków talerzowych nie posiadają obracających się z wysoką prędkością talerzy, nie mają też żadnych elementów mechanicznych, a zamiast tego posiadają komórki pamięci, podobne do tych znanych z pamięci flash. Ze względu na to, charakteryzują się one szybszymi czasami dostępu do danych (głowica nie musi wielokrotnie zmieniać pozycji, co jest szczególnie uciążliwe w przypadku niezdefragmentowanego systemu NTFS) oraz są zupełnie bezgłośne. Same prędkości odczytu i zapisu, zarówno sekwencyjnego, jak i losowego pobijają nawet macierze dyskowe wykorzystujące paskowanie (jak RAID0). Niestety komórki pamięci z czasem ulegają degradacji, są one po prostu stopniowo zużywane przez operacje zapisu, których podczas pracy systemu operacyjnego jest co nie miara. Oczywiście kontroler dba o równomierne zużywanie wszystkich komórek pamięci (a ponieważ dostęp do każdej wymaga tego samego czasu, użytkownik nie odczuwa utraty wydajności), natomiast czas pracy dysku twardego możemy przedłużyć, zmieniając ustawienia systemu w taki sposób aby ograniczyć zbędną liczbę zapisów. Także przy zakupie samego dysku nie możemy kierować się tylko i wyłącznie przelicznikiem zł/gb. Istnieją bowiem odmienne typy komórek pamięci, różniące się kosztami produkcji oraz żywotnością.

TLC (Triple Level Cell) - Najtańsze dyski SSD, przez niektórych mniej zaawansowanych użytkowników traktowane są jako okazje. Często fakt posiadania kostek TLC jest dość głęboko ukryty w specyfikacji, bywa również całkowicie pomijany przez producenta. Jest to najtańszy w produkcji typ pamięć, charakteryzujący się zapisywaniem trzech bitów (bit - najmniejsza niepodzielna cząstka informacji w systemach komputerowych) na jednej komórce. Ze względu zagęszczenie oraz ilość operacji, żywotność tych komórek jest krótka - producent zwykle udziela dwuletniej gwarancji na takie nośniki. Nie zalecam kupowania pamięci SSD opartych o kości TLC.

reklama


MLC (Multi Level Cell) - Dyski SSD z wysokiej półki, na pierwszy rzut oka najbardziej jest to widoczne po cenie dysku. SSD MLC są również cięższe do zdobycia ze względu na wyższe koszty produkcji, znacznie mniej modeli wykorzystuje MLC. Kości tego typu przechowują dwie informacje na jednej komórce co, ze względu na budowę samych komórek pamięci, znacząco wpływa na zagęszczenie informacji oraz żywotność dysku. Producenci zwykle udzielają długie gwarancje na tego typu nośniku - GoodRAM udziela pięcioletniej gwarancji w modelach wykorzystujących moduły MLC. Tego typu pamięci są obecnie najrozsądniejszymi i najbardziej pewnymi wyborami.


SLC (Single Level Cell) - Dyski SSD wykorzystujące tą technikę zapisują jeden bit na jedną komórkę, co jest najlepszym rozwiązaniem pod względem żywotności nośników. Niestety koszty produkcji praktycznie eliminują je z użycia konsumenckiego, są one czasami używane w serwerach.

V-NAND/3D NAND - Jest to stosunkowo nowa technika, wykorzystywana przez niektóre modele Samsunga. Ma ona na celu zmianę rozmieszczenia kostek pamięci co pozwala na uzyskiwanie większych pojemności dysków bez niebezpiecznie wysokiego zagęszczenia (wyższe zagęszczenie zmniejsza odstępy między komórkami, co przy pewnej granicy może powodować niekontrolowany przeskok bitów, a w efekcie - zniszczenie danych). Osobiście uważam że technologia musi nieco dojrzeć, radzę jeszcze nie kupować dysków wykonanych z jej użyciem.

Platforma testowa

Platforma na której dokonuję optymalizacji dysku SSD to komputer stacjonarny oparty o system Linux Mint 18.3 Sylwia ze środowiskiem graficznym MATE z dyskiem SSD GoodRAM IRDM PRO 240GB opartym na modułach MLC. Seria IRDM PRO to nic innego jak znana wcześniej ze swojej jakości Irdium Pro zapakowana w nowe pudełko oraz całą medialną otoczkę.

Nie biorę odpowiedzialności za modyfikacje których dokonujesz w swoim systemie - wszystko robisz na własną odpowiedzialność. Natomiast sam prywatnie korzystam z tych wskazówek i problemy powstać mogą w wyniku błędu ludzkiego lub ewentualnej niekompatybilności sprzętu.

Partycjonowanie dysku - optymalizacja od podstaw.

Już przy instalacji systemu operacyjnego na nowy dysk należy zadbać o kilka spraw. Po pierwsze system plików - pomimo journalingu, czyli prowadzonego automatycznie dziennika działań, najlepszym systemem dla SSD będzie EXT4. Jeżeli ktoś potrzebuje osobnej partycji dla /home (katalog na dane użytkownika) to również proponuję aby sformatować ją jako EXT4. Należy natomiast całkowicie zrezygnować że SWAP'u (przestrzeni wymiany dla danych z pamięci operacyjnej) chyba że posiadamy mniej niż 4GB pamięci operacyjnej - w takiej sytuacji lepiej doposażyć komputer w większą ilość pamięci niż tworzyć SWAP. Partycja ta bowiem powoduje ogrom odczytów i zapisów, co przyśpiesza zużywanie się komórek pamięci.

Kolejnym elementem o który warto zadbać jest zostawienie części miejsca na dysku niezaalokowanej, czyli nieprzydzielonej do żadnej partycji. Technika ta nosi nazwę overprovisioning i w przypadku niektórych dysków bywa stosowana fabrycznie - nic nie stoi jednak na przeszkodzie aby również i w takim wypadku użyć jej we własnym zakresie. Zastosowanie takich nadmiarowych bloków pamięci pozwala na prawidłową pracę kontrolera dysku ze względu na pozostawienie części komórek wolnej, co umożliwia na przykład funkcjonowanie mechanizmu garbage collecion, który zwiększa wydajność nośnika przenosząc niektóre dane na inne komórki pamięci, a także dba o to by zapisy dokonywane były na czystych komórkach, czyli takich z których wcześniej wyczyszczone zostały zbędne już dane. Rozmiar takiego nieprzydzielonego miejsca zależy od pojemności dysku - zalecam pozostawić około 15% do 20% miejsca na dysku jako teoretyczny bezużytek.

 Montowanie dysków - modyfikacje w /etc/fstab.

Po instalacji proponuję również zastosować kilka zmian celem zmniejszenia ilości zapisów. Jedną z nich jest dodanie dwóch parametrów do konfiguracji montowania dysków, celem wyłączenia zapisu czasu dostępu do folderów i katalogów. W większości przypadków są to zbędne zapisy, można więc spokojnie funkcje tą wyłączyć.

  • Uruchamiamy okienko konsoli poleceń (zwykle CTRL+ALT+T) oraz korzystając z komendy sudo nano /etc/fstab przechodzimy do trybu edycji.
  • Pierwszy wpis w pliku nieposiadający znaczku # (symbol komentarza) jest konfiguracją dysku systemowego. Dodajemy bezpośrednio przed errors=remount-ro atrybuty noatime,nodiratime, - ważne jest odpowiednie zachowanie przecinków, nie należy również używać spacji. W innym wypadku może być problem z ponownym uruchomieniem systemu operacyjnego.
  • Zapisujemy zmiany w pliku korzystając z kombinacji klawiaturowej CTRL+X. Zmiany te zaczną obowiązywać po restarcie systemu.

 Przenosimy pliki tymczasowe oraz logi do RAMu.

Kolejnym ciekawym usprawnieniem nie tylko żywotności dysku SSD ale i wydajności całej maszyny jest przeniesienie logów znajdujących się w /var/log oraz plików z /tmp do wirtualnego dysku utworzonego z pamięci RAM, znany pod nazwą tmpfs. Pliki z tej lokalizacji będą automatycznie oczyszczane przy ponownym uruchomieniu ze względu na ulotność pamięci o dostępie losowym, zaś dostęp do nich będzie szybszy co przełoży się na sprawniejsze działanie aplikacji.

Aby takiej modyfikacji dokonać należy - ponownie w pliku /etc/fstab, poczynić pewne zmiany. Przechodzimy zatem komendą sudo nano /etc/fstab do trybu edycji oraz na końcu pliku dopisujemy (polecam kopiuj->wklej) następujące linie:

tmpfs   /var/log    tmpfs   defaults,noatime,nodiratime   0   0
tmpfs   /tmp    tmpfs   defaults,noatime,nodiratime,mode=1777  0   0

Całość pliku ma wyglądać wówczas w następujący sposób:

Po upewnieniu się że wszystko jest w prawidłowy sposób zapisujemy plik. Podobnie jak w poprzednim elemencie, zmiany zaczną funkcjonować po ponownym uruchomieniu systemu.

Porządek nie tylko od święta - codzienny TRIM dysku.

Jedną z istotnych różnic między dyskami HDD a SSD jest sposób ich konserwacji. W przypadku klasycznych nośników dane się defragmentowało (w systemach plików typu NTFS), bądź pliki w automatyczny sposób były poprawnie alokowane (przykładowo systemy plików EXT3 lub EXT4). W przypadku SSD niezależnie od zastosowanego systemu plików, pamięć należy oczyszczać - w nośnikach tego typu dokonanie operacji usunięcia pliku z poziomu systemu operacyjnego oznacza tylko usunięcie informacji o pliku oraz zaznaczenie właściwych danych jako do wymazania - nie są one wymazywane natychmiast, przez co nawet po usunięciu danych, komórki je przechowujące dalej nie są zwolnione. W przypadku próby zapisu danych na tej samej komórce kontroler musi najpierw daną komórkę oczyścić, a następnie może dokonać operacji zapisu, co w oczywisty sposób wpływa negatywnie na wydajność. Możemy temu zapobiec w dwojaki sposób - wymuszając konieczność wymazywania danej komórki bezpośrednio po usunięciu danych lub dokonując co jakiś czas masowego oczyszczania wszystkich komórek dysku - operacja ta nazywana jest TRIM. Pierwsza metoda niestety również wiąże się z utratą wydajności, przez co w wielu systemach bezpośrednio po ich instalacji zaimplementowane jest automatyczne dokonanie TRIM'u co jakiś czas.

W Linux Mint 18.3 oraz dystrybucjach bazowanych na Ubuntu, jest uruchamiany domyślnie co tydzień, co przy intensywnym używaniu może być zbyt długim okresem. Z łatwością jednak możemy to zmienić korzystając z jednej komendy:

sudo mv /etc/cron.weekly/fstrim /etc/cron.daily; sudo chmod +x /etc/cron.daily/fstrim

Komenda ta ma za zadanie przenieść zadanie z tygodniowego harmonogramu zadań (linuksowy cron) do dziennego. Dzięki temu wydajność dysku SSD nie będzie ulegać degradacji w miarę zajmowania komórek pamięci, gdyż będą one codzienne czyszczone. Sama procedura trwa dosłownie kilka sekund i jedynym objawem jej trwania jest podwyższona liczba operacji IO w momencie trwania TRIM'u. Spowolnienie pracy w tej chwili nie jest w żaden sposób odczuwalne.

Zmiana schedulera I/O.

Scheduler, można przetłumaczyć jako planista lub harmonogram, służący do organizacji operacji zapisu i odczytu na dyskach dołączonych do komputera. W systemie Linux wyróżniamy trzech planistów: cfq, noop, oraz deadline. Zwykle cfq jest ustawiony domyślnie w większości dystrybucji i jest on dobry dla dysków HDD, natomiast niezbyt przyjazny dla pamięci SSD. Scheduler noop z kolei nie nadaje się do użytku na dyskach HDD, jest natomiast bardzo dobrym planistą dla nośników SSD. Najlepszym wyborem w tej sytuacji jest deadline, który jest zarówno przyjazny i dla klasycznych talerzowców i dla nowoczesnych nośników półprzewodnikowych. Aby go ustawić jako domyślny należy przejść do trybu edycji pliku /etc/default/grub (komenda sudo nano /etc/default/grub, oraz wyszukać w nim linii GRUB_CMDLINE_LINUX_DEFAULT. W cudzysłowie należy dopisać elevator=deadline, bez usuwania poprzedniej zawartości atrybuty oraz zapisać plik. Następnie aby zatwierdzić zmiany należy skorzystać z polecenia sudo update-grub;shutdown -r now, która automatycznie dokona restartu komputera. Po ponownym uruchomieniu maszyny wprowadzenie zmiany w życie możemy sprawdzić wpisując w okienku konsoli cat /sys/block/sda/queue/scheduler.

 Żegnamy hibernację.

Hibernacja bywa przydatnym narzędziem i pozwala na szybkie wybudzenie sprzętu, a jednocześnie odłączyć go od zasilania. Warto jednak wspomnieć że o ile w przypadku HDD gdzie zimny rozruch systemu trwa około 1.5 minuty jest faktycznie przydatna, to w przypadku SSD gdzie boot systemu potrafi trwać 6 sekund opcja ta nie jest aż tak potrzebna, a jest wręcz szkodliwa. W odróżnieniu od zwykłego wstrzymania pracy komputera, w przypadku hibernacji na dysku zapisywany jest obecny status komputera oraz cały zrzut pamięci operacyjnej, generując przy tym duże ilości zapisu. Posiadając SSD najlepiej jest zatem opcję tą całkowicie wyłączyć. Aby to uczynić w okienku konsoli należy posłużyć się komendą.

sudo rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

Po restarcie opcja hibernacji zniknie z menu zasilania.

 Optymalizacja Firefox'a pod SSD.

Wbudowana w system przeglądarka również wykonuje dużo operacji zapisów - historia, katalog pobranych plików, cache, cookies - to wszystko sukcesywnie ląduje na SSD, powoli go niszcząc. Jest jednak sposób na zaradzenie temu problemowi, który opisany został w jednej z moich publikacji - jest to metoda pozwalająca jednocześnie przyśpieszyć działanie ognistego lista, jednocześnie unikając nadmiernego zużycia komórek pamięci.

Optymalizacja Windows'a pod SSD.

Na dysku SSD możemy, podobnie jak na klasycznym dysku mechanicznym, tworzyć wiele partycji (pamiętajmy jednak iż MBR ogranicza ich ilość do czterech), co pozwala na instalację wielu systemów - na przykład istnieje możliwość instalacji Windows'a obok Linux'a. Należy wtedy zadbać również o odpowiednią optymalizację systemu Windows odpowiednimi dla niego technikami, które bardziej szczegółowo opisał bloger DewX. Warto jednak przy tym pamiętać iż system Microsoftu nie jest szczególnie dobrym kompanem dla nowoczesnych typów dysków twardych.

Kilka słów końcowych

Zdaje sobie sprawę że zapewne znalazłoby się jeszcze kilka innych technik oszczędzania dysku SSD, natomiast zwykle wiążą się one z dużymi niegodnościami, dlatego nie używam ich oraz nie będę ich omawiał, a także do nich praktykowania namawiał. Jedną z nich jest wyłączenie journalingu EXT4 - wiąże się to jednak z dużo większym ryzykiem utraty danych, ze względu na wyłączenie jednego z kluczowych technik zabezpieczających partycję przed logiczną awarią, dlatego stanowczo nie zalecam ich stosowania.

Tymczasem życzę długiej i bezkonfliktowej współpracy z Waszym dyskiem SSD! :).
  

linux sprzęt porady
reklama
r   e   k   l   a   m   a

Komentarze