Czy Ubuntu obsługuje komendę TRIM do użycia z dyskiem SSD?

34

Dyski SSD należy „wyczyścić / zresetować” po zapełnieniu dysku, aby zachować wydajność. Odbywa się to za pomocą polecenia TRIM dla nowych dysków SSD. Czy Ubuntu obsługuje polecenie TRIM (przez hdparm itp.) Do czyszczenia / resetowania tych napędów?

ssanj
źródło
Dobre pytanie, choć zauważ, że stopień, w jakim TRIM poprawia wydajność, różni się między dyskami SSD, w przypadku niektórych nie robi to tak dużej różnicy, jak mogłoby się wydawać (choć i tak w większości wydają się wolniejsze).
Nicholas Knight
1
Myślę, że wydajność zostałaby przywrócona do tych samych (jeśli nie zbliżonych) ustawień fabrycznych. Rzucić okiem tutaj o wyjaśnienie -> anandtech.com/show/2738/10
ssanj

Odpowiedzi:

24

Wygląda na to, że istnieje obsługa funkcji TRIM w 10.10 i nowszych wersjach:

Ponadto operacje TRIM odbywają się automatycznie - puste bloki są automatycznie zwalniane, gdy nie są już potrzebne (np. Usuwasz plik), jeśli dysk zgłasza, że ​​obsługuje TRIM. Aby to zadziałało, nie musisz ręcznie wydawać polecenia hdparm.

Jeremy Kerr
źródło
Myślałem, że nadal musisz używać narzędzi, które „wysłały” polecenie TRIM do SDD. Dobrze, jeśli działa tak, jak określono. :) W tym artykule Anandtech -> ( anandtech.com/show/2738/10 ) określono, że aby TRIM działał, zarówno system operacyjny, jak i dysk SSD wymagają obsługi TRIM. Wydaje mi się, że moje pytanie dotyczy obsługi TRIM w systemach OS / Linux, gdy są używane z dyskami SSD obsługującymi TRIM.
ssanj
3
Polecenie TRIM musi wiedzieć, które bloki należy zwolnić, więc wydawanie tego byłoby niebezpieczne, nie wiedząc dokładnie, które bloki na dysku nie są używane. Tak, zarówno system operacyjny, jak i dysk muszą mieć obsługę przycinania. W Linuksie zostało to dodane do jądra w wersji 2.6.33, więc będzie zawarte w Maverick. Zarówno sterownik dysku, z którego korzystasz system plików, musi obsługiwać przycinanie, aby to działało poprawnie. Jeśli używasz ext4 jako systemu plików w Maverick, wszystko powinno być w porządku.
Jeremy Kerr
Zastanawiam się zatem, czy możliwe będzie poddanie istniejących dysków SSD „modernizacji TRIM” w celu wyczyszczenia istniejącego cruftu nagromadzonego przed systemem operacyjnym obsługującym TRIM. Czy wymagana byłaby ponowna instalacja?
Kent Boogaart
20

Odpowiedź Jeremy'ego nie jest do końca dokładna AFAIK. Od jakiegoś czasu korzystam z najnowszego stabilnego jądra w Lucid i bardzo uważnie śledzę status TRIM, ponieważ mam główny dysk OCZ Agility.

Oto, co (myślę) wiem:

  • Jądro obsługuje TRIM od wersji 2.6.33 (Maverick to 2.6.35).

  • EXT4 ma obsługę TRIM, ale tylko gdy kronikowanie jest wyłączone.

  • Sposób działania TRIM w jądrze jest bardzo prosty i dość wolny. Dyski zgodne ze specyfikacjami mogą akceptować wiele zakresów, ale jądro może obecnie wykonywać tylko jeden zakres naraz. Wynika to z czegoś, co przeczytałem może miesiąc temu. Chciałbym mieć źródło, ponieważ może to nie być prawda lub nie mieć zastosowania.

Dziennikarze to dla mnie to zabija. Uszkodzenie danych to PITA.

Jednak nowsze wersje hdparm (v9.25 - Maverick jest w wersji v9.27) są wyposażone w skrypt o nazwie, wiper.shktóry wykonuje szybką analizę dysku, a następnie przycina całą pustą przestrzeń. Zamiast tracić funkcje, znacznie łatwiej jest wiper.shmi uruchamiać crona raz w tygodniu (lub raz dziennie / miesiąc / cokolwiek). Degradacja dysku SSD dla dysku systemu operacyjnego nie dzieje się tak szybko, chyba że ciągle rwiesz rzeczy. Nie potrzebujesz TRIMmingu w czasie rzeczywistym.

