Łódzka Grupa Użytkowników Linuksa Studenckie Koło Naukowe PŁ Strona 1 z 15 System plików Linuksa Bartłomiej Świercz 20 maja 2002 roku
Strona 1 z 15 1. Wstęp Podstawowymi składnikami jądra Linux a są: moduł zarządzania procesami system plików System plików umożliwia logiczny podział urządzeń służących do przechowywania danych. Pozwala to zbudować strukturę poprzez którą użytkownik może odwołać się do określonego pliku w systemie.
2. Budowa Linux a Proces 1 Proces 2 Proces 3 Poziom uzytkownika Biblioteki Interfejs funkcji systemowych Podsystem plikow Wirtualny system plikow (VFS) Minix Fat Ext2 Podsystem sterujacy procesami Komunikacja miedzyprocesowa Strona 2 z 15 Podreczna pamiec buforowa Zarzadzanie pamiecia Przydzial CPU Znakowe Blokowe Programy obslugi urzadzen 2 3 Sterowanie sprzetem Poziom jadra Sprzet Poziom sprzetu
Strona 3 z 15 3. Wirtualny system plików Linux obsługuje bardzo dużą liczbę systemów plików: ext2, vfat, ntfs, minix, iso9960, itd. Aby ujednolicić interfejs obsługi plików wprowadzono VFS(Virtual File System). Umożliwia on dostęp do plików na każdym systemie plików poprzez te same wywołania systemowe. System plików ma postać drzewa, to znaczy nadrzędnym katalogiem jest / (korzeń), a od niego rozchodzą się kolejne katalogi. Pozwala to ukryć fizyczną strukturę plików.
4. System plików ext2 Macierzystym systemem plików dla Linux a jest system ext2. Logiczna budowa tego systemu przedstawiona jest poniżej: Grupa 1 Grupa 2 Grupa3 Grupa n Superblok Deskryptory grup Bitmapa blokow Bitmapa i-wezlow Tablica i-wezlow Bloki danych Strona 4 z 15 System plików ext2 podzielony jest na wiele grup. Każda grupa przechowuje dane istotne dla prawidłowego działania systemu. Są to: kopia superbloku (newralgiczna część systemu) i deskryptory wszystkich grup, mapy i-węzłów, bloki z danymi. W jądrze zdefiniowane są trzy podstawowe struk-
tury dotyczące superbloku: super block (include/linux/fs.h) ext2 super block (include/linux/ext2 fs.h) ext2 sb info (include/linux/ext2 fs sb.h) Strona 5 z 15
4.1. Bloki dyskowe System ext2 jest podzielony na grup o stałej wielkości (poza ostatnim). Wielkość ta określona jest poprzez strukturę opisującą ilość bloków, i-węzłów, fragmentów w każdej grupie. Wielkość bloku dyskowego określona jest w pliku ext2 fs.h: Strona 6 z 15 #define EXT2_MIN_BLOCK_SIZE 1024 #define EXT2_MAX_BLOCK_SIZE 4096 W związku z tym każda grupa może mieć wielkość od 8MB do 128MB. Wybór odpowiedniej wielkości bloku zależy od zastosowania systemu. Wybranie mniejszego rozmiaru bloków powoduje że unikamy fragmentacji systemu plików, lecz spowalniamy czas dostępu do plików.
Strona 7 z 15 4.1.1. Fragmenty Ponieważ w większości przypadków blok dyskowy nie jest wpełni wykorzystywany, więc wprowadzono fragmenty. Wielkość fragmentu jest zadeklarowana w strukturze ext super block w polu s log frag size, a ilość fragmentów w jednej grupie w polu s frags per grup. Właściwość ta jest standardowo wyłączona i wielkość fragmentu równa jest wielkości bloku dyskowego.
Strona 8 z 15 4.2. i-węzły Każdy plik w Linuksie identyfikowany jest za pomocą i-węzła. Struktura i-węzła ext2 inode zawarta jest w pliku include/linux/ext2 fs.b. W węźle przechowywane są wszystkie informacje o pliku, czyli: typ pliku. W Linuksie rozróżniamy: plik zwykły (-) katalog (d) FIF0 (p) plik specjalny blokowy (b) plik specjalny znakowy (c) link symboliczny (l) gniazdo (s)
Strona 9 z 15 identyfikator właściciela, oraz grupy pliku prawa dostępu rozmiar pliku w bajtach (ograniczony do 4GB poprzez wielkość 32 bitową) ostatni czas dostępu, modyfikacji czas utworzenia i skasowania liczba dowiązań liczba bloków dyskowych zajmowanych przez plik adresy dyskowe
Strona 10 z 15 4.3. Katalogi Katalog w Linuksie jest też plikiem. Najprościej mówiąc przechowuje listę plików z nim skojarzonych. Jego wewnętrzna reprezentacja danych jest uporządkowana i stanowi ciąg danych opisanych strukturą ext2 dir entry. Nazwa pliku może maksymalnie wynosić 255 znaków, co jest ustalone przez stałą EXT2 NAME LEN Interpretacja praw dostępu do katalogu: czytanie (r) - pozwala wyświetlić zawartość katalogu pisanie (w) - pozwala tworzyć i usuwać pozycje w katalogu wykonywanie (x) - pozwala przeszukiwać katalog
4.4. Dowiązania W Linuksie wyróżniamy dwa rodzaje dowiązań: dowiązanie symboliczne dowiązanie twarde Strona 11 z 15
4.5. Urządzenia Linux identyfikuje urządzenia za pomocą plików: specjalne pliki znakowe specjalne pliki blokowe Strona 12 z 15 Wszystkie wywołania funkcji odnoszące się do plików specjalnych blokowych, lub znakowych przechodzą przez tablice rozdzielcze. Urządzenia identyfikowane są na podstawie dwóch numerów. Spis wszystkich urządzeń i ich numerów znajduje się w pliku devices.txt
4.6. Cechy systemu plików ext2 System plików ext2 pozwala ustawić cztery specjalne atrybuty plików: niezmienny - EXT2 IMMUTABLE FL tylko dopisywanie - EXT2 APPEND FL bez zrzutu - EXT2 NODUMP FL Strona 13 z 15 synchroniczny - EXT2 SYNC FL Do manipulowania tymi atrybutami służy funkcja ioctl zadeklarowana w pliku sys/ioctl.h oraz dwa polecenia systemowe chattar i lsattr
5. Źródła Linux Kernel Hacker s Guide Linux+ 7/99, Marek Ludwiński Linux Programowanie, Kurt Wall Strona 14 z 15
Strona 15 z 15 Spis treści 1 Wstęp 1 2 Budowa Linux a 2 3 Wirtualny system plików 3 4 System plików ext2 4 4.1 Bloki dyskowe.............. 6 4.1.1 Fragmenty............ 7 4.2 i-węzły.................. 8 4.3 Katalogi................. 10 4.4 Dowiązania............... 11 4.5 Urządzenia................ 12 4.6 Cechy systemu plików ext2....... 13 5 Źródła 14