Czy jest możliwe efektywne wykorzystanie SSD bez obsługi TRIM?

Pytanie, które umieściliśmy w tytule, często zajmuje umysły administratorów systemu

Pytanie, które umieściliśmy w tytule, często zajmuje umysły administratorów systemu. Rzeczywiście, lepiej jest złożyć macierz RAID z dysków półprzewodnikowych, ale stracić wsparcie TRIM lub odmówić odporności na błędy na korzyść wysokiej wydajności? Sytuację pogarsza fakt, że niewielu naprawdę rozumie wewnętrzne mechanizmy SSD i koncentruje się bardziej na materiałach marketingowych niż na rzeczywistych potrzebach technicznych.

Główny mit dotyczący SSD jest następujący: w systemach bez obsługi TRIM wydajność SSD gwałtownie spadnie. Dlaczego i jak to się dzieje zwykle nie jest zgłaszane, bez TRIM będzie zły punkt. Jednocześnie większość konfiguracji serwera podsystemu dyskowego TRIM nie obsługuje ani nie obsługuje, ale w bardzo ograniczonym zakresie. Jednocześnie pewna dziwność jest spowodowana faktem, że ani producenci żelaza, ani producenci oprogramowania nie spieszą się z tym „problemem”.

Aby zrozumieć, czym jest TRIM i czym jest ten termin, nadęty przez marketerów lub pilna potrzeba, dowiedzmy się, jak działa SSD. Nie wchodzimy w szczegóły techniczne i celowo nie upraszczamy modelu do poziomu wystarczającego do zrozumienia trwających procesów.

Początkowo przypominamy sobie, jak napęd postrzega różne podsystemy PC zaangażowane w pracę z nim. Aplikacje i systemy operacyjne współdziałają z systemem plików, pracując na poziomie klastra i tabeli plików. To, co jest poniżej systemu operacyjnego, nie ma pojęcia. System plików postrzega dysk jako pewnego rodzaju urządzenie blokowe w standardowym formacie, nie zagłębiając się zbytnio w jego wewnętrzną istotę, dając wszystkie pytania sterownikowi urządzenia pamięci masowej. To z kolei odbiera dysk jako urządzenie LBA, nie znając jego wewnętrznej struktury. Jak dokładnie konfiguracja LBA odpowiada fizycznej konfiguracji urządzenia jest znana tylko kontrolerowi dysku, który z kolei nie ma pojęcia o plikach, partycjach, klastrach itp.

Fizycznie przestrzeń SSD jest podzielona na strony, które są minimalnym adresowalnym obszarem pamięci, aby zmienić komórkę pamięci, musisz przeczytać stronę, zmienić w niej niezbędne dane i zapisać ją w oryginalnym miejscu. Tutaj pojawia się pierwsza trudność, w przeciwieństwie do HDD, możesz zapisywać dane na dyskach SSD tylko w uprzednio oczyszczonych komórkach. Jednocześnie nie jest możliwe technicznie wyczyszczenie oddzielnej strony, tylko grupy stron, które są połączone w bloki, są czyszczone.

Rozmiary stron i bloków zależą od konfiguracji pamięci określonego dysku SSD, ale, jak typowo, możesz przyjąć wartość 4 KB dla strony i 512 KB dla bloku. Teraz wyobraź sobie, że otworzyliśmy plik i zmieniliśmy w nim 100 bajtów danych. Nie ma problemu z dyskiem twardym, uważa on wymagany sektor (512 bajtów), zmienia dane i nadpisuje je. W rzeczywistości wszystko będzie trochę inne, ponieważ minimalna adresowalna przestrzeń FS to klaster, HDD nadpisze odpowiednią liczbę sektorów, ale nie spowoduje to dodatkowego narzutu.

Ale dysk SSD nie może i po prostu zapisze zmienione dane. Aby to zrobić, będzie musiał przeczytać gdzieś całą jednostkę, wyczyścić ją i zwrócić wszystkie dane z powrotem. Dlatego zamiast zmieniać i zapisywać 4 KB danych, dyski SSD będą musiały zostać zapisane 512 KB danych, co w najlepszy sposób nie wpłynie na zasoby komórki. Ponadto operacja kasowania komórek jest raczej powolna w porównaniu z zapisywaniem w czystych komórkach, a to właśnie konieczność wymazania przed nagraniem wyjaśnia degradację wydajności SSD.

