Jak włączyć TRIM?

189

Wiem, że jądro Linuksa obsługuje TRIM od wersji 2.6.33, dlatego w Ubuntu powinna istnieć obsługa TRIM.

Czy TRIM jest domyślnie włączony, czy muszę zmienić niektóre ustawienia lub zainstalować dodatkowe oprogramowanie, aby działało? Jeśli tak to jak?

Uli
źródło
Właśnie wykonałem te instrukcje na webupd8, który daje kilka naprawdę dobrych opcji :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Wypróbowałem opcję automatycznego przycinania, jak opisano powyżej w „Automatic TRIM”, ale okazało się, że konfigurowanie codziennego crona działało znacznie lepiej w mojej konfiguracji.
bmbaker

Odpowiedzi:

197

Ubuntu 14.10 i nowsze

W Ubuntu 14.10 i 15.04 TRIMming odbywa się automatycznie co tydzień na wszystkich obsługiwanych dyskach SSD fstrim.

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

Od 15.04 Ubuntu używa Systemd i jej zegar ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

Od wersji Ubuntu 14.04 zaplanowane TRIM jest domyślnie włączone dla dysków SSD Intel, SAMSUNG, OCZ, Patriot i Sandisk. Jeśli masz inną markę, możesz wyłączyć sprawdzanie dostawcy, uruchamiając następujące polecenie:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(lub po prostu edytuj plik /etc/cron.weekly/fstrimi dodaj --no-model-check)

Ubuntu 13.10 i wcześniejsze

Istnieją trzy sposoby wykonania TRIM, ręczny, zaplanowany i automatyczny:

Ręczne PRZYCINANIE

W Ubuntu można to zrobić za pomocą fstrim:

sudo fstrim /

nie jest to jednak konieczne, gdy włączone są zaplanowane lub automatyczne TRIM, jak szczegółowo opisano w poniższych sekcjach.

Uwaga: W przypadku Ubuntu 11.04 i wcześniejszych systemach fstrim nie jest dostępny, więc trzeba użyć wiper.shwyposażona hdparmw/usr/share/doc/hdparm/contrib/wiper.sh.gz

Zaplanowane TRIM (zalecane)

Jest to obecnie zalecana metoda i planowana jest jej domyślna aktywacja w systemie Ubuntu 14.04 . Oto jak aktywować go ręcznie w starszych wersjach Ubuntu (od 11.10 do 13.10):

Utwórz tygodniowy plik skryptu zadania CRON:

gksudo gedit /etc/cron.weekly/fstrim

Wklej następujący kod do pliku, a następnie zapisz i zamknij plik:

#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Zauważ, że powyższe zakłada, że ​​tylko główny system plików /znajduje się na dysku SSD. Jeśli masz więcej punktów montowania na jednym lub kilku dyskach SSD, dodaj je SSD_MOUNT_POINTSzgodnie z opisem w kodzie.

Ustaw skrypt jako wykonywalny:

sudo chmod +x /etc/cron.weekly/fstrim

I na koniec przetestuj:

sudo /etc/cron.weekly/fstrim

Jeśli nie widzisz błędów, Twoje zadanie cron powinno działać poprawnie.

Automatyczne TRIM (przestarzałe, wolne)

Automatyczne TRIM jest obsługiwane od wersji Ubuntu 10.10 (jądro 2.6.33) z systemem plików EXT4. Jednak rozpoznawanie wysyłania poleceń TRIM na dysk SSD w czasie rzeczywistym - po każdym usunięciu - powoduje, że usuwanie jest znacznie wolniejsze niż zwykle na niektórych dyskach. Dlatego zaleca się cotygodniowe zaplanowane TRIM przez zadanie cron (opisane powyżej).

Aby włączyć automatyczne TRIM na dysku lub partycji, należy je zamontować z discardopcją w fstab. Najpierw wykonaj kopię zapasową pliku fstab, a następnie otwórz go do edycji:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Dodaj discarddo wpisu opcji fstab (oddzielony przecinkami) dla dysku SSD lub każdej partycji.

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

Zamknij i zapisz fstab, a następnie uruchom ponownie i automatyczne TRIM powinno działać.

Testowanie automatycznego TRIM

Aby sprawdzić, czy TRIM działa, wydaj następujące polecenia ( źródło ):

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Z danych wyjściowych skopiuj numer pod begin_LBAi sprawdź nazwę urządzenia swojego dysku SSD: System->Administration->Disk Utilitynp. Sda, sdb, sdc ...

Uruchom następujące polecenie, ale zamień [ADDRESS](begin_LBA) i sdX(nazwa urządzenia SSD) na szczegóły uzyskane powyżej.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

wyjście powinno być długim ciągiem znaków dla tych sektorów

sudo rm tempfile
sync

