www.leniwiec.org

Dwa dni temu przesiadłem się na nowy dysk SSD, a przy okazji zmieniłem system na nowe Ubuntu 14.04LTS. Jak wiadomo, częste zapisywanie na dyskach tego typu mocno skraca ich żywotność. Poniżej chciałbym wam przedstawić kilka prostych zmian w systemie, które na pewno nie zaszkodzą, a mogą poprawić żywotność naszych drogich dysków ;)

  1. Wyłączenie (ograniczenie) swapowania
    Swapowanie dysku generuje masę operacji zapisu i przyczynia się do obniżenia jego żywotności. Dlatego warto je wyłączyć lub mocno ograniczyć. Jednakże taka operacja jest zalecana wyłącznie szczęśliwym posiadaczom dużego RAMu. W tym miejscu chciałbym zaznaczyć, że w dzisiejszych czasach pamięć RAM jest bardzo tania. 8 czy 16Gb zainstalowanej pamięci to już nie żaden luksus. Dokupienie kolejnych kostek również nie stanowi dużego finansowego wyzwania.
    Aby ograniczyć swapowanie, należy zmniejszyć parametr określający, kiedy system ma rozpocząć swapowanie. Im mniejsza jego wartość, tym wyższy musi być „load”, aby system zaczął swapować. Aktualne ustawienie można sprawdzić przy pomocy poniższego polecenia:

    cat /proc/sys/vm/swappiness

    Aby zmienić trwale ten parametr, należy w pliku /etc/sysctl.conf, na samym dole dodać następujące linijki:

    vm.swappiness = 1
    vm.vfs_cache_pressure=50

    Zmieniając wartość pierwszej z nich na 0, wyłączymy swapowanie całkowicie. ;)

  2. Wyłączenie „access time stamp”, czyli zapisywania przez system plików czasu dostępu do pliku po każdym jego odczycie.

    W tym celu należy zedytować plik /etc/fstab i dodać do każdej używanej partycji parametr noatime. Powinno to wyglądać m/w tak:

    UUID=86a5fc7a-efb8-41a7-b208-23827fc8fe4f / ext4 noatime,errors=remount-ro 0 1

  3. Włączenie TRIM

    Każdy dysk ssd powinien być regularnie „czyszczony”. Nieczyszczony dysk po pewnym (dłuższym) czasie zacznie działać coraz wolniej. Służy do tego polecenie fstrim. Aby manualnie uruchomić program, należy wydać następujące polecenie:

    fstrim -v /

    co spowoduje wyczyszczenie głównego systemu plików. Jeśli mamy dysk podzielony na partycje, które są podmontowane w różnych katalogach, należy polecenie uruchomić dla każdej partycji osobno. Np. u mnie (mam podział na / oraz /home) wyglądać to będzie tak:

    fstrim -v /
    fstrim -v /home

    Dobrym zwyczajem jest dodanie tego polecenia na końcu pliku /etc/rc.local, tak aby uruchamiało się automatycznie po każdym włączeniu komputera.
    W przypadku maszyn, które są włączone non-stop (np. serwery), można polecenie to dodać do crona. W tym celu w pliku /etc/crontab możemy dodać coś m/w takiego:

    10 12 * * * root fstrim -v / && fstrim -v /home

    Co oznacza, że codziennie o 12:10 w południe zostanie uruchomione polecenie fstrim dla dysku / oraz /home.
    Ja na swoim laptopie nie dodałem tego polecenia do pliku rc.local, a właśnie do crona, dlatego że wolałem, aby system uruchamiał mi się szybciej, a komputer i tak zazwyczaj w południe jest włączony, więc polecenie i tak uruchomi się raz na dobę. ;)

  4. Unikaj hibernacji
    Tak jest. Hibernując system, powodujesz bardzo bardzo wiele operacji zapisu. W przypadku używania dysków ssd dobrym zwyczajem jest zrezygnowanie z korzystania z hibernacji systemu. Nie jest to wbrew pozorom uciążliwe. U mnie system włącza się ok. 3 sekundy, tak że wyłączanie komputera za każdym razem nie stanowi wielkiej uciążliwości (przynajmniej dla mnie). :)

  5. Unikaj defragmentacji dysku!
  6. Przeniesienie plików tymczasowych oraz logów systemowych na wirtualną partycję.
    Możemy stworzyć wirtualny dysk w pamięci operacyjnej, który będziemy montować w /tmp oraz /var/log, dzięki czemu żadne operacje zapisu do plików tmp nie będą obciążać naszego dysku ssd. Jedynym minusem takiego rozwiązania jest to, że pliki logów będą czyszczone (usuwane) w czasie każdego rebootu systemu.

    Aby stworzyć takie wirtualne dyski, należy w pliku /etc/fstab dodać następujące linijki:

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

    Następnie, w celu odtworzenia struktury plików po każdym restarcie należy w pliku /etc/rc.local dodać na samym końcu:

    for dir in apparmor apt cups dist-upgrade fsck gdm installer samba unattended-upgrades ;
    do
    if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
    fi
    done

  7. Ograniczenie liczby zapisywanych plików cache przez FireFoxa
    W tym celu w Edycja->Preferencje->Zaawansowane->Sieć wybieramy opcję „Używaj ręcznego zarządzania pamięcią podręczną” i ustawiamy wartość „Ogranicz pamięć podręczną do” na 0.

