Ostatnio dodane albumy zdjęć

Jaskinia Studnisko
miniatura

Deadly Marvins
miniatura

Opuszczona fabryka
miniatura

Wiklina
miniatura

La Defense
miniatura

Kwadraty
miniatura

Był sobie płot
miniatura

Praska brama
miniatura

Inne spojrzenie na plakat
miniatura

Mury Warszawy
miniatura

Nauka latania
miniatura

Napisy na murach
miniatura

Spływ kajakowy
miniatura

Parapetówka
miniatura

Pingwinaria 2008
miniatura


Podstawy odzyskiwania danych z wykorzystaniem systemu Linux i oprogramowania Open Source

Kajetan Niebelski - media

Wstęp

Niniejszy tekst opisuje podstawy odzyskiwania danych z uszkodzonych systemów plików, partycji i dysków. Zanim przejdę do opisu poszczególnych technik muszę jednak wspomnieć, że podejmując się próby odzyskania danych z cudzego nośnika, bierzemy na siebie ogromną odpowiedzialność. Błąd, bądź problem z oprogramowaniem, sprzętem czy zasilaniem może pogorszyć sytuację i całkowicie uniemożliwić odzyskanie danych. Jako autor niniejszego tekstu nie biorę na siebie odpowiedzialności za ewentualne uszkodzenia sprzętu czy utratę danych. Jeśli próbujesz skorzystać z tego tekstu i narzędzi w nim opisanych, robisz to na własną odpowiedzialność. Najpewniejszą metodą jest przekazanie dysku fachowcom, którzy wiedzą co zrobić w takiej sytuacji i jako profesjonaliści na pewno nie popełnią błędów, które Ty jako początkujący możesz łatwo popełnić. Usługi takie są dość kosztowne, niemniej jednak prawdopodobieństwo odzyskania danych również jest znacznie wyższe niż kiedy sami podejmujemy się tego trudnego zadania.

Większość opisanych tu czynności wymaga uprawnień administracyjnych, dlatego wykonując je należy zachować szczególną ostrożność i przed wykonaniem poszczególnych komend uważnie przeczytać manuale do oprogramowania i dwa razy pomyśleć czy aby wiemy co robimy.

Opisane w niniejszym artykule oprogramowanie jest oprogramowaniem darmowym i Open Source.

Pomocy! Popsuł się dysk! Co robić?

Po pierwsze nie panikować :) W większości przypadków, kiedy dojdzie do uszkodzenia systemu plików, partycji lub dysku, da się odratować dane. Na początku rzecz jasna musimy zebrać kilka podstawowych informacji:

  • W jakiej sytuacji doszło do usterki i czym ewentualnie mogła być spowodowana
  • jaki system plików znajdował się na dysku, ile było partycji, jakiego typu i wielkości
  • czy od momentu awarii użytkownik korzystał z dysku lub próbował go ratować i jeśli tak, to w jaki sposób
  • jakie są objawy usterki - podejrzanie głośna praca, błędy odczytu, brak części plików, problemy z uruchomieniem systemu itd.
  • każda dodatkowa informacja na temat problemów z komputerem w którym zamontowany był dysk, jego użytkownikach i warunkach pracy może okazać się na wagę złota, należy pytać, wysilić intelekt i słuchać intuicji zbierając te informacje
Na podstawie zebranych informacji musimy ustalić co się stało, co było przyczyną awarii oraz spróbować zgadnąć co mogło się stać z dyskiem, partycją, czy plikami. To pozwoli nam podjąć decyzję, co robić dalej.

Pierwsza diagnoza

