Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
< >
1 2 3 4 5

Ufs1 i ufs2: Koncepcje i analiza


System plików UFS (Unix File System) istnieje w kilku wariantach i występuje w wielu odmianach UNIX, w tym FreeBSD, HP-UX, NetBDS, OpenBSD, Apple OS X i Sun Solaris. W ostatnich latach w wielu systemach operacyjnych niektóre struktury danych zostały zmodyfikowane zgodnie z ich potrzebami, ale wszystkie są oparte na tych samych koncepcjach. Obecnie istnieją dwie główne modyfikacje UFS: UFS1 i UFS2. UFS2 obsługuje większe dyski i rozszerzone znaczniki czasu. Użyję terminu „UFS” w odniesieniu do obu systemów. Ekspert może napotkać system plików UFS podczas analizowania systemów UNIX, zwykle na serwerach. Ponieważ wcześniej szczegółowo przeanalizowaliśmy systemy Ext2 i Ext3 zbudowane na UFS, ten rozdział nie zawiera obszernych wyjaśnień - zakłada się, że czytelnik rozumie już pojęcia opisane w rozdziale 14. W tym rozdziale omówiono pojęcia i metody analizy w systemie plików UFS, i Rozdział 17 zawiera struktury danych. Ten rozdział i następny rozdział można odczytać zarówno równolegle, jak i szeregowo.

Wprowadzenie

System UFS jest połączony z systemem plików Berkeley FFS (Fast File System), a jego architektura została zaprojektowana z myślą o szybkości i niezawodności. Kopie zapasowe ważnych struktur danych są przechowywane w kilku miejscach w systemie plików, a dane są zlokalizowane w taki sposób, aby zminimalizować ruch głowic dysku twardego podczas odczytu pliku. System UFS jest podzielony na sekcje zwane grupami cylindrów. Wielkość każdej grupy jest określana na podstawie geometrii dysku. Grupy cylindrów są analogiczne do grup bloków ExtX.

Na początku UFS jest superblok z podstawowymi informacjami o strukturze systemu plików. Zawartość każdego pliku jest przechowywana w bloku, który jest grupą ciągłych sektorów. Bloki można również podzielić na fragmenty; fragment jest używany do przechowywania ostatnich bajtów pliku (zamiast wybierania pełnego bloku). Metadane plików i katalogów są przechowywane w strukturach danych zwanych węzłami indeksu. Nazwy plików są przechowywane w pozycjach katalogu zawartych w blokach przydzielonych do katalogu. Wpis katalogu jest prostą strukturą danych z nazwą pliku i wskaźnikiem do węzła indeksu. Relacje między strukturami danych przedstawiono na rys. 16.1. Każda grupa cylindrów ma swoją własną tabelę węzłów indeksu, mapę bitową z informacjami o wyborze fragmentów i kopię superbloku.

Rys. 16.1. Związek między pozycjami katalogów UFS, węzłami indeksowymi i blokami danych używanymi do przechowywania treści

Wszystkie odmiany UFS są zbudowane na tych podstawowych zasadach. Oczywiście są to te same koncepcje, które zostały wcześniej opisane dla ExtX. Typy UFS różnią się sposobem organizacji struktur danych i dodatkowymi funkcjami, które implementują. Jednak w porównaniu z ExtX, UFS zawiera mniej możliwości eksperymentalnych, które wpływają na dane dysku.

System plików UFS1 jest domyślnie używany w OpenBSD i Solaris. Wcześniej uważano go również za standardowy system plików FreeBSD i NetBSD, dopóki UFS2 nie pojawił się w FreeBSD 5.0 ​​i NetBSD 2.0. UFS2 dodaje obsługę dużych plików i dysków, a także innych zaawansowanych funkcji. W czasie pisania, tylko FreeBSD i NetBSD wspierały UFS2. Apple OS X i Linux obsługują również UFS1, ale ten system nie jest w nich standardem. W systemie Solaris zaimplementowano także różnorodne UFS do obsługi dużych plików i dysków. Sun nie opublikował informacji o strukturach danych swojej wersji UFS, ale programy oparte na opisach struktury danych FreeBSD działają z powodzeniem w systemie plików Solaris. Jednak może to nie dotyczyć danych opcjonalnych.

