Kilka porad dotyczących użytkowania dysków SSD w Ubuntu (Linuxie)

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. 🙂

10 odpowiedzi na “Kilka porad dotyczących użytkowania dysków SSD w Ubuntu (Linuxie)”

  1. Piotr pisze:

    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.

  2. leniwiec pisze:

    @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ł 😉

  3. TyGrys pisze:

    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

  4. leniwiec pisze:

    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 🙂

  5. Tomasz Root pisze:

    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.

  6. leniwiec pisze:

    @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.

  7. Tomasz pisze:

    Witaj
    A jak zapisywac pliki pamięci ?home/.cache w /tmp?

  8. papuga pisze:

    Czy ktoś ma doświadczenia z RAID1 na intelu? (HP Proliant ML10 Gen9) Mam 2x SSD Samsung 863a (240G) – montowany pod bazę danych. Widać to jako: /dev/mapper/isw_blablabla_VolumeDB1. #>lsbld -D daje takie pomieszane mapowanie sdc->sdc1 , sdc->isw_…VolumeDB -> isw_.._VolumeDB1 , mają DISC-GRAN: 512B oraz DISC-MAX: 2G, montuje to niby po “isw_.._VolumeDB1” choć można się odwołać tez po /dev/sdc1 i /dev/sdd1 (dwa SSD widac jako sdc i sdd). Zrobiłbym raz na tydzień #>fstrim z crona, ale cholera wie co wskazać isw_ czy sdc, sdd ? A raczej nie chcę załatwić danych , a serwer produkcyjny i wiecznie zajęty. Nie mam miejsca na zabawę. ps. Ustawiłem im MAX-SEC na 200G (~20% mniej) + zalozylem partycję i dalem tune2fs -m 20 (% reserve). Baza ma kilka GB, wazne by dyski działały kilka-naście lat.

  9. papuga pisze:

    poprawka: #>lsblk -D
    Na innych stronach kazą uważać i jak nie ma DISC-GRAN i DISC-MAX (=0) to że można sobie zniszczyć dane discard/fstrim.
    Ja niby mam wykazane (512B i 2G) jak pisałem.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *