Przycinanie (obliczenia) — Trim (computing)

Wykończenia poleceń (znanych jako TRIM w zestaw poleceń ATA i unmap w zestawie komend SCSI ) pozwala na system operacyjny , aby poinformować dysk półprzewodnikowy (SSD), które bloki danych nie są już uważane za „używany” i dlatego można je usunąć wewnętrznie.

Trim został wprowadzony wkrótce po wprowadzeniu dysków SSD. Ponieważ niskopoziomowe działanie dysków SSD różni się znacznie od dysków twardych, typowy sposób, w jaki systemy operacyjne obsługują operacje, takie jak usuwanie i formatowanie, skutkował nieoczekiwanym postępującym spadkiem wydajności operacji zapisu na dyskach SSD. Przycinanie umożliwia SSD bardziej wydajną obsługę wyrzucania elementów bezużytecznych , co w przeciwnym razie spowolniłoby przyszłe operacje zapisu w zaangażowanych blokach.

Chociaż narzędzia do „resetowania” niektórych dysków do nowego stanu były już dostępne przed wprowadzeniem przycinania, usuwają one również wszystkie dane z dysku, co czyni je niepraktycznymi w użyciu do bieżącej optymalizacji. Do 2014 r. wiele dysków SSD miało wewnętrzne mechanizmy zbierania śmieci w tle, które działały niezależnie od przycinania. Chociaż z powodzeniem utrzymywało to ich wydajność nawet w systemach operacyjnych, które nie obsługują przycinania, miało to związane z tym wady w postaci zwiększonego wzmocnienia zapisu i zużycia komórek pamięci flash.

TRIM jest również szeroko stosowany na dyskach twardych z gontem magnetycznym (SMR).

Tło

Ze względu na sposób, w jaki wiele systemów plików obsługuje operacje usuwania, oznaczając bloki danych jako „nieużywane”, nośniki pamięci (dyski SSD, ale także tradycyjne dyski twarde) zazwyczaj nie wiedzą, które sektory/strony są naprawdę używane, a które można uważane za wolne miejsce. W przeciwieństwie do (na przykład) operacji nadpisywania, usuwanie nie wiąże się z fizycznym zapisem w sektorach zawierających dane. Ponieważ zwykły dysk SSD nie ma wiedzy o strukturach systemu plików, w tym o liście nieużywanych bloków/sektorów, nośnik pamięci pozostaje nieświadomy, że bloki stały się dostępne. Chociaż często umożliwia to narzędziom cofania usunięcie plików z elektromechanicznych dysków twardych , mimo że pliki są zgłaszane jako „usunięte” przez system operacyjny, oznacza to również, że gdy system operacyjny wykonuje później operację zapisu do jednego z sektorów, które uważa wolne miejsce, skutecznie staje się operacją nadpisywania z punktu widzenia nośnika pamięci. W przypadku dysków magnetycznych nadpisanie istniejących danych nie różni się od zapisu w pustym sektorze, ale ze względu na to, jak niektóre dyski SSD działają na najniższym poziomie, nadpisanie powoduje znaczne obciążenie w porównaniu z zapisem danych na pustej stronie, potencjalnie obniżając wydajność zapisu.

Dyski SSD przechowują dane w komórkach pamięci flash, które są pogrupowane w strony zwykle o wielkości od 4 do 16 kiB , pogrupowane w bloki zawierające zwykle od 128 do 512 stron. Przykład: bloki 512 kiB, które grupują 128 stron po 4 kiB każda. Do komórek pamięci flash NAND można zapisywać bezpośrednio tylko wtedy, gdy są puste. Jeśli zdarzy się, że zawierają dane, ich zawartość musi zostać usunięta przed operacją zapisu. Operację zapisu na dysku SSD można wykonać na jednej stronie, ale ze względu na ograniczenia sprzętowe polecenia wymazywania zawsze dotyczą całych bloków; w związku z tym zapisywanie danych na pustych stronach na dysku SSD jest bardzo szybkie, ale znacznie spowalnia, gdy wcześniej zapisane strony muszą zostać nadpisane. Ponieważ wymazanie komórek na stronie jest konieczne przed ponownym zapisem, ale tylko całe bloki mogą być wymazane, nadpisanie zainicjuje cykl odczytu-kasowania-modyfikacji-zapisu: zawartość całego bloku jest przechowywana w pamięci podręcznej, następnie cały blok jest usuwany z dysku SSD, następnie nadpisane strony są zapisywane w buforowanym bloku i dopiero wtedy cały zaktualizowany blok można zapisać na nośniku flash. Zjawisko to znane jest jako wzmocnienie zapisu .