W dalszej części tego rozdziału przyjrzymy się modelowi pięciu kategorii dla wariantów UFS. W każdej sekcji zostaną opisane podstawowe właściwości każdej kategorii i jej charakterystyczne cechy w każdym przykładzie wykonania. Będę odnosił się do FreeBSD, NetBSD i OpenBSD pod ogólnym terminem „BSD”.

Kategoria danych systemu plików

Kategoria danych systemu plików zawiera ogólne informacje o strukturze i rozmiarze komponentów systemu plików. W tej sekcji opisano lokalizację danych usługi UFS i metody ich analizy.

Ogólne informacje

W UFS dane kategorii systemu plików są przechowywane w trzech typach struktur danych: superblok, raporty grup cylindrów i deskryptory grup. Superblok znajduje się na początku systemu plików i zawiera podstawowe informacje o wielkości i konfiguracji. Superblok przechowuje łącze do obszaru systemu plików, zwane podsumowaniem grup cylindrów; Zawiera podsumowanie wykorzystania grup cylindrów. Każda grupa cylindrów zawiera strukturę danych deskryptora grupy z bardziej szczegółowymi informacjami o określonej grupie. Ponadto wszystkie te struktury danych zostaną opisane bardziej szczegółowo.

Superblock

Superblok i8 zawiera podstawowe parametry systemu plików, takie jak rozmiar każdego fragmentu i liczba fragmentów w każdym bloku. Ponadto przechowuje wielkość każdej grupy cylindrów i lokalizację różnych struktur danych w każdej grupie. Na podstawie tych informacji można określić konfigurację systemu plików. Superblok może również przechowywać etykietę woluminu i czas, w którym system plików był ostatnio montowany. Superblok 11Р8 pełni tę samą rolę co superblok ExgH, ale informacje o strukturze i danych opcjonalnych różnią się.

Superblok i8 jest przechowywany blisko początku systemu plików. Na nośnikach wymiennych można uruchomić w pierwszym sektorze. Zwykle superblok 11P81 ma wartość 8, a superblok 11P82 wynosi 64 kilobajty od początku systemu plików. Ponadto superblok DH8282 może znajdować się w 256 kilobajtach od początku systemu plików, ale ten układ nie jest standardowy. Kopie zapasowe Superblock mogą być obecne we wszystkich grupach cylindrów.

IP81 i IP82 używają nieco innych struktur danych, ale w obu wersjach ich rozmiar jest większy niż 1 Kb, a struktury zawierają około 100 pól. Superbloki IRB1 i R82 różnią się tym, że wersja RBI zawiera 64-bitowe wersje pól rozmiaru i daty, które są dodawane na końcu struktury danych. Niewykorzystane 32-bitowe pola są ignorowane i nie są używane do przechowywania innych danych.

Superblok przechowuje również inne informacje o usłudze - na przykład całkowitą liczbę węzłów wolnych indeksów, fragmentów i bloków. Z superbloku można znaleźć lokalizację obszaru zwanego podsumowaniem grupy cylindrów. W tym obszarze przechowywana jest również tabela z wpisami dla wszystkich grup cylindrów; Rekordy dokumentują liczbę wolnych bloków, fragmentów i węzłów indeksu. Jak zostanie pokazane później, ta informacja jest również obecna w deskryptorze każdej grupy.

Superblok zawiera informacje o geometrii dysku, która służy do najbardziej efektywnej organizacji i optymalizacji systemu plików. Wiele wartości pochodnych jest przechowywanych oddzielnie, więc system operacyjny nie musi ich ponownie oceniać za każdym razem. Na przykład rozmiar bloku jest przechowywany zarówno w bajtach, jak i we fragmentach. Ponadto istnieje maska ​​bitowa i wartości przesunięcia do konwersji adresu bajtowego na adres bloku i odwrotnie. Teoretycznie wystarczy przechowywać tylko jedną z tych wartości i obliczyć resztę, jeśli to konieczne. Chociaż wiele pól nie jest wymaganych, ta sekcja skupi się zarówno na danych obowiązkowych, jak i opcjonalnych, które mogą zawierać dowody.

Szczegółowe opisy struktur danych podano w rozdziale 17. Superbloki iP81 i iP82 będą rozpatrywane na przykładzie obrazów testowych systemów plików.

Struktury danych dziennika | Analiza kryminalistyczna systemów plików | Deskryptor grupy cylindrów