Otrzymaj zniżkę

System plików ReFS (Resilient File System)

“ReFS” lub “Resilient File System” to nowy system plików stworzony przy użyciu kodu systemu plików “NTFS”. Ma to swoje wady i zalety. Ten system plików jest przeznaczony do rozwiązywania podstawowych problemów “NTFS”. Jest bardziej odporny na uszkodzenie danych, lepiej radzi sobie z dużym obciążeniem i łatwo skalowalny dla bardzo dużych systemów plików.

System plików ReFS (Resilient File System)

Treść:

Wstęp

System plików “ReFS” jest dalszym rozwinięciem “NTFS”. obsługuje punkty zwrotne (reparse points), technologię zawartą wcześniej tylko w systemie plików “NTFS”. Obsługa symbolicznych linków i punktów montażowych w systemie Windows jest realizowana za pomocą punktów zwrotnych.

Główne funkcje:

  • Rzetelność metadanych z sumami kontrolnymi.
  • Integrity streams: metoda zapisu danych na dysku w celu dodatkowej ochrony danych w przypadku, gdy część dysku jest uszkodzona.
  • Model transakcyjny «allocate on write» (copy on write).
  • Duże limity rozmiarów dla partycji, plików i katalogów.
  • Organizacja pule i wirtualizacja dla łatwiejszego tworzenia partycji i zarządzania systemem plików.
  • Segmentacja danych sekwencyjnych «data sriping» dla poprawy wydajności, nadmiarowy zapis dla odporności na błędy.
  • Wsparcie dla techniki czyszczenia płyt w tle «disk scrubbing» aby wykryć ukryte błędy.
  • Zapisywanie danych wokół uszkodzonego obszaru na dysku.
  • Współdzielone pule pomiędzy maszynami w celu zapewnienia dodatkowej odporności na uszkodzenia i wyważenia obciążenia.
  • Kompatybilny z zestawem powszechnie używanych funkcji “NTFS”.
  • Weryfikacja i autokorekta danych.
  • Maksymalna skalowalność.
  • Niezdolność do całkowitego zamknięcia systemu plików poprzez wyizolowanie obszarów awarii.
  • Elastyczna architektura za pomocą funkcji “Storage Spaces”, która została zaprojektowana i zaimplementowana specjalnie dla «ReFS».

W dodatku, «ReFS» przejmie wiele funkcji i semantyki «NTFS», włączając szyfrowanie «BitLocker», listy kontroli dostępu «ACL», dziennik «USN», wiadomości o zmianach, symboliczne linki, punkty połączeń«junction points»“punkty montowania”«mount points»“punkty powtórnego przetwarzania “«reparse points»zdięcia wolumenu plików oraz «oplock».

Oczywiście, dane z “ReFS” będą dostępne dla klientów za pośrednictwem tego samego “API”, które jest obecnie używane we wszystkich systemach operacyjnych do dostępu do partycji. «NTFS».

Osobliwości

Osobliwości systemu plików «ReFS»:

System plików używa sum kontrolnych dla metadanych, a także może używać sum kontrolnych dla danych z plików. Podczas odczytu lub zapisu pliku, system sprawdza sumę kontrolną, aby upewnić się, że jest ona prawidłowa. W ten sposób, zniekształcone dane są wykrywane w czasie rzeczywistym.

Jeśli znajdziecie uszkodzone dane, które nie mają alternatywnej kopii odzyskiwania, dane zostaną natychmiast usunięte z dysku. Ponowne uruchomienie lub wyłączenie urządzenia w tym przypadku nie będzie wymagane, jak w przypadku “NTFS”.

.

Nie ma potrzeby korzystania z narzędzia chkdsk całkowicie znika, ponieważ system plików jest automatycznie korygowany, gdy tylko pojawi się błąd. Nowy system jest również odporny na inne warianty korupcji danych.

