Professional Documents
Culture Documents
1
1 Wprowadzenie
Ext4 (Fourth Extended File System) jest czwartą wersją rozszerzonego systemu
plików dla systemów operacyjnych UNIX, następca systemu ext3. Dostępny jest
w źródłach Linuksa od wersji 2.6.19 natomiast dnia 5 grudnia 2008 roku wraz
z wydaniem jądra 2.6.28 uznany za stabilny. Powstał on z myślą o tendencji
zwiększania się rozmiaru danych i możliwości szybkiego ich przetwarzania (naj-
nowsze gry, filmy Blu-ray, itp.). Wprowadza on nowe metody zapisu danych
na dysk i modyfikuje znacząco struktury danych. Dzięki tym modyfikacją osią-
gnięto znaczący wzrost wydajności, zmniejszenie fragmentacji plików oraz ob-
sługę dużo więszkych plików, która powinna zaspokoić potrzeby technologiczne
na następne kilka lat.
2.1 Księgowanie
Księgowanie nazywane też kronikowaniem lub dziennikowaniem (ang. journa-
ling) jest funkcją zlecającą systemowi plików przed wykonaniem zapisu danych
na dysk, opisanie wykonanych operacji w dzienniku. Jeśli operacja ta się po-
wiedzie wpis zostaje usunięty z dziennika. Dzięki tej metodzie obsługi danych
system jest w stanie w krótkim czasie powrócić do stanu spójnego po awarii. Nie
zapewnia ona jednak całkowitego odzysku danych ponieważ z punktu widzenia
systemu operacyjnego awaria może nastąpić w dwóch momentach:
2
2.2 Księgowanie w systemie plików ext3
System plików ext3 do księgowania używa oddzielnego API, które jest nazy-
wane warstwą Journaling Block Device (JBD). Ideom jego wprowadzenia jest
możliwość dodania modułu kronikowania do dowolnych urządzeń blokowych.
Komunikacja między ext3 a JBD odbywa się poprzez 3 główne moduły:
• atomic operation handle - czyli zbiór operacji niskopoziomowych
• transaction - czyli transakcji, które reprezentowane są przez deskryptor
typu transaction_t, którego pole t_state opisuje aktualny stan transak-
cji i w zależności od rodzaju transakcji przyjmuje dla pełnej opis T_FINISHED
oraz w przypadku niepełnej jeden z poniższych
– T_RUNNING,
– T_LOCKED,
– T_FLUSH,
– T_COMMIT,
• log records - czyli rekordy dziennika opisujące pojedyńczą operację na
bloku dyskowym.
Mamy dostępne 3 tryby kronikowania:
1. ordered - jest trybem domyślnym, w którym w dzienniku zapisywane są
tylko metadane. Jest trybem znacznie szybszym od pełnego księgowania
jednak zapeniającym mniejsze bezpieczeństwo modyfikowanych danych.
2. journal - polega on na księgowaniu danych oraz metadanych co minima-
lizuje szanse strat modyfikowanych plików, kosztem wielu operacji dysko-
wych co znacznie spowalnia operacje na dysku.
3. writeback - księgowane są jedynie zmiany w metadanych dzięki temu
jest on trybem najszybszym, ale pliki w przypadku awarii mogą zawierać
niepoprawne dane.
3 Zmiany w ext4
3.1 Kompatybilność
Twórcy ext4 podobnie jak ext3 zadbali o jak najprostszy proces migracji na
nowy system plików. Pomimo dość znaczących zmian w strukturze danych i
sposobie ich zapisu, można tego dokonać bez reinstalowania systemu czy forma-
towania istniejących partycji. Procedura ta jest bezpieczna ponieważ nie narusza
w żaden sposób isteniejących danych na dysku. Doperio nowe dane będą podle-
gały nowym mechanizmom, a stare pozostaną w takim stanie w jakim zostawił
3
jes system ext3. Dopiero przy ich modyfikacji ulegną one nowym sposobom alo-
kacji. Oznacza to jednak, że nie ma możliwści w prosty sposób powrócenia do
poprzedniego systemu plików. Pełna kompatybilność zachodzi więc tutaj tylko
w jedną stronę.
3.3 Extenty
Pierwszą nowością w sposobie zapisu danych jest nowy sposób alokacji prze-
strzeni dyskowej. W starszych systemach plików (m.in. w ext3) do zapisu plików
na dysku używa się tzw. mechanizmu blokowego. Polega to na tym, że system
po kolei alokuje wszystkie bloki wielkości 4KB na których zapisuje kolejne por-
cje danych. Dla przykładu, żeby zapisać plik o wielkości 100MB potrzeba aż
25600 wywołań alokatora. Ponadto system nie może zoptymalizować działania
samego alokatora ponieważ nie wie z góry ile danych jest do zapisania. Wie
tylko czy ma zapisywać kolejny blok czy już nie. Nowoczesne systemy używają
tzw. "ekstentów ", które w istocie są ograniczeniem bloków, które są fizycznie
obok siebie. Mówi on tak naprawdę systemowi, że "Dane są w kolejnych n blo-
kach". Ext4 używa nowego mechanizmu "multiblock allocator "(mballoc), który
w pojedyńczym rządaniu potrafi zaalokować do 128MB danych, co oznacza, że
jest w stanie zaalokować na raz aż 32768 bloków. Poprzednio rozważany plik
możnaby więc zaalokować w jednym rządaniu. Większe pliki dzielone są właśnie
na takie ekstenty co zmiejsza fragmentacje i zwiększa wydajność samego zapisu.
Dzięki temu mapowanie danych zostało ograniczone przez bardzo wolno rosnącą
funkcję.
4
Opóźnianie polega na wstrzymaniu alokacji do czasu istnienia jej w buforze
lub do czasu wysłania żadania jej zapisania. Dzięki temu system ma możliwość
optymalizacji alokacji pamięci co w połączeniu z systemem extentów oraz funk-
cją mballoc zmienjsza fragmentację plików oraz przyśpiesza ich zapis.
4 FSCK
fsck jest uniksowym narzędziem do sprawdzania spójności systemu plików uru-
chamianym najczęsciej przy starcie systemu. Jeśli narzędzie wykryje jakieś błędy
automatycznie próbuje je naprawić. Kod zwracany przez fsck jest sumą nastę-
pujących warunków:
• 0 - bez błędów
• 1 - poprawiono błedy systemu plików
• 2 - system powinien zostać przeładowany
• 4 - pozostawiono nienaprawione błedy systemu plików
• 8 - błąd działania
• 16 - błąd składni
• 128 - błąd biblioteki współdzielonej
Opcje programu:
5
• -s wykonywanie operacji fsck szeregowo.
• -t określa typ sprawdzanego systemu plików
• fsck
Ponadto partycja musi być niezamontowana. Wykonujemy kolejno:
t u n e 2 f s −O e x t e n t s , uninut_bg , d i r _ i n d e x / dev / p a r t y c j a
6
Po tej operacji należy uruchomić sprawdzanie dysku narzędziem fsck ponieważ
w innym wypadku partycja nie będzie mogła być zamontowana. Uruchamiamy je
w celu przywrócenia spójności systemu plików. Prawdopodobnie znajdzie wiele
błędów sum kontrolnych co jest zrozumiałe ponieważ w celu zamontowania no-
wego systemu plików błędy te muszą zostać poprawione. Podczas tej operacji
fsck będzie wielokrotnie pytać czy naprawić błąd. W celu automatyzacji odpo-
wiedzi wystarczy dodać parametr -p.
f s c k −pfD / dev / p a r t y c j a