Operacja

Polecenie TRIM umożliwia systemowi operacyjnemu powiadamianie dysku SSD o stronach, które nie zawierają już poprawnych danych. W przypadku operacji usunięcia pliku system operacyjny oznaczy sektory pliku jako wolne dla nowych danych, a następnie wyśle ​​polecenie TRIM do dysku SSD. Po przycięciu dysk SSD nie zachowa żadnej zawartości bloku podczas zapisywania nowych danych na stronę pamięci flash, co skutkuje mniejszym wzmocnieniem zapisu (mniej zapisów), wyższą przepustowością zapisu (nie ma potrzeby wykonywania sekwencji odczyt-wymazywanie-modyfikacja), zwiększając tym samym żywotność napędu.

Różne dyski SSD implementują polecenie nieco inaczej, więc wydajność może się różnić.

TRIM mówi SSD, aby oznaczył region LBA jako nieprawidłowy, a kolejne odczyty w regionie nie zwrócą żadnych znaczących danych. Przez bardzo krótki czas dane mogły nadal znajdować się wewnętrznie na pamięci flash. Jednak po wydaniu polecenia TRIM i zakończeniu usuwania śmieci jest wysoce nieprawdopodobne, aby nawet naukowiec medycyny sądowej był w stanie odzyskać dane.

Realizacja

Obsługa systemu operacyjnego

Polecenie TRIM jest korzystne tylko wtedy, gdy napęd je zaimplementuje, a system operacyjny tego zażąda. Poniższa tabela identyfikuje każdy ważny system operacyjny i pierwszą wersję obsługującą polecenie. Ponadto starsze dyski półprzewodnikowe zaprojektowane przed dodaniem polecenia TRIM do standardu ATA będą wymagały aktualizacji oprogramowania układowego, w przeciwnym razie nowe polecenie zostanie zignorowane. Jednak nie każdy dysk można zaktualizować do obsługi przycinania.

Obsługa TRIM różni się również w zależności od tego, do czego zdolny jest konkretny sterownik systemu plików w systemie operacyjnym, ponieważ tylko program rozumiejący, które części dysku to wolne miejsce, może bezpiecznie wydać polecenie, a na poziomie systemu ta zdolność ma tendencję do leżeć w samym sterowniku systemu plików.

System operacyjny Obsługiwane od Uwagi
Dragonfly BSD 2011-05maj 2011
FreeBSD 2010-078.1 – lipiec 2010 Wsparcie zostało dodane w warstwie urządzeń blokowych w 8.1. Obsługa systemu plików została dodana we FreeBSD 8.3 i FreeBSD 9, zaczynając od UFS . Obsługa przycinania ZFS została dodana we FreeBSD 9.2. FreeBSD 10 obsługuje przycinanie w programowych konfiguracjach RAID .
NetBSD 2012-10Październik 2012
Linux 2008-12-252.6.28-25 grudnia 2008 r Początkowa obsługa operacji odrzucania została dodana dla urządzeń flash FTL NAND w wersji 2.6.28. W wersji 2.6.33 dodano obsługę polecenia ATA TRIM.

Nie wszystkie systemy plików wykorzystują przycinanie. Wśród systemów plików, które mogą automatycznie wysyłać żądania przycięcia, są ext4 , Btrfs , FAT , GFS2 , JFS , XFS i NTFS-3G . Jednak w niektórych dystrybucjach jest to domyślnie wyłączone ze względu na problemy z wydajnością, na korzyść zaplanowanego przycinania na obsługiwanych dyskach SSD. Ext3 , NILFS2 i OCFS2 oferują ioctls do wykonywania przycinania offline. Specyfikacja TRIM wymaga obsługi listy zakresów przycinania, ale od jądra 3.0 przycinanie jest wywoływane tylko z pojedynczym zakresem, który jest wolniejszy.

