Wbudowane systemy operacyjne
Wbudowane systemy operacyjne System Plików Dr inż. Damian Radziewicz Wrocław 2018
Plan wykładu Systemy Plików Podstawowe pojęcia budowa dysku System FAT System NTFS System ext 3
Podstawowe pojęcia System plików - sposób zapisu informacji na dyskach komputera. System plików jest ogólną strukturą, w której pliki są nazywane, przechowywane i organizowane. Zadania systemu plików: rozsądną strukturyzację danych tj. umieszczenie danych w plikach, plików w katalogach możliwie szybki dostęp do danych podstawowe operacje na danych (tworzenie, modyfikacja, usuwanie) bezpieczeństwo danych Dodatkowo powinien przechowywać dane: czas utworzenia modyfikacji pliku prawa własności prawa dostępu do pliku pewne atrybuty pliku (np. read-only, hidden etc.) 4
Podstawowe pojęcia Cylinder wszystkie ścieżki płaszczyzny przecinającej płytki z naniesioną na nich substancją magnetyczną (ścieżki o tych samych numerach położone na kolejnych talerzach pakietu). Sektor to najmniejsza fizycznie jednostka przechowywania danych na dyskach twardych. Wszystkie sektory na dyskach twardych mają ten sam rozmiar. Sektory są tworzone fabrycznie, podczas procesu formatowania niskiego poziomu. Klaster to podstawowa (najmniejsza) jednostka przechowywania danych, składająca się z kilku sektorów. Standard CHS standardowy sposób numerowania cylindrów, głowic, sektorów (cylindry i głowice od 0, sektory od 1). Sektor Ścieżka 5
Podstawowe pojęcia Partycja jest to wydzielona do określonych celów (np. dla określonego systemu operacyjnego) część twardego dysku. podstawowa - na niej można zainstalować system operacyjny. Zwykle mamy do czynienia z jedną partycją podstawową na dysku. Tabela partycji umieszczana w sektorze MBR (Master Boot Record specjalny sektor rozruchowy, znajdujący się tylko na jednym dysku, z którego jest uruchamiany system operacyjny) ma miejsce na cztery tego rodzaju partycje, rozszerzona - stanowi odmianę partycji podstawowej, ale jej zadaniem jest "przechowywanie" tzw. dysków logicznych. Służy do ominięcia limitu czterech partycji podstawowych. Dzięki partycji rozszerzonej można w ramach jednego napędu fizycznego utworzyć praktycznie dowolną liczbę partycji (tzw. dysków logicznych), dyski logiczne - dzielą jedną partycję rozszerzoną na części. 6
FAT / FAT16 / FAT32 Budowa systemu plików Boot sector FAT Kopia FAT Root directory Obszar danych Pierwszy sektor na każdym dysku (CHS=001) to MBR (główny sektor bootujący). MBR składa się z dwóch części: I. umieszczonego na początku kodu wykonywalnego II. tablicy partycji. MBR kończy się sygnaturą 55 AA 7 Tablica partycji złożona jest z czterech rekordów o długości 16 bajtów każdy. W rekordach może być zapisana informacja maksymalnie o czterech partycjach podstawowych (albo o maksymalnie trzech partycjach podstawowych i jednej rozszerzonej). Każdy rekord ma następującą strukturę: pierwszy bajt określa stan partycji (aktywna to 80, nieaktywna to 00) trzy bajty (nr 2, 3, 4) to adres początkowy w formacie CHS piąty bajt to identyfikator (ID), który określa typ partycji (FAT, NTFS, ext2, itp.) trzy następne bajty (nr 6, 7, 8) to adres końcowy w formacie CHS cztery bajty (nr 9, 10, 11) to podana w sektorach odległość między początkiem dysku a początkiem partycji ostatnie cztery bajty to rozmiar partycji, określany jako liczba zajmowanych (alokowanych) przez nią sektorów.
FAT / FAT16 / FAT32 FAT (ang. File Alloccation Table) określa rozmieszczenie plików, katalogów i wolnej przestrzeni na dysku twardym. Tabela ta zawiera spis wszystkich jednostek alokacyjnych (klastrów) całej partycji. Kopia FAT - ze względu na dużą wartość informacji przechowywanych w tablicy warto zabezpieczyć sie na wypadek zniszczenia oryginalnej tablicy (lub jej części) poprzez duplikacje danych na niej umieszczonych. Wadą jest położenie obu tablic obok siebie! Root directory - jest to katalog główny systemu plików, występuje w ustalonym miejscu w partycji. 8
FAT / FAT16 / FAT32 Obszar danych - pliki (i katalogi) umieszczone w klastrach (jeden lub więcej klastrów przypadających na plik). Reprezentowane są jako ciąg bajtów, jeśli nie wystarcza klastra kolejne są w następnym itd. Za poprawność operacji następnika odpowiedzialna jest tablica FAT. Katalogi są to pliki specjalnej postaci. Katalog jest podzielony na małe struktury nazywane wpisami. Każdy wpis ma rozmiar 32 bajtów i jest informacją o katalogu bądź pliku, zawartym w naszym katalogu. Wpis zawiera pola: 9 8 bajtów - nazwa pliku, 3 bajty - rozszerzenie, 1 bajt - atrybuty pliku: read-only, tylko do odczytu / hidden, ukryty / system, plik systemowy / volume label, tak jest oznaczony jeden plik w katalogu głównym, jego nazwa jest nazwą dysku / subdirectory, czy jest to katalog / archive, plik, który trzeba skopiować przy następnej kopi zapasowej / device, plik reprezentuje urządzenie / unused, nie używane 1 bajt - wielkość liter nazwy i rozszerzenia pliku, 1 bajt - czas utworzenia w milisekundach, 2 bajty - czas utworzenia, 2 bajty - data utworzenia, 2 bajty - czas ostatniego dostępu, 2 baty - zarezerwowane, 2 bajty - czas utworzenia lub ostatniej modyfikacji pliku, 2 bajty - data utworzenia lub ostatniej modyfikacji pliku, 2 bajty - numer klastera gdzie rozpoczyna się plik, 4 bajty - rozmiar pliku.
FAT / FAT16 / FAT32 Limity systemów plików FAT FAT16 FAT32 Rozmiar wpisu w tablicy FAT 16 bitów 28 bitów Max liczba klastrów na partycji 2^16 2^28 Min rozmiar klastra 2 KB 4 KB Max rozmiar klastra 32 KB 32 KB Max rozmiar partycji 2 GB 2 TB 10 Wady systemów plików FAT sekwencyjny dostęp do plików podatność na awarie nieefektywny na dużych partycjach ubogie wsparcie dla metadanych (m.in brak uprawnień dla plików) Brakuje jeszcze kilku rzeczy: wiecęj informacji o samych danych (metadane) możliwość ustalania ograniczeń dla poszczególnych użytkowników (quota) zagwarantowanie bezpieczeństwa danych jak również metadanych dowiązania symboliczne wiele strumieni danych
NTFS New Technology File System NTFS powstał aby wyeliminować problemy i wady systemów FAT. Główne założenia systemu: Niezawodność - duża tolerancja błędów przy zagwarantowaniu bezpieczeństwa danych. Bezpieczeństwo i kontrola dostępu - system praw dostępu. Przełamanie bariery rozmiaru - rozmiar partycji ograniczony jedynie wymiarem dysku, macierze RAID (Redundant Arrays of Inexpesive Disks). Efektywność - lepsze wykorzystanie dostępnej pamięci dzięki nowym rozwiązaniom alokującym pamięć. Długie nazwy plików - do 255 znaków dopuszczające także znaki diakrytyczne. Sieciowość - właściwości ułatwiające korzystanie z sieci. 11
NTFS W odróżnieniu od FAT wszystkie dane są przechowywane jako pliki i rozróżniamy: o zwykłe pliki o pliki z metadanymi (zawiera informacje o danych) o foldery Najważniejszy plik z metadanymi to Master File Table (MFT) jest tablicą w której każdy wpis reprezentuje plik (zadanie podobne jak FAT). MFT MFT zone Obszar plików Obszar plików Kopia pierwszych 16 wpisów MFT 12
NTFS MFT podzielony jest na rekordy o ustalonej wielkości (często 2 KB). Pierwszych 16 rekordów ma swoją kopię na środku lub końcu dysku. 13 Inode Nazwa Opis 0 $MFT Master File Table - spis wszystkich plików 1 $MFTMirr Kopia zapasowa pierwszych 16 rekordów MFT. Zazwyczaj usytuowana w logicznym środku dysku. 2 $LogFile Dziennik transakcji 3 $Volume Informacje o partycji. Jedyny plik, który używa atrybutów $VOLUME_NAME i $VOLUME_INFORMATION 4 $AttrDef Definicje atrybutów 5. (dot) Katalog główny 6 $Bitmap Mapa bitowa wszystkich klastrów dysku (wolny/zajęty). 7 $Boot Boot record 8 $BadClus Lista uszkodzonych klastrów. 9 $Secure Lista wszystkich zabezpieczeń nałożonych na pliki na dysku. 10 $UpCase Tablica służąca do zamiany małych liter na duże. 11 $Extend Katalog zawierający pozostałe pliki systemowe: $ObjId - lista unikalnych identyfikatorów dla wszystkich plików. $Quota - informacja o quocie. $Reparse - spis reparse points. $UsnJrnl - dziennik enkrypcji. 12 15 <Unused> Puste
NTFS Przechowywanie plików: o Jeśli plik jest mały tj. łączny rozmiar zawartości jego atrybutów nie przekracza rozmiaru jednego wpisu do MFT to całość jest tam przechowywana. o Dla nieco większych plików zamiast samych danych w MFT jest przechowywana lista wskaźników do klastrów zawierających te rzeczy np. atrybut $DATA zawiera numery klastrów gdzie faktycznie są te dane. o Jeśli dane są naprawdę duże (na tyle ze same wskaźniki do nich nie zmieszczą sie w jednym rekordzie MFT) to trzymany jest wskaźnik do miejsca gdzie przetrzymywane są wskaźniki. 14 Hard links Twarde dowiązania implementuje się nadając plikowi kilka różnych atrybutów $FILE_NAME. Nazwa tego atrybutu jest równoznaczna z nazwą pliku. Data streams Wielokrotne wystąpienie atrybutu $DATA dla jednego pliku umożliwia zapisanie w jednym pliku wielu strumieni danych. Podstawową zawartość pliku określa nienazwane wystąpienie atrybutu $DATA, natomiast do innych strumieni w pliku można się odwoływać poprzez łańcuch "nazwa_pliku:nazwa_strumienia" (gdzie nazwa_strumienia jest nazwą odpowiedniego atrybutu $DATA).
NTFS Katalogi podobnie jak w FAT, traktowane są jak zwyczajne pliki, z tą róznicą że zawartość katalogu jest trzymana w B+ drzewie, co znacząco przyspiesza wyszukiwanie. Transakcyjność i kronikowanie Modyfikacje danych takie jak np. kopiowanie często wymagają więcej niż jednej operacji na dysku. Awaria (np. utrata zasilania) podczas wykonywania tych operacji może powodować rozspójnienie danych na dysku. Każda operacja przed wykonaniem jest zapisywana do dziennika $LogFile. Jeśli nastąpi awaria podczas wykonywania tej operacji, przy ponownym montowaniu partycji sprawdzane jest czy wszystkie zapisane w dzienniku operacje zakończyły sie sukcesem. Jeśli tak nie było wycofywano skutki częściowo dokonanych zmian. Co 8 sekund do dziennika jest zapisywany tzw. check-point, co oznacza że wszystkie wcześniejsze wpisy do dziennika są w porządku. To co sie faktycznie zmieniło zapisywane jest w dzienniku zmian (Change Journal) zaraz po fizycznym dokonaniu zmiany. Dzięki temu można określić co sie zmieniło, przy wycofywaniu tranzakcji. 15
ext / ext2 / ext3 / ext4 Ext2 (ang. 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. Zapewnia wszystkie elementy systemu plików Unix (dowiązania symboliczne, pliki specjalne, prawa dostępu...) Wysoka wydajność dzięki przeciwdziałaniu fragmentacji (poprzez przydzielanie bliskich bloków oraz prealokację) Wydajny mechanizm dowiązań symbolicznych Stabilny i dobrze przetestowany Dobrze zdefiniowany sposób dodawania rozszerzeń Niezależny od tworzącego systemu operacyjnego (wszystkie pola wielobajtowe zapisane w standardzie littleendian) Maksymalny rozmiar partycji to 4TB, a pojedynczego pliku 2GB. Maksymalna długość nazwy pliku: 255 znaków. Obsługa "dziurawych" plików (nieużywane bloki nie zostają przydzielone). 16
ext / ext2 / ext3 / ext4 Partycja systemu plików ext2 podzielona jest na bloki o rozmiarze 1024, 2048 lub 4096 bajtów. Kolejne bloki połączone są w grupy, których rozmiar zależy od wybranego rozmiaru bloku. Grupa składa się z: Superbloku opisujący cały system plików Deskryptorów grup opisujące sumaryczne informacje o wszystkich grupach Mapy bitowej bloków każdy bit mapy odpowiada jednemu blokowi, jeśli jest ustawiony to blok jest zajęty Mapa bitowa i-węzłów opisuje zajętość i-węzłów w danej grupie Tablica i-węzłów bloki, w ramach których przydzielane są metryczki plików (i-węzły) Bloków danych 17
ext / ext2 / ext3 / ext4 Superblok 1. Rozmiar bloku 2. Liczby wszystkich oraz wolnych bloków i i-węzłów 3. Stan systemu plików (czy został poprawnie zamknięty) 4. Licznik zamontowań i data ostatniego sprawdzenia - pozwalają wymusić sprawdzenie integralności danych co pewien czas 5. Wersja systemu plików - zbiór 3 różnych kategorii rozszerzeń, w zależności od stopnia wprowadzanych przez nie niezgodności: COMPAT - zmiany należące do tej kategorii są zupełnie przejrzyste dla starszych wersji RO_COMPAT - zmiany te nie powodują błędów przy odczycie, ale zapis w takim systemie przez wersję nie obsługującą rozszerzenia spowodowałby uszkodzenie danych. Stara wersja może używać takiej partycji w trybie tylko do odczytu INCOMPAT - wprowadzone zmiany są na tyle poważne, że próba użycia systemu plików przez starszą wersję może skończyć się błędem. 18
ext / ext2 / ext3 / ext4 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: Dowiązania do bloków danych (12 bezpośrednich i po jednym pojedynczo, podwójnie i potrójnie pośrednim) Prawa dostępu Właściciel (użytkownik i grupa) Typ obiektu i różne flagi Rozmiar obiektu i liczba używanych przez niego bloków Data dostępu, modyfikacji, zmiany metadanych i skasowania obiektu Liczba dowiązań (wpisów katalogu odwołujących się do tego i-węzła) Dodatkowe informacje (wersja, Access Control List, Extended Attributes) 19
ext / ext2 / ext3 / ext4 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. ext3 Udostępnia trzy sposoby journallingu: samych metadanych danych i metadanych samych metadanych, ale z wcześniejszym zapisywaniem bloków danych (zwany ordered, jest to sposób domyślny) ext4 Zwiększono wydajność operacji dyskowych poprzez umożliwienie operowania na większej liczbie bloków 20
21 Koniec