Aby rozwiązać ten problem, na dysku SSD używany jest algorytm „kopiowania przy zapisie”. Jego istota jest następująca: jeśli konieczne jest zapisanie już istniejącej strony, jest ona kopiowana do wolnych komórek i sama jest oznaczana jako dostępna do czyszczenia.

Dzięki temu dysk SSD może natychmiast nagrać zmienione dane, nie wywołując procedury czyszczenia za każdym razem i nie zastępując pozostałych danych bloku Dzięki temu dysk SSD może natychmiast nagrać zmienione dane, nie wywołując procedury czyszczenia za każdym razem i nie zastępując pozostałych danych bloku. Będzie to trwało, aż wyczerpią się wolne komórki.

Łatwo zauważyć, że po chwili wolne, zajęte i dostępne strony będą mieszane na dysku. Tu właśnie wchodzi do gry wewnętrzny algorytm optymalizacji o nazwie „garbage collection”. Przesuwa dane na dysku SSD w taki sposób, aby grupować strony dostępne do czyszczenia w oddzielne bloki i wyczyścić je.

Przesuwa dane na dysku SSD w taki sposób, aby grupować strony dostępne do czyszczenia w oddzielne bloki i wyczyścić je

To zależy od skuteczności tego mechanizmu, jak długo dysk może utrzymać wysoką wydajność podczas intensywnego pisania na nim. Głównym warunkiem wysokiej prędkości zapisu na dysku SSD jest dostępność wolnych komórek. Skuteczność algorytmu zbierania śmieci jest odpowiedzialna za to, jak szybko komórki dostępne do czyszczenia staną się wolne.

Co powoduje degradację? Z tego, że wolne komórki się kończą, na przykład, całkowicie wypełniliśmy przestrzeń dyskową. W tym przypadku dysk SSD nadal ma pole manewru w postaci obszaru kopii zapasowej, który ma zastąpić uszkodzone komórki, ale może nie być wystarczającej liczby wolnych stron. W przeciwieństwie do innej popularnej opinii, obszar kopii zapasowej dysku SSD jest zawsze używany, odbywa się w celu zrównoważenia obciążenia, jest po prostu niedostępny, aby pomieścić dane użytkownika.

Jeśli rozmiar obszaru kopii zapasowej jest niewielki, a intensywność nagrywania jest wysoka, wówczas moduł czyszczenia pamięci nie będzie miał czasu na skuteczne usunięcie bloków, a otrzymamy pogorszenie wydajności dysku.

Zwróćcie uwagę, wciąż nie powiedzieliśmy ani słowa o zespole TRIM. Może to jest zaawansowana technologia, której włączenie pomoże radykalnie zmienić sytuację? Niestety nie! Dlaczego więc potrzebujesz TRIM?

Ponownie, nadszedł czas, aby pamiętać, że system plików nie ma pojęcia o fizycznym rozmieszczeniu danych na nośniku, jest to przywilej kontrolera dysku. W związku z tym usunięcie pliku w nowoczesnych systemach plików nie następuje fizycznie, tylko wpis w tabeli plików jest usuwany, po czym to miejsce jest uznawane za wolne. W tym przypadku same dane będą na dysku, dopóki nie zostaną nadpisane. Jednocześnie system plików nie informuje kontrolera o takich danych i nadal uważa te komórki za zajęte. W przypadku dysków SSD doprowadzi to do sytuacji podobnej do sytuacji, gdy dysk jest zapełniony, chociaż z punktu widzenia systemu plików jest dużo wolnego miejsca i będzie próbował tam pisać.

W tym przypadku dysk SSD całkowicie odczyta blok do pamięci, wyczyści go i ponownie napisze zmienione dane.

Ale co z technologią zbierania śmieci? I w jakikolwiek sposób, ponieważ nie ma nic do czyszczenia. Te komórki są wolne tylko z punktu widzenia systemu plików, z punktu widzenia kontrolera dysku zawierają dane. Zrozum, że ta strona może zostać wyczyszczona na dysku tylko wtedy, gdy system próbuje coś tam zapisać, a aby szybko wykonać nagranie, potrzebne są wolne komórki.

