You are on page 1of 7

Sprawozdanie z laboratorium Systemy Operacyjne

System Plików ext4


Gracjan Olbiński
179890

Informatyka - Wydział Podstawowych Problemów Techniki


Politechnika Wrocławska

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 Ext3 i idea księgowania


Twórca systemu ext3, Stephen Tweedie, postawił sobie ze względu na dużą po-
pularność systemu ext2 dwa cele:
• maksymalna kompatybilność z poprzednim systemem,

• unowocześnienie poprzez wprowadzenie księgowania.


Nowy system był podobny do swojego poprzednika do tego stopnia, że tak na-
prawdę wystarczyło doinstalować moduł kronikowania, aby partycja mogła być
montowana jako ext3. Kompatybilność ta działała w obie strony. stąd jest moż-
liwość zamontowania systemu ext3 jako ext2.

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:

• po zapisaniu zmian w dzienniku, ale przed zapisaniem zmian metadanych,


• po modyfikacji danych, ale przed zapisem zmian w dzienniku.
W pierwszym przypadku system, dzięki informacją zapisanym w dzienniku, w
bardzo krótkim czasie będzie w stanie powrócić do stanu spójności co nazy-
wamy transakcją pełną. W drugim natomiast ze względu na brak informacji o
zmianach w dzienniku dane nie będą tutaj brane pod uwagę po ponownym uru-
chomieniu systemu co nazywamy transakcją niepełną. Dla lepszego zrozumienia
dlaczego tak się dzieje warto przypomnieć, że kasowanie danych polega jedynie
na usunięciu informacji o ich istnieniu, a nie jawnym wyzerowaniu miejsc w
których były zapisane.

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.

2.3 Fragmentacja w systemie plików ext3


Ext3 pozwala dzielić jeden blok na części o tym samym rozmiarze dzięki czemu
można w nim przechowywać nawet po kilka małych plików. Pozwala to zmiejszyć
rozmiar zajmowany przez dane z uwagi na mnogość plików konfiguracyjnych o
małym rozmiarze.

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.2 Rozmiary danych


System plików ext3 wspierał dla bloków wielkości 4KB do 16TB maksymalnego
rozmiaru partycji oraz do 2TB maksymalnego rozmiaru pojedyńczego pliku.
W ext4 rozszerzono rozmiar pola adresowania bloków do 48-bitów, więc jest
on w stanie obsłużyć nawet do 1EB maksymalnego rozmiaru partycji (1EB =
10243 GB). W ext3 ponadto obowiązywał limit ilości podkatalogów do 32000,
który w nowym systemie plików został zniesiony.

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ę.

3.4 Opóźnianie alokacji pamięci


W systemach plików typu ext3 czy reiser3 alokacja bloków pamięci odbywa się
tak szybko jak to jest możliwe. Nawet dla danych trzymanych w pamięci ca-
che system alokuje bloki bez względu na to czy zostaną one zapisane czy nie.
Rozwiązanie takie ma pewną wadę, jeżeli edytowany plik będzie się szybko roz-
rastał do dużych rozmiarów jest duża szansa, że ulegnie on fragmentacji z uwagi
na fizyczny brak miejsca obok aktualnie alokowanego. Opóźnione alokowanie
pamięci zostało wprowadzone w systemach plików takich jak XFS, ZFS czy
Reiser4, które opóźniają alokowanie przestrzeni dyskowej tak długo jak to jest
możliwe. Dzięki pamięci cache dysk może zgromadzić większą ilość danych do
zapisania w jednym miejscu, przez co ogranicza się ruchy głowicy dzięki czemu
zapis jest szybszy. Problem jednak w tym, że dysk buforuje dane kiedy chce i
jakie chce. Stąd też systemy plików z księgowaniem wymuszają zapisanie całego
cache’u na dysk w stałych odstępach czasu (commit interval ). Dla systemów
ext3 i ext4 wynosi on 5 sekund.

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.

3.5 Journal checksumming


Ext4 wprowadza sumy kontrolne dla wpisów dziennika, dzięki czemu możliwe
jest wykrycie błędnych wpisów co zapobiega naruszeniom spójności systemu
plików w przypadku awarii, kiedy wpis do dziennika został uszkodzony. Przy-
śpiesza on również operacje dyskowe ponieważ transakcja danych i metadanych
generuje jedną sumę kotrolną, wystarczy więc je porównać, aby wiedzieć czy
dane zostały już zmienione. Przyśpiesz to operacje dyskowe nawet do 20% w
porównaniu do ext3.