W wielu nowszych dystrybucjach linuksowych The Systemd zapewnia fstrim.timerurządzenie, umożliwiające fstrim.timerspowoduje fstrim.servicewykonanie tygodniu.

System operacyjny Mac 2011-06-2310.6.8–23 czerwca 2011 Chociaż sterownik urządzenia blokowego AHCI zyskał możliwość wyświetlania, czy urządzenie obsługuje operację TRIM w wersji 10.6.6 (10J3210), sama funkcja pozostała niedostępna do wersji 10.6.8, kiedy operacja TRIM została ujawniona za pośrednictwem IOStorageFamily i systemu plików (HFS+) wsparcie zostało dodane. Do 10.10.4 Mac OS X natywnie włączał TRIM tylko dla dysków SSD marki Apple; dostępne są narzędzia innych firm, aby umożliwić to innym markom. Stare sterowniki TRIM innych firm przestały działać wraz z aktualizacją Yosemite. Istnieją już zaktualizowane sterowniki, które działają z systemem OS X Yosemite. W aktualizacji systemu Mac OS X 10.10.4 firma Apple dodała narzędzie wiersza poleceń, trimforce, którego można użyć do włączenia funkcji TRIM na dyskach SSD innych firm.
Microsoft Windows 2009-10Windows 7 i Windows Server 2008 R2 – październik 2009 System Windows 7 początkowo obsługiwał TRIM tylko dla dysków z rodziny AT Attachment, w tym Parallel ATA i Serial ATA , i nie obsługiwał tego polecenia dla żadnych innych urządzeń, w tym dysków SSD Storport PCI-Express, nawet jeśli samo urządzenie zaakceptuje to polecenie. Potwierdzono, że z natywnymi sterownikami Microsoft polecenie TRIM działa w systemie Windows 7 w trybie AHCI i starszym trybie IDE / ATA. Windows 8 i nowsze systemy operacyjne Windows obsługują przycinanie dysków SSD PCI Express opartych na NVMe oraz polecenie unmap, które jest pełnym odpowiednikiem polecenia TRIM z interfejsu Serial ATA dla urządzeń korzystających ze stosu sterowników SCSI, w tym protokołu USB Attached SCSI (UASP) . Firma Microsoft wydała aktualizację dla systemu Windows 7, która dodaje obsługę NVM Express, w tym TRIM dla dysków SSD PCIe.

Wiadomo, że TRIM jest obsługiwany przez ReFS i NTFS , z których oba implementują przełącznik DisableDeleteNotify do jego wyłączania. Źródła nie zgadzają się, czy istnieje obsługa TRIM dla innych systemów plików.

OpenSolaris 2010-07lipiec 2010
Android 2013-74.3 – 24 lipca 2013 Uruchamia się fstrimautomatycznie raz na 24 godziny, jeśli urządzenie było bezczynne przez co najmniej godzinę i jest naładowane w co najmniej 80% (30%, jeśli jest podłączone do ładowarki).

Problemy z macierzą RAID

Od stycznia 2017 r. obsługa polecenia TRIM nie jest zaimplementowana w większości sprzętowych technologii RAID . Jednak implementacje oprogramowania RAID często obejmują obsługę TRIM.

Okna

System Windows 10 oferuje obsługę TRIM w woluminach SSD RAID przy użyciu opcji „optymalizuj dyski” podczas konfigurowania woluminu RAID.

System operacyjny Mac

Sterownik macOS RAID nie obsługuje TRIM. Dotyczy to wszystkich wersji Mac OS X od 10.7 do macOS 10.12.x.

TRIM jest obsługiwany dla woluminów RAID (0,1,4,5 i 10) podczas korzystania z aplikacji SoftRAID® innej firmy, w tym obsługa TRIM z urządzeniami SSD innych firm. (Uwaga: TRIM dla urządzeń innych niż Apple SSD musi być specjalnie włączony za pomocą polecenia terminala „sudo trimforce enable”)

Linux

TRIM jest dostępny z woluminami RAID w wydaniach dmraid jądra Linuksa po styczniu 2011 r. , które implementują wspomaganą przez BIOS obsługę „fałszywego sprzętowego RAID” i który teraz przechodzi przez wszelkie żądania TRIM z systemu plików znajdującego się w macierzy RAID.