Większa niezawodność przechowywania danych. Dla metadanych i zawartości pliku “ReFS” używa drzew B+. Rozmiary plików, wolumeny i liczba plików w katalogu są ograniczone przez 64-bitową liczbę. A wolne miejsce na dysku jest opisane w 3 oddzielnych tabelach hierarchicznych dla małych, średnich i dużych fragmentów wolnego miejsca. Nazwy plików i długość ścieżki są ograniczone do 32 kbajtów, do przechowywania których używamy «Unicode».

Nowy system plików jest również odporny na uszkodzenie danych w inny sposób. Na przykład, gdy aktualizujecie metadane pliku – na przykład nazwę pliku – system plików “NTFS” zmieni bezpośrednio jego metadane. Jeśli podczas tego procesu dojdzie do awarii komputera lub zaniku zasilania, może dojść do uszkodzenia danych. Podczas aktualizacji metadanych pliku system plików ReFS utworzy nową kopię metadanych. A zaktualizowane metadane zostaną przypisane do pliku dopiero po zapisaniu wszystkich nowych metadanych w całości. Nie ma niebezpieczeństwa, że metadane w pliku zostaną uszkodzone. Nazywa się to kopiowaniem do rekordu. «Copy-on-write».

«ReFS» integruje się z technologią wirtualizacji nośników danych «Storage Spaces» , która umożliwia tworzenie kopii lustrzanych i łączenie wielu fizycznych nośników z jednego komputera PC lub przez sieć.

System nie obsługuje nazwanych strumieni plików, nazw krótkich, kompresji i szyfrowania na poziomie plików “Encrypting File System”, jak również “NTFS” transakcji, linków twardych, “rozszerzonych atrybutów”, oraz kwot dysków.

Zrożnicowanie z NTFS

«ReFS» jest bardziej nowoczesny niż “NTFS” i obsługuje znacznie większe wolumeny i dłuższe nazwy plików. W dłuższej perspektywie czasowej są to istotne ulepszenia.

W systemie plików “NTFS” ścieżka do pliku jest ograniczona do 255 znaków. W przypadku “ReFS” nazwa pliku może zawierać więcej niż 30 znaków cewki. (32768).

“NTFS” ma teoretyczną maksymalną objętość 16 eksabajtów, podczas gdy “ReFS” ma teoretyczną maksymalną objętość ponad dwieście tysięcy (262144) eksabajtów. To nie ma znaczenia teraz i jest przeznaczone na przyszłość.

“ReFS” nie posiada niektórych funkcji dostępnych w “NTFS”, w tym kompresji i szyfrowania systemu plików, twardych linków, rozszerzonych atrybutów, deduplikacji danych i kontyngentów dysków. Jednakże, “ReFS” jest kompatybilny z różnymi funkcjami. Na przykład, jeśli nie można zaszyfrować pewnych danych na poziomie systemu plików, “ReFS” będzie zgodne z pełnym typem szyfrowania “BitLocker”.

Windows 10 nie pozwoli wam sformatować żadnej starej partycji jako “ReFS”. Obecnie można używać tylko “ReFS” dla przestrzeni dyskowej, gdzie jej funkcje pomagają chronić dane przed uszkodzeniem. W systemie Windows Server 2016 można formatować woluminy za pomocą “ReFS” zamiast “NTFS”. Nie można użyć “ReFS” dla woluminu rozruchowego, ponieważ Windows może uruchomić się tylko z dysku “NTFS”..

Obecnie ten typ systemu plików jest używany tylko na serwerach Windows i Windows Enterprise. (LTSC).

Architektura systemu plików

Pomimo częstych odniesień do “ReFS” i “NTFS” podobieństwa na wysokim poziomie, mówimy tylko o kompatybilności niektórych struktur metadanych. Dyskowa implementacja struktury ReFS różni się zasadniczo od innych systemów plików firmy Microsoft.

Głównymi elementami konstrukcyjnymi tego systemu plików są drzewa B+. Wszystkie elementy struktury systemu plików mogą być jednopoziomowe (liście) lub wielopoziomowe (drzewa). Takie podejście pozwala na skalowanie prawie każdego elementu systemu plików. Wraz z rzeczywistym 64-bitowym adresowaniem wszystkich elementów systemu wyklucza to pojawienie się “wąskich miejsc” przy jego dalszym skalowaniu.

