Analiza uszkodzenia
Do naszego laboratorium trafił dysk SSD marki Patriot, model P210, przywieziony przez klienta z Prabut. Zgłoszone objawy wskazywały na typowe uszkodzenie oprogramowania wewnętrznego (firmware'u).
Jak wspomnieliśmy w poprzednim wpisie o błędzie SATAFIRM S11, najczęstszą przyczyną awarii tego typu nośników jest postępująca degradacja komórek pamięci w modułach NAND.
W przypadku uszkodzenia oprogramowania wewnętrznego w dyskach opartych o kontrolery Silicon Motion urządzenie może nadal identyfikować się poprawnie (tak jak w opisywanym przypadku), jednak podczas próby odczytu przestrzeni LBA wchodzi w stan BSY (zajęty) i nie zwraca żadnej odpowiedzi.
W omawianym zleceniu oprogramowanie PC-3000 SSD rozpoznało nośnik następująco:
Selected family......................... : Patriot P200 Controller.............................. : SM2258XT SSD status: SSD is in ready state................... : No Firmware mode........................... : Unknown SSD is locked........................... : Unknown SSD is in Safe Mode..................... : Unknown Logical access is possible.............. : No Physical access is possible............. : No Ready state waiting..................... : Ok SSD status: SSD is in ready state................... : Yes Firmware mode........................... : ROM SSD error code.......................... : 0x00 (No errors) SSD is locked........................... : No SSD is in Safe Mode..................... : Yes Logical access is possible.............. : No Physical access is possible............. : No Chips id................................ : 453E98B37672 Vendor.................................. : Sandisk Type.................................... : 64L BiCS3 TLC 16k
Czym jest Loader
Loader (LDR) to zmodyfikowane oprogramowanie dysku, które jest ładowane do bufora kontrolera lub pamięci RAM dysku. Zawiera on między innymi konfigurację dla modułów pamięci (Data Area, ECC, SA) potrzebną do odbudowania modułu Translatora i odzyskania dostępu do danych.
Loader uploading **************************************** MPISP code name......................... : Q1103A0 B05_00; Q1031A(N) Q1103A0 B05_00; Q1031A(N)............... : Ok Calling executable code................. : Ok Seed table reading Completed Microcode reading (0)................... : Ok Firmware version (Internal)............. : S1031B0 BiCS3_02 SSD parameters reading.................. : Ok Loader not found by internal name. Search for compatible loaders...
Pomimo prawidłowo zidentyfikowanej wersji oprogramowania wewnętrznego napotkaliśmy masę błędów podczas inicjalizacji. W przypadku kontrolerów SM2258XT oraz SM2259XT nie można stworzyć uniwersalnego Loadera zawierającego wszystkie konfiguracje układów NAND.
Reset SSD controller.................... : Ok Config Package.......................... : Ok Q1107A0 BiCS3_02; P0812(D).............. : Ok Calling executable code................. : Command execution error; Write sector error (LBA: 21 930); HDD DMA Redynes (1) timeout (10000) SSD status: SSD is in ready state................... : No Firmware mode........................... : Unknown Logical access is possible.............. : No Physical access is possible............. : No Operation aborted **************************************** Loader is not uploaded! Some of the functions are not available! Utility initialization was terminate! Drive power supply...................... : OFF
Odbudowa Translatora
Kolejne próby automatycznej odbudowy tablic translacji przy wskazaniu innego zgodnego wsadu również zakończyły się niepowodzeniem...
Translator initialization
****************************************
Creating Translator
****************************************
Microchips information uploading........ : Ok
SSD parameters reading.................. : Ok
Reassigned block table loading.......... : Ok
Drive power supply...................... : OFF
****************************************
Test interrupted
...
LBA 7 190 856; block: 0x0B5A; page: 0x0E82; Page marker checking error
LBA 7 190 864; block: 0x0B5A; page: 0x0E82; Page marker checking error
LBA 7 190 872; block: 0x0B5A; page: 0x0E83; Page marker checking error
LBA 7 190 880; block: 0x0B5A; page: 0x0E83; Page marker checking error
LBA 7 190 888; block: 0x0B5A; page: 0x0E83; Page marker checking error
...
Na tym etapie ponad 60% dysku nie dawało się odczytać, zaś pliki odnalezione podczas skanowania sygnatur w większości były niesprawne.
Dalsza analiza konfiguracji i właściwe ustawienia
Po przeanalizowaniu logów, które wygenerowały automatyczne narzędzia (12 GB pliku tekstowego) wybrany został Loader z inną wersją oprogramowania i konfiguracją pamięci.
Loader uploading **************************************** Power Off / Power On Ready state waiting..................... : Ok Safe mode............................... : Ok Seed table reading Completed Microcode reading (0)................... : Ok Firmware version (Internal)............. : S1031B0 BiCS3_02 SSD parameters reading.................. : Ok Loader not found by internal name. Search for compatible loaders... Reset SSD controller.................... : Ok Config Package.......................... : Ok - -; -.............. : Ok Calling executable code................. : Ok SSD status: SSD is in ready state................... : Yes Firmware mode........................... : DBG SSD error code.......................... : 0x00 (No errors) SSD is locked........................... : No SSD is in Safe Mode..................... : No Logical access is possible.............. : No Physical access is possible............. : Possibly **************************************** Test completed
Po dokonaniu modyfikacji parametrów odczytu utworzony został moduł Translatora, który następnie został wgrany do zadania i w efekcie końcowym pozwolił na prawidłowy dostęp do LBA.
Koniec prac i odzyskanie danych
ISP reading (Copy: 00) Completed Page reading (channel: 3; chip: 0; block: 0x0001; page: 0x0000)................. : Ok MPINFO reading.......................... : Ok Model................................... : Patriot P210 256GB Serial number........................... : P210FBBB20073013769 Firmware................................ : S1031B0 Load Translator **************************************** From file............................... : <HDD Profile>\Data\Translator\Translator_P0812.bin ****************************************
Opracowanie przypadku zajęło 12 dni. Po znalezieniu właściwych ustawień i odtworzeniu modułu Translatora udało się uzyskać stabilny dostęp do danych i wykonać poprawny odczyt nośnika.
Łączna skuteczność odzysku wyniosła około 99% – niewielka część plików okazała się uszkodzona. Kluczowe dla użytkownika bazy danych i dokumenty zostały odzyskane w 100%, co z praktycznego punktu widzenia oznacza pełny sukces.