Pierwszym krokiem przed podjęciem dalszych kroków, jest dobranie właściwych środków do konkretnego rodzaju usterki. Pierwszy i podstawowy podział problemów to:

  • skasowane omyłkowo pliki
  • dysk ma błędy w systemie plików, uszkodzoną partycję, lub dysk ma uszkodzoną tablicę partycji
  • dysk ma uszkodzoną powierzchnię co powoduje błędy odczytu
  • dysk ma uszkodzoną elektronikę (płytka na spodzie dysku)
  • dysk ma uszkodzoną wewnętrzną elektronikę, głowice, napęd głowicy bądź silnik napędu talerzy

W przypadku skasowanych plików sprawa jest dość prosta, pod warunkiem, że na dysku w miejsce skasowanych plików nie zostały zapisane inne dane. Jeśli użytkownik po skasowaniu plików natychmiast wyłączył komputer i przed próbą ich odzyskania więcej z niego nie korzystał, prawdopodobieństwo uratowania danych jest dość duże. W dalszej części artykułu zostaną opisane narzędzia służące do odzyskiwania skasowanych plików.

W przypadku uszkodzonego systemu plików, partycji, bądź tablicy partycji obowiązuje podobna zasada - im mniej ingerencji w dysk po wystąpieniu usterki, tym lepiej. Narzędzia używane w takich sytuacjach również zostaną opisane w dalszej części artykułu.

Uszkodzona elektronika dysku to znacznie rzadszy przypadek niż dwa pozostałe, nie mniej jednak zdarza się dość często. Istnieje duże prawdopodobieństwo, że można przełożyć elektronikę dysku z innego, identycznego dysku. Musimy jednak zwrócić uwagę, żeby był to dokładnie identyczny model dysku, w przeciwnym razie możemy spowodować kolejne uszkodzenia dysku, bądź elektroniki. Jedyny element jaki można przełożyć z jednego dysku do drugiego to płytka elektroniczna umocowana na spodzie dysku. Tego typu zabiegi należy wykonywać ostrożnie, w sposób świadomy i przemyślany. Otwarcie, czy rozszczelnienie obudowy dysku w części gdzie znajdują się talerze i głowice zaowocuje zniszczeniem dysku i uniemożliwi nam odzyskanie danych - wtedy jedyną nadzieją będzie już tylko kosztowne odzyskiwanie danych w laboratorium specjalizującej się w tym firmy. Jeżeli uda nam się ponownie uruchomić dysk po wymianie elektroniki, należy niezwłocznie wykonać jego kopię zapasową oraz sprawdzić czy nie zawiera błędów.

Naprawa usterki wewnętrznej elektroniki, głowic, napędu głowic bądź silnika napędu talerzy możliwa jest wyłącznie w warunkach laboratoryjnych, w firmie dysponującej odpowiednim zapleczem technicznym. Domowy użytkownik, czy zwykła firma informatyczna nie specjalizująca się w odzyskiwaniu danych nie jest w stanie w takiej sytuacji nic zrobić.

Kopia zapasowa i kopia robocza

Pierwszą i najważniejszą chyba zasadą jest "Nigdy nie próbuj naprawiać uszkodzonego systemu plików, partycji czy dysku bezpośrednio!". Jeżeli coś pójdzie nie tak, możesz nie być w stanie naprawić swojego błędu. Druga to "Nigdy nie modyfikuj jedynej kopii uszkodzonego dysku". Jeśli udało Ci się przeczytać dane raz, nie znaczy to wcale, że uda się po raz drugi. Niesprawny dysk może za którymś razem częściowo lub całkowicie przestać działać.

Jeżeli mamy pewność, że elektronika dysku jest sprawna, a powierzchnia dysku nie została uszkodzona, możemy wykonać binarną kopię samej partycji do pliku za pomocą programu dd, który jest dostępny chyba w każdej dystrybucji linuxa. Składnia polecenia dd jest dość prosta. Załóżmy, że chcemy skopiować partycję /dev/sdb2 na przenośny dysk zamontowany jako /media/disk do pliku obrazpartycji.img dd if=/dev/sdb2 of=/media/disk/obrazpartycji.img Proces kopiowania danych będzie trwał dość długo, w zależności od rozmiarów kopiowanej partycji. Jeśli przestrzeń dyskowa na to pozwala, warto wykonać kopię naszego obrazu przed rozpoczęciem naprawy systemu plików.

