Otrzymaj zniżkę

Algorytm odzyskiwania danych z systemu plików HFS+

W tym artykule przyjrzymy się strukturze systemu plików HFS+ oraz zmianom, jakie wprowadził do swojej wcześniejszej wersji HFS. Spójrzmy na algorytmy odzyskiwania danych na dysku z systemem plików HFS+.

Algorytm odzyskiwania danych z systemu plików HFS+

Treść:

Zalety i korzyści HFS+

Główną różnicą w stosunku do HFS+ jest to, że używa on architektury 32-bitowej zamiast 16-bitowej jak w HFS. Stary adres był poważnym ograniczeniem, które nie pozwalało na pracę z wolumenami większymi niż 65 536 bloków. Przy wielkości dysku 1 GB, klaster (blok) wynosił 16KB – nawet plik 1-bajtowy zajmował całe 16KB.

W HFS+, podobnie jak w poprzednim systemie, do przechowywania większości metadanych wykorzystywane jest tzw. drzewo B.

Wolumen w HFS+ jest podzielony na sektory (w HFS były one nazywane blokami logicznymi) równe 512 bajtów. Jeden lub więcej sektorów składa się na klaster, całkowita liczba klastrów zależy od wielkości dysku. Adresacja 32-bitowa umożliwia dostęp do ponad 4 294 967 296 klastrów w stosunku do starego 65 536. Dla porównania, te dwa systemy mają:

  • różną długość nazw plików: w HFS:31, w HFS+: 255;
  • kodowanie nazwy plików: HFS: Mac Roman, HFS+: Unicode;
  • rozmiar węzła katalogowego: HFS: 512 bajtów, HFS+: 4 Kbytes;
  • i zwiększony maksymalny rozmiar pliku: HFS: 2^31, HFS+: 2^63.

Architektura HFS Plus

Przestrzeń w HFS Plus jest podzielona na sektory (tzw. bloki logiczne), które zazwyczaj mają wielkość 512 bajtów. Sektory te są pogrupowane w bloki dystrybucyjne (analogiczne do klastrów Windows), które mogą zawierać jeden lub więcej sektorów. Liczba bloków dystrybucyjnych zależy od całkowitej wielkości objętości. W HFS+ wartość dla bloków dystrybucyjnych wynosi 32 bity. System plików posiada kodowanie Big Endian.

HFS Plus

Aby zarządzać rozmieszczeniem danych na dysku, HFS+ przechowuje na nim informacje serwisowe – pliki metadanych. Wśród nich najważniejsze dla systemu plików są następujące elementy, które są najciekawsze przy wyszukiwaniu brakujących danych:

  • Tytuł rozdziału (Volume Header). Ma strukturę tabeli, używa rozszerzenia zapisu (Extents);
  • Mapa zajmowanego miejsca na dysku (Allocation File). Struktura – bitowa karta, używa rozszerzenia rekordu (Extents);
  • Katalog plików (Catalog File). Ma strukturę drzewa B, używa rozszerzenia zapisu (Extents);
  • .
  • Dodatkowe rozszerzenie pliku zapisu (Extents Overflow File). Ma strukturę drzewa B;
  • Lista blokujących sektorów (Bad block file) . Ma strukturę drzewa B (B-Tree);
  • Plik startowy (StartUp file). Stały rozmiar;
  • Dziennik (Journal). Powierzchnia dysku o stałej wielkości i położeniu.

System zawiera o wiele więcej struktur, ale dla odzyskiwania danych te struktury są dominujące. Aby kontynuować parsowanie struktury musimy zrozumieć podstawowe pojęcia – drzewo B i rozszerzenie zapisu.

Co to jest drzewo B?

Drzewa B są używane do przechowywania niektórych informacji HFS+. Są one potrzebne do zapisu dowolnych tablic informacyjnych (np. 100 MB) do bloków o stałej wielkości (np. 4 KB). W tym przypadku w pierwszym bloku zapisuje się nie samą informację, lecz odniesienia do kolejnych bloków, które mogą również zawierać odniesienia do następnego poziomu bloków lub bezpośrednio niezbędne informacje. Elementy drzewa, które przechowują referencje nazywane są węzłami, a elementy warstwy 0 z danymi nazywane są liśćmi.

B drzewo

Co to jest rozszerzenie zapisu i Extent Overflow File ?

HFS+ może używać od 0 do 8 rozszerzonych zapisów do przechowywania informacji o sektorach zajmowanych przez plik. Każdy zapis przechowuje odniesienie do pierwszego sektora z danymi i liczbą kolejnych klastrów wykorzystywanych do danych. Jeśli plik jest mocno rozdrobniony, a 8 zapisów nie wystarcza do opisania wszystkich części, pozostałe fragmenty są zapisywane do pliku z dodatkowymi rozszerzeniami – Extent Overflow File.

Volume header

Nagłówek woluminu znajduje się zawsze w drugim sektorze od początku dysku i zawiera ogólne informacje o woluminie. Jest to rozmiar bloków lokalizacyjnych, czas tworzenia woluminu oraz adresy lokalizacyjne innych struktur systemu plików:Catalog File, Extent Overflow File, Allocation File, Journal itp. Drugi sektor na końcu dysku zawsze zawiera kopię zapasową nagłówka.

Volume headerVolume headerVolume header

Allocation file

Plik zawiera informacje o wolnych i zajętych blokach alokacji. Każdy blok jest reprezentowany przez jeden bit, wartość “1” odpowiada zajmowanemu blokowi, a “0” – wolnemu blokowi. Czasami struktura ta nazywana jest bitmapą (bitmap). Plik może mieć dowolny rozmiar i nie musi być umieszczony w sąsiednich blokach. Informacja o fragmentach pliku jest opisana w nagłówku woluminu.

