SYSTEMY PLIKOW FAT
File Allocation Table
• FAT (akronim z ang. File Allocation Table) – system
plików powstały pod koniec lat 70. zastosowany w
systemach operacyjnych, m.in. DOS i Windows.
Podobnie jak sam DOS, wywodzi się z systemów CP/M.
Określa on rozmieszczenie plików, katalogów i wolnej
przestrzeni na takich nośnikach danych jak dyskietki i
twarde dyski. Najważniejszym elementem systemu jest
tablica informująca o rozmieszczeniu plików na partycji
(FAT) - od nazwy tej tablicy pochodzi nazwa systemu.
Typy FAT
Rozwój systemu plików FAT następował wraz zwiększaniem
pojemności nośników na których występował.
Aktualnie istnieją 4 rodzaje FAT:
- FAT12
- FAT16
- FAT32
- exFAT (FAT64)
Numeracje w nazwie systemu informują o liczbie bitów
przypadających na jeden klaster w tablicy alokacji plików. Ta
charakterystyczna cecha danego rodzaju FAT decyduje o
dozwolonych wielkościach plików, ich maksymalnych ilościach
etc.
Szczegóły limitów na konkretnych wersjach FAT:
Sektor
Nośniki danych typu dyskietka, dysk itp. przechowują
informacje w porcjach zwanych sektorami. Sektor jest
zawsze w całości odczytywany i zapisywany. Większość
urządzeń posiada sektory o wielkości 512 bajtów
(0,5kB).
Klaster
• W systemie FAT partycja (poza początkowymi zarezerwowanymi
sektorami) jest podzielona na klastry (jednostki alokacji pliku). Każdy
klaster składa się z jednego lub kilku sektorów, klastry są numerowane.
System operacyjny na podstawie numeru klastra oblicza numer
logiczny sektora (numer sektora od początku partycji), a na tej
podstawie numer fizyczny, tj. odpowiadający mu numer ścieżki, głowicy
i sektora na ścieżce.
• Klaster w całości jest przydzielony jednemu plikowi. Plik w katalogu
zawiera numer pierwszego klastra pliku, gdzie znajdują się dalsze
części pliku opisuje wpis w FAT. W tablicy FAT pod numerem
odpowiadającym numerowi pierwszej części pliku jest umieszczony
numer kolejnego klastra przydzielonego plikowi lub liczba z zakresu
FFF8h-
FFFFh, jeśli to jest ostatni klaster pliku. Jeżeli dany klaster jest
wolny, to w FAT odpowiada mu wpis 0000h, a FFF7h oznacza
uszkodzony klaster
Wartości klastrów w poszczególnych wersjach FAT
Liczba bitów a limit klastrów
Struktura partycji FAT
Partycja systemu FAT składa się z 4 regionów:
• zarezerwowany (z boot sectorem) – a w nim tablica BPB (Bios
Parameter Block) oraz program ładujący system operacyjny (boot
loader) dla partycji systemowej. Blok BPB zawiera informacje
potrzebne do wyliczenia położenia i rozmiaru pozostałych regionów.
• tablica alokacji (tablica FAT) – przechowywana zaraz za boot
sektorem struktura, która zawiera informacje dla systemu
operacyjnego na temat relacji klastrów. Każda pozycja w tablicy
FAT odpowiada jednemu klastrowi. Na partycji może być kilka kopii
tablicy FAT, istnieją zazwyczaj dwie.
• katalog główny (w FAT32 nie istnieje w tej formie) – katalog główny
(root directory) jedyny katalog zakładany automatycznie podczas
utworzenia systemu plików. W FAT12 i FAT16 ma on
predefiniowany rozmiar, zaś już w FAT32 jako łańcuch klastrów
może mieć dowolną długość jak i ilość wpisów.
• region danych – zajmowany przez podkatalogi i wszystkie pliki;
podzielony na logiczne bloki nazwane wcześniej klastrami.
Schemat struktury:
• Bootsector - to zawsze pierwszy sektor partycji, zawiera
podstawowe informacje o partycji, między innymi:
• wielkość partycji
• wielkość sektora (w bajtach)
• ilość sektorów w klastrze
• typ partycji (np. FAT32)
• ilość kopi tablicy FAT
• wskaźniki do innych danych
• kod ładujący system operacyjny
Bootsector
Zawartość pól bootsektora
FAT
Tablica Alokacji Plików (ang. File Allocation Table)
• Tablica alokująca pliki znajduje się na pierwszych 63 sektorach
dysku, po Boot Sektorze.
• Tablica alokująca pliki jest zwykłą tablicą, zawierającą 12, 16 lub 32
bitowe elementy. Zazwyczaj na jednej partycji znajdują się
dwie identyczne kopie.
• W strukturze Boot Record jest pole specyfikujące ilość kopii tablicy
FAT. W systemach FAT12 i FAT16 używana jest pierwsza kopia
tablicy FAT, ale wszystkie zmiany są synchroniczne nanoszone na
pozostałe kopie. FAT32 został rozszerzony o możliwość
specyfikacji w polu "Flags", która kopia jest podstawowa.
• O strukturze plików FAT można po prostu myśleć jako o liście, gdzie
każdy łańcuch specyfikuje, które obszary dysku zajęte są przez
dany plik czy katalog.
• Root directory - jest to katalog główny systemu
plików, występuje w ustalonym miejscu w
partycji. W FAT12 i FAT16 ma sztywno ustaloną
wielkość - mieści do 512 wpisów (przy długich
nazwach jeszcze mniej). W FAT32 nie ma tego
ograniczenia.
• Każdy katalog i plik w katalogu głównym liczony
jest jako jeden wpis
Katalog główny
Struktura katalogu
Każdy plik na dysku znajduje się w jakimś katalogu. Katalog także jest plikiem, tyle, że
posiada specjalną strukturę i posiada szczególne znaczenie z punktu widzenia systemu
operacyjnego. Katalog jest tablicą zawierającą informacje o plikach i podkatalogach
wewnątrz oraz wskaźniki do początków ich danych na dysku.
•
Każdy zapis w pliku katalogu składa się z 32 bajtów i zawiera następujące informacje (w
tej kolejności):
•
E5h -
jest wpisywane do pierwszego bajtu nazwy pliku, który został skasowany.
(Faktycznie plik nie jest kasowany, ale jest traktowany tak, jakby go nie było)
•
zarezerwowane pole
w przypadku FAT32 zawiera 16 starszych bitów numeru
początkowego klastra
•
Każdy zwykły katalog posiada dwa specjalne zapisy:
•
. (kropka) -
odnosząca się do bieżącego katalogu
•
.. (dwie kropki) -
odnoszące się do nadkatalogu.
16
Nazwy plików i rozszerzenia
W systemie FAT pliki mają nazwy w klasycznej postaci składającej się z ustalonego dwuczęściowego formatu:
nazwa pliku -
ciąg długości od 1 do 8 złożony z dozwolonych znaków (liter, cyfr i symboli $ % @ ' - _ ( ) ~ ! # ^ & )
rozszerzenie -
opcjonalna część nazwy składająca się z ciągu długości od 0 do 3 znaków jak wyżej. Rozszerzenia
pełnią rolę oznaczeń typów plików i są w związku z tym pewne konwencje nazewnicze. Z drugiej jednak strony nie ma
formalnych przeszkód do nazywania plików w dowolny inny sposób, byle prawidłowy.
17
Długie nazwy plików
W systemie Windows95 wprowadzono nazwy o długości do 255
znaków. Kluczową kwestią było zapewnienie kompatybilności ze
starszymi systemami i aplikacjami.
-
zastosowano aliasowanie długich nazw plików.
-
rozszerzone nazwy są zapisywane w plikach fikcyjnych
katalogów, stworzonych specjalnie do tego celu
-
żeby uniknąć pomyłek mają one nadawane kombinacje atrybutów:
Read Only + Hidden + System + Volume label
18
Długie nazwy plików
W systemie Windows95 wprowadzono nazwy o długości do 255 znaków.
Kluczową kwestią było zapewnienie kompatybilności ze starszymi systemami i
aplikacjami.
-
zastosowano aliasowanie długich nazw plików.
-
rozszerzone nazwy są zapisywane w plikach fikcyjnych katalogów,
stworzonych specjalnie do tego celu
-
żeby uniknąć pomyłek mają one nadawane kombinacje atrybutów:
Read Only + Hidden + System + Volume label
Problemy z długimi nazwami:
-
wykrywanie przez starsze wersje narzędzi systemowych specjalnych
plików jako błędnych i "poprawianie" ich - nadpisywanie i
duplikowanie aliasów
19
Atrybuty plików
Read-Only
większość aplikacji nie pozwoli modyfikować, ani kasować tego pliku
Hidden
w normalnych warunkach nie jest wyświetlany przy listowaniu katalogu,
chyba że podano odpowiedni parametr
System
pliki systemowe, które nie powinny być zmieniane, ani usuwane (może to
mieć przykre konsekwencje)
Volume Label etykieta dysku -
przechowywana w katalogu głównym w postaci zapisu jako nazwa pliku w którym
ustawiono ten atrybut
Directory
ten atrybut odróżnia pliki od katalogów
Archive plik archiwalny -
atrybut ten jest używany do metakomunikacji między aplikacjami, oznacza
starszą wersję pliku, który może być backupowany
Schemat Alokacji
W
tablicy alokacji plików woluminu FAT plikom
przydzielana jest pierwsza dostępna lokalizacja
w
woluminie. Numer początkowego klastra jest adresem
pierwszego klastra używanego przez plik. Każdy klaster
posiada wskaźnik do kolejnego klastra pliku lub
indykator końca pliku, informujący o tym, że bieżący
klaster jest ostatnim zawierającym dany plik.
Każdy klaster zawiera wskaźnik do następnego klastra
danego pliku albo wskaźnik końca pliku.
Schemat Alokacji
Schemat Alokacji
Schemat Alokacji
24
Fragmentacja
System plików FAT nie posiada mechanizmów zapobiegających fragmentacji
danych na dysku, wystepowanie tego zjawiska wpływa niekorzystnie na
wydajność operacji na plikach.
przebieg fragmentacji:
FAT12, FAT16, FAT32
Zalety
• Prosty w implementacji - idealny do urzadzen przenosnych i
osadzonych
systemów operacyjnych
• Popularny i dobrze udokumentowany
• Obsługiwany przez praktycznie kazdy system operacyjny
Wady
• Podatny na awarie
• Podatny na fragmentacje
• Brak systemu uprawnien
• Nieefektywny przy duzej ilosci plików i przy duzych partycjach
W marcu 2008 roku pojawił się następca FAT32, wolny od niektórych
niedogodności znanych u jego poprzedników.
Podsumowanie
26
exFAT
exFAT (Extended File Allocation Table, aka FAT64) jest systemem plików
stworzonym specjalnie na potrzeby pamięci flash przez Microsoft. Został
zawarty w systemie operacyjnym Windows Embedded CE 6.0 oraz w
poprawce SP1 dla systemu Windows Vista. exFAT może być używany
wszędzie tam gdzie system plików NTFS nie jest najlepszym rozwiązaniem, ze
względu na dużą nadmiarowość struktury danych.
Innowacje:
-
znaczne zwiększenie limitów wielkości plików, rozmiaru klastra
-
możliwość nadania praw dostępu (podobnie jak w NTFS)
-
nieograniczona liczba plików w katalogu
-
udoskonalono wydajność
SYSTEM PLIKÓW NTFS
NTFS
– New Technology File System
Przed systemem plików zaczęto stawiać nowe wymagania, którym
poprzedni system plików FAT nie był w stanie sprostać.
Wymagania te były na tyle skomplikowane, że nie zdecydowano się
na rozszerzenie systemu FAT tylko napisanie zupełnie nowego
systemu plików.
Nowe cechy miały nie tylko zaspokoić oczekiwania biznesowe, ale i
wspomóc zwykłych użytkowników w ich codziennej pracy
Główne cele, które postawiono przed nowym systemem
plików to:
• zminimalizować utratę i rozspójnienie danych w przypadku awarii
sprzętu, braku zasilania, awarii systemowych - NTFS zapewnia
integralność metadanych (czyli danych opisujących plik) w
przypadku awarii.
• ochrona danych przed nieautoryzowanym dostępem - NTFS ma
zintegrowany model bezpieczeństwa dzięki któremu użytkownik
może chronić swoje dane
NTFS
– cechy ogólne
• Obiektowy system plików
• Bezpieczeństwo danych ( Security )
• Nazwy plików i katalogów
• Indeksowanie plików i katalogów
• Quota
• Szyfrowanie
• Kompresja danych
• Pliki rzadkie (sparse file)
• Transakcyjne wykonywanie operacji We / Wy
• Twarde dowiązania
NTFS - Struktura systemu
• Najmniejszą logiczną jednostką na dysku jest klaster.
• Wszelkie dane składowane są na dysku w postaci plików wliczając
w to indeksy, bitmapy, metadane i dane.
• Trzonem systemu NTFS jest MFT
NTFS - Schemat budowy partycji
NTFS
– Spis metaplików
Inode
Nazwa pliku
Opis
0
$MFT
Master File Table -
spis wszystkich plików
1
$MFTMirr
Kopia zapasowa pierwszych 16 rekordów MFT.
2
$LogFile
Dziennik transakcji.
3
$Volume
Informacje o partycji.
4
$AttrDef
Definicje atrybutów.
5
. (dot)
Katalog główny.
6
$Bitmap
Mapa bitowa wszystkich klastrów dysku.
7
$Boot
Boot record
8
$BadClus
Lista uszkodzonych klastrów.
9
$Secure
Lista zabezpieczeń nałożonych na pliki z dysku.
10
$UpCase
Tablica służąca do zamian małych liter na duże.
11
$Extend
Katalog zawierający pozostałe pliki systemowe:
$ObjId, $Quota, $Reparse, $UsnJrnl
12-15
<Unused>
Puste
NTFS - Pliki
Pliki w NTFS reprezentowane są jako zbiory struktur zwanych
atrybutami. Każdy atrybut może wystąpić dla jednego pliku
wielokrotnie, każdy może też mieć przypisaną nazwę.
NTFS
– Standardowo występujące atrybuty
•
0x10 $STANDARD_INFORMATION
•
0x20 $ATTRIBUTE_LIST
•
0x30 $FILE_NAME
•
0x40 $OBJECT_ID
•
0x50 $SECURITY_DESCRIPTOR
•
0x60 $VOLUME_NAME
•
0x70 $VOLUME_INFORMATION
•
0x80 $DATA
•
0x90 $INDEX_ROOT
•
0xA0 $INDEX_ALLOCATION
•
0xB0 $BITMAP
•
0xC0 $REPARSE_POINT
•
0xD0 $EA_INFORMATION
•
0xE0 $EA
•
0xF0 $PROPERTY_SET
•
0x100 $LOGGED_UTILITY_STREAM
NTFS
– Jak i gdzie są trzymane dane?
• Małe
• Średnie
• Duże
NTFS
– Jak i gdzie są trzymane dane?
NTFS - Katalogi
Katalogi podobnie jak w FAT, traktowane są jak
zwyczajne pliki, z tą różnicą że zawartość katalogu
jest trzymana w B+ drzewie, co znacząco
przyspiesza wyszukiwanie.
NTFS - Katalogi
NTFS -
Rozwiązania dla działania w warunkach
awaryjnych, odporność systemu
• Transakcyjność operacji
• Prowadzenie dziennika
-
undo ( unieważnienie )
-redo (powtarzanie )
-undo / redo
• Punkty kontrolne (checkpoints)
Odtwarzanie z powtarzaniem / unieważnieniem
• Przy odtwarzaniu z powtarzaniem system wykonuje:
-
Jeżeli czytając dziennik od końca napotka na wpis <End CKTP> to
powtarza jedynie zatwierdzone transakcje rozpoczęte po tym
dokonaniu wpisu <Start CKTP> (odpowiadającemu dokładnie temu
<End CKTP>) oraz te transakcje będące na liście aktywnych
transakcji.
-
Jeżeli czytając dziennik od końca napotka na wpis <Start CKTP> to
jest on ignorowany tzn. szukamy pierwszego rekordu <End CKTP>
• Przy odtwarzaniu z unieważnieniem system wykonuje:
-
Jeżeli czytając dziennik od końca napotka na wpis <End CKTP> to
system unieważnia transakcje nie zakończone te które rozpoczęły
się po rekordzie <Start CKTP> oraz te będące na liście aktywnych
transakcji
-
Jeżeli czytając dziennik od końca napotka na wpis <Start CKTP> to
jest on ignorowany tzn. szukamy pierwszego rekordu <End CKTP>
NTFS -
Bezpieczeństwo
• Read
• Write
• Execute
• Delete
• Change Permissions
• Take Ownership
NTFS
– 3G
Darmowy sterownik do obsługi NTFS, przeznaczony dla systemów
Linux, Mac OS X, FreeBSD, BeOS oraz Haiku. NTFS-3G
przyporządkowuje konkretnej partycji z systemem plików położenia
w drzewie katalogów partycje z systemem plików NTFS, używając
do tego podsystemu FUSE.
W przeciwieństwie do standardowego sterownika, w który
wyposażone jest jądro systemów Linux, NTFS-3G posiada
niewielkie ograniczenia, jeśli chodzi o zapisywanie plików:
- tworzenie,
- usuwanie,
- zmiana nazwy,
-
przenoszenie i modyfikowanie plików dowolnej wielkości
-
w najnowszej wersji można zmieniać ich prawa dostępu
CDFS - Compact Disc File System
CDFS (Compact Disc File System) - zgodny ze standardem ISO
9660 system plików dla nośników optycznych, umożliwiający
korzystanie z długich nazw plików zgodnie ze standardami ISO
9660 Level 2.
CDFS - Compact Disc File System
• Wszystkie nazwy folderów i plików muszą mieć długość do 31
znaków (w przypadku używania rozszerzenia Joliet nazwy mogą
mieć do 64 znaków – kodowane w formacie Unicode).
• Drzewo folderów nie może mieć więcej niż osiem poziomów, licząc
od korzenia (w przypadku Joliet to ograniczenie nie występuje).
• Rozszerzenia nazw plików nie są obowiązkowe.
• Wielkość jednego pliku nie może być większa niż 2GB (DVD).
Opracowanie
Adam Czubernat, Grzegorz Calik
AGH 2008