Jeżeli istnieje podejrzenie, że powierzchnia dysku została uszkodzona, to warto użyć innego narzędzia niż zwykłe dd, ponieważ jeśli dd natrafi na błąd odczytu dysku źródłowego, najprawdopodobniej przerwie pracę, nie ukończywszy kopiowania. Jedną z alternatyw jest GNU ddrescue. Program w razie natrafienia na uszkodzony blok usilnie próbuje go odczytać. Składnia polecenia ddrescue jest podobna do składni dd, mamy jednak do dyspozycji trochę inny zestaw opcji, natomiast czas działania ddrescue może być znacznie dłuższy w przypadku natrafienia na błędy odczytu (przykładowo kiedyś wykonanie kopii 80GB dysku z rozległymi i poważnymi uszkodzeniami zajęło mi prawie tydzień). Załóżmy, że chcemy z uszkodzonego dysku skopiować partycję /dev/sdb2 na przenośny dysk zamontowany jako /media/disk do pliku obrazpartycji.img oraz zapisać log do pliku obrazpartycji.log: ddrescue /dev/sdb2 /media/disk/obrazpartycji.img /media/obrazpartycji.log. Używając pliku logu możemy przerwać i wznowić proces wykonywania kopii dysku, co więcej możemy spróbować ponownie odczytać obszary, których nie udało się odzyskać w pierwszym przebiegu. Przed użyciem programu zalecam przeczytanie manuala programu ddrescue, w którym znajduje się kompletny opis jego funkcjonalności oraz opcji. Kiedy już uda nam się wykonać kopię dysku, radzę pozostawić ją nietkniętą, wykonać jej kopię i dopiero kopii używać do prób odzyskania danych. W ten sposób mamy większe szanse na sukces, a ewentualne pomyłki czy nieudane próby nie powodują nieodwracalnych skutków.

Jeśli uszkodzona została cała tablica partycji, bądź partycje nie są widoczne, istnieje możliwość wykonania kopii całego dysku. W takiej sytuacji urządzeniem wejściowym programu dd lub ddrescue nie będzie urządzenie /dev/sdb2 (nawiązując do poprzednich przykładów), ale cały dysk /dev/sdb . Praca na kopii całego dysku będzie wymagała doinstalowania dodatkowego modułu jądra systemu, będącego rozszerzeniem linuxowego modułu loop. Rozszerzony moduł loop zostanie opisany w dalszej części artykułu.

Praca z obrazem partycji - standardowy moduł loop

Chcąc pracować z obrazem dysku będziemy musieli utworzyć urządzenie blokowe za pomocą modułu loop oraz polecenia losetup. Tak jak już wcześniej pisałem, najbezpieczniej jest korzystać z kopii obrazu dysku, co wyeliminuje konieczność ponownego odczytu uszkodzonego urządzenia. Jeśli moduł nie został załadowany podczas startu systemu, można go załadować poleceniem modprobe loop. Z wcześniej utworzonego obrazu partycji (w naszym przykładzie był to obraz /media/obrazpartycji.img ) tworzymy urządzenie za pomocą polecenia: losetup -r /dev/loop0 /media/obrazpartycji.img (przy założeniu, że loop0 nie jest jeszcze w użyciu). Od tej chwili /dev/loop0 jest traktowane w systemie jak normalna partycja. Możemy podjąć próbę naprawy systemu plików i odzyskania danych, co zostanie opisane dokładniej w dalszej części artykułu.

Praca z obrazem dysku - standardowy moduł loop

Z obrazem całego dysku postępujemy podobnie jak w przypadku pojedynczej partycji, z tą różnicą, że musimy najpierw odnaleźć początek partycji w obrazie dysku. Zakładając, że /media/disk/obrazdysku.img jest naszym plikiem obrazu całego urządzenia podzielonego na partycje, polecenie będzie wyglądać następująco:

