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

6 komentarzy

  1. miałem discard w fstab a i tak polecenie fstrim obcięło ponad 6 GiB. Czy tak powinno być?

  2. Raczej tak, wynik polecenia fstrim nie wyświetla ile MiB/GiB odzyskano po czyszczeniu, tylko ile zostało sprawdzonych pod kątem bloków zaznaczonych do usunięcia. Czyli sprawdzono/obcięto 5GiB, z tego uwolniono do pozostałego użycia np. 2MiB.

  3. “Przypadkowo” dowiedziałem się że na imieniny mam dostać dysk SSD 😀 Problem polega na tym że muszę go sobie wybrać, a nie znam się na tym. Czy mógłbym prosić autora bloga i/lub czytelników o pomoc?

    Mam stary komputer – Lenovo R60e (typ 0657-KFG, procesor Intel Core Duo T2300@1.6GHz, 3 GB RAM, 80GB HDD). Z tego co zdołałem się zorientować to laptop obsługuje Serial ATA-150, więc chciałbym kupić najzwyklejszy dysk SSD, bez żadnych super transferów (nie będę go przekładał do innego komputera, bo nie planuję zmiany jeszcze przez dłuższy czas).
    Czy taki dysk będzie odpowiedni? http://www.morele.net/dysk-ssd-silicon-power-slim-s60-120gb-2-5-sata3-550-500mb-s-7mm-sp120gbss3s60s25-580236/ Zależałoby mi na dobrej współpracy z Win XP (jeśli dobrze zrozumiałem to dysk powinien mieć sprzętową funkcję TRIM) bo korzystam z niego każdego dnia, ucząc się angielskiego w programie SuperMemo.

    Moje drugie pytanie jest bardziej skomplikowane – jak bezboleśnie i z uwzględnieniem tzw. “partition alignment” przenieść dane? W tej chwili na dysku mam Win XP oraz Manjaro.

    Tutaj wynik polecenia ‘sudo fdisk -l’:
    Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xcef59932

    Device Boot Start End Sectors Size Id Type
    /dev/sda1 4096 83888127 83884032 40G 7 HPFS/NTFS/exFAT
    /dev/sda2 147299040 156295439 8996400 4.3G 2 XENIX root
    /dev/sda3 * 83888128 140528752 56640625 27G 83 Linux
    /dev/sda4 140528753 147299039 6770287 3.2G 83 Linux

    Partition table entries are not in disk order.

    Tutaj zrzut ekranu z programu GParted: http://bankfotek.pl/view/1927297

    Zacząłem czytać o partition alignment, ale… pogubiłem się. Jedni używają jednostek GB, drudzy GiB, jedni radzą aby partycja zaczynała się od wielokrotności 2048, drudzy że od wielokrotności 4096. Mam mętlik w głowie. Nie ukrywam że chciałbym aby po przeniesieniu partycja z Win XP nadal miała 40GB, a partycję z Manjaro chciałbym rozszerzyć do maksymalnej dostępnej wielkości (w tej chwili ma 27GB) i żeby wszystko działało w ten sposób żeby jak najmniej zużywać SSD.

    Nie wiem czy to dobry pomysł, aby spróbować zrobić właściwy (tzn. odpowiedni dla SSD) partition alignment jeszcze na HDD i potem uruchomić klonowanie dysku programem Clonezilla, a następnie rozszerzyć partycję z Manjaro programem GParted? A może przenieść tylko XP i partycję recovery a Manjaro zainstalować na świeżo? Czy w tym drugim przypadku Manjaro dobrze się “ułoży” na SSD?

    Dziękuję za pomoc i przepraszam za trochę chaotyczną wypowiedź 🙂

    Michał

  4. Myślę, że obecnie jaki dysk nie wybierzesz, będzie w porządku. Ja osobiście korzystam z produktów OCZ (Vertex IV), gdyż chyba jako jedyna firma udostępniają linuksowe narzędzie do zmiany firmware w swoich dyskach. Które SSD będzie współpracowało dobrze z XP? Nie mam pojęcia, w tej kwestii trzeba by się zapytać kogoś biegłego w tym systemie – pamiętaj, że XP to technologia z początku wieku, SSD pojawiły się dekadę później.

    Co do struktury dysku – tym obecnie też bym sobie raczej już głowy nie zawracał. Nowoczesne narzędzia typu gparted już tego dopilnują za nas (instalatory linuksowe też robią to prawidłowo). Przeniesienie partycji – tutaj może pojawić się największy zgrzyt (struktura) – osobiście nigdy czegoś takiego nie robiłem, po prostu partycjonowałem dysk jak chciałem i instalowałem system – ale korzystam tylko z Linuksów, które instalują się i są gotowe do pracy po 10 – 20 min.

    Zwróć uwagę na zyskiem wydajności. Ze zwykłym SATA (do 150MB) może okazać się, że odczujesz moc SSD w niewielkim stopniu. Choć z drugiej strony – jeżeli korzystasz teraz z dysku HDD który wyciąga w granicach 40 – 80 MB – to różnica będzie.

Dodaj komentarz

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

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.