Systemy Plików
Plik jest podstawową jednostką przechowywania danych w komputerach, a dokładniej: na tzw. urządzeniach pamięci masowej wykorzystywanych przez komputery. W praktyce, urządzenia te to najczęściej:
|
twarde dyski magnetyczne |
|
dyskietki magnetyczne |
|
płyty CD z zapisem optycznym |
|
taśmy magnetyczne. |
System plików (ang. filesystem) to z kolei warstwa systemu operacyjnego pośrednicząca w dostępie do informacji zapisanej na pamięci masowej, a więc do plików właśnie. Dzięki systemowi plików użytkownik (czy raczej wykorzystywane przez niego programy) nie potrzebuje troszczyć się np. o to, gdzie fizycznie na dysku zapisana jest potrzebna informacja; zamiast tego, system plików udostępnia użytkownikowi pewną strukturę logiczną (drzewo katalogów), o wiele wygodniejszą jako forma organizacji zapisu danych niż byłoby np. bezpośrednie lokalizowanie pliku przez jego adresy na dysku (numery sektorów lub t.p.). Ponadto system plików zarządza pewnymi meta-danymi o plikach i udostępnia je programom, realizując zarazem np. mechanizmy kontroli dostępu do plików.
Klaster - (ang. cluster) jednostka alokacji pliku, czyli jednostka przydziału miejsca na dysku w postaci jednego lub kilku sektorów. Jeżeli plik nie mieści się w jednym klastrze, to zostaje zapisany w kilku klastrach tworzących łańcuch.
Sektor - (ang. sector) jednostka podziału dysku będąca malutkim wycinkiem jego powierzchni. Sektory leżące w jednakowej odległości od środka dysku składają się na ścieżki. Sektor stanowi najmniejszy i niepodzielny fragment dysku przechowujący dane.
Ścieżka - (ang. track) wszystkie sektory dysku leżące w jednakowej odległości od jego środka. Dysk składa się z wielu takich ścieżek przypominających okręgi centrycznie ułożone wokół osi obrotu. Patrz cylinder.
System plików FAT (FAT16)
Na nośnikach tworzone są systemy plików o określonych formatach.
FAT (File Allocation Table) to system plików, wykorzystujący adresowanie 16-bitowe, w którym możliwe jest zaadresowanie maksymalnie 65535 jednostek alokacji. Powstał pod koniec lat 70. i zastosowany został w takich systemach operacyjnych, jak DOS i Windows. Określa on rozmieszczenie plików, folderów i wolnej przestrzeni na takich nośnikach danych, jak twarde dyski.
System FAT cechuje:
Maksymalny rozmiar partycji dysku nie większy niż 2GB, dla Windows9x oraz 4 GB dla NT
Kompatybilność ze starszymi systemami operacyjnymi Microsoft,
Maksymalny rozmiar jednostki alokacji mniejszy niż 64 KB.
Pierwotnie system plików FAT został stworzony do obsługi dyskietek, ale po przejściu kilku modyfikacji jest w stanie udźwignąć dyski twarde. Jego prosta architektura przysporzyła mu dużą popularność i jest obsługiwany przez większość systemów operacyjnych takich jak Linux, niektóre wersje Unix i oczywiście Windows.
Rdzeniem FAT 16 jest tablica alokacji plików (FAT), która jest umieszczona na samym początku dysku i zawiera współrzędne określające położenie poszczególnych danych. W celu zapewnienia minimalnego bezpieczeństwa danych na dysku twardym jest tworzona kopia FAT na podstawie, której może być odtworzona właściwa tablica alokacji plików w razie jej uszkodzenia.
FAT jest dzisiaj przestarzałym systemem plików. Posiada zbyt wiele wad, aby mógł być stosowany na nowoczesnych komputerach XXI wieku. Maksymalna wielkość partycji, jaką jest wstanie obsłużyć to 2GB dla 9x oraz 4 GB dla NT. Wynika to z maksymalnej liczby jednostek alokacji(klastrów)r , jaką potrafi zaadresować 2^16, dlatego też rozmiar klastra, dla partycji o rozmiarze powyżej 2 GB wynosi aż 64 KB.
System plików FAT32
FAT32 to rozwinięcie FAT16, które zostało zaprezentowane wraz z pojawieniem się Windows 95 OCR 2. Plik może mieć rozmiar do 4 GB, a długość nazwy plików jest ograniczona do 256 znaków. FAT32 różni się od swojego poprzednika min. tym, że potrafi zaadresować większą liczbę klastrów i co za tym idzie może pracować na większych dyskach, jednocześnie zmniejszając wielkość jednostki alokacji, której rozmiar można ustawić od 4 KB do 64 KB. Potrafi on adresować liczbę jednostek alokacji plików (klastrów) równą 232 czyli 4.294.967.296. Maksymalny rozmiar partycji, jaką jest w stanie FAT 32 obsługiwać wynosi teoretycznie aż 8 TB (w praktyce 127GB). Jednak WinXP ma ograniczenie, co do rozmiaru partycji FAT32. Ograniczenie polega na tym, że XP nie może stworzyć partycji większej od 32 GB, ale może obsługiwać partycje o rozmiarze przekraczającym ten limit (np. stworzoną przez Win98). Microsoft chce zmusić w ten sposób użytkowników do przesiadki na NTFS, ale i tak FAT32 przy partycji o tak dużej wielkości jest zbyt wolny i używanie go przy takich rozmiarach jest bardzo nie rozsądne.
Wraz z nowymi udoskonaleniami przybyło kilka kolejnych wad tej starej architekturze. Otóż FAT32 jest kompatybilny tylko z systemami Windows oraz znacznie rozrosła się tablica alokacji plików przez zwiększenie liczby klastrów, którą może zaadresować, co odbija się na wydajności przy niektórych operacjach. Fragmentacja danych z uwagi na budowę FAT 32 postępuje znacznie szybciej i ma znaczny wpływ na wydajność tego systemu. System FAT32 jest obsługiwany przez systemy unikowe, linuksowe, ale jego struktura nie pozwala na używanie go w głównych partycjach systemowych w tym środowisku. Można jednak korzystać z nakładek systemowych, które w specjalnym pliku przechowują informacje specyficzne dla unikowego UFS i kompatybilnych.
New Technology File System (NTFS)
NTFS został stworzony specjalnie dla systemów operacyjnych Nowej Technologii. NTFS (New Technology File System) - system plików, który prezentuje zupełnie odmienne rozwiązanie, oparte na tak zwanej głównej tablicy plików (Master File Table - MFT). Wszystkie pliki i foldery reprezentowane są w MTF przez rekordy zawierające pełne dane o każdym pliku. W systemie NTFS zastosowano adresowanie 64-bitowe, co w teorii pozwala utworzyć dysk wielkości 16 eksabajtów (1 EB = 260 B), ale w praktyce stosuje się ograniczenia maksymalnego rozmiaru woluminu do 2 TB.
System NTFS cechuje:
Maksymalny rozmiar partycji dysku przekraczający 32 GB,
Odporność na błędy; system Windows XP jest w stanie wykryć uszkodzone sektory, oznaczyć je jako uszkodzone, co spowoduje, że nie będą używane i przenieść z nich dane na inny obszar dysku,
Zwiększone bezpieczeństwo,
Zarządzanie wolnym miejscem - na dyskach NTFS można zakładać limity ograniczające maksymalna ilość danych przechowywanych przez użytkownika,
Lepsze niż w systemach FAT i FAT32 wykorzystanie przestrzeni dysku,
Możliwość odczytania partycji NTFS przez jadro Linux (większość aktualnych dystrybucji od wersji 2.5.10).
Jest zaawansowanym system plików przystosowanym do pracy z bardzo dużą ilością informacji, dlatego jest skierowany do wymagających użytkowników, którzy potrzebują bardzo szybki dostęp do dużej ilości małych plików jak i do fragmentów plików o znacznym rozmiarze. NTFS cechują takie funkcje jak kompresja, szyfrowanie, określanie list dostępu do danych oraz przydziały. System ten nie ma ograniczenia rozmiaru pliku.
System plików NTFS ma wbudowany system ochrony przed uszkodzeniem danych (np. na skutek błędów wynikłych podczas pracy dysku) o nazwie, Journaling, który jest charakterystyczny dla nowoczesnych systemów operacyjnych.
Operacja szukania wolnej przestrzeni wpływa na szybkość tworzenia i zapisywania plików (szczególnie dużych) oraz na kopiowanie dużej ilości danych itp. Tutaj przyjrzymy się jak szybko dany system plików potrafi zlokalizować wolne miejsce i ile operacji musi w tym celu wykonać. FAT16/32 żeby wiedzieć czy dany klaster jest wolny musi sprawdzić odpowiadający mu wpis w tablicy alokacji plików. Rozmiar owego wpisu wynosi odpowiednio 16 i 32 bitów dla FAT 16 i 32. NTFS z kolei przeznacza specjalną "książkę telefoniczną" na przechowywanie informacji o tym czy klaster jest wolny czy nie, w rezultacie NTFS najszybciej wyszukuje wolną przestrzeń na dysku twardym, gdyż nie musi przeszukiwać niepotrzebnych informacji.
Efektywność w wykonywaniu operacji z katalogami. To zagadnienie pokaże nam, który sposób organizacji struktury folderów jest najlepszy.
FAT 16 i 32 ma małe, kompaktowe katalogi. Operacje z folderami wykonuje dość sprawnie gdyż nie ulegają fragmentacji (wpis w FAT zajmuje tylko jeden klaster). Jednakże wydajność znacznie spada, kiedy w katalogach jest duża liczba plików. Katalogi w FAT16/32 mają budowę liniową, co powoduje, że w celu znalezienia danego pliku system musi przejrzeć po kolei wszystkie pliki znajdujących się w katalogu dopóki nie znajdzie właściwego.
NTFS używa innej, bardziej efektywnej metody adresowania - drzewa binarnego. Ta struktura pozwala na efektywną pracę z katalogami dowolnego rozmiaru. Dla przykładu FAT16/32, aby znaleźć plik w katalogu, w którym znajduje się 1000 plików musi przejrzeć 500 pierwszych plików (zakładając, że szukany plik znajduje się w środku folderu), a NTFS tylko około dziesięciu. Jednak foldery w NTFS nie są tak małe jak w FAT, ponieważ ich rekordy zajmują więcej niż jeden klaster, co prowadzi do ich fragmentacji (w skrajnych przypadkach może mieć to wpływ na szybkość pracy NTFS). Wydajność NTFS jest znacznie wyższa od FAT16/32, gdy katalog zawiera ogromne ilości plików.
Odpowiednia wielkość klastra oraz specjalna lokalizacja dla bardzo małych plików decyduje o oszczędnym rozmieszczeniu danych oraz wyeliminowaniu lub redukcji efektu slack space. W FAT16/32 nie zależnie od tego, jaki rozmiar ma plik, zawsze zajmuje minimum jeden klaster (w przypadku, kiedy nie ma żadnych danych istnieje tylko w postaci wpisu w FAT i nie zajmuje żadnego klastra poza tablicą alokacji plików). Wyobraźmy sobie sytuacje, w której plik ma rozmiar 500 bajtów (np. cookies), a klaster na cztero gigabajtowej partycji FAT16 ma 64 KB, w takim przypadku plik zajmuje pomimo swojego rozmiaru 64 KB a pozostałe 63.5 kb jest marnowane (efekt slack space).
NTFS przechowuje pliki do 1 kb w MFT, dzięki czemu nie muszą zajmować oddzielnych klastrów i dostęp do nich jest bardzo szybki. Także mały rozmiar klastra (domyślnie od 512 bajtów do 64KB w zależności od rozmiaru partycji) powoduje, że jest to system bardzo ekonomiczny.
NTFS jest nierozpoznawalny w systemach Windows z rodziny DOS jak np. Windows 95, 98, Milenium. Po przeanalizowaniu powyższych porównań systemów plików dochodzimy do wniosku, że NTFS jest najbardziej wydajnym i ekonomicznym system z pośród całej trójki. Cechuje się szybkim dostępem do fragmentów plików, najszybciej sobie radzi z wyszukiwaniem wolnej przestrzeni oraz posiada bardzo efektywną strukturę organizacji plików i katalogów. Wielkość katalogów oraz ich bardziej rozbudowane struktura jak i wzrost fragmentaryzacji plików (do pewnego stopnia) nie ma wpływu na jego wydajność. Jednak w praktyce nie posiada tak dużej przewagi jak to by wynikało z teorii. Przyczyną tego faktu jest to, że z uwagi na postępującą fragmentacje katalogów dysk musi wykonać więcej ruchów głowicą. Niepokojącym problemem jest fragmentaryzacja MFT, a MFT ma znaczny wpływ na ogólną wydajność tego systemu plików. Także domyślna wielkość klastra, która jest znacznie mniejsza w porównaniu z FAT, powoduje to, że NTFS ma więcej danych do analizowania. Na szczęście dzięki odpowiednim zabiegom można wyeliminować wspomniane tu problemy lub znacznie zredukować ich wpływ na wydajność systemu, dzięki czemu NTFS utrzymuje prym w wydajności przy zarządzaniu dużą ilością plików. Należy jeszcze wspomnieć, że NTFS potrzebuje więcej pamięci RAM do prawidłowego działania - minimum 64 MB (ogólnej ilości w komputerze). FAT16/32 ze względu na swoją architekturę jest dobrym systemem plików dla komputera o prostym domowym przeznaczeniu jak gry czy aplikacje biurowe nie wykorzystujące większej ilości plików. Jest szybki przy małych i przeciętnej wielkości katalogach. Praca na wolnym dysku nie jest dla niego aż tak dotkliwa jak dla NTFS, gdyż dopóki pliki są skonsolidowane nie naraża głowicy na dodatkowe ruchy. FAT16/32 potrzebuje mniej pamięci RAM do efektywnej pracy. Do jego wad należy spadek wydajności przy wzroście fragmentacji plików (szczególnie FAT 32). Słabo radzi sobie z dużymi plikami (większymi niż 10% wielkości dysku). Jest także wolny przy pracy z katalogami zawierającymi dużą ilość plików. W większości sytuacji jest gorszy od NTFS.
Podsumowując, rodzaj używanego systemu plików powinien być uzależniony od rodzaju zadań wykonywanych przez nasz komputer.
FAT, powinniśmy używać, gdy:
operujemy małą• ilością danych
wykorzystujemy• dual boot
dysponujemy• wolnym dyskiem
nasz komputer ma• 64/96 MB RAM lub mniej
Natomiast NTFS, kiedy:
pracujemy z dużą• ilością danych
używamy tylko• system NT
wymagamy• specjalnej ochrony danych zarówno przed nie powoływanym dostępem jak i przed ich utratą
posiadamy 96 MB• RAM i więcej
potrzebujemy• odporność na fragmentacje
pracujemy na• dużych dyskach (>8.4 GB)
Fragmentacja to naturalny proces, w wyniku którego fragmenty plików znajdujące się na dysku twardym są zapisane na niesąsiadujących ze sobą klastrach dysku. Dzieje się tak, ponieważ komputer zapisuje nowe dane w pierwszym wolnym klastrze dysku, który znajdzie. Na początku dysk zapełnia się więc równomiernie. Jednak gdy w trakcie użytkowania komputera kasowane są dane (np. w wyniku odinstalowania programu) powstają obszary zapisane podzielone obszarami niezapisanymi. Kiedy zainstalowany zostanie nowy program, to jego część zmieści się w pozostawionym przez poprzedni program fragmencie na dysku, a pozostała zostanie zapisana w najbliższym wolnym miejscu. Niektóre pliki ulegną więc prawie na pewno fragmentacji. Do fragmentacji dochodzi także, gdy modyfikuje się zapisane na dysku dokumenty- dodatkowa zawartość dopisywana jest w zupełnie innym miejscu. Fragmentacja jest niekorzystna, gdyż spowalnia dostęp do danych. Aby odczytać pofragmentowany plik, głowica dysku twardego musi wykonać wiele ruchów, przez co wydłuża się czas dostępu do informacji. Proces fragmentacji plików występuje na każdym komputerze i co pewien czas należy wykonać defragmentacje dysku.
Defragmentacja to proces ponownej reorganizacji plików na dysku, zmierzający do ich scalenia, tak aby dane zawarte w pliku znajdowały się w sąsiadujących klastrach - w takim przypadku dysk działa szybciej.
Systemy plików
3