Nie mylić z dmraid, uniwersalny system RAID oprogramowania Linux, mdraid , ma eksperymentalne wsparcie dla TRIM opartego na wsadach (zamiast na żywo, po usunięciu pliku ) na macierzach RAID 1, gdy systemy są skonfigurowane do okresowego uruchamiania narzędzia mdtrim na systemach plików (nawet takie jak ext3 bez natywnej obsługi TRIM). W późniejszych wersjach systemu Linux, np. Red Hat Enterprise Linux 6.5 i nowszych, mdraid obsługuje faktyczne przekazywanie poleceń TRIM w czasie rzeczywistym, a nie tylko jako zadanie wsadowe.

Jednak Red Hat zaleca się stosowania poziomu oprogramowania RAID 1, 4, 5 i 6 na SSD z większością technologii RAID, ponieważ podczas inicjalizacji Większość narzędzi zarządzania RAID (np Linuksa mdadm ) zapisu do wszystkich bloków na urządzeniach w celu zapewnienia, że sumy kontrolne ( lub weryfikacja drive-to-drive, w przypadku RAID 1 i 10) działa prawidłowo, powodując, że dysk SSD sądzi, że wszystkie bloki inne niż w obszarze zapasowym są w użyciu, co znacznie obniża wydajność.

Z drugiej strony, Red Hat zaleca użycie RAID 1 lub RAID 10 dla RAID LVM na dyskach SSD, ponieważ te poziomy obsługują TRIM ("discard" w terminologii Linuksa), a narzędzia LVM nie zapisują do wszystkich bloków podczas tworzenia Wolumin RAID 1 lub RAID 10.

Przez krótki czas w marcu 2010 r. użytkownicy byli przekonani, że sterowniki Intel Rapid Storage Technology (RST) 9.6 obsługują TRIM w woluminach RAID, ale Intel wyjaśnił później, że TRIM jest obsługiwany dla ustawień BIOS w trybie AHCI i trybie RAID, ale nie, jeśli dysk był częścią woluminu RAID.

Według stanu na sierpień 2012 r. firma Intel potwierdza, że ​​sterowniki serii 7 z technologią Rapid Storage (RST) 11.2 obsługują TRIM dla RAID 0 w systemie Microsoft Windows 7. Chociaż Intel nie potwierdził obsługi chipsetów serii 6, TRIM na woluminach RAID 0 został pokazano, że działa na chipsetach Z68, P67 i X79 przez entuzjastów sprzętu ze zmodyfikowaną opcjonalną pamięcią ROM RAID . Spekuluje się, że brak oficjalnego wsparcia dla chipsetów serii 6 jest spowodowany kosztami walidacji lub próbą zachęcenia konsumentów do aktualizacji, a nie przyczynami technicznymi.

Wyjątkiem od potrzeby zmodyfikowanej opcjonalnej pamięci ROM na płytach głównych z chipsetem X79 jest sytuacja, w której producent dodał przełącznik ROM; oznacza to, że zarówno ROM RST, jak i RST-E znajdują się w systemie BIOS/UEFI. Pozwala to na użycie RST ROM zamiast RST-E ROM, umożliwiając działanie TRIM. Intel zauważa, że ​​najlepszą wydajność można osiągnąć, używając sterownika w tej samej wersji co ROM; na przykład, jeśli BIOS/UEFI ma opcjonalną pamięć ROM 11.0.0.0m, należy użyć sterownika w wersji 11.x.

Włączanie nieobsługiwanych systemów plików

Tam, gdzie system plików nie obsługuje automatycznie TRIM, niektóre narzędzia mogą ręcznie wysyłać polecenia przycinania. Zwykle określają, które bloki są wolne, a następnie przekazują tę listę jako serię poleceń przycinania do napędu. Te narzędzia są dostępne u różnych producentów (np. Intel, G.Skill) lub jako narzędzia ogólne (np. hdparm "wiper" Linuksa od wersji 9.17 lub mdtrim, jak wspomniano powyżej ). Zarówno hdparm, jak i mdtrim znajdują wolne bloki, przydzielając duży plik w systemie plików i ustalając, do jakiej fizycznej lokalizacji został przypisany.