Aby system plików poinformował kontrolera, że ​​te dane zostały usunięte i wymyślił komendę TRIM, jego zadaniem jest zaznaczenie stron z usuniętymi danymi jako dostępnych do czyszczenia, a następnie wszystkie te same śmieciarki zostaną uruchomione.

Zatem komenda TRIM nie wpływa na wydajność dysku SSD, jeśli dysk zostanie prawie całkowicie wypełniony, otrzymasz obniżenie wydajności, które przy wsparciu TRIM, bez niego. Jeśli usuniesz pliki, a nawet wyślesz komendę TRIM na siłę - cud się nie wydarzy, wydajność pozostanie niska, dopóki garbage collector nie usunie wystarczającej ilości wolnych komórek.

Jeśli umieścimy bazę danych lub wirtualny dysk twardy na dysku SSD i aktywnie z nimi współpracujemy, nie potrzebujemy żadnego TRIM. Jeśli na dysku jest wystarczająco dużo wolnych komórek, a moduł czyszczenia pamięci działa skutecznie, wydajność będzie utrzymywana na wysokim poziomie. Spadek wydajności wystąpi tylko wtedy, gdy liczba wolnych komórek spadnie, a garbage collector nie będzie miał czasu na ich wyczyszczenie w wymaganych ilościach. Może się tak zdarzyć, gdy wykorzystanie całej dostępnej przestrzeni dyskowej i TRIM nie może w żaden sposób wpłynąć na to.

Polecenie TRIM jest przede wszystkim przeznaczone dla systemów komputerowych i partycji systemowych, gdzie pliki są aktywnie tworzone i usuwane, w większości skryptów po stronie serwera, gdzie już zapisane dane się zmieniają, nie ma takiej potrzeby.

Nadszedł czas, aby przypomnieć sobie korporacyjną serię SSD, która często nie świeci z wydajnością, ale oferuje wysoką niezawodność i utrzymanie wydajnej pracy nawet bez wsparcia TRIM. Co sprawia, że ​​tak się dzieje? Ze względu na większy rozmiar obszaru kopii zapasowej. Pozwala to zawsze mieć odpowiednią podaż wolnych komórek i korzystny wpływ na wydajność garbage collectora. Ponieważ użytkownik nie może bezpośrednio pisać do obszaru kopii zapasowej, mogą być tylko trzy typy stron: wolne, zajęte i dostępne do czyszczenia. Nie ma zajętych stron, które FS uważa za wolne.

Zwykłe dyski SSD mają obszar kopii zapasowych wynoszący 6-7% pojemności dysku, rozmiar ten nie wystarcza do utrzymania wysokiej wydajności, dyski firmowe mają znacznie większą ilość obszaru kopii zapasowych, co bezpośrednio wpływa na ich koszt. Umożliwia to zmniejszenie zużycia każdej dostępnej dla użytkownika komórki i skuteczne działanie w macierzach RAID bez obsługi TRIM. Chociaż jeśli wypełnisz napęd półprzewodnikowy „do gałek ocznych”, to żaden TRIM nie pomoże.

A co z właścicielami zwykłych lub „korporacyjnych” napędów budżetowych? Odpowiedź jest prosta - zapewnienie dysku z wystarczającą liczbą wolnych komórek. Najłatwiej to zrobić, oznaczając nie całą dostępną pojemność dysku. Jak pokazuje praktyka, rezerwa 20–25% pojemności dysku umożliwia efektywne wykorzystanie nawet pełnego dysku bez obsługi polecenia TRIM.

Aby to sprawdzić, przeprowadziliśmy mały eksperyment. Zabrali stary SSD OCZ Agility 2 <OCZSSD2-2AGTE60G> , algorytmy zbierania śmieci, które są kilkakrotnie gorsze od nowoczesnych algorytmów, całkowicie zapełniły go w systemie bez obsługi TRIM, a następnie zrobiły to samo, tworząc tylko „wolny obszar” 25% pojemności pamięci.

Tak więc dysk jest czyszczony za pomocą polecenia Secure Erase przez zastrzeżone narzędzie i wszystkie jego komórki są bezpłatne. Usuwamy wskaźniki wydajności za pomocą testu AS SSD Benchmark .

Syntetyki:

