System plików EXT2

Ext2, czyli Second Extended File System jest podstawowym i najszerzej używanym systemem plików dla Linuxa. Jest bardzo efektywny w typowych zastosowaniach, a równocześnie stosunkowo prosty. Jest uważany za jeden z najlepszych "standardowych" systemów plików.

Ext2 powstał jako rozwinięcie systemu plików Ext, który z kolei zastąpił używany we wczesnych wersjach Linuxa system Minix. Minix narzucał dość poważne ograniczenia na nazwy plików (do 14 znaków) jak i na rozmiar samej partycji (maksymalnie 64MB). Ext usunął te ograniczenia, ale nie był wystarczająco wydajny (powodował dużą fragmentację plików), a także nie zapamiętywał daty dostępu do pliku ani daty zmiany metadanych pliku.

Główne cechy systemu Ext2

Wady:

Struktura systemu plików

Partycja systemu plików Ext2 podzielona jest na bloki o rozmiarze 1024, 2048 lub 4096 bajtów (na niektórych architekturach do 8192 b). Kolejne bloki połączone są w grupy, których rozmiar zależy od wybranego rozmiaru bloku. Podział na grupy zwiększa lokalność danych związanych z jednym plikiem, a co za tym idzie, przyspiesza dostęp do nich. Grupy zostają ustalone statycznie podczas tworzenia systemu plików.

Grupa:
Superblok Deskryptory grup Mapa bitowa bloków Mapa bitowa i-węzłów Tablica i-węzłów Bloki danych

W oryginalnej wersji Ext2, w każdej grupie znajdował się superblok, opisujący cały system plików, oraz deskryptory grup, opisujące sumaryczne informacje o wszystkich grupach. Miało to na celu przyspieszenie dostępu do tych informacji, a także zabezpieczenie istotnych danych przed awarią dysku. W nowszej wersji wprowadzono możliwość pominięcia kopii w niektórych grupach, aby zmniejszyć ilość marnowanego miejsca. Kopie superbloku i deskryptorów grup znajdują się wtedy w blokach o numerach 0, 1, oraz będących potęgą 3, 5 lub 7.

Poza superblokiem i deskryptorami grup, identycznymi na całym dysku, w skład grupy wchodzą:

Superblok

Zawiera informacje o całym systemie plików, takie jak:

Normalnie używana jest podstawowa wersja superbloku z 1024-go bajtu urządzenia. W przypadku jego uszkodzenia można użyć jednej z kopii.

Deskryptory grup

Jest to tablica rekordów, po jednym dla każdej grupy, opisujących sumaryczne dane (m.in. liczbę wolnych i-węzłów i bloków). Informacje te są używane podczas przydzielania bloków.

I-węzły

I-węzeł opisuje wszystkie atrybuty obiektu zapisanego w systemie plików, poza jego nazwą. Są to: Istnieje kilka pól o podwójnym znaczeniu, zależnym od typu pliku, a także pól zarezerwowanych do przyszłych zastosowań:

Specjalnie obsługiwane są dowiązania symboliczne. Jeśli nazwa wskazywanego pliku nie jest dłuższa niż 60 znaków, to zamiast w oddzielnym bloku zapisywana jest w samym i-węźle, na pozycjach normalnie używanych jako wskaźniki do bloków (w sumie jest ich 15, każdy po 4 bajty). Podobnie zaimplementowane są pliki urządzeń - wtedy przechowywany jest numer oznaczanego przez i-węzeł urządzenia. Używanie tej techniki daje bardzo duży zysk, zarówno pod względem czasu dostępu, jak i zużywanego miejsca. Planowane jest jej rozszerzenie na krótkie pliki.

Katalogi

Są zorganizowane jako standardowe pliki rekordów zmiennej długości. Zapisane są więc w tej samej przestrzeni, co bloki zwykłych plików. Każdy rekord zawiera pole określające jego długość, co pozwala "przeskakiwać" nad dziurami powstałymi po usunięciu krótkich wpisów. Poza tym rekordy zawierają nazwę pliku oraz numer jego i-węzła.

W nowszych wersjach systemu Ext2 także typ obiektu (plik, katalog, plik specjalny, dowiązanie symboliczne) zapisywany jest w katalogu. Pozwala to ograniczyć liczbę wczytywanych i-węzłów w operacjach przeszukiwania katalogu. Niestety, użycie tej techniki wymaga wsparcia programów trybu użytkownika, którego dotąd nie ma.

Obecnie używana implementacja katalogów nie jest zbyt efektywna, gdyż opiera się właściwie na listach jednokierunkowych. Ogranicza to używalną wielkość pojedynczego katalogu do 10-15 tysięcy wpisów. Już od pewnego czasu trwają prace nad zamianą obecnie używanych list jednokierunkowych na tablice haszujące. Pozwoliłoby to sprawnie używać katalogów o nawet 100 tys. do miliona wpisów.

Dodatkowe funkcje