W dowolnym systemie operacyjnym dysk może wykryć, kiedy komputer zapisuje w bloku same zera, i cofnąć przydział (przyciąć) ten blok zamiast rejestrować blok zer. Jeśli odczytanie cofniętego bloku zawsze zwraca zera, ten skrót jest niewidoczny dla użytkownika, z wyjątkiem szybszego zapisywania (i czytania) bloków całkowicie zerowych, oprócz zwykłej korzyści szybszego zapisywania w nieużywanych obszarach. Systemy operacyjne nie zapisują samych zer, aby „wymazać” pliki lub zwolnić miejsce, ale niektóre narzędzia to robią.

Wsparcie sprzętowe

ATA

Specyfikacja poleceń TRIM została ustandaryzowana jako część standardu interfejsu AT Attachment (ATA), kierowanego przez Komitet Techniczny T13 Międzynarodowego Komitetu Standardów Technologii Informacyjnych (INCITS). TRIM jest zaimplementowany w ramach polecenia DATA SET MANAGEMENT (kod operacji 06h) projektu specyfikacji ACS-2. Standard ATA jest obsługiwany zarówno przez sprzęt równoległy (IDE, PATA), jak i szeregowy (SATA) ATA.

Wadą oryginalnego polecenia ATA TRIM jest to, że zostało ono zdefiniowane jako polecenie bez kolejkowania i dlatego nie można go łatwo mieszać z normalnym obciążeniem związanymi z kolejkowanymi operacjami odczytu i zapisu. SATA 3.1 wprowadziło kolejkowane polecenie TRIM, aby temu zaradzić.

Istnieją różne typy TRIM zdefiniowane przez słowa SATA 69 i 169 zwracane przez polecenie ATA IDENTIFY DEVICE:

  • Niedeterministyczny TRIM: Każde polecenie odczytu do adresu bloku logicznego (LBA) po TRIM może zwrócić różne dane.
  • Deterministyczny TRIM (DRAT): Wszystkie polecenia odczytu do LBA po TRIM powinny zwracać te same dane lub stać się zdeterminowane.
  • Deterministyczny odczyt zera po TRIM (RZAT): Wszystkie polecenia odczytu do LBA po TRIM powinny zwracać zero.

W programie SATA Word 105 znajdują się dodatkowe informacje, które opisują maksymalną liczbę bloków 512-bajtowych na polecenie DATA SET MANAGEMENT, jaką może obsłużyć dysk. Zazwyczaj jest to wartość domyślna 8 (lub 4 kB), ale wiele dysków zmniejsza ją do 1, aby spełnić wymagania sprzętowe systemu Microsoft Windows dla TRIM, czas zakończenia polecenia nie powinien przekraczać 20 ms lub 8 ms × (liczba wpisów zakresu LBA), w zależności od tego, co jest większa i zawsze powinna być mniejsza niż 600 ms.

Pojedynczy zakres LBA jest nazywany Wpisem zakresu LBA i jest reprezentowany przez osiem bajtów. LBA jest wyrażona przez pierwsze sześć bajtów wpisu zakresu LBA, a długość zakresu jest licznikiem liczonym od zera (np. 0=0 i 1=1) reprezentowanym przez pozostałe dwa bajty. Jeżeli dwubajtowa długość zakresu wynosi zero, wówczas Wpis Zakresu LBA należy odrzucić jako wypełnienie. Oznacza to, że dla każdego 512-bajtowego bloku zakresów TRIM obsługiwanych przez urządzenie maksymalnie są 64 zakresy po 32 MB lub 2 GB. Jeśli urządzenie obsługuje SATA Word 105 na 8, powinno być w stanie przyciąć 16 GB w jednym poleceniu TRIM (ZARZĄDZANIE ZESTAWEM DANYCH).

SCSI

SCSI udostępnia polecenie UNMAP (pełny odpowiednik TRIM) oraz polecenie WRITE SAME (10 i 16 wariantów) z ustawioną flagą UNMAP.

SD/MMC

Polecenia MultiMediaCard i SD ERASE (CMD38) zapewniają podobną funkcjonalność do polecenia ATA TRIM, chociaż wymagają nadpisania usuniętych bloków zerami lub jedynkami. eMMC 4.5 dodatkowo definiuje podoperację „odrzuć”, która jest bardziej zgodna z ATA TRIM w tym sensie, że zawartość odrzuconych bloków może być uważana za nieokreśloną (tj. „nie obchodzi mnie to”).

