Jak włączyć TRIM?

184

Wiem, że jądro Linuksa obsługuje TRIM od wersji 2.6.33, więc powinno być wsparcie TRIM w Ubuntu.

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

    
zadawane Uli 26.12.2010, 13:44
źródło

2 odpowiedzi

194

Ubuntu 14.10 wzwyż

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

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

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/fstrim i dodaj --no-model-check )

Ubuntu 13.10 i Starsze wersje

Istnieją trzy sposoby wykonania instrukcji TRIM, manual, schedule i automatic:

Instrukcja TRIM

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

sudo fstrim /

jednak nie jest potrzebne, gdy włączone jest zaplanowane lub automatyczne TRIM, jak opisano w poniższych sekcjach.

Uwaga: W przypadku Ubuntu 11.04 i wcześniejszych systemów fstrim nie jest dostępny, więc musisz użyć wiper.sh dostarczonego z hdparm w /usr/share/doc/hdparm/contrib/wiper.sh.gz

Zaplanowane TRIM (zalecane)

To jest obecnie zalecana metoda i jest planowana do aktywacji domyślnie dla Ubuntu 14.04 . Oto sposób ręcznego aktywowania go w starszych wersjach ubuntu (od 11.10 do 13.10):

Utwórz cotygodniowy plik skryptu zlecenia CRON:

gksudo gedit /etc/cron.weekly/fstrim

Wklej poniższy 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 założenie zakłada, że ​​tylko rootowy system plików / znajduje się na dysku SSD. Jeśli masz więcej punktów podłączenia, które znajdują się na jednym lub kilku dyskach SSD, dodaj je do SSD_MOUNT_POINTS zgodnie z opisem w kodzie.

Spraw, aby skrypt był wykonywalny:

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

I wreszcie przetestuj:

sudo /etc/cron.weekly/fstrim

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

Automatyczne TRIM (Przestarzałe, Wolno)

Automatyczne TRIM jest obsługiwane od wersji Ubuntu 10.10 (jądro 2.6.33) z systemem plików EXT4. Jednak wysłanie komend TRIM na dysk SSD w czasie rzeczywistym - po każdym usunięciu - zostało rozpoznane, aby usuwanie było znacznie wolniejsze niż zwykle na niektórych dyskach. Dlatego zaleca się cotygodniowe zaplanowane TRIM poprzez zadanie cron (opisane powyżej).

Aby włączyć automatyczne TRIM na dysku lub partycji, muszą być one montowane z opcją discard 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 discard do wpisu opcji fstab (oddzielonych 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

Na wyjściu skopiuj liczbę pod begin_LBA i sprawdź nazwę urządzenia SSD: System->Administration->Disk Utility np. sda, sdb, sdc ...

Uruchom następujące czynności, ale zastąp% [ADDRESS] (begin_LBA) i sdX (nazwa urządzenia SSD) danymi uzyskanymi powyżej.

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

dane wyjściowe powinny być długimi ciągami znaków dla tych sektorów

sudo rm tempfile
sync

Powtórz polecenie hdparm z powyższego:

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

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

    
odpowiedział Uli 30.09.2015, 23:58
źródło
26

Zauważ, że jeśli korzystasz z szyfrowania, rozwiązania opublikowane tutaj do tej pory nie pomogą, ponieważ musisz włączyć obsługę TRIM w warstwie szyfrowania. Można to zrobić za pomocą wersji jądra 3.1+ i wersji 1.4.3 Cryptsetup, które są zawarte w Ubuntu 12.04.

Znajdź mój przewodnik po ustawianiu TRIM dla szyfrowanych partycji LUKS tutaj

Jak aktywować TRIM na zaszyfrowanych partycjach LUKS w Ubuntu & amp; Debian

Ta instrukcja krok po kroku pozwoli Ci skorzystać z technologii TRIM dla zaszyfrowanych partycji SSD dla Cryptsetup 1.4 lub nowszego i jądra 3.1 lub nowszego. Prowadzi to do bezproblemowego korzystania z dysków SSD, ponieważ

  

"TRIM włącza obsługę SSD w przetwarzaniu śmieci   w przeciwnym razie znacznie spowolniłoby przyszłe operacje zapisu do pliku   zaangażowane bloki, z góry. "

Przykładowa konfiguracja

Notebook z dyskiem SSD jako pojedynczym dyskiem, Linux zainstalowany na pojedynczej partycji root LVM ext4 z partycją wymiany LVM, zarówno 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

HowTo

  1. Utwórz kopię zapasową wszystkich swoich danych. Robisz zamieszanie w swoim systemie plików więc posiadanie kopii zapasowej to po prostu dobry pomysł.
  2. Upewnij się, że masz wymagane wersje jądra i cryptsetup (3.1 & amp; 1,4, np. w Ubuntu 12.04, strzeż się jednak, w momencie pisania 12.04 nadal jest wersją beta).
  3. Dodaj parametr discard do opcji systemu plików zaszyfrowanych Ilość woluminów LVM w pliku / etc / fstab. To sprawia, że ​​system plików z twoja partycja LVM świadoma, ż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 jest świadomy że chcesz użyć TRIM, to skutecznie zablokuje wszystkie TRIM operacje pochodzące z systemu plików partycji LVM, dla bezpieczeństwa powody. Dodaj parametr discard do opcji cryptdevice w / etc / crypttab, aby LUKS akceptował zachowanie odrzuceń LVM partycja.

    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. Uruchom ponownie.

  7. Sprawdź, czy TRIM jest teraz aktywny.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Jeśli ostatnie polecenie pokazuje taki wynik (1 allow_discards 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 aktywne. Ciesz się bezproblemowym dyskiem SSD!

    
odpowiedział nem75 14.04.2012, 17:00
źródło

Przeczytaj inne pytania na temat tagów