Budowa SSD. Część 3: TRIM a odzyskiwanie danych.

Jak już wiemy z poprzedniego wpisu kontroler dysku SSD musi dysponować wolnymi  komórkami pamięci NAND. Jest to konieczne, jeśli chodzi o  pracę translatora FTL, bez którego nie funkcjonuje logiczna adresacja LBA, a bez LBA nie działa system operacyjny, czyli użytkownik nie może korzystać z dysku SSD, odczytywać lub zapisywać jakiekolwiek dane. W związku z tym  kontroler dysku SSD nieustannie szuka bloków pamięci NAND, które można zwolnić bez uszkodzenia danych użytkownika lub danych systemowych dysku SSD. Z tą drugą kategorią danych dla kontrolera „wszystko jest jasne”, bo on sam je tworzy i wypełnia treścią. Natomiast zrozumienie, które to dane użytkownika nie są mu już potrzebne, jest dla kontrolera nieco bardziej skomplikowane.

Jak pamiętamy z poprzedniego wpisu, w przypadku, kiedy użytkownik usuwa pliki, system operacyjny nie trudni się nadpisywaniem usuniętych danych, a zmienia tylko kilka bitów w odpowiednich tabelach (tzw. flagi). To powoduje, że plik z poziomu systemu operacyjnego staje się niewidoczny. W przypadku dysków SSD takie podejście powodowałoby, że po pewnym czasie  dysk zapchałby się niepotrzebnymi danymi i przestał działać. Aby zwolnić zajęte przez „niepotrzebne” pliki komórki pamięci NAND (czyli wykasować te dane na stale), kontroler dysku musi najpierw zidentyfikować pliki, które nie są już potrzebne użytkownikowi.

Na szczęście nasze dane na zawsze pozostaną w pamięci data centrów FaceBook, Google i wielu innych graczy rynku BigData.
Czytaj dalej

Budowa SSD. Część 2: mechanizm działania kontrolera, translator FTL.

To wszystko, o czym pisaliśmy w części pierwszej powoduje, że dysk SSD musi mieć pewnego rodzaju „pośrednika” pomiędzy dwoma mechanizmami zapisu i odczytu danych – adresacją logiczną LBA (którą posługuje się system operacyjny) z jednej strony a scalakiem pamięci NAND z drugiej. Ten ostatni, jak już Państwo wiecie z poprzedniego wpisu, może wykonywać tylko trzy rodzaje operacji – read, write oraz erase. Zauważmy, że nie ma wśród nich operacji rewrite, czyli nadpisywania – wynika to z fizycznych ograniczeń tego typu pamięci. Ale tak się składa, że jest to operacja istotna dla funkcjonowania mechanizmu LBA, który bezwarunkowo umożliwia systemowi operacyjnemu zapisywanie/odczytywanie/modyfikację danych w każdym bloku logicznym (de facto sektorze z danymi), który tą adresacją jest objęty – czyli posiada wyrażony liczbą (od 0 do iluś bilionów) adres LBA.

Obraz 1: W programie DMDE widzimy, że każdy sektor z zapisanymi danymi jest oznaczony liczbą porządkową – to akurat jest LBA.
Czytaj dalej