Ekspres NVM

Zestaw poleceń NVM Express zawiera ogólne polecenie Dataset Management , służące do wskazywania intencji hosta urządzeniu pamięci masowej w zakresie zbioru zakresów bloków. Jedna z jego operacji, dealocate, wykonuje przycinanie. Zawiera również polecenie Write Zeroes, które zapewnia wskazówkę dotyczącą cofnięcia alokacji i umożliwia dyskowi przycinanie i zwracanie zer.

Niedogodności

  • Niektóre schematy szyfrowania , których można zaprzeczyć , polegają na tym, że cały dysk wygląda jak losowe śmieci. Korzystanie z TRIM obala tę warstwę wiarygodnego zaprzeczania, ponieważ utworzone bloki całkowicie zerowe (lub jedyne) łatwo wskazują, które bloki są używane. Twierdzono, że wyłączenie TRIM może być również podejrzane.
  • Oryginalna wersja polecenia TRIM została zdefiniowana przez podkomitet T13 jako polecenie niekolejkowane i w związku z tym może ponieść ogromną karę za wykonanie, jeśli zostanie użyta niedbale, np. jeśli zostanie wysłana po każdym poleceniu usuwania systemu plików. Niekolejkowy charakter polecenia wymaga, aby sterownik najpierw poczekał na zakończenie wszystkich oczekujących poleceń, wydał polecenie TRIM, a następnie wznowił normalne polecenia. TRIM może zająć dużo czasu, w zależności od oprogramowania układowego na dysku SSD, a nawet może wywołać cykl zbierania śmieci . Tę karę można zminimalizować w rozwiązaniach, które okresowo wykonują TRIM wsadowo, zamiast przycinać po każdym usunięciu pliku , planując takie zadania wsadowe na czasy, gdy wykorzystanie systemu jest minimalne. Ta wada TRIM została pokonana w wersji 3.1 Serial ATA wraz z wprowadzeniem polecenia TRIM w kolejce.
  • Wadliwe oprogramowanie układowe dysku, które błędnie zgłasza obsługę kolejkowania TRIM lub ma krytyczne błędy w jego implementacji, zostało powiązane z poważnym uszkodzeniem danych w kilku urządzeniach, w szczególności w serii M500 firmy Micron i Crucial oraz serii 840 i 850 firmy Samsung. Uszkodzenie danych zostało potwierdzone w systemie operacyjnym Linux (jedyny system operacyjny z obsługą przycinania w kolejce od 1 lipca 2015 r.).

Te urządzenia znajdują się na czarnej liście w pliku libata-core.c jądra systemu Linux, aby wymusić wysyłanie niekolejkowanych poleceń TRIM ( ATA_HORKAGE_NO_NCQ_TRIM ) do tych dysków zamiast poleceń TRIM umieszczonych w kolejce:

  • Micron/Crucial M500 wykorzystujący wszystkie wersje oprogramowania układowego, w tym fabrycznie ponownie certyfikowane dyski SSD
  • Micron M510 z oprogramowaniem w wersji MU01
  • Micron/Crucial M550 z oprogramowaniem w wersji MU01
  • Crucial MX100 z oprogramowaniem w wersji MU01
  • Dyski SSD Samsung serii 840 i 850 korzystające ze wszystkich wersji oprogramowania układowego

Ten plik również umieszcza na czarnej liście SuperSSpeed ​​S238 przeciwko TRIM ogólnie, ponieważ powoduje utratę danych przez niewłaściwe bloki po wydaniu TRIM.

libata-core.c posiada również białą listę dysków SSD, które są niezawodnie znane opiekunom podsystemu z poprawnej implementacji flag DRAT i RZAT ( ATA_HORKAGE_ZERO_AFTER_TRIM ), zamiast ignorowania ich, jak robi to wiele dysków. Na białej liście znajdują się następujące dyski:

  • Kluczowe dyski SSD
  • Dyski Intel SSD z wyjątkiem Intel SSD 510
  • Mikronowe dyski SSD
  • Dyski SSD firmy Samsung
  • Dyski SSD firmy Seagate

Zobacz też

Bibliografia

Zewnętrzne linki