Architektura systemu plików

Oprócz głównego zapisu drzewa B+, wszystkie pozostałe zapisy mają rozmiar bloku metadanych 16 KB. Węzły pośrednie (adresowe) mają niewielki rozmiar około 60 bajtów. Tak więc często zdarza się mieć niewielką liczbę poziomów drzew, aby opisać nawet bardzo duże struktury. Takie podejście zwiększa ogólną wydajność systemu.

Głównym elementem strukturalnym systemu plików jest “Katalog”, reprezentowany jako drzewo B+ z kluczem jako numerem obiektu folderu. W przeciwieństwie do innych podobnych systemów plików, plik w “ReFS” nie jest osobnym kluczowym elementem “Katalogu” i istnieje tylko jako zapis. Być może z powodu tej cechy architektonicznej, “ReFS” nie obsługuje “twardych linków”.

.

“Arkuszowe”katalogi są wpisane na maszynie. Istnieją trzy główne typy zapisów dla obiektu folderu: deskryptor katalogu, zapis indeksowy i deskryptor obiektu podfolderu. Wszystkie takie zapisy są zapakowane w osobne drzewo z identyfikatorem folderu. Korzeń to jest “arkusz” tego drzewa. Pozwala to na nagranie prawie dowolnej liczby zapisów. Na niższym poziomie liści znajduje się zapis deskryptora katalogów zawierający podstawowe informacje o katalogu, takie jak nazwa, informacje standardowe, atrybut nazwy pliku itp.

Dalej w katalogu znajdują się tzw. zapisy wskaźnikowe: krótkie struktury z danymi elementów katalogu. W porównaniu z NTFS zapisy te są znacznie krótsze, co mniej obciąża objętość metadanymi. Ostatnie są zapisami elementów katalogu. W przypadku folderów, pozycje te zawierają nazwę folderu, jak również identyfikator folderu w “Folder” i strukturę “informacje standardowe”. Dla pliku nie ma żadnego identyfikatora, ale zamiast tego struktura zawiera wszystkie podstawowe dane o pliku, włącznie z fragmentami pliku głównego (root-tree). Dlatego też plik może składać się z prawie dowolnej liczby fragmentów.

Pliki na dysku znajdują się w 64 blokach KB. Są one adresowane w taki sam sposób jak bloki metadanych w klastrach 16 KB. ” Rezydentność” dane z plików w “ReFS” nie są obsługiwane, więc 1-bajtowy plik na dysku zajmie cały blok 64 KB, co prowadzi do znacznej nadmiarowości pamięci masowej dla małych plików. Z drugiej strony, upraszcza to zarządzanie wolną przestrzenią, a proces przydzielania do nowych plików jest znacznie szybszy.

.

Rozmiar metadanych pustego systemu plików wynosi około 0,1% rozmiaru samego systemu plików (tj. około 2 GB na tomie 2 TB). Niektóre podstawowe metadane są powielane, co czyni je bardziej odpornymi na awarie.

Struktura systemu plików ReFS

System plików «ReFS» można zidentyfikować za pomocą następującego podpisu na początku tej partycji:

00 00 00 52  65 46 53 00  00 00 00 00  00 00 00 00 ...ReFS.........
46 53 52 53  XX XX XX XX  XX XX XX XX  XX XX XX XX FSRS

Strony ReFS mają długość 0x4000 байт.

Struktura systemu plików ReFS

We wszystkich testowanych systemach pierwszy numer strony to 0x1e (0x78000 bajtów po partycji startowej zawierającej system plików). Jest to wbudowana dokumentacja Microsoftu, która stwierdza, że pierwszy katalog metadanych znajduje się na stałym offsecie na dysku.

Inne strony zawierają różne struktury i tabele systemu, katalogi i tomy oraz “dziennikarskie”wersje każdej strony.