Jest w necie wiele poradników, które pokazują jeszcze dziesiątki innych metod na zwiększanie żywotności dysków SSD, jednak nie popadajmy w paranoję. Dyski SSD to już nie nowość i stają się one coraz to doskonalsze, a zachowując zdrowy rozsądek i zmieniając kilka ustawień w systemie, możemy cieszyć się długą i bezproblemową pracą naszego SSD. :-)

7 KOMENTARZY
Piotr
25 czerwiec 2014
ad

Z /var/log trzeba uważać, bo po jakimś czasie się okazuje, że jakaś usługa nie startuje, a człowiek zapomina, że /var/log (także /var/spool, jak niektórzy proponują) jest w tmpfs.
Miałem tak z jedną usługą, nie pamiętam, czy było to couchdb, mysql czy apache.
Gdyby skrypty startowe sprawdzały i tworzyły te katalogi, byłoby ok, niestety nie wszystkie to robią.
Ja wróciłem do /var/log na dysku.

leniwiec
25 czerwiec 2014
ad

@PIOTR na desktopie, a o desktopach mowa, nie ma to większego znaczenia. Poważnego serwera, mimo wszystko bym na ssd chyba jednak nie stawiał ;)

TyGrys
26 styczeń 2015
ad

Cześć Piotrze :) jestem początkującym „linuksiarzem” czy miałbyś jakieś porady dotyczące konfiguracji systemu jeśli w laptopie mam zainstalowany dysk SSD i HDD w miejscu cd-rom? czy mogę wtedy partycję swap i home utworzyć na HDD?
W takiej sytuacji SSD 64 GB chyba w zupełności wystarczy?

Pozdrawiam

leniwiec
29 styczeń 2015
ad

TyGrys: To co piszesz jest rozsądne. Najlepiej na HDD wsadzić /home, /var i /tmp a całą resztę czyli / na SSD, wtedy te 64Gb to nawet zbyt wiele :)

29 kwiecień 2015
Tomasz Root
1 styczeń 2017
ad

Prócz włączenie TRIM, reszta jest bezcelowa. Przykładem są serwery na dyskach SSD, gdzie gwarancje sięgają ~10 lat. Jestem w posiadaniu dysku na PCIe x4 z gwarancją na 10 lat.

leniwiec
1 styczeń 2017
ad

@Tomasz Root, zgadza się, z tym że dwa lata temu, tanie dyski z segmentu konsumenckiego były po prostu słabe, i te wszystkie zabiegi miały większy/mniejszy sens.

Wyślij