Istnieje również nakładka GUI o nazwie DiskTRIM, która nie wydaje się znajdować w repozytoriach. Mniej doświadczeni użytkownicy mogą uznać to za łatwiejsze w użyciu niż konfigurowanie zadań CRON.

Istnieją pliki PPA dla hdparm i disktrim i wszystkie mogą być uruchamiane na Lucid (i późniejszych) bez potrzeby jądra 2.6.33+.

Oli
źródło
Czy możesz podać link do tych umów PPA?
Jorge Castro
Czy więc włączenie discardopcji montowania dla ext4 wyłącza dziennikowanie? Właśnie szukałem referencji, ale nie mogę znaleźć żadnej innej niż ta odpowiedź - czy możesz podać źródło?
Hamish Downer
2
w Ubuntu 12.04 wiper.sh został zastąpiony fstrim
Tomodachi
1
@Oli: Przeczytałem trochę więcej i jestem teraz całkiem pewien, że opcja odrzuć nie wyłącza dziennika. Afaict pierwotnie opcja odrzucania działała tylko z dziennikiem (znalazłem tę łatkę, która pozwala odrzucić bez dziennika). Strona ext4 jądra dokumentuje opcję odrzucenia, ale nie wspomina, że ​​dziennik jest niezgodny.
Hamish Downer
8

Linux obsługuje automatyczne TRIM z systemem plików ETX4 od jądra 2.6.33.

Pierwsze wydanie Ubuntu z automatyczną obsługą TRIM to 10.10 (Maveric), ale należy je aktywować w fstab (jak opisano tutaj ).

Uli
źródło
4

Ogólnie tak, ponieważ istnieje wiele sposobów na uzyskanie nowszych jąder. Jeśli wyjaśnimy twoje pytanie, przeczytaj: „Czy 10.04 LTS ma gotowe wsparcie dla tego polecenia?” wtedy odpowiedź brzmi nie. Jednak zarówno jądra Mavericka, jak i Natty'ego (-generic, -generic-pae, -server i -virtual smiles) zostały przeniesione do wersji 10.04 LTS i są dostępne w $ aktualizacji aktualizacji w repozytoriach Ubuntu, np. linux-image-generic-lts-backport-maverickJest backportem Mavericka do Lucid .

Daniel T Chen
źródło
2

Używam 11.04 i nie wygląda na to, żeby TRIM działał po wyjęciu z pudełka.

Przetestowałem, korzystając z instrukcji tutaj, aby utworzyć plik, usunąć go i sprawdzić, czy sektory zostaną wyzerowane / usunięte .

Próbowałem włączyć TRIM, korzystając z instrukcji tutaj, ale żadnych kości

Uruchomiam wiper.sh, rozumiem

/sbin/wiper.sh --verbose --commit / dev / sda1
wiper.sh: Narzędzie Linux SATA SSD TRIM, wersja 3.3, autorstwa Mark Lord.
rootdev = / dev / sda1
fsmode2: fsmode = odczyt-zapis
/: fstype = ext4
freesize = 13785252 KB, zarezerwowany = 137852 KB
Przygotowanie do TRIM online wolnego miejsca na / dev / sda1 (ext4 zamontowany odczyt / zapis w /).

Ta operacja może po cichu zniszczyć Twoje dane. Jesteś pewien (T / N)? y
Tworzenie pliku tymczasowego (13647400 KB) ..
Synchronizowanie dysków ..
Rozpoczęcie operacji TRIM ..
get_trimlist = / sbin / hdparm --fibmap WIPER_TMPFILE.9689

/ dev / sda:
przycinanie 27294800 sektorów z 462 zakresów
udało się
Usuwanie pliku tymczasowego ..
Synchronizowanie dysków ..
Gotowy.

Jeśli jednak ponownie go uruchomię, pokazuje tę samą liczbę sektorów / zakresów, które należy przyciąć, i ponownie informuje o sukcesie. Za każdym razem otrzymuję dokładnie to samo. Nie wygląda na to, aby sektory były kiedykolwiek usuwane / zwalniane. Odczytywanie ich nadal pokazuje te same dane.

Ciekawe, czy ktokolwiek inny sprawił, że zadziałało.


źródło
Jeśli dodałeś opcję discard do fstab i nadal nie działa, to prawdopodobnie jest to błąd w alfie. Powinieneś złożyć raport o błędzie.
Uli
Właśnie przetestowałem to w natty (postępując zgodnie z tymi instrukcjami: askubuntu.com/questions/18903/how-to-enable-trim ) i działa jeszcze lepiej w natty, TRIM jest prawie natychmiastowy.
Uli
Możliwe, że masz dysk SSD, który nie obsługuje TRIM - wiele wcześniejszych dysków SSD nie obsługiwało TRIM.
Hamish Downer,