Odzyskiwanie danych z dysków SSD PCIe

Teraz jest jasne, że interfejsem przyszłości dla dysków półprzewodnikowych (SSD) jest PCI Express (PCIe).

Dlaczego PCIe?

SATA został zaprojektowany do obracania dysków twardych i opiera się na zewnętrznym adapterze magistrali hosta (HBA). W typowym komputerze system operacyjny wysyła pakiet Frame Information Structure (FIS) do HBA przez PCIe, który zawiera polecenie ATA, które system operacyjny chce wykonać. HBA następnie pakuje to polecenie do fizycznego pakietu szeregowego SATA i wysyła je przez fizyczny kanał SATA. Wreszcie urządzenie SATA odbiera pakiet szeregowy, rozpakowuje go i wykonuje polecenie ATA. Ta dodatkowa warstwa komunikacji między HBA i urządzeniem SATA powoduje znaczne opóźnienia i narzuty związane z przepustowością, które są niedopuszczalnie wysokie w przypadku nowoczesnych szybkości pamięci flash.

Aby uniknąć tego problemu na dyskach SSD PCIe, karta HBA została zintegrowana z dyskiem SSD. Integracja karty HBA SATA z dyskiem SSD daje w rezultacie dysk SSD PCIe oparty na protokole AHCI. W tym przypadku system operacyjny nadal wysyła te same pakiety FIS zawierające polecenia ATA do dysku SSD przez PCIe, ale ponieważ HBA jest teraz wbudowany w dysk SSD, producenci nie są już zmuszeni do serializacji pakietów SATA do komunikacji między HBA i SSD, co pozwala na wyższą przepustowość niż maksymalne 6 Gb/s oferowane przez SATA. Taka architektura jest obsługiwana przez większość platform hostów, ponieważ z punktu widzenia hosta nie ma różnicy między AHCI PCIe SSD a typową kombinacją SATA HBA i SATA SSD.

Chociaż dyski SSD AHCI PCIe rozwiązują ograniczenia przepustowości, protokół AHCI nadal ma znaczące wąskie gardła opóźnień, ponieważ zawiera zbyt wiele dodatkowych kroków i może wysyłać tylko jedno polecenie na raz. Na przykład przed wysłaniem poleceń odczytu FIS host musi sprawdzić, czy dysk SATA jest fizycznie podłączony i gotowy do odbioru pakietów FIS. Musi również sprawdzić, czy polecenie zakończyło przetwarzanie przed zażądaniem danych z urządzenia i nie tylko. Te dodatkowe kroki protokołu były konieczne tylko dlatego, że urządzenie SATA było oddzielną jednostką od karty HBA.

Aby rozwiązać te problemy, opracowano nowy protokół o nazwie Non-Volatile Memory Express (NVMe), który nawet trzykrotnie zmniejsza liczbę dostępów do rejestru dla jednej operacji odczytu / zapisu, a także umożliwia jednoczesne przetwarzanie wielu żądań danych. Daje to znaczną poprawę opóźnienia, szczególnie przy wyższych szybkościach przesyłania danych, dzięki czemu interfejs PCIe za pośrednictwem protokołu NVMe jest oczywistym wyborem dla przyszłych dysków SSD.

Co to oznacza dla branży odzyskiwania danych (DR)?

Z punktu widzenia DR narzędzia obsługujące nowy interfejs / protokół muszą zapewniać niskopoziomową kontrolę komunikacji z problematycznym urządzeniem na wszystkich warstwach, tj. Fizycznej, łącza danych, transportu / transakcji i protokołu. Wszystkie istniejące narzędzia używane obecnie w branży DR są zbudowane do obsługi urządzeń SATA/IDE/SAS/SCSI/USB. Przejście na urządzenia PCIe NVMe jest szokiem zarówno dla dostawców usług DR, jak i dostawców technologii DR, ponieważ jeśli chodzi o komunikację z urządzeniem pamięci masowej, wszystko zmienia się na wszystkich warstwach komunikacyjnych, więc praktycznie nie ma ani jednej linii kodu ani rozwiązania projektowego sprzętu. używane w istniejących narzędziach mogą być wykorzystane do narzędzi PCIe NVMe. Innymi słowy, prawie cała wiedza w zakresie komunikacji za pośrednictwem obecnie używanych interfejsów i protokołów nie może być zastosowana do dysków SSD PCIe NVMe.

Przyjrzyjmy się rodzajowi kontroli, jaką narzędzia PCIe SSD DR muszą mieć, aby poprawnie rozwiązać problemy z niestabilnością odczytu.

Pierwszą funkcją sterowania jest możliwość ręcznego wyboru określonej szybkości łącza PCIe. Niektóre problematyczne dyski SSD PCIe mają niestabilności elektroniczne, a ze względu na niski stosunek sygnału do szumu komunikacja z urządzeniem może stać się przerywana przy wyższych prędkościach. Może to spowodować całkowitą niemożność dostępu do urządzenia lub tak zwane „złe bloki fantomowe”, tj. Złe bloki spowodowane sporadyczną komunikacją z urządzeniem, a nie rzeczywistymi problemami z pamięcią flash lub oprogramowaniem sprzętowym. Mimo że specyfikacja PCIe ma maszynę stanów instruującą hosta, aby automatycznie zmniejszał prędkość łącza w razie potrzeby, w rzeczywistości ma to miejsce tylko wtedy, gdy urządzenie w ogóle nie reaguje na hosta, tj. Gdy urządzenie nie obsługuje wyższych prędkości łącza . W sytuacjach, gdy urządzenie obsługuje większą prędkość,

