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?
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?
Odpowiedzi:
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
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)
Istnieją trzy sposoby wykonania TRIM, ręczny, zaplanowany i automatyczny:
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
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 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ć.
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ę.
/ /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ę!
syncpo dd, ponieważ przynajmniej w moim systemie plik tymczasowy nie jest tworzony od razu, więc hdparm nic nie zgłasza.
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
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
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
Odbuduj swoje initramfs. Opcje crypttab są tam przechowywane i używane podczas rozruchu.
sudo update-initramfs -c -k all
Restart.
Sprawdź, czy TRIM jest teraz aktywny.
sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
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!