fdisk -ul /media/disk/obrazdysku.img

Wyświetlona zostanie informacja o partycjach, po czym program fdisk zakończy działanie. W przypadku mojego obrazu na dysku znajdowała się jedna partycja z systemem plików ext2:

Obraz przedstawia output z programu fdisk

Interesujące dla nas w tym przypadku wartości to początek partycji (w przypadku mojego obrazu 63), oraz rozmiar pojedynczego sektora (u mnie 512). Mnożąc te dwie wartości otrzymujemy liczbę 32256 uzyskując tym samym parametr dla kolejnej komendy, która już utworzy urządzenie loop z daną partycją:

losetup -o 32256 -f -v /media/disk/obrazdysku.img

Moduł loop podłączy nasz obraz do pierwszego "wolnego" urządzenia loop, po czym poinformuje nas o numerze urządzenia. Możemy teraz przystąpić do pracy nad odzyskiwaniem danych z partycji zawartej w obrazie zgodnie z opisem w dalszej części artykułu.

Praca z obrazem dysku - rozszerzony moduł loop (alternatywnie)

NASA opracowało zmodyfikowaną wersję jądra linuxa oraz sterownika loop i narzędzi do tworzenia urządzeń typu loopback, umożliwiających pracę z obrazem całego dysku. Rozszerzony moduł loopback modyfikuje natywny sterownik loopback jądra linuxa dodając funkcjonalność umożliwiającą sterownikowi emulację dysku twardego. Najważniejsza jest możliwość automatycznej interpretacji i mapowania partycji zawartych w pliku obrazu dysku. Pierwotnie urządzenie loop było widoczne w systemie jako np. /dev/loop0, /dev/loop1, itd. Używając rozszerzonego sterownika mamy /dev/loopa, /dev/loopb, itd. oraz /dev/loopa1, /dev/loopa2, itd. Pełną dokumentację w języku angielskim można znaleźć pod adresem ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/readme.txt, natomiast źródła można znaleźć pod adresem ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/

Urządzenia tworzy się analogicznie jak w przypadku standardowego modułu loop, z tą różnicą, że używamy obrazu całego urządzenia losetup -r /dev/loopa /media/disk/obrazdysku.img. Załóżmy, że obraz dysku zawiera dwie partycje podstawowe. Wywołanie polecenia utworzy nam urządzenia /dev/loopa, /dev/loopa1 i /dev/loopa2. Od tego momentu możemy rozpocząć pracę nad naprawą partycji i systemów plików oraz odzyskiwaniem danych na urządzeniach /dev/loopa1 i /dev/loopa2

Narzędzia używane do kopiowania dysków

  • dd służy do niskopoziomowego kopiowania i konwersji surowych danych. Umożliwia między innymi sklonowanie dysku lub partycji na inny dysk, partycję lub do pliku.
  • ddrescue to zmodyfikowana wersja dd, która w razie natrafienia na błędy odczytu próbuje usilnie odczytać dane. Korzystając z własnych logów potrafi wznowić kopiowanie lub ponownie odczytać uszkodzone sektory dysku. Działa w sposób zautomatyzowany.
  • dd_rescue bardzo podobny do ddrescue, ale nie działa w pełni automatycznie.
  • sdd kolejny program na bazie dd, tyle że szybciej radzi sobie w sytuacji, kiedy rozmiary bloków na wejściu i wyjściu są różne.
  • rda służy do klonowania dysków z/na zdalną maszynę. Weryfikuje poprawność przesłanych danych za pomocą sum kontrolnych md5 lub crc32. Jest zarówno aplikacją kliencką jak i serwerem.
  • dcfldd kolejna ulepszona wersja dd. Potrafi w locie wyliczać sumę kontrolną, weryfikować poprawność wykonanej kopii dysku, wyświetla informacje o dotychczas przesłanej ilości danych i pozostałym czasie do końca operacji, może przesyłać dane wyjściowe do kilku plików lub dysków jednocześnie, lub podzielić dane wyjściowe na kilka części i zapisywać je jednocześnie.
  • AIR (Automated Image & Restore) jest nakładką graficzną na dd i dcfldd stworzoną w celu ułatwienia tworzenia obrazów binarnych z dysków.