Konieczne jest również ręczne wybranie liczby używanych linii PCIe, ponieważ niektóre ścieżki mogą mieć niestabilności elektroniczne. Na przykład, jeśli dysk SSD 4x PCIe 3.0 ma pewne problemy na linii PCIe 3, narzędzie DR musi być w stanie przełączyć się na tryb 2x PCIe 3.0 lub nawet 1x PCIe 1.0, aby uniknąć używania trzeciego toru, uzyskując w ten sposób stabilną komunikację z urządzeniem. Oczywiście maksymalna prędkość przesyłania danych spadnie w tym przypadku, ale praca z najwyższą szybkością interfejsu zwykle nie jest ważna z punktu widzenia DR, ponieważ nawet przy 1x PCIe 1.0 (~ 250 MB / s) obrazowanie może zostać ukończone dość szybko.

Następną funkcją sterowania, która jest ważna dla dowolnej kombinacji interfejsu / protokołu, jest możliwość użycia różnych typów resetowania, gdy urządzenie nie odpowiada w określonym przedziale czasu. Podczas gdy urządzenia SATA mają tylko kilka typów resetowania ze względu na względną prostotę architektury SATA, dyski SSD NVMe / AHCI PCIe mają wiele różnych resetowań na wszystkich warstwach komunikacji, od fizycznej do protokołu. Oznacza to, że zaczynając od poziomu PCIe, gdzie mamy sygnał resetowania PERST PCIe, resetowanie wtórnej magistrali, ponowne trenowanie łącza, resetowanie poziomu funkcji i inne, aż do resetowania poziomu protokołu NVMe / AHCI. Posiadanie wielu opcji resetowania jest ważne, ponieważ skuteczność różnych resetowań zależy od konkretnej aktualnie wykonywanej operacji, a także rodziny dysków SSD i wersji oprogramowania układowego.

Inną krytyczną funkcją jest możliwość ponownego zasilania dysku SSD, gdy jest on całkowicie niereagujący, np. Po poważnym wyjątku oprogramowania układowego. Ponowne zasilanie dysku SSD PCIe wymaga przetworzenia całej fazy uzgadniania i inicjalizacji komunikacji. Jest to najbardziej wymagająca funkcja, ponieważ można ją zaimplementować tylko wtedy, gdy narzędzie ma pełną kontrolę sprzętu i oprogramowania nad interfejsem i protokołem dysku SSD. Zaletą ponownego zasilania dysków SSD PCIe jest to, że większość z nich można ponownie włączyć i zainicjować w ciągu 1-2 sekund, co jest dość szybkie w porównaniu do dysków twardych, które mogą zająć do 20-30 sekund.

Obecnie na rynku dostępne są następujące typy fizycznych złączy PCIe SSD:

  1. Standardowe złącze PCIe używane w dyskach SSD PCIe zbudowanych głównie dla komputerów stacjonarnych. Te dyski SSD mogą wykorzystywać tyle linii PCIe, ile obsługuje płyta główna.
  2. Złącze M.2 M Key PCIe na dyskach SSD o współczynniku kształtu PCIe M.2 zwykle używanych w laptopach. Specyfikacja klucza M.2 M zapewnia do 4 torów PCIe.

Istnieją również dyski SSD M.2 SATA, z których można odzyskać dane za pomocą zwykłych narzędzi SATA przy użyciu odpowiedniego adaptera M.2 do SATA. Takie dyski SSD M.2 SATA mają złącze M.2 B Key lub M.2 B&M Key, które można łatwo zidentyfikować, ponieważ mają inne wyprowadzenia niż złącze M.2 M.

  1. Zastrzeżone złącze PCIe SSD firmy Apple używane w MacBookach 2013+. Starsze MacBooki miały do ​​4 linii PCIe, podczas gdy nowsze mają do 16.
  2. Złącze U.2 PCIe używane w dyskach SSD klasy korporacyjnej. Specyfikacja U.2 obsługuje do 4 linii PCIe.

Dobrą wiadomością jest to, że wszystkie te typy złączy określają tylko mechaniczny układ sygnałów PCIe, więc pasywne adaptery konwertujące odpowiednie złącze na standardowe złącze PCIe mogą być używane do obsługi wszystkich z nich.

dysk pcie

Obecnie na rynku nie ma dostępnych na rynku rozwiązań DR dla dysków SSD PCIe. Jedyną opcją odzyskiwania danych z dysku SSD NVMe jest podłączenie dysku SSD PCIe do standardowego gniazda PCIe i użycie narzędzi programowych działających w ramach jednego ze standardowych systemów operacyjnych. Nie trzeba dodawać, że taka metoda ma ogromną liczbę ograniczeń i będzie działać tylko na urządzeniach, które są w większości zdrowe, ponieważ wszystkie powszechnie używane systemy operacyjne nie zapewniają nawet możliwości resetowania lub ponownego zasilania dysku SSD PCIe w żaden sposób. Innymi słowy, system operacyjny i dowolne oprogramowanie działające pod tym systemem zakłada, że ​​dysk SSD PCIe można zainicjować tylko raz podczas uruchamiania systemu i żadna inna ponowna inicjalizacja nie jest możliwa podczas działania systemu operacyjnego.

Na rynku jest znaczna liczba problematycznych dysków SSD PCIe, które mają problemy z odczytem, ​​w wyniku których dysk SSD całkowicie przestaje reagować po natrafieniu na problematyczny obszar, np. nieprzemapowany uszkodzony blok pamięci NAND. Wiele dysków SSD z takimi objawami nie może nawet zostać rozpoznanych przez system operacyjny, ponieważ blokują się, zanim system operacyjny zakończy proces inicjalizacji. W innych przypadkach takie dyski SSD mogą zostać zidentyfikowane przez system operacyjny, ale szybko spowodują całkowitą blokadę systemu podczas uzyskiwania dostępu do niektórych z tych problematycznych obszarów, ponieważ dysk SSD przestaje odpowiadać.