3.6 Defragmentacja online


Pomimo wprowadzania systemów mających na celu maksymalne zmiejszenie
fragmentacji danych jest ona procesem nieunikinionym. Dlatego powstało na-
rzędzie o nazwie e4defrag które umożliwia defragmentacje pojedyńczych plików
jak i całej partycji. Działa on inaczej niż typowe defragmentatory, które po pro-
stu kopiują po kolei pliki.

3.7 Szybsze sprawdzanie poprawności danych


Fsck jest bardzo powolną operacją zwłaszcza sprawdzanie i-węzłów. Ext4 wpro-
wadza na końcu każdej tablicy i-węzłów listę nieużuwanych miejsc wraz z ich
sumą kontrolną. Fcsk dzięki temu będzie potrafił ominąć nieużywane i-węzły i po
prostu ich nie sprawdzać. Poprawia to szybkość działania narzędzia sprawdzania
od 2 do nawet 20 razy.

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

• -A przechodzi przez plik /etc/fstab i próbuje sprawdzić wszystkie sys-


temy plików w jednym przebiegu. Priorytet sprawdzania nadaje pole w
pliku /etc/fstab o nazwie fs_passno Systemy plików z wartością 0 będą
pomijane, reszta będzie sprawdzana w kolejności rosnącej.
1 r o o t @ r o b i n : ~# c a t / e t c / f s t a b
2 # / e t c / f s t a b : s t a t i c f i l e system i n f o r m a t i o n .
3 #
4 # Use ’ v o l _ i d −−uuid ’ t o p r i n t t h e u n i v e r s a l l y u n i q u e i d e n t i f i e r
for a
5 # d e v i c e ; t h i s may be used w i t h UUID= as a more r o b u s t way t o name
devices
6 # t h a t works even i f d i s k s a r e added and removed . See f s t a b ( 5 ) .
7 #
8 # < f i l e system> <mount p o i n t > <t y p e>
<o p t i o n s > <dump> <pass>
9 proc / proc proc
defaults 0 0
10 UUID=96 c 5 c 3 a 7 −71d4−4bf9 −9a51−a 9 2 2 5 c 0 c 5 6 e c / ext3
e r r o r s=remount−r o 0 1
11 UUID=48 d a c 3 e e −4178−4e63 −8730−0 f b c c 8 c b 1 1 5 4 / b o o t ext3
defaults 0 2
12 UUID=3 e e 8 6 9 f e −c912 −4715−bd7a−5 e e c a a e f 1 b b 6 /home ext3
defaults 0 2
13 UUID=f f 9 4 7 3 d 2 −bfb2 −4351−982b−6d c6b3 4085 91 none swap
sw 0 0
14 / dev / s c d 0 / media / cdrom0 udf ,
i s o 9 6 6 0 u s e r , noauto 0 0

• -C wyświetla wskaźniki zakończenia/postępu dla systemu plików, które je


wspierają

• -N nie wykonuje operacji, jedynie pokazuje co byłoby wykonane


• -P jeśli opcja -A sprawdza główny system plików równolegle z pozostałymi
• -R podczas sprawdzania wszystkich systemów plików z opcją -A, omija
główny system plików

• -T nie pokazuj tytułu przy starcie


• -V tryb gadatliwy. Wyświetlane są szczegółowe komunikaty, łącznie ze
wszystkimi wykonywanymi poleceniami specyficznymi dla poszczególnych
systemów plików

5 Migracja z systemu ext3 do ext4


W celu zmiany systemu plików na wybranej partycji potrzebujemy dwóch na-
rzędzi:
• tune2fs

• 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

Warto zauważyć w tym miejscu, że wszystkie dane obecne na dysku w chwili


migracji ciągle będą podlegały mechanizmom odczytu ext3. W celu pełnej mi-
gracji na nowy system plików należy uruchomić defragmentację online z opcją
powtórnego zapisu wszystkich plików w postaci ekstentów.

5.1 Montowanie partycji jako ext4 bez zmiany jej formatu


Jest możliwość montowania partycji w formacie ext3 jak ext4 bez zmiany jej
faktycznego formatu. Oznacza to jednak, że nie wszystkie zmiany będą mogły
być używane. Tak naprawdę montowanie takie umożliwia korzystanie z nowego
mechanizmu alokacji bloków oraz opcji opóźniania alokacji. Zaletą tego rozwią-
zania jest możliwość bezbolesnego powrotu do poprzedniego systemu plików.

You might also like