Jak Cron Trimem zawiadował

Wszyscy użytkownicy dysków SSD są z pewnością zadowoleni ze skoku wydajnościowego jaki umożliwiły te urządzenia. Zadowolenie jest podwójne, bo teoretycznie nowa technologia, a działa bezproblemowo pod Linuksem. Jednak są niektóre niuanse tych dysków, o których warto pamiętać. Takim niuansem jest komenda Trim, porządkująca bloki pamięci flash zajęte przez usunięte pliki. Sposobów na użytkowanie tej komendy pod Linuksem jest kilka, od najpopularniejszej opcji ‘discard’ umieszczonej w opcjach /etc/fstab przy partycji dysku SSD, po polecenie fstrim, którego uskutecznieniem się zajmiemy. Po co? Niekiedy opcja ‘discard’ może prowadzić do niezamierzonych wahnięć w wydajności naszego systemu.

Podstawowa i pierwsza zasada – jeżeli z system jest wszystko w porządku i działa jak uważasz, że powinien działać, niczego nie poprawiaj. A pozostali mogą przejść do wynaturzeń poniżej.

Udowodniono, że ‘discard’ nie do końca sprawnie i szybko radzi sobie z usuwaniem dużej liczby małych plików. Jeżeli ktoś zauważył w swojej konfiguracji rzeczony problem, powinien zainteresować się poleceniem fstrim z pakietu util-linux. Wszystko co musimy zrobić, to wyłączyć discard w /etc/fstab, oraz uruchomić na Cronie cykliczne wywoływanie polecenia fstrim. Nic prostszego:

sudo gedit /etc/fstab

… i dla pożądanej partycji usuwamy opcję ‘discard’ (o ile w ogóle ona tam jest).

Teraz dodamy zadanie dla Crona:

sudo gedit /etc/cron.daily/trim

… i wklejamy zawartość skryptu:

#!/bin/sh
LOG=/var/log/trim.log
echo "--- $(date -R) ---" >> $LOG
fstrim -v / >> $LOG

… oraz zezwalamy na jego wykonywanie:

sudo chmod +x /etc/cron.daily/trim

Kilka słów odnośnie skryptu. W tym konkretnym przypadku logujemy wywołania polecenia fstrim do pliku /var/log/trim.log, oraz porządkowaniu poddajemy partycję na dysku SSD, w moim przypadku /. Jeżeli ktoś posiada inne partycji umieszczone na tym nośniku, to wystarczy powielić linijkę ‘fstrim -v . >> $LOG’, zamieniając / na swój punkt montowania (np. /home).

Efekt działania powyższego podglądniemy w /var/log/trim.log – z tym, że skrypt jest wywoływany raz na dzień, dlatego cokolwiek odczytamy dopiero po godzinie przewidzianej na wykonywanie /etc/cron.daily/.

Jak działa samo polecenie fstrim? Łatwo to sprawdzić, czyli:

sudo fstrim -v /

/: obcięto 737,3 MiB (bajtów: 773120000)

Oznacza to, że 737 MiB danych zostało sprawdzonych pod kątem ew. oczyszczenia usuniętych bloków (i tym samym uwolnienia ich do ponownego użycia).