Narzędzia do analizy i naprawy partycji i systemów plików

  • sfdisk to linuxowy manipulator partycji mający cztery podstawowe zastosowania: wyświetlenie rozmiarów partycji, wyświetlenie partycji na urządzeniu, sprawdzenie poprawności partycji na dysku oraz repartycjonowanie urządzenia (niebezpieczne).
  • disktype wykrywa format dysku lub jego obrazu, potrafi wyświetlić informacje o większości systemów plików, tablic partycji itd. W odniesieniu do dysków działa trochę podobnie do polecenia file, ale potrafi wyświetlić znacznie więcej informacji o partycjach i systemach plików na urządzeniu czy w obrazie dysku lub partycji.
  • gpart jest narzędziem, które próbuje odgadnąć zawartość głównej tablicy partycji dysku w przypadku, kiedy w sektorze 0 główna tablica partycji jest uszkodzona, niepoprawna lub skasowana.
  • TestDisk narzędzie umożliwiające sprawdzanie i odzyskiwanie usuniętych partycji takich jak: FAT12 FAT16 FAT32, EXT2, EXT3, Linux SWAP (w wersji 1 i 2), NTFS, BeFS (BeOS), UFS (BSD), Netware oraz ReiserFS.
  • ntfsfix jest elementem pakietu ntfsprogs, służy do korygowania najczęściej występujących błędów w systemie plików NTFS. Wymusza także na MS-Windows sprawdzenie spójności dysku przy najbliższym starcie.
  • scrounge-ntfs jest kolejnym programem umożliwiającym odzyskiwanie danych z uszkodzonego systemu plików NTFS. Ciekawą jego cechą jest możliwość odzyskiwania danych z obrazów całego dysku (nie tylko z partycji).

Narzędzia do naprawy systemu plików

  • Sleuth Kit to zestaw narzędzi używanych z wiersza poleceń, służących do analizy systemów plików takich jak NTFS, FAT, FAT32, czy EXT2FS oraz partycji DOS, BSD, Sun i Mac. Umożliwiają analizę i odzyskiwanie usuniętych danych, itd.
  • PTK jest alternatywnym, rozszerzonym interfejsem dla Sleuth Kit. PTK zostało przepisane od podstaw i oprócz możliwości dostarczanych przez interfejs Autopsy Forensic Browser, wprowadza wiele nowych funkcjonalności. PTK jest nie tylko nowym graficznym i bardzo profesjonalnym interfejsem bazującym na technologii ajax, oferuje także dodatkowe możliwości takie jak analiza, przeszukiwanie i zarządzanie kompleksowym cyfrowym dochodzeniem. Wszystkie raporty przechowywane są w zarezerwowanej części bazy danych. PTK jest opartą o technologię Web aplikacją, budującą archiwum indeksowania w oparciu o bazę danych MySQL, używając do tego celu serwera LAMP (Linux-Apache-MySql-PHP).