Rzeczywiste scenariusze:

Wydajność tego SSD, według współczesnych standardów, jest oczywiście niska, ale nie interesują nas liczby bezwzględne, ale w utrzymaniu wydajności w trudnych warunkach, w tym przypadku użycie starego modelu jest jeszcze bardziej interesujące, jeśli tak, to nowoczesne dyski z bardziej zaawansowanymi algorytmami usuwania śmieci poradzić sobie jeszcze bardziej.

Następnie połączyliśmy go z maszyną wirtualną z systemem Windows Server 2003 i całkowicie wypełniliśmy, a następnie usunęliśmy wszystkie dane i zwróciliśmy. Pomimo faktu, że system Windows 8.1, w którym mierzymy, jest obsługiwany przez TRIM, nie wpływa on na nic, ponieważ nikt nie wysłał tego polecenia na siłę, a Windows 8.1 zrobi to nie przed zapisaniem i usunięciem danych i tylko dla tych stron.

Degradacja wydajności na twarzy:

Wydajność osadu od 20 do 50% w syntetykach i 30-35% w scenariuszach: Wydajność osadu od 20 do 50% w syntetykach i 30-35% w scenariuszach:

Teraz uruchom ponownie Bezpieczne wymazywanie i zaznacz nie całe miejsce na dysku, przeznaczając 25% na rezerwę: Teraz uruchom ponownie Bezpieczne wymazywanie i zaznacz nie całe miejsce na dysku, przeznaczając 25% na rezerwę:

To ważne! Przed ponownym partycjonowaniem dysku półprzewodnikowego należy go całkowicie usunąć z danych za pomocą zastrzeżonego narzędzia, aby tylko wolne komórki dostały się do obszaru kopii zapasowej. Jeśli po prostu usuniesz znaczniki i ponownie je wykonasz lub zmienisz granice partycji, nie przyniesie to pożądanego efektu.

Następnie ponownie wypełnij dysk w środowisku Windows Server 2003 i usuń dane, po czym ponownie uruchom test:

Następnie ponownie wypełnij dysk w środowisku Windows Server 2003 i usuń dane, po czym ponownie uruchom test:

Dysk z pewnością zachowuje wydajność, ponieważ jest wystarczająco dużo wolnych komórek do nagrywania, pomimo tego, że był pełny i nie ma wolnych komórek w dostępnej części dysku z punktu widzenia kontrolera SSD.

Jakie wnioski należy wyciągnąć z tego materiału? Pomimo faktu, że w umysłach wielu TRIM jest niemal panaceum i jest obowiązkowe, nie wpływa to na wydajność dysku. To tylko sposób na zwiększenie wydajności czyszczenia śmieci. Wydajność dysku zależy tylko od liczby wolnych komórek i ich wystarczalności do obsługi bieżących operacji zapisu.

Jak szybki jest dysk i jak skutecznie dysk jest w stanie wyczyścić bloki, odpowiedzialny jest za to garbage collector. Bardziej wydajny algorytm czyszczenia pozwala na użycie mniejszego rozmiaru obszaru kopii zapasowej.

Należy również pamiętać, że w większości skryptów po stronie serwera komenda TRIM po prostu nie jest wymagana, więc jeśli musisz wybrać RAID bez TRIM lub pojedynczy dysk z TRIM, powinieneś wybrać pierwszy. Co więcej, nie jest trudno zapewnić wysoką wydajność dysku samodzielnie.

Korzystanie z pojedynczego dysku z częstszym tworzeniem kopii zapasowych jest również dopuszczalne, ale taka decyzja jest podejmowana z reguły z powodów ekonomicznych.

Rzeczywiście, lepiej jest złożyć macierz RAID z dysków półprzewodnikowych, ale stracić wsparcie TRIM lub odmówić odporności na błędy na korzyść wysokiej wydajności?
Co powoduje degradację?
Może to jest zaawansowana technologia, której włączenie pomoże radykalnie zmienić sytuację?
Dlaczego więc potrzebujesz TRIM?
Ale co z technologią zbierania śmieci?
Co sprawia, że ​​tak się dzieje?
A co z właścicielami zwykłych lub „korporacyjnych” napędów budżetowych?
Jakie wnioski należy wyciągnąć z tego materiału?