Pierwszym bajtem każdej strony jest jej numer.

Pierwsze 0x30 bajtów każdej strony metadanych to nagłówek strony, który ma następujący wygląd:

byte  0: XX XX 00 00  00 00 00 00  YY 00 00 00  00 00 00 00
byte 16: 00 00 00 00  00 00 00 00  ZZ ZZ 00 00  00 00 00 00
byte 32: 01 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00

dword 0 (XX XX) – numer strony, który jest kolejny i odpowiada przesunięciu strony 0x4000;

dword 2 (YY) – numer dziennika lub numer porządkowy;

dword 6 (ZZ ZZ) – это «wirtualny numer strony», który nie jest spójny

Tabela objektu «Object Table», wirtualny numer strony 0x02 – wiąże identyfikatory obiektów ze stronami, na których się one znajdują. Tutaj widzimy «AttributeList», składający się z zapisów «Key / Value pairs».

Po którymmożna znależć «ID» obiektu głównego katalogu i uzyskać stronę, na której się znajduje:

50 00 00 00 10 00 10 00 00 00 20 00 30 00 00 00 – całkowita długość/klucze i znaczeń
00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 – identyfikator obiektu
F4 0A 00 00 00 00 00 00 00 00 02 08 08 00 00 00 – identyfikator strony/flagi
CE 0F 85 14 83 01 DC 39 00 00 00 00 00 00 00 00 – suma kontrolna
08 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00

Pozycja tabeli obiektowej dla katalogu głównego zawierającego swoją stronę (0xAF4)

Odbierając strony według identyfikatora lub numeru wirtualnego, szukajcie tych z najwyższym numerem porządkowym, ponieważ są to ostatnie kopie mechanizmu «shadow-write».

Katalogi, od początku do końca, przebiegają według spójnego schematu. Składają się one z kolejnych list struktur danych, których długość jest określona przez wartość pierwszego atrybutu (atrybuty i listy atrybutów).

Lista jest często prefiksowana atrybutem nagłówka, który określa całkowitą długość następujących atrybutów składających się na listę.

W każdym razie, atrybuty mogą być analizowane poprzez ponowną analizę bajtów po nagłówku strony katalogu, odczytanie i przetworzenie pierwszej wartości w celu określenia kolejnej liczby bajtów.

Poszczególne atrybuty przyjmują różną semantykę, w tym linki do podkatalogów i plików, jak również skoki do dodatkowych stron zawierających więcej zawartości katalogów.

Struktury na liście katalogów mają jeden z następujących formatów:

Podstawowy atrybut (Base Attribute)

Najprostszy atrybut podstawowy, składa się z bloku, którego długość jest określona na początku.

Poniżej znajduje się przykład typowego atrybutu:

a8 00 00 00  28 00 01 00  00 00 00 00  10 01 00 00
10 01 00 00  02 00 00 00  00 00 00 00  00 00 00 00
00 00 00 00  00 00 00 00  a9 d3 a4 c3  27 dd d2 01
5f a0 58 f3  27 dd d2 01  5f a0 58 f3  27 dd d2 01
a9 d3 a4 c3  27 dd d2 01  20 00 00 00  00 00 00 00
00 06 00 00  00 00 00 00  03 00 00 00  00 00 00 00
5c 9a 07 ac  01 00 00 00  19 00 00 00  00 00 00 00
00 00 01 00  00 00 00 00  00 00 00 00  00 00 00 00
00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00
00 00 00 00  00 00 00 00  01 00 00 00  00 00 00 00
00 00 00 00  00 00 00 00

Tutaj, sekcja 0xA8 długa, zawiera cztery znaczniki czasu pliku. Więcej szczegółów można zobaczyć poniżej:

a9 d3 a4 c3  27 dd d2 01 - 2017-06-04 07:43:20
5f a0 58 f3  27 dd d2 01 - 2017-06-04 07:44:40
5f a0 58 f3  27 dd d2 01 - 2017-06-04 07:44:40
a9 d3 a4 c3  27 dd d2 01 - 2017-06-04 07:43:20