Odzyskiwanie skasowanych plików

  • SalvageNTFS jest zestawem aplikacji oraz bibliotek służących do odzyskiwania danych z partycji NTFS. Potrafi przywrócić skasowane pliki, obejść system uprawnień oraz odzyskać dane z mocno uszkodzonych woluminów.
  • Foremost jest programem umożliwiającym przywracanie plików bazujące na ich nagłówkach i stopkach. Potrafi pracować bezpośrednio na plikach obrazów tworzonych za pomocą takich narzędzi jak dd, Safeback, Encase, itd. lub bezpośrednio na urządzeniach blokowych.
  • Magic Rescue skanuje urządzenie blokowe w poszukiwaniu znanych mu typów plików oraz wywołuje zewnętrzny program do ich wyekstraktowania z systemu plików. Wyszukuje "magiczne bity" w zawartości plików, dzięki czemu może być użyty zarówno do przywracania plików skasowanych, jak i naprawiania uszkodzonej partycji czy dysku. Dopóki zawartość plików nie zostanie nadpisana innymi danymi, potrafi je odzyskać.

Inne przydatne narzędzia

  • fdisk - tekstowy edytor partycji
  • parted - tekstowy edytor partycji
  • gparted - graficzny edytor partycji. Oprócz tworzenia, usuwania i formatowania partycji, umożliwia ich przesuwanie i zmianę ich rozmiaru, bez utraty danych.
  • partimage - oprogramowanie do wykonywania kopii zapasowych. Kopiowane są wyłącznie zajęte bloki, dzięki czemu kopia zapasowa jest stosunkowo niewielkich rozmiarów. Ponadto umożliwia skompresowanie kopiowanych danych do archiwum .tar lub .tar.bz2. Kopie zapasowe mogą być także wykonywane/przywracane przez sieć.
  • ntfs-3g sterownik umożliwiający bezpieczne montowanie pod linuxem partycji NTFS w trybie odczytu/zapisu

Ostatnie wydarzenia

2009.12.14
Opublikowałem zmodyfikowaną wersję Ubuntu, przystosowaną dla "zwyczajnych śmiertelników" ;) Więcej znajdziecie na stronie projektu, pod adresem linux.niebelski.pl.

2009.09.07
Opublikowałem poprawki do artykułu na temat odzyskiwania danych z uszkodzonych dysków.

2009.08.26
Wyprawa autostopowa zakończona. 12 krajów, ok. 7500km... zdjęcia znajdziecie tutaj.

2009.07.18
Niebawem wyruszam wraz z przyjaciółmi na autostopową wyprawę po bałkanach. Więcej na ten temat można przeczytać tutaj.

2009.05.26
Kolejna nowość na stronie! Dziś uruchomiłem dział WIDEO! Zapraszam do oglądania nagranego przeze mnie materiału.

2009.05.04
Pojawiła się dziś kolejna nowość na mojej stronie, mam przyjemność ogłosić otwarcie nowej sekcji strony, poświęconej nagraniom ulicznym :) Pewnie niebawem wiele się tam jeszcze zmieni, ale już można posłuchać muzyków ulicznych, których nagrałem we Francji i Belgii podczas ostatniej podróży autostopem do Paryża.

2008.06.10
Znów poważna zmiana na stronie :) Tym razem postanowiłem wreszcie ujednolicić i odświeżyć wszystkie albumy zdjęć. Jeśli ktoś z Was zauważy nie działający poprawnie link, albo problem z wyświetlaniem zdjęć, to proszę o zgłaszanie błędów mailem.

2008.02.08
Przesiadka na nowy serwer zakończona pełnym sukcesem :) Obecnie moja strona wywędrowała z Katowic do USA, dysponuję obecnie 50GB przestrzeni dyskowej, oraz 500GB transferu MIESIĘCZNIE :) Takie warunki techniczne dają zielone światło do rozbudowy strony... i nie tylko ;)

2008.01.10
Nie muszę chyba stałym gościom mojej strony zwracać uwagi, że nastąpiła radykalna zmiana wyglądu ;) Rozpocząłem pracę nad przebudową witryny, jeszcze nie wszystkie odnośniki działają, proszę Was o odrobinę cierpliwości, ostatnio cierpię na deficyt wolnego czasu, ale w ciągu ok. 2 miesięcy postaram się zakończyć prace.


Valid HTML 4.01 Transitional