Allocation file

Catalog file

Plik przechowuje większość danych o lokalizacji plików i folderów na dysku. Ta dość duża struktura to drzewo B.

Ten plik w HFS Plus jest bardzo podobny do pliku w katalogu HFS. Główną różnicą jest wielkość pola. Są one większe i teraz mają więcej informacji. Na przykład, pozwala na dłuższe nazwy plików Unicode o długości 255 znaków. HFS ma rozmiar zapisu 512 bajtów, a HFS Plus to 4 KB dla Mac OS i 8 KB dla OS X. Pola w HFS są stałymi rozmiarami, a w HFS Plus rozmiar może się różnić w zależności od rzeczywistego rozmiaru danych.

Większość pól przechowuje małe atrybuty, które mogą zmieścić się wewnątrz 4KB. W przypadku większych atrybutów używane są dodatkowe rozszerzenia (maksymalnie 8, jeśli potrzeba więcej rozszerzeń, są one przechowywane w pliku Extent Overflow). Rozszerzenia przechowują linki do następujących pól, które zawierają informacje o atrybucie o dużym rozmiarze.

StartUp file

Ten plik jest przeznaczony dla systemów operacyjnych, które nie obsługują HFS lub HFS Plus. Jest to podobne do bloków startowych z woluminu HFS.

Bad blocks

Plik zawiera informacje o wszystkich przemieszczonych (wadliwie działających) sektorach.

Journal

Dziennik nie jest plikiem, ale stałym obszarem danych na dysku. W nagłówku przegrody znajduje się odniesienie do pierwszego sektora i wielkości obszaru. Zanim jakiekolwiek zmiany zostaną zapisane na dysku, HFS+ zapisuje je do logu, a następnie do plików systemowych. W przypadku awarii zasilania podczas zapisu, można odzyskać system plików.

Należy pamiętać, że rozmiar logu w HFS+ jest ograniczony, a jego zawartość jest okresowo nadpisywana. Dziennik wolumenów startowych Mac-mini jest zazwyczaj nadpisywany w ciągu 5-10 minut, a MacBook w ciągu 30 minut. Jeśli Time Machine jest aktywowany, czas zostaje zredukowany do 20 sekund.

Journal

Odzyskiwanie danych w Time Machine

Począwszy od systemu Mac OS X Leopard, system obejmuje Time Machine. Ten program tworzy kopie zapasowe plików, rejestrując wszelkie zmiany dokonane w systemie plików. Działania te pozwalają użytkownikowi na przywrócenie całego systemu, kilku plików lub jednego pliku, tak jak to było w danym momencie.

Aby Time Machine mógł pracować, należy przydzielić mu oddzielny napęd. Apple wprowadza na rynek specjalny napęd Apple Time Capsule, który jest używany jako dysk sieciowy specjalnie do tworzenia kopii zapasowych Time Machine. Time Machine może być również używany z dowolnym dyskiem USB lub eSata. Przy pierwszym uruchomieniu Time Machine tworzy na określonym dysku zapasowym folder zawierający wszystkie dane.

PotemTime Machine skopiuje tylko zmodyfikowane pliki. Ogólnie rzecz biorąc, jeśli do napędu używany jest Time Machine, odzyskanie utraconych danych nie stanowi problemu.

Time Machine

Algorytm odzyskiwania HFS+

Odzyskanie informacji z systemu plików HFS+ jest znacznie trudniejsze niż z innych systemów. Trudności pojawiają się, ponieważ HFS+ wykorzystuje drzewa B do przechowywania metadanych dotyczących lokalizacji plików. Po usunięciu pliku, drzewo B jest natychmiast aktualizowane, a informacja o jego lokalizacji jest tracona.

Nasz program pozwala zobaczyć urządzenie i strukturę systemu plików HFS+ w systemie Windows bez dodatkowego oprogramowania i sterowników.

Algorytm programu w pełnej analizie pozwala wykluczyć te linki w procesie wyszukiwania utraconych danych i przywrócić potrzebne nam informacje.

Podczas szybkiej analizy program odczytuje tytuł woluminu (Volume header) lub jego kopię zapasową. Nagłówek otrzymuje adres pliku katalogu (Catalog file) i lokalizację dzinnika na dysku. Jeżeli bloki należące do plików zdalnych nie zostały jeszcze nadpisane, odczytuje je i przywraca dane.

Jeżeli bloki usuniętego pliku nie zostały jeszcze nadpisane, metoda ta pozwoli na jego pełne przywrócenie. Nawet jeśli bloki plików zostaną nadpisane, dane pliku mogą nadal pozostać w dzienniku., lub plik zostanie częściowo przywrócony.

Algorytm pełnej analizy programu pozwoli wykluczyć elementy łańcucha w procesie wyszukiwania usuniętych danych. Program zbuduje strukturę dysku i wyświetli usunięte pliki, nawet jeśli nagłówek sekcji i plik katalogu zostały częściowo nadpisane.

Algorytm odzyskiwania HFS+

Podsumowanie

Ogólnie można powiedzieć, że implementacja systemu plików HFS + jest już w tej chwili przestarzała. Ten system został zoptymalizowany od czasu starego HFS. HFS + został już zastąpiony przez nowy system plików Apple.

HFS + jest znacznie gorszy pod względem szybkości, bezpieczeństwa i niezawodności niż APFS, więc odzyskiwanie danych jest dla niego bardzo aktualnym problemem. Informacje bardzo rzadko znikają bez śladu. Znając dobrze działanie systemu plików, możesz przywrócić nawet to, co zostało uznane za bezpowrotnie utracone.

Rekomendujemy