Można bezpiecznie założyć, że:

  • jedno z pierwszych pól danego atrybutu zawiera identyfikator określający, który z atrybutów powinien być analizowany, lub
  • kontekst jest określony przez pozycję atrybutu na liście.
  • atrybuty odpowiadające tej wartości znajdują się pod tym adresem lub identyfikatorem

Zapisy

«Key / Value pairs» – ich wartości są określone w pierwszych 0x20 bajtach atrybutu. Są one używane dla partycji metadanych powiązanych z plikami, których nazwy są zapisane w klawiszach i których zawartość jest zapisana do wartości.

Poniżej znajduje się przykład typowego Zapisu:

40 04 00 00  10 00 1A 00  08 00 30 00  10 04 00 00  @.........0.....
30 00 01 00  6D 00 6F 00  66 00 69 00  6C 00 65 00  0...m.o.f.i.l.e.
31 00 2E 00  74 00 78 00  74 00 00 00  00 00 00 00  1...t.x.t.......
A8 00 00 00  28 00 01 00  00 00 00 00  10 01 00 00  ¨...(...........
10 01 00 00  02 00 00 00  00 00 00 00  00 00 00 00  ................
00 00 00 00  00 00 00 00  A9 D3 A4 C3  27 DD D2 01  ........©Ó¤Ã'ÝÒ.
5F A0 58 F3  27 DD D2 01  5F A0 58 F3  27 DD D2 01  _ Xó'ÝÒ._ Xó'ÝÒ.
A9 D3 A4 C3  27 DD D2 01  20 00 00 00  00 00 00 00  ©Ó¤Ã'ÝÒ. .......
00 06 00 00  00 00 00 00  03 00 00 00  00 00 00 00  ................
5C 9A 07 AC  01 00 00 00  19 00 00 00  00 00 00 00  \..¬............
00 00 01 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00 00 00 00  00 00 00 00  01 00 00 00  00 00 00 00  ................
00 00 00 00  00 00 00 00  20 00 00 00  A0 01 00 00  ........ ... ...
D4 00 00 00  00 02 00 00  74 02 00 00  01 00 00 00  Ô.......t.......
78 02 00 00  00 00 00 00  ...(cutoff)               x.......

Tutaj widzimy parametry zapisu określone w pierwszej linii:

  • ogólna długość – 4 bajta = 0x440
  • przesunięcie klucza – 2 bajta = 0x10
  • długość klucza – 2 bajta = 0x1A
  • flagi / identyfikator – 2 bajta = 0x08
  • wartość offsetowa – 2 bajta = 0x30
  • długość znaczenia – 2 bajta = 0x410

Zapis kończy się po wartości, 0x410 bajtów od początku i po wartości 0x30 lub 0x440 (która pokrywa się z całkowitą długością).

Zapis odpowiada plikowi utworzonemu na dysku.

Tutaj pierwszym atrybutem w wartości zapisu jest omówiony powyżej prosty atrybut, który zawiera znaczniki czasowe pliku. Po tym następuje «File Reference Attribute List Header».

Z metkami szukamy zapisów z wartościami “w/ flag”“0” lub “8”. Często pojawia się “4”, które oznaczają Zapis historyczny lub Zapis, który został zmodyfikowany.

Skoro zapisy są opatrzone prefiksem o całkowitej długości, można je uznać za podklasę«Attribute».

“AttributeList” (nagłówek listy) – zawiera blok atrybutów.

Na pierwszy rzut oka są to proste atrybuty o długości 0x20, ale w dalszych rozważaniach widać, że zawiera on długość dużego bloku atrybutów. Po przeanalizowaniu “AttributeList”, pozostaje odczytać pozostałe bajty na liście przed przejściem do następnego atrybutu.

20 00 00 00  A0 01 00 00  D4 00 00 00  00 02 00 00 - nagłówek listy o całkowitej długości (0x1A0) i wypełnienie (0xD4)
74 02 00 00  01 00 00 00  78 02 00 00  00 00 00 00
80 01 00 00  10 00 0E 00  08 00 20 00  60 01 00 00
60 01 00 00  00 00 00 00  80 00 00 00  00 00 00 00
88 00 00 00  ... (sekcja)

Directory Tree Branches (Gałęzie drzewa katalogowego)

Gałęzie drzewa katalogów to listy atrybutów, gdzie każdy atrybut odpowiada rekordowi, którego wartość odnosi się do strony zawierającej dodatkową zawartość katalogu.

Gdy wykryjemy nagłówek “AttributeList” z wartością flagi “0x301” musimy

  • przewijać atrybuty na liście,
  • przeanalizować ich zapisy,
  • Użyć “dword” w każdej wartości jako strony, aby powtórzyć proces przesuwania katalogu.

Dodatkowe pliki i podkatalogi znajdujące się na określonych stronach powinny zostać dodane do listy zawartości aktualnego katalogu.

SubDirectories

«SubDirectories» – są wpisami na liście atrybutów katalogu, którego klucz zawiera flagę metadanych katalogu (0x20030), a także nazwę podkatalogu.

Wartością tego zapisu jest odpowiedni identyfikator obiektu, który może być wykorzystany do wyszukiwania strony zawierającej podkatalog w tabeli obiektów.

Typowy podkatalog «Record»:

70 00 00 00  10 00 12 00  00 00 28 00  48 00 00 00
30 00 02 00  73 00 75 00  62 00 64 00  69 00 72 00 - tutaj widzimy klucz z flagą (30 00 02 00), po którym następuje nazwa katalogu. ("subdir2")
32 00 00 00  00 00 00 00  03 07 00 00  00 00 00 00 - tutaj widzimy identyfikator obiektu i pierwszą wartość qword (0x730)
00 00 00 00  00 00 00 00  14 69 60 05  28 dd d2 01 - tutaj widzimy znaczniki czasu z katalogu
cc 87 ce 52  28 dd d2 01  cc 87 ce 52  28 dd d2 01
cc 87 ce 52  28 dd d2 01  00 00 00 00  00 00 00 00
00 00 00 00  00 00 00 00  00 00 00 10  00 00 00 00

Takie katalogi to zapisy, których klucz zawiera flagę (0x10030), po której następuje nazwa pliku.

Wartość jest znacznie bardziej złożona, znaleźliśmy kilka podstawowych atrybutów, które pozwalają nam na wyodrębnienie znaczników czasowych i treści z systemu plików, ale pozostaje do wyciągnięcia wniosek o semantyce wartości tego zapisu.

Value “File Record” składa się z kilku atrybutów, chociaż pojawiają się one tylko jeden po drugim, bez nagłówka listy. Wciąż możemy analizować je kolejno, biorąc pod uwagę, że wszystkie atrybuty mają indywidualny prefiks z ich długością, a długość pliku z wartością zapisu daje nam całkowitą wielkość bloku.

Pierwszy atrybut zawiera 4 znaczniki czasowe pliku z przesunięciem określonym przez piąty bajt atrybutu (chociaż ta pozycja może być losowa, ponieważ znaczniki czasowe mogą być tylko w stałym miejscu tego atrybutu).

Drugi atrybut jest nagłówkiem listy atrybutów zawierającym “Odniesienie do pliku”.

W tym atrybucie, pierwszy zawiera długość pliku, a drugi nagłówek innej listy. Ten atrybut zawiera również wpis, którego wartość zawiera link do strony, na której znajduje się zawartość pliku.

----------------------------------------
| ...                                  |
----------------------------------------
| File Entry Record                    |
| Key: 0x10030 [FileName]              |
| Value:                               |
| Attribute1: Timestamps               |
| Attribute2:                          |
|   File Reference List Header         |
|   File Reference List Body(Record)   |
|     Record Key: ?                    |
|     Record Value:                    |
|       File Length Attribute          |
|       File Content List Header       |
|       File Content Record(s)         |
| Padding                              |
----------------------------------------
| ...                                  |
----------------------------------------

Pomimo złożoności, każdy poziom może być analizowany w taki sam sposób, jak wszystkie inne atrybuty i zapisy, wystarczy przetworzyć atrybuty i poprawnie zdefiniować ich poziomy i strukturę.

Co dotyczy rzeczywistych wartości, długość pliku jest zawsze widoczna ze stałym przesunięciem w obrębie jego atrybutu (0x3c), a wskaźnik zawartości jest w drugiej wartości “qword” pliku zapisu. Ten wskaźnik jest prostym linkiem do strony, której treść można odczytać dosłownie.

SubDirectories

Chociaż “ReFS” poprawił bezpieczeństwo i wydajność przechowywania danych, nie może w pełni chronić ważnych danych przed przypadkowym usunięciem, wirusami lub inną potencjalną utratą informacji. Takie sytuacje powinny być zawsze brane pod uwagę i posiadać niezawodne narzędzie do rozwiązywania problemów z usuwanymi plikami.

Algorytm wyszukiwania programu do odzyskiwania danych Hetman Partition Recovery

Rozwiązaniem tego problemu jest specjalny program do szybkiego odzyskiwania danych.

Hetman Partition Recovery pozwala na analizę przestrzeni dyskowej pod kontrolą systemu plików “ReFS” przy użyciu algorytmu analizy sygnatury. Analizując urządzenie sektor po sektorze, program znajduje określone sekwencje bajtów i wyświetla je użytkownikowi. Odzyskanie danych z “ReFS” przestrzeni dyskowej nie różni się od pracy z systemem plików “NTFS”.

Podczas szybkiej analizy program wyszukuje nagłówek “Volume Header”, który znajduje się w sektorze zerowym, a jego kopia w ostatnim sektorze. Nagłówek zawiera informacje niezbędne do dalszej analizy, a mianowicie liczbę bajtów w sektorze oraz liczbę sektorów w klastrze. Następnie po zdefiniowaniu tych parametrów znajduje się “Superblok”, który znajduje się w 30 bloku. Superblok ma 2 egzemplarze, jeden w trzecim bloku na końcu i drugi w drugim bloku. Z superbloku, program definiuje linki do punktów kontrolnych, istnieją 2 punkty kontrolne, znajdują się one pod określonymi adresami, które leżą w superbloku. Idąc pod te dwa adresy, program znajduje “Virtual Allocated Clock”, parametr ten określa, który z punktów kontrolnych jest aktualny. Jak wiadomo, Windows najpierw zmienia 1 punkt kontrolny, a w drugim duplikuje informacje tylko w przypadku powodzenia zapisu.

Punkt kontrolny(Checkpoint) zawiera główne tabele. Nagłówek strony «Page Header», a następnie blok danych są od niego odejmowane. Poprzez blok z danymi otrzymujemy wskaźniki każdej z tabel (linki do wszystkich głównych tabel).

Aby przekonwertować adresy wirtualne na fizyczne, należy znaleźć “Container Table”. A następnie wyszukiwanie “Object ID Table” przechodzi do wirtualnego adresu, aby uzyskać wszystkie tabele.

Inne informacje są przeszukiwane strona po stronie, aby określić ich poziom. Jeśli jest to poziom zerowy – arkusz, to odczytujemy dane, których potrzebujemy. Jeśli nie, program szuka ścieżki do następnego poziomu, aż dojdzie do poziomu zerowego, na którym znajdują się nasze dane.

I nawet jeśli jeden z tych elementów struktury systemu plików jest uszkodzony, algorytm naszego programu pozwala nam na wyłączenie tych linków w pełnej analizie i dotarcie do niezbędnych informacji, które należy odzyskać.

Przyszłość nowego systemu plików jest raczej niejasna. Microsoft może zmodyfikować “ReFS”, aby zastąpić przestarzałe “NTFS” we wszystkich wersjach systemu Windows. W tym momencie, “ReFS” nie może być używany wszędzie i jest tylko do określonych celów.

Rekomendujemy