Powtórz hdparmpolecenie z góry:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Jeśli otrzymujesz tylko zera, to działa automatyczne TRIM. Jeśli jednak po usunięciu pliku sektory nadal nie są puste, poczekaj chwilę i ponownie uruchom komendę.

Uli
źródło
5
Testowanie TRIM może tak nie działać: serverfault.com/a/401506/60525
chrishiestand
1
@Uli Proszę, niech ktoś mi pomoże. Wydaje mi się, że to nie działa. Mam 4 partycje w moim ssd / /boot /usri /optużyłem innego dysku twardego dla mojego /home. Idę do cd / #sdci kontynuuję instrukcje, ale nigdy nie dostaję zer. Z góry dziękuję!
BugShotGG
1
@lightrush: Świetna edycja! Dziękujemy za aktualizację odpowiedzi.
Uli
1
Możesz dodać polecenie syncpo dd, ponieważ przynajmniej w moim systemie plik tymczasowy nie jest tworzony od razu, więc hdparm nic nie zgłasza.
Andreas J.,
2
systemd obsługuje to teraz. sudo systemctl status fstrim.timer
balony
28

Pamiętaj, że jeśli używasz szyfrowania, rozwiązania zamieszczone tutaj do tej pory ci nie pomogą, ponieważ musisz włączyć obsługę TRIM również w warstwie szyfrowania. Można to zrobić w przypadku jądra w wersji 3.1+ i wersji cryptsetup w wersji 1.4+, które są zawarte w Ubuntu 12.04.

Znajdź mój przewodnik na temat konfigurowania TRIM dla partycji szyfrowanych LUKS tutaj


Jak aktywować TRIM na partycjach szyfrowanych LUKS w Ubuntu i Debianie


Ten krok po kroku pozwoli ci skorzystać z technologii TRIM dla twoich zaszyfrowanych partycji SSD dla cryptsetup 1.4 lub wyższej i jądra 3.1 lub wyższej. Prowadzi to do bezproblemowego korzystania z dysku SSD, ponieważ

„TRIM umożliwia SSD obsługę narzutu wywozu śmieci, co w przeciwnym razie znacznie spowolniłoby przyszłe operacje zapisu do zaangażowanych bloków”.

Przykładowa konfiguracja

Notebook z SSD jako pojedynczym dyskiem, Linux zainstalowany na jednej partycji głównej ext4 LVM z partycją wymiany LVM, obie na zaszyfrowanej partycji logicznej LUKS.

SSD: / dev / sda

sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

Jak

  1. Wykonaj kopię zapasową wszystkich swoich danych. Masz problem z systemem plików, więc tworzenie kopii zapasowych jest po prostu dobrym pomysłem.
  2. Upewnij się, że posiadasz wymagane wersje jądra i cryptsetup (3.1 i 1.4, np. W Ubuntu 12.04, uważaj jednak, w chwili pisania 12.04 wciąż jest wersja beta).
  3. Dodaj parametr discard do opcji systemu plików zaszyfrowanych woluminów LVM w pliku / etc / fstab. To sprawia, że ​​system plików twojej partycji LVM wie, że chcesz użyć TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Ostatni krok to jednak za mało. Dopóki LUKS nie wie, że chcesz używać TRIM, ze względów bezpieczeństwa skutecznie blokuje wszystkie operacje TRIM pochodzące z systemu plików partycji LVM. Dodaj parametr discard do opcji cryptdevice w / etc / crypttab, aby LUKS akceptował zachowanie odrzucania partycji LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Odbuduj swoje initramfs. Opcje crypttab są tam przechowywane i używane podczas rozruchu.

    sudo update-initramfs -c -k all
    
  6. Restart.

  7. Sprawdź, czy TRIM jest teraz aktywny.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Jeśli ostatnie polecenie pokazuje taki wynik (1 zezwala na odrzucenie na końcu), wszystko jest ustawione.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Wynik

TRIM jest aktywowany. Ciesz się bezproblemowym dyskiem SSD!

nem75
źródło
@Marco Ceppi jakiś konkretny powód edycji, coś, co przeoczyłem?
nem75
Po prostu posprzątałem przecenę i usunąłem linię „podpisu” (zakłada się, że dostaniesz opinię poprzez komentarze i głosowanie na stronie.
Marco Ceppi
7
Przewodnik powinien zostać zawarty w tym przypadku, jeśli strona / strona jest niedostępna.
Cas
Poza tym jest to odpowiedź tylko do łącza, w ogóle nie działa. Większość z was korzysta z LVM z LUKS, który nie jest w stanie propagować TRIM w 12.04. Zobacz tę odpowiedź, aby uzyskać więcej informacji.
gertvdijk
1
Czy po wykonaniu tych instrukcji konieczne jest skonfigurowanie zadania cron w celu przycięcia dysku w dniu 14.04?
ajn