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.
1
6
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.
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.
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.
1
7
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
- żeby uniknąć pomyłek mają one nadawane kombinacje
atrybutów: Read Only + Hidden + System + Volume label
1
8
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
1
9
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
2
4
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
2
6
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).
Koniec