760 likes | 968 Views
Nowoczesne systemy plików. PORÓWNANIE. Wymagania stawiane systemom plików. Bezpieczeństwo danych Szybkość działania Możliwość rozszerzania o dodatkowe funkcje. Wstęp. W trakcie prezentacji skupimy się na porównaniu dwóch najpopularniejszych obecnie systemów plików: ext3 NTFS
E N D
Nowoczesne systemy plików PORÓWNANIE
Wymagania stawiane systemom plików • Bezpieczeństwo danych • Szybkość działania • Możliwość rozszerzania o dodatkowe funkcje
Wstęp W trakcie prezentacji skupimy się na porównaniu dwóch najpopularniejszych obecnie systemów plików: • ext3 • NTFS Na wstępie omówimy ich historię.
Historia Ext3 • System plików w systemie operacyjnym Minix i jego niedoskonałości (max rozmiar woluminu 64 MB) • VFS (Virtual File System) • System plików ext (04.1992) likwiduje wady Miniksa, ale też ma wady (fragmentacja) • XiaFS - minimalistyczny następca ext • ext2 – maksymalistyczny następca ext • Zwycięstwo funkcjonalnego ext2 • ext3 (11.2001) – dziennikowy następca ext2
Historia NTFS • Systemy plików FAT (File Allocation Table) • FAT 12 (dyskietki) • FAT 16 (MS-DOS, Windows przed 95 OSR2) • FAT 32 (Windows 95 OSR2, Windows 98, Windows ME) • Budowa tablicy alokacji plików bardzo prosta • NTFS w 1995 (Windows 2000, Windows XP, Windows 2003 Server) • NTFS – znacznie polepszony system plików, MFT (Master File Table) zamiast FAT
Fizyczna Struktura NTFS • Wolumin stawnowi (mniej więcej) całość. • Metapliki gdziekolwiek na woluminie • MFT zajmuje początek dysku
Fizyczna Struktura ext3 • Dysk podzielony na grupy • Metadane na początku każdego bloku
NTFS • Wszystko jest plikiem – MFT, Boot, itd. • MasterFileTable jest relacyjną bazą danych, w której wierszami są pliki, a kolumnami atrybuty. • Wszystko w pliku jest atrybutem – łącznie z zawartością. • Atrybuty to strumienie danych (ciągi bajtów). • WSZYSTKIE pliki mają swoje rekordy w MFT – tak MFT też ma rekord w MFT.
Master File Table MFT musi gdzieś przechowywać wszystkie informacje o systemie plików. Jak wszystko inne, są one w plikach. Te pliki zajmują pierwsze 16 rekordów MFT (ostatnie 4 z nich są wolne, ale zarezerwowane na przyszłość) i około 16KB.
0. Master File Table Master File Table Mirror LogFile (dziennik) Volume (informacje o woluminie) Attribute definitions (lista wszystkich dopuszczalnych atrybutów plików) Root file name index (katalog główny) Cluster bitmap (bitmapa zajętości klastrów) Boot sector (zawiera BIOS parameter block czyli sprzętowe informacje o woluminie i ew. kod startujący system operacyjny) Bad cluster file (plik zawierający wszystkie uszkodzone klastry – jeśli są zajęte przez jakiś plik to nikt inny nie będzie ich używał) Security file Upcase table (tablica do tłumaczenia znaków na ich wielkie odpowiedniki) NTFS extension file 12-15 są wolne Metapliki w NTFS
Atrybuty plików w NTFS • Standard_Information • Zawiera standardowe informacje takie jak czas stworzenia, ostatniej modyfikacji, ostatniego dostępu, prawa dostępu itd. • (Stemple czasowe na dysku są uaktualniane co godzinę – aktualne informacje zawsze są dostępne w pamięci i są zrzucane na dysk tylko wtedy jeśli zamkniemy wszystkie deskryptory pliku, albo czas ostatniego dostępu w pamięci jest o godzinę późniejszy niż zapisany na dysku) • Attribute_List • Czasami zdarza się, że wszystkie rezydentne atrybuty pliku nie mieszczą się w jednym rekordzie MTF. W takim wypadku plikowi przydzielane są dodaktowe rekordy, a attribute_list jest listą wskaźników do nich. • Rzadko widywane, gdyż większość danych może być przechowywana poza MFT. Przykładem kiedy jest to potrzebne jest plik z dużą liczbą twardych dowiązań – kiedy wszystkie nazwy się nie mieszczą.
Atrybuty plików w NTFS c.d. • File_Name • Zawiera dwie nazwy – długą (do 255 znaków) i krótką (do 8 znaków), oraz wielkość pliku. • Długa nazwa składa się z wielkich liter, krótka już niekoniecznie • Wielkość pliku jest wielkością podstawowego (nienazwanego) strumienia danych • Object_ID • Zawiera unikalne numery pliku: obecny, urodzenia i wolumin na której powstał plik. • Security_Descriptor • Tutaj są przechowywane uprawnienia dostępu do pliku dla własciciela, grupy i reszy świata. Mówi też które akcje mają być logowane.
Atrybuty plików w NTFS c.d. • Volume_Name i Volume_Information • Tylko pliki $volume posiadają te atrybuty – pierwszy zawiera nazwę, adrugi m.in. bit „Dirty”, mówiący czy przy ponownym uruchomieniu należy wykonać chkdsk /f (spróbować naprawić dysk) • Data • Atrybut będący zawartością pliku. Każdy plik musi mieć jeden nienazwany atrybut data będący jego standardową zawartością. Może też zawierać dowolnie dużo nazwanych atrybutów – każdy może mieć zupełnie inną zawartość. • Jako, że wielkością pliku jest wielkość jego nienazwanej zawartości może istnieć plik, którego wielkość system plików podaje jako 0, a na dysku zajmuje dowolnie dużo miejsca.
Atrybuty plików w NTFS c.d. • Index_Root, Index_Allocation, Bitmap • Te atrybuty służą do implementacji B+-drzew. Bitmapa jest mapą zajętości dostępnych indeksów. • Reparse_Point • Robi to co sugeruje nazwa – parsuje odwołanie od nowa, korzystając z danych zapisanych w tym atrybucie. Służy do tworzenia dowiązań symbolicznych, czy montowania zewnętrznych plików/katalogów/dysków. • Reparse_Point wyklucza się z Extentended Attributes – plik może mieć albo jedno, albo drugie
Atrybuty plików w NTFS c.d. • EA i EA_Information (Extended Attribute) • Służą do przechowywania dodatkowych atrybutów z HPFS (High Performance File System) – używane np. w OS/2 • Logged_Utility_Stream • Absolutnie cokolwiek co autor uzna za stosowne. Ma ograniczenie wielkości do 64kB. Wszystkie operacje na nim są zapisywane w dzienniku.
ext3 Pierwsze kilka bloków (co najmniej 5) w każdej grupie zarezerwowane na metadane. Bardzo duża redundancja danych (kopie w każdej grupie). Stała wielkość tablicy i-nodów. I-węzeł wielkości ok. 128B Bloki wielkości od 1 do 4KB Stała ilość miejsca przeznaczona na metadane Metadane w NTFS i ext3 NTFS • Około 16KB zarezerwowanych na metapliki. • Bardzo mała redundancja danych – 4 rekordy z MFT w środku dysku. • MFT zmiennej wielkości. • Wpis w MFT od 1 do 4 KB • Klastry małe (512B – 4KB) • Wielkość metadanych zależy od wykorzystania dysku.
Wzbogacanie systemu plików • ACL (Access Control Lists) • Możliwość przydzielania uprawnień poszczególnym użytkownikom / grupom użytkowników • Sumy kontrolne plików • Lepsza kontrola uszkodzeń plików Możliwość stwierdzenia nieuprawnionego dostępu • Spowolnienie działania operacji plikowych.
Atrybuty • Rezydentne – zawarte w 1-kilobajtowym wpisie w MFT, np. Standard Information czy Filename • Nierezydentne – przechowywane na dysku, nie mieszczą się we wpisie do MFT, alokowane w ekstentach (np. czasami Data czy Index root) • Typ atrybutu umieszczony w jego nagłówku:
Atrybuty indeksowe (nierezydentne) • Atrybuty: Index root, Index allocation, Bitmap • Ekstenty w tym przypadku nazywamy buforami indeksowymi
Numery klastrów • LCN (Logical Cluster Numbers) – numery fizycznych klastrów dyskowych • VCN (Virtual Cluster Numbers) – numery przypisywane kolejnym klastrom, przyporządkowywanym danemu plikowi lub katalogowi
Nagłówek atrybutu nierezydentnego • W ramach nagłówka atrybutu nierezydentnego są pamiętane kolejne ekstenty, a dla każdego numer wirtualny i logiczny pierwszego klastra i liczba klastrów w ekstencie:
Optymalizacje dostępu do zawartości katalogu - NTFS • Katalog jako B+-drzewo plików i podkatalogów (nazwy, wielkości, stemple czasowe i położenia w MFT) • Index root to posortowana lista albo B+-drzewo, węzły w buforach indeksowych • Index allocation to mapowanie między numerami VCN a LCN buforów indeksowych • Bitmap to mapa zajętości buforów indeksowych po ich VCN-ach • B+-drzewo szybciej rośnie na szerokość niż na wysokość
Optymalizacje dostępu do zawartości katalogu – ext3 • Długo tylko proste listy łączone (do ext2): • dobre dzięki strukturom dcache • złe dla cache przeglądarek i niektórych systemów pocztowych • Rozważania na temat użycia B-drzew: • trudna i długa implementacja • mała odporność na zniszczenie węzłów wewnętrznych • Decyzja: H-drzewa (Hash Trees)
H-drzewa w ext3 • W wersjach rozwojowych ext2, na dobre w ext3 • 32-bitowe hasze jako klucze • Węzły wewnętrzne (bloki indeksowe) zajmują tylko 8 bajtów • Stała głębokość (1 lub 2) • Wsteczna kompatybilność (+odporność na zniszczenia): • bloki-liście identyczne z blokami starego typu • bloki indeksowe widziane jako usunięte wpisy katalogowe • Dla dużych katalogów nawet 50-100 razy szybsze!
Kompresja plików ext3: • Teoretycznie możliwa (pole i_flags w i-węźle) • Dostępna w łatach zawartych w pakiecie e2compr (1997) w Ext2 • Brak wsparcia dla kompresji w ext3 (nawet dla tych łatek) NTFS: • Kompresja rzadkich danych • Kompresja gęstych danych • Rzadkie pliki
Rzadkie dane cz. 1 • Rzadkie dane – znaczną część stanowią zera (np. rzadka macierz) • NTFS w ogóle nie pamięta zawartości zerowych ekstentów:
Rzadkie dane cz. 2 • W MFT nieistniejące ekstenty nie są w ogóle zapisane (o ich istnieniu świadczy tylko nieciągłość w numerach VCN istniejących ekstentów)
Gęste dane cz. 1 • Plik dzielony na jednostki kompresyjne (16 klastrów) • Kompresujemy tylko te jednostki, które wskutek tego zmniejszają się co najmniej o 1 klaster:
Gęste dane cz. 2 • NTFS wie, które jednostki są skompresowane (zna liczności) • Optymalizacje: • Kompresja i zapis na dysk zmienionych danych wykonywane są leniwie • Odczyt z wyprzedzeniem dzięki próbom alokacji kolejnych fizycznie ekstentów • 16 wybrana jako „trade-off” między pamięcią a czasem działania
Rzadkie pliki • Podobne do skompresowanych metodą kompresji rzadkich danych • Proces wskazuje, które fragmenty pliku uznaje za puste • Przydatne w aplikacjach typu klient-serwer z buforem (unikamy nieskończonego wzrostu bufora)
Distributed Link Tracking • W systemie NTFS, tworząc twardy link do pliku zapamiętujemy Object_Identifier pliku docelowego. Ten identyfikator jest unikalny dla systemu i nie zmienia się przez cały czas życia pliku. Dzięki temu po zmianie nazwy, przeniesieniu pliku docelowego w inne miejsce itp. link cały czas jest poprawny.
Linki • Ogólnie są 2 typy: • Twarde (hardlinks) • Trzymane są wskaźniki do tego samego pliku. • Plik jest usuwany gdy wszystkie wskaźniki znikną • Windows nie obsługuje hardlinka dla katalogów. • Miękkie (junctions) • Trzymana jest ścieżka do pliku • Gdy plik zostaje skasowany ścieżki są błędne • Windows obsługuje miękkie linki tylko do systemu lokalnego
Quota – kontyngenty dyskowe • Umożliwiają kontrolę miejsca zajmowanego przez użytkownika • Liczą całe pliki (czyli pliki rzadkie mają pełną wielkość) • Można kontrolować poszczególnych użytkowników na różnych woluminach
Quota – kontyngenty dyskowe • Dwie tabele umożliwiające szybkie sprawdzanie czy użytkownik nie przekracza limitów • W pierwszej tabeli można szybko znaleźć do kogo należy dany SID • A w drugiej, ile ta osoba ma jeszcze miejsca wolnego
Sposoby zapisu danych na dysk • ostrożne – system stara się wykonywać operacje w kolejności gwarantującej maksymalną spójność • leniwe – system wykonuje operacje w kolejności optymalizującej ruchy głowicy dysku
Przyczyny powstawania błędów • fizyczne • wynikające z konstrukcji dysku, bad blocks • wynikające z działania czynników zewnętrznych • logiczne • wynikające z błędnego działania systemu • wynikające z błędów w implementacji systemu plików • wynikające z przerwania operacji na systemie plików
Rodzaje błędów logicznych • skrzyżowane pliki • zagubione klastry (bloki) • nieprawidłowe wartości liczników odwołań • pliki do których nie ma dostępu • błędne rozmiary plików • wszelkie inne niespójności metadanych
Atomowość operacji • z czego składają się operacje • po co nam atomowość operacji • właściwe operacje na przykładzie usuwania pliku w systemie UNIX: • usunięcie wpisu odnośnie pliku w katalogu • ustawienie i-węzła pliku jako wolnego w bitmapie. • co złego może się wydarzyć
Kronika • Czym jest kronika? • Po co nam kronika? • Zalety • większe bezpieczeństwo • krótszy czas przeładowania systemu • często zaawansowane algorytmy i struktury danych używane do obsługi plików • Wady • niektóre operacje mogą zajmować więcej czasu • większe skomplikowanie systemu plików
Rodzaje kronikowania • rejestrowanie odtwarzające (redo logging) • rejestrowanie odwołujące (undo logging)
Tryby kronikowania • kronikowanie metadanych (write-back) • kronikowanie wszelkich operacji (także danych) (journalling) • zapisywanie do dziennika pełnych bloków (klastrów) • zapisywanie tylko zmian w danych • tryb „uporządkowany” (ordered)
Czas odtwarzania dzienników przez systemy plików • Podczas montowania systemu plików • Podczas sprawdzania spójności systemu plików
Położenie dzienników • jako jeden z plików w systemie (ext3, NTFS, • w specjalnym wydzielonym obszarze (XFS) • w dowolnym miejscu systemu plików (Reiser4)
ext3 • ext3 = ext2 + JBD
Co jeśli dziennik zawiedzie • kontrola spójności systemu • nic
Problemy związane z kroniką • Istnieją operacje które mogą sprawić problem systemom z kroniką, np.: • usuwanie pliku otwartego przez pewien proces • przeplot operacji usuwania pliku i tworzenia nowego • Specjalne wymagania odnośnie poleceń ponawiania i wycofywania