5
Opublikowano 9 marca 2012 w Portal komputerowy » Systemy Operacyjne » Windows XP » Przyspieszanie » Wybór systemu plików NTFS vs FAT32 dla Windows XP
 
 

Wybór systemu plików NTFS vs FAT32 dla Windows XP


UWAGA! Partycje NTFS, nie mogą być zapisywana przez Windows 98/Me bez użycia dodatkowego oprogramowania (płatnego). Darmowe programy pozwalają tylko na odczyt takiej partycji np. Paragon NTFS for Windows 98 demo. Używanie FAT32, który tylko pozornie może konkurować z NTFS jest w większości wypadków pozbawione sensu w przypadku systemów z jądrem NT – Windows NT 4.0, XP, 2000, 2003.

Nie trzeba formatować dysku, aby zmienić FAT32 na NTFS… Menu Start – Uruchom – wpisz 'convert X: /fs:ntfs’ (X = partycja do konwersji). Po takim zabiegu należy bezwarunkowo użyć programu, który defragmentuje: MFT, MFT Zone i Metadata.

Wyjaśnienie pojęć

Pojawienie się nowe systemu plików NTFS [New Technology File System] w Windows 2000 a następnie w Windows XP zrobiło sporo zamieszania. Podniosły się głosy mówiące o słabej wydajności NTFS w porównaniu z FAT32. Winę za to ponoszą większe wymagania NTFS względem sprzętu, polecenie convert c: /fs:ntfs, programy firm trzecich i… niewiedza użytkowników. Czy aby taka jest prawda? Czy NTFS jest mniej wydajny od FAT32? Zweryfikujmy tę opinię. Na początku trzeba wyjaśnić kilka pojęć:

  • NTFS 5.1 – jest to kolejna generacja systemu NTFS, której używają Windows XP i XP Pro. Windows 2000 używał NTFS 5.0.
  • FAT32 – System plików używany od czasów Windows 95. Wywodzi się od FAT12, który jest używany do dziś do… formatowania dyskietek.
  • FAT32x – od FAT32 extended.

Jest to rozszerzenie FAT32, które pozwala na obsługę parytycji z więcej niż 1024 cylindrami, i większych niż 8,4 GB. Nieco różni się od FAT32, lecz programy, które operują na partycjach FAT32, od dawna radzą sobie doskonale z FAT32x. Jest wolniejszy od FAT32 ze względu na swoja konstrukcję!!!

I jeszcze małe przypomnienie jednostek zapisu informacji na dysku.

  • 1bit = jest to cyfra zapisana na dysku, dokładniej 0 lub 1
  • 1 B [bajt] = 8 bitów ułożonych kolejno po sobie
  • 1 KB [kilobajt] = 1024 B – ponieważ komputer PC operuje na liczbach w systemie binarnym [wielokrotności cyfry 2] i nie orientuje się w systemie dziesiętnym, nie 1000 a 1024 B [210] składają się na jeden K
  • 1 MB [megabajt] = 1024 KB
  • 1 GB [gigabajt] = 1024 MB
  • 1 TB [terabajt] = 1024 GB

Zanim przejdziemy do konkretów, chciałbym zauważyć, że istnieje zasadnicza różnica pomiędzy partycją a dyskiem. Wydaje się to oczywiste, ale często można spotkać błędy merytoryczne polegające na odnoszeniu systemów plików do dysków. System plików należy odnosić zawsze do partycji, a wydajność samego dysku to zupełnie inna kwestia, którą trzeba omawiać z osobna.

FAT32/32x

FAT32 jest mało skomplikowanym systemem plików, jego ograniczenia wynikają z bardzo starej architektury.

FAT32

system plików FAT32

FAT32x

system plików FAT32x

Schemat należy czytać dosłownie. Na dysku fizycznie najpierw znajduje się w praktyce bardzo mały boot sektor [0.5 KB], następnie tablica FAT i jej kopia, główny katalog, a na końcu ciąg danych. FAT32x ma swoje tablice na końcu partycji.

Jak widać na rysunku partycję FAT32 można podzielić na 5 części:

  • Boot Sector – zawiera dane o atrybutach partycji i ewentualnie pliki inicjujące start systemu operacyjnego.
  • FAT [File Allocation Table] – jest to tablica alokacji plików. To właśnie od niej powstała nazwa systemu plików. Liczba w nazwie, to po prostu liczba bitów określająca właściwości jednego klastra. 32 bity = 4 B na klaster w tablicy FAT32.
  • Kopia FAT – kopia tablicy alokacji stanowiąca pewną formę zabezpieczenie przed uszkodzeniem podstawowej tablicy alokacji. Niestety jest to bardzo prymitywne zabezpieczenie i bardzo często zawodzi.
  • Główny katalog – pozostałość po pierwotnych strukturach FAT12 i FAT16. Jest on nieco inaczej traktowany niż pozostałe dane. W systemie FAT32 stanowi jest on pierwszą częścią obszaru danych.
  • Obszar danych – tu zapisywane są pliki.
    W obszarze danych znajdują się katalogi, każdy plik ma swój 32 B rekord w określonym katalogu. Ponieważ najmniejszy klaster ma 512 B, recordy w FAT32 nigdy nie ulegają fragmentacji. W zależności od wielkości klastra katalog może pomieścić od 16 do 2048 recordów. Dla klastra 4 KB jest to 128 rekordów dla plików i folderów. Dla większości folderów jest to liczba wystarczająca, aby katalog mieścił się w jednym klastrze, jednak często spotykana opinia mówiąca, że katalogi FAT32 nie ulegają fragmentacji – to kłamstwo!!!

NTFS 5.1

NTFS to system plików nowej generacji stworzony z myślą o sprawnym zarządzeniu dużymi partycjami i bezpieczeństwie zgromadzonych danych. O jego żywotności dobrze świadczy fakt, że Microsoft zdecydował się pozostać przy NTFS podczas prac nad następcą XP – systemem Vista [nazwa kodowa Longhorn].

NTFS podobnie jak FAT ulegał, a w zasadzie nadal ulega modernizacji. Do tej pory miało miejsce pięć odsłon tego systemu plików, który zyskuje swoje „cyferki” od systemów dla których zostały skonstruowane. Oczywiście poszczególne wersje NTFS różnią się od siebie! NTFS 5.0 znany z Windows 2000 jest mniej zaawansowany technicznie niż 5.1 z XP.

 

System Wersja NTFS
NT 3.51 3.51
NT 4.0 4.0
2000 5.0
XP 5.1
2003 Serwer 5.2

NTFS 5.1 już na pierwszy rzut oka wygląda inaczej niż FAT32:

Na początku partycji mały boot sector, następnie obszar danych. Po około ~1/3 powierzchni partycji zaczyna się Metadata i MFT, po którym następuje jego rozszerzenie w postaci MFT Zone. Dalsza część schematu przedstawia końcówkę Metadaty, fragment na dane, niewielki folder $MftMirr i główny obszar danych, który zaczyna się mniej więcej od połowy partycji.

Jedyną różnicą między partycją dopiero co sformatowanym a przechowującym dane jest brak katalogów i MFT, który dopiero powstanie na początku MFT Zone.

  • Boot Sector – pełni te same funkcje co Boot Sector w FAT32.
  • MFT – składa się z 1 KB rekordów. Przechowuje dane dotyczące położenia, nazw i atrybutów wszystkich plików i katalogów dostępnych na partycji. Jeżeli jakiś plik jest wystarczająco mały, aby zmieścić się w rekordzie MFT, tj. z reguły nieco poniżej 1 KB, jest on zapisywany na dysku w pliku MTF. Ten prosty mechanizm pozwala przyspieszyć nieco działanie systemu i aplikacji jak również zaoszczędzić sporo miejsca, zwłaszcza na partycjach z dużym klastrem. Jeżeli w jednym rekordzie zabraknie miejsca na określenie wszystkich atrybutów pliku, system zapisze kolejne rekordy. Struktura rekordu MFT:
    W rekordach MFT poza standardowymi właściwościami są zawarte między innymi dane o prawach dostępu do danego pliku/katalogu i lokalizacja pierwszego i ostatniego klastra fragmentów na których zapisany jest plik. Tablica FAT zawiera jedynie odniesienia do kolejnych rekordów, gdzie znajdują się informaje o kolejnych klastrach.
  • MFT Zone – Windows XP chcąc zabezpieczyć MFT przed fragmentacją rezerwuje 12.5% przestrzeni partycji. MFT Zone to tylko potencjalnie MFT, może zostać wykorzystany w kilku procentach, może też zostać wykorzystany w całości. Według Microsoftu 12.5% powinno wystarczyć dla partycji, których średnia wielkość plików wynosi 8 KB, czyli dla większości partycji.
    MFT Zone zajmuje dużo miejsca na partycji, ale został tak zaprojektowany, aby nie przeszkadzać w normalnym użytkowaniu partycji. Jeżeli skończy się wolna przestrzeń na nowe pliki, Windows automatycznie zmniejszy sektor MFT Zone o połowę.
  • Metadata – Część MTF, która w NTFS 5.1 została oddzielona od głównego pliku MFT. Mimo to Metadata jest nadal integralną częścią MFT. W skrócie mówiąc Microsoft podzielił MFT na część zawierającą rekordy plików i pozostałe informacje tablicy alokacji. Głównymi składnikami Metadaty są katalogi $LogFile [dziennik używany do przywracania spójności danych] i $Bitmap. $Bitmap jest ciągiem wpisów określających, które klastry na partycji są wolne, a które zapisane. Ponieważ tylko 1 bit odpowiada za 1 klaster, NTFS zawsze błyskawicznie znajduje kolejne wolne klastry. Microsoft twierdzi, że dzięki nowej właściwości system NTFS 5.1 jest szybszy o 5 do 8% od NTFS 5.0. Jest to możliwe zważywszy m.in. na zabezpieczenie kluczowych danych, o zajętości poszczególnych klastrów przed fragmentacją MFT. O ile MFT może ulec fragmentacji, o tyle Metadata jest niemal nie do ruszenia.
    Oddzielenie informacji o zajętości klastra od pozostałych danych jest jedną z innowacyjnych cech różniących go od systemów z rodziny FAT.
  • $MftMirr – jest to kopia 16 pierwszych recordów MFT. W połączenie z journalingiem zabezpiecza MFT przed uszkodzeniem uniemożliwiającym dalsze użytkowanie partycji.
  • Katalogi [pliki katalogów] – NTFS ma zupełnie inne podejście do struktury katalogów niż FAT32. NTFS tworzy drzewa binarne, w postaci specjalnych plików. Zawierają one odnośniki do odpowiednich rekordów w MFT. Katalogi NTFS są o wiele bardziej rozbudowane niż w systemie FAT32, dlatego są o wiele bardziej wrażliwe na fragmentację. Katalogi są domyślnie tworzone za drugim fragmentem Metadaty. Po zapełnieniu większości powierzchni partycji można je spotkać na całej powierzchni partycji.
  • Obszar danych – tu zapisywane są pliki.

Klastry i rozmiary partycji

Przyjrzyjmy się wielkości klastrów jakie są tworzone podczas formatu partycji.

  • Sektor – najmniejsza fizyczna część dysku, na której zapisywane są dane w postaci cyfrowej 0, 1. Sektory zawsze mają wielkość 512 B.
  • Klaster – Logiczna struktura, na której system plików zachowuje pliki. Tylko klaster 512 B składa się z jednego sektora, pozostałe klastry to kilka połączonych sektorów, np. klaster 4 KB, to 8 sektorów.

FAT i NTFS inaczej korzystają z klastrów. W FAT32 tylko obszary danych podlegają podziałowi na klastry. Tablice alokacji FAT, a także Boot sectory są podzielone na 512 B sektory. Dlaczego to takie ważne? Tablica FAT jest sztywna – zawsze ma taką samą wielkość zależną jedynie od ilości klastrów jakie musi „obsłużyć”.

W NTFS wszystkie zgromadzone dane poza Boot sectorem są plikami. MFT mają nieco inną strukturę, ale to zwykłe pliki, podlegające podziałowi na klastry. Dzięki rezygnacji z podziału tablicy alokacji na sektory, możliwe stało się przeniesienie tych tablic do środkowej części partycji. Będzie to miało ogromne znaczenie dla wszystkich teoretycznych rozważań i zastosowanie w monotonii pracy dysku. MFT jest również bardzo elastyczny. W zależności od potrzeb może zajmować 4 lub 50 MB.

 

Wielkość partycji FAT32 klaster FAT32 wielkość FAT NTFS klaster
7 MB -32 MB nieobsługiwane 512 B
33 MB – 64 MB 512 B 2 – 4 MB 512 B
65 MB – 128 1 KB 2 – 4 MB 512 B
129 MB -256 MB 2 KB 2 – 4 MB 512 B
257 MB – 512 MB 4 KB 2 – 4 MB 512 B
513 MB–1.024 MB 4 KB 4 – 8 MB 1 KB
1,025 MB – 2 GB 4 KB 8 – 16 MB 2 KB
2 GB – 4 GB 4 KB 16 – 32 MB 4 KB
4 GB – 8 GB 4 KB 32 – 64 MB 4 KB
8 GB – 16 GB 8 KB 32 – 64 MB 4 KB
16 GB – 32 GB 16 KB 32 – 64 MB 4 KB
32 GB – 2 terabytes nieobsługiwane * 4 KB

* XP obsługuje partycji FAT32 większe niż 32 GB [Windows 98/Me formatowały partycje FAT do 128 GB]. Microsoft specjalnie zabronił systemowi formatować systemem FAT32 partycje większe niż 32 GB, aby zmusić użytkowników do przesiadki na NTFS. I bardzo słusznie, ponieważ FAT32 nie nadaje się do pracy z dużymi partycjami. Wyobraża ktoś sobie skakanie głowicy przez 100 GB danych od tablicy FAT32x na końcu partycji do obrazka na początku partycji?!? Ja wolę sobie tego nie wyobrażać. NTFS może teoretycznie dać sobie radę z partycją 256 TB.

Wielkości klastrów można ustalić samemu, zarówno dla FAT32 jak i NTFS 5.1 jest to od 512B do 64 KB. Należy jednak uwzględnić pewna zastrzeżenie. Klaster o wielkości 64 KB w przypadku FAT32 często sprawia kłopoty aplikacjom i przestają one poprawnie funkcjonować.

  • Wielkość klastra nie determinuje tylko ilości zmarnowanej przestrzeni. O wiele ważniejszy jest dla nas rozmiar tablicy alokacji – FAT, a w przypadku NTFS tablica MFT [+Metadata]. Dlaczego jest to taka istotna informacja? Ponieważ tablica alokacji powinna być w całości buforowana w pamięci operacyjnej, aby system plików mógł pokazać pełnię swych możliwości.
    Wielkość tablicy FAT łatwo obliczyć. FAT niezależnie od ilości zajętego miejsca na dysku zawsze ma zapisaną całą tablicę. Każdy klaster ma swój 32 B rekord w tablicy alokacji. Jak widać w tabeli wielkość FAT waha się od 2 do 64 MB. Ta ostatnia wartość to zdecydowanie za dużo, aby można ją było przechowywać w pamięci. Z tego powodu większość tablic alokacji w przypadku większych partycji jest tylko częściowo buforowana w Ram-ie. Nawet zwiększenie rozmiaru klastra niewiele pomagają w przyspieszaniu większych partycji FAT32. Po prostu, im większa partycja, tym odległość między jej początkiem [tablica FAT] a pozostałymi danymi staje się coraz większa. Wadą FAT jest, to że zapisuje informacje nie o plikach, a o klastarach. Określenie klastrów jakie zajmuje plik jest bardzo czasochłonne [rośnie wraz z defragmentacją danych]. Jest to spowodowane dużą ilością odwołań do tablicy FAT. Zanim dane o pliku zostaną zbuforowane w pamięci, muszą najpierw zostać odszukane. O załadowaniu całej tablicy FAT32 do pamięci nie ma mowy! Tylko w przypadku FAT12 jest to praktykowane, gdyż jego tablica ma max. tylko 128 KB.NTFS dzięki innej konstrukcji może być w całości buforowany w pamięci – ładowane do pamięci są rekordu zawierające informacje o używanych plikach, a nie cała tablica alokacji. Trudno jest określić wielkość MFT na podstawie wielkości klastra. O ile wielkość $Bitmap, zawierającej dane o zajętości poszczególnych klastrów można obliczyć bardzo łatwo 1bit * ilość klastrów = 1 MB dla partycji 32 GB [klaster 4 KB], o tyle wielkość głównej tablicy MFT pozostaje zagadką. W praktyce wykazuje się ona zdecydowanie większą kompaktowością niż tablica FAT. W przypadku NTFS może dojść do bardzo skrajnych sytuacji.

    1. Ogromna 100 GB partycja zawierająca jedynie filmy [80 plików po 700 MB] i zbiory mp3 [15000 plików po 3 MB] może mieć MFT zajmującą niecałe 25 MB,
    2. Partycja o wielkości 12,5 GB może natomiast mieć większą tablicę MFT:


    Taka sytuacja nie jest niczym nadzwyczajnym i można ją łatwo wytłumaczyć. MFT z czasem rośnie. Im więcej plików zapiszemy na dysku, tym większa staje się tablica MFT, nie zmniejsza swoich rozmiarów. Jeżeli kiedyś było było w nim zapisanych 20.000 1 KB-owych rekordów, a obecnie jest mniej, MFT nadal ma wielkość 20.000 rekordów. Systemowy defragmentator znakomicie orientuje się w systuacji. Obecnie zajęte jest ponad 11 tysięcy rekordów [~11 MB]. Cały MFT [tablica alokacji] ma wielkość 45 MB, a więc na partycji było niegdyś zapisane ponad 45.000 rekordów. Analizator obliczył, że obecnie zajęte są 23 procenty MFT. Owe 23% może być buforowane w pamięci RAM. Może, ale nie musi.

    Takie rozwiązanie ma swoją wielką zaletę. System NTFS sprawdza się zarówno w przypadku małych jak i wielkich partycji. NTFS poświęca miejsce w MFT tylko dla danych, które znajdują się fizycznie na dysku. Bardzo istotne jest składowanie informacji o plikach, a nie o klastrach. Kompaktowe rekordy MFT mogą zawierać dziesiątki adresów klastrów jakie zajmuje dany plik. W przypadku ogromnych plików np. 500 MB, zajmuje tylko jeden do kilkunastu rekordów, których wprowadzenie do pamięci jest o wiele szybsze, niż w przypadku kilku tysięcy wpisów z tablicy FAT.

    Na stałe w pamięci zawsze są buforowane folder $Bitmap i tablica potrzebna do zabezpieczenia danych przed utratą – $LogFile [max 4MB]. Pozostałe matadane są wczytywane sekwencyjnie do pamięci. Tylko informacje o aktualnie używanych plikach [katalogach również] są w pamięci, reszta znajduje się na dysku. Po zamknięciu sesji z danym plikiem jego rekordy są aktualizowane w MFT, katalogach i tablicy $Bitmap na dysku.

    „Wadą” stosowania MFT zamiast FAT jest zwiększenie zapotrzebowania na pamięć ze strony systemu NTFS. Daje tu o sobie znać mechanizm ochrony danych i większa liczba atrybutów. Komputery, które pracowały na pierwszych pierwszych Windows NT 3.51 były wyposażone w kilka MB Ram-u, te z Windows NT 4.0 miały już więcej pamięci, ale raczej nie przekraczały 32 MB. Struktura NTFS była wtedy nieco inna, ale mniejsza o szczegóły. Chodzi o to, że NTFS strasznie mulił te systemy. Stąd między innymi wzięła się opinia o powolności NTFS. Opinia bardzo krzywdząca. Nowa konstrukcja NTFS [od 5.0] potrzebuje 64 MB, aby pokazać pazurki. Nawet jeżeli masz wiele dużych partycji 128 MB daje ogromny zapas, którego z pewnością nie wykorzysta sam NTFS. W gruncie rzeczy jest on bardzo oszczędny i nie wczytuje do pamięci niczego, czego nie musi. Czymże jest ta „wada” w połączeniu z całą masą zalet? Na pudełkach Windows XP i 2000 jest wyraźnie napisane, że te systemy wymagają 128 MB Ram-u do prawidłowego działania. Problem mulenia NTFS znika. W tej sytuacji argument typu – NTFS pożera dużo zasobów, jest niedorzeczny. To, co zabiera dla siebie NTFS 5.x, jest wkalkulowane w narzut systemowy.

    Pora na jakiś wniosek: FAT32 sprawdzi się lepiej na komputerach z 2000/XP/2003, które nie mają zalecanych minimum 64 MB pamięci Ram. Obecnie takich maszyn jest niewiele w użyciu. FAT32 jest „lżejszy” a przez to łatwiejszy do udźwignięcia dla starych komputerów. Nowe konstrukcje wyposażone w min. 512 MB nawet nie zauważą, że NTFS pochłania o kilka MB więcej niż FAT32. Poza tym, liczy się dla nich sprawność dysku, a nie ułamek pamięci.

    fragmentacja głównej tabeli, MFT

 

Wielkość klastra

Co wynika z wielkości klastra:

  • Utrata miejsca na dysku [zjawisko slack sector-ów] – pliki zapisywane są w klastrach zgodnie z zasadą – jeden klaster = jeden plik. Jeden plik może składać się z wielu klastrów, jeden klaster może zawierać tylko jeden plik. Oznacza to, że jeżeli mamy zapisać plik o wielkości:
    1. 5 KB przy klastrze 4 KB – zapisane zostają dwa klastry, a ostatnie 3 KB drugiego klastra marnuje się
    2. 5 KB przy klastrze 8 KB – zapisany zostaje jeden klaster, ostatnie 3 KB marnuje się

    Zgodnie z tym schematem można dokładnie określić ile KB marnuje się podczas przechowywania określonego pliku na partycji z określonym klastrem. Największe straty występują, gdy zapisujemy małe pliczki na partycjach z dużymi klastarami np. 512 B plik tekstowy na 20 GB partycji FAT32 zajmuje 16 KB. NTFS ma tę zaletę, że przy większym klastrze marnuje mniej miejsca. Przypominam, że pliki niewiele mniejsze niż 1 KB są zapisywane bezpośrednio w tablicy alokacji MFT.Wielkość klastrów jak wynika z tabeli jest wyraźnie większa w przypadku FAT32 i wynosi 16 KB dla partycji powyżej 16 GB. Tak ogromny klaster wynika z ograniczeń tablic FAT. Natomiast NTFS począwszy od partycji przekraczających 2 GB uparcie zachowuje mały 4 KB klaster, aż do granicy dwóch terabajtów.

  • „Większy klaster, to lepsza wydajność dysku” (większe partie danych są jednorazowo kopiowane do Ram-u, i mniejsza jest fragmentacji dysku), ale… są i pewne minusy:
    1. Zmiana klastra, to często konieczność sformatowania partycji (Partition Magic 8i Paragon partition Manager pozwalają na zmianę klastra bez formatu dla FAT 32). Windows może również zmienić rozmiar klastra, ale tylko podczas formatowania partycji [Start – Panel Sterowania – Narzędzia Administracyjne – Zarządzanie Komputerem – Zarządzanie dyskami – prawy click na wybranej partycji – formatuj – wybierz odpowiadające Ci ustawienia – OK.]
    2. Większy klaster sprawia, że więcej miejsca na dysku się marnuje.
      Zjawisko marnotrawienia przestrzeni na dysku jest tym mniejsze im większe pliki są na nim zapisane.
    3. Jeżeli mamy wiele małych plików na partycji o dużym klastrze np. 16 KB, możemy doświadczyć nie wzrostu a spadku wydajności. System odczytuje cały klaster niezależnie od tego, czy jest on wypełniony w całości, czy tylko w części. Nie ma tu znaczenie, czy jest to jedyny klaster, czy ostatni z kilku przypisanych do jednego pliku. Operacje na malutkich plikach trwają dłużej.

    Przy większym klastrze zmniejszeniu ulegają tablice alokacji. Większe partycje FAT32 znacznie zmniejszą rozmiar tablicy FAT, ale ponieważ tablica znajduje się na początku partycji odległość między nią, a danymi neutralizuje ten „plus”. Zwiększanie rozmiaru klastra na małych partycjach mija się natomiast z celem.W przypadku większych partycji [powyżej 8 GB] warto zastanowić się nad zwiększeniem klastra dla NTFS do poziomu 8 KB. Zmniejszy to znacznie rozmiar nieco rozmiar Metadaty i liczbę recordów w MFT, co poprawi nieco wydajność NTFS. Przy okazji stanie się jeszcze mniej podatny na fragmentację, która rośnie wraz z wielkością partycji. Dla NTFS powiększenie klastra partycji większej niż 8 GB może mieć znaczenie. Pamiętajmy jednak przy tym, że systemowa kompresja nie będzie działać na partycjach z klastem większym niż 4 KB. Jest to bardzo ważna informacja, pokazuje dlaczego MS zatrzymał wielkość klastra na poziomie 4 KB! Po prostu nie chciał ograniczać funkcjonalności nowego systemu plików.

    Ostateczne wnioski są proste. Dla partycji NTFS większych niż 8 GB można zwiększyć wielkość klastra do 8 KB, powinno to podnieść ogólną wydajność partycji. Ale zostaniemy trwale pozbawieni możliwości korzystania z kompresji systemowej na tej partycji. Jedynie na partycjach, gdzie większość plików zajmuje mniej niż 4 KB istnieje ryzyko nie uzyskania wzrostu wydajności. W praktyce takie ryzyko niemal nigdy nie występuje.

    W pozostałych sytuacjach problem polega na tym, że różnice w wydajności są niewielkie i trudne do zmierzenia. Pewne jest tylko to, że możemy nieco zyskać:

    • Większy klaster to mniejszy poziom fragmentacji, a to z kolei skraca czas defragmentacji. Ma to pewne znaczenie dla wydajności. Taki dysk możemy częściej defragmentować bez dłużącego się oczekiwania na efekt końcowy.
    • Ustawiając mniejszy klaster niż standardowy, jeżeli na partycji mamy niemal wyłącznie niewielkie pliki o połowę mniejsze niż rozmiar klastra. W praktyce taka sytuacja występuje bardzo rzadko. Poza tym należy zauważyć, że podatny na fragmentację i nieprzystosowany do zarządzania tysiącami plików FAT będzie źle znosił przenoszenie i nadpisywanie tych plików. Nieco lepiej zniesie taki zabieg NTFS, który zachowa najmniejsze pliczki bezpośrednio w MFT. Ponieważ obecnie nie pracuje się na dużych kilkutysięcznych zbiorach plików do 2 KB niemal nikt nie odniesie korzyści ze zmniejszenia klastra.
      Zapewne niektórzy pomyśleli o zmniejszeniu wielkich klastrów FAT32. Rzeczywiście 16 KB klastry na partycjach po 16-32 GB, to już sporo, ale tak musi zostać. Jeżeli zmniejszymy rozmiar klastra o połowę, podwoimy wielkość tablicy FAT, czyli narobimy kłopotów systemowi, który będzie musiał nieustannie przeszukiwać ogromną 64 – 128 MB tablicę położoną na peryferiach partycji. Do tego dochodzi większa fragmentacja danych. Nie warto!
    • Ustawiając większy klaster niż standardowy, jeżeli na partycji mamy niemal wyłącznie pliki dwukrotnie większe niż dotychczasowy rozmiar klastra. Taka sytuacja zdarza się dosyć często. Oto efekt analizy mojej partycji systemowej, która teoretycznie zawiera wiele małych pliczków:

      Zadziwiający wynik? Średni rozmiar plików na innych partycjach był jeszcze większy. Oczywiście kilku-megabajtowe pliki znacznie zawyżyły tu statystykę, ale niepodważalnym faktem jest, że pliczki poniżej 4 KB to pieśń przeszłości. Jak już wcześniej zostało powiedziane, utratę wydajności po powiększeniu klastra powoduje konieczność odczytywania całego klastra niezależnie od tego, czy jest on zapisany w całości, czy przez kilka bajtów.Aby rozważania teoretyczne miały jakikolwiek sens praktyczny będę zastanawiał się nad dwiema sytuacjami:

      system Windows nie wymaga defragmentacji

    • Partycja systemowa:Jest ona z założenia niewielka, a przynajmniej powinna taka być! Jako ramy przestrzenne przyjmuję rozmiar partycji od 2 GB. Poniżej tej granicy trudno jest bez zdecydowanych cięć utrzymać XP-ka na partycji. Za górną granicę biorę 8 GB. Moim zdaniem jest to absolutnie za dużo, ale niejeden użytkownik ma nawet większą partycję systemową. Zarówna FAT32 jak i NTFS dla partycji 2 – 8 GB domyślnie używają klastra o wielkości 4 KB. Zastanówmy się teraz co spowoduje powiększenie klastra do 8 KB.Dla FAT32, będzie to zmniejszenie o połowę tablicy FAT [do 4 GB – max. 16 MB, do 8 GB – max. 32 MB]. Dla małej partycji przyniesie to korzyści, ponieważ system ma mniej danych do przeszukania, nieco spada też ryzyko fragmentacji. Z minusów należy wymienić utratę kilku MB na slack space w połączeniu z ewentualnym, chwilowym małym spadkiem wydajności.FAT32, 2 – 4 GB – Teoretycznie wszystko wydaje się więc w porządku. FAT w miarę sprawnie radzi sobie z partycjami o rozmiarze 4 GB. Im mniejsza będzie partycja, tym więcej uda się z niego wycisnąć. Mała tablica alokacji w dużej mierze może zostać załadowana do pamięci, co zredukuje znacząco liczbę odwołań do niej na dysku. Mały rozmiar powoduje również, że odległość między tablicą FAT, a drugim końcem partycji jest niewielki, co jest ważne dla ogólnej wydajności. Prostą konstrukcją sprawia, że małe partycji systemowe oparte o FAT32 są naprawdę szybkie. Taki stan rzeczy w dużej mierze przyczynił się do upowszechnienia opinii o wyższości FAT32 nad NTFS. Niestety, jest tylko przejściowy i nie zawsze gwarantuje przewagę nad NTFS. Szybkość spada wraz ze wzrostem wielkości partycji systemowej i ilością zapisanych na niej plików. Dają też o sobie znać brak zabezpieczeń przed uszkodzeniem danych. Takie zabezpieczenie to podstawa dla utrzymania systemu w należytym stanie.Kompaktowość danych trudniej jest zachować ze względu na brak obsługi kompresowania przez FAT – przywracanie systemu ma ustawione ograniczenie do 400 MB [dla partycji do 4 GB], rozpycha się również katalog dllcache, który szybciej niż w NTFS uzyskuje swoje maksymalne 300 MB [brak kompresji], które stanowi 15% powierzchni dla partycji 2 GB i 10% dla 3 GB. Oddając sprawiedliwość FAT32 dodam, że dllcache można opróżnić, a przywracanie systemu wyłączyć. Reasumując – FAT32 na małych partycjach 2 – 4 GB jest szybki. Stosunkowo duży klaster 8 KB, pomaga mu zmniejszyć, jego wielką bolączkę – pojawiającą się z czasem ogromną defragmentację. Ale czy jego przewaga nad NTFS 5.1 jest duża …? Oddzielenie MFT od Metadaty przyspiesza NTFS 5.1. Celem tej modyfikacji była próba dogonienia FAT32 na małych partycjach. Można powiedzieć, że próba była udana…FAT32, 4 – 8 GB – Przymuszony FAT32 poradzi sobie i z 8 GB, chociaż z tym jest już gorzej niż z 4 GB. Jest jednak więcej „ale”… O ile rozmiar jeszcze nie spowalnia FAT32, problemy może sprawiać ilość plików zgromadzonych na partycji systemowej. Na dużej partycji są przechowywane większe ilości danych, instaluje się więcej programów. Liczba plików może szybko przekroczyć 20.000, a to już całkiem sporo do zarządzania dla FAT32. Linearne wyszukiwanie plików zaczyna dawać o sobie znać. Ogółem FAT + partycja systemowa powyżej 4 GB nie jest najlepszym pomysłem.FAT32 powyżej 8 GB – nawet nie próbuj ustawia tak dużej „systemówki” na FAT32, a w zasadzie to już 32x. Ten system plików nie udźwignie tego brzemienia.Przejdźmy do NTFS. Zwiększenie wielkości klastra do 8 KB spowoduje (poza zwiększeniem slack space) zmniejszenie o połowę tablicy $Bitmap i częściowo MFT i Metadaty. Wpisywanie najmniejszych pliczków bezpośrednio do MFT w pewnym stopniu ograniczy utratę miejsca i ewentualny chwilowy spadek wydajności. Powiększanie partycji od 2 do 8 GB ma dla NTFS znacznie mniejsze znaczenie niż dla FAT. Tablica MFT znajduje się w środkowej części partycji, więc ma wszędzie blisko. Jest to ważne, ponieważ jej rozmiar zależy wyłącznie od liczby plików zapisanych na dysku, a nie od liczby klastrów. Dzięki temu odczytywanie Metadaty i MFT jest stosunkowo szybkie. NTFS ma tą zaletę, że nie przeszkadza mu zwiększanie liczby plików na partycji, jego mechanizmy wyszukiwania wolnych klastrów i poszczególnych plików są bardzo szybkie. Dzięki tym cechom nie musimy obawiać się, że powiększenie partycji systemowej i/lub ilości zapisanych na niej plików spowoduje spadek wydajności. Ogromną zaletą NTFS są mechanizmy zabezpieczające dane, które działają bez jakiegokolwiek niepokojenia użytkownika. Są one bardzo skuteczne. To wielki plus dla partycji na której ma znajdować się Windows.
    • Partycja na dane: Nie ma tu nad czy się rozwodzić. Jak już zostało wielokrotnie powiedziane – FAT32 nie radzi sobie z dużymi partycjami. Kiedy był konstruowany teoretyczną granicą dla dysków twardych było 8.4 GB. Widać to w jego architekturze, partycje powyżej 8 GB sprawiają mu sporo problemów. Z kolei NTFS został zaprojektowany z myślą o zarządzaniu wielkimi ilościami danych. Nie stanowi dla niego większej różnicy, czy partycja ma 4, czy 64 GB. Oczywiście, przy tak dużej partycji warto powiększyć jego klaster, ale o tym była już mowa. Najczęściej architektura NTFS będzie lepiej sprawdzać się jako magazyn na dane.
      Gdzie jest ta granica oddzielająca partycje szybsze na FAT32, a te na NTFS? Trudno powiedzieć, to zależy od ilości plików na partycji, ich wielkości, częstości modyfikacji plików… Sytuację szybko jednak się wyjaśnia. Obecnie mało kto ma partycje mniejsze niż 4 GB. Poza „systemówką” są to najwyżej małe magazyny o specjalnym przeznaczeniu lub partycje na starych, wolnych, małych dyskach [do 10 GB], gdzie lepiej sprawdza się FAT32, ze względu na swą prostotę i mniejsze pochłanianie zasobów PC-taRunda druga – ułożenie tablic alokacji na dysku a wydajność.

Tablica FAT znajduje się na początku partycji, a MFT i inne metadane NTFS są zwartymi plikami w przybliżeniu między 1/3, a 1/2 dysku, czyli w środku partycji. Co ma to, do wydajności systemu plików? Całkiem sporo. Przyjrzyjmy się uproszczonym schematom.Doskonale widać, że partycje FAT32 zdecydowanie różnią się od NTFS. Po pierwsze, co już było podkreślane, aby dostać się do tablicy FAT głowica dysku musi wędrować aż na sam początek partycji [lub na koniec]. Tablica NTFS znajduje się w środku partycji skąd ramię głowicy musi wykonać mniejszą odległość do danych.

tablica alokacji

tablica alokacji plików

  • Rozważmy teraz kilka sytuacji zależnych od ilości danych zgromadzonych na partycji.
  • FAT32x już dziękujemy – karygodne! System plików, który zapisuje dane od początku partycji, klaster po klastrze i tablica alokacji plików na końcu partycji! Przy takim rozwiązaniu nie ma mowy o wydajności. Od tablicy FAT32x wszędzie jest daaleekooooo. Gdyby to jeszcze była mała partycja 2 GB wówczas jakoś można by to przetrawić [popijając litrami soku], ale FAT32x to partycje powyżej 8.4 GB. Absolutnie niedopuszczalna forma rozszerzenia. Im większa partycja tym gorzej. Microsoft się nie popisał, tak się nie rozszerza możliwości partycji! Partycje powyżej 8 GB przeznaczone są tylko dla NTFS!

Poniższy schemat teoretyczny nie zawsze się sprawdza, algorytm NTFS nie zawsze zapisuje pliki na początku partycji, często lądują one bezpośrednio za plikami MFT i Metadanymi, gdzie szybkość odczytu i zapisu jest nieco gorsza niż na początku partycji, ale głowica dysku wykonuje mniejszy ruch do zgromadzonych danych.

  • do 50% – Z reguły jest to stan przejściowy. Im mniej danych zapisanych na partycji, tym bardziej preferowany jest FAT32. Ma on bliżej do danych gromadzonych na początku partycji. Niestety, ponieważ FAT nie nadaje się do partycji większych niż 8 GB trudno jest spotkać w użyciu partycję korzystającą z tego handicap-u np. 6 GB zapisane w 15%. Przy około 30% partycji zaczynają się już Metadata i MFT, szanse się wyrównują.
  • około 50-60% – Zaczyna być preferowany NTFS. MFT ma obok siebie [po obu stronach] dane, natomiast FAT po część klastrów musi sięgać aż do połowy partycji.
  • ok 75% – Dla NTFS nie ma problemy pracuje tak samo dobrze, jak przy 50-60%, dla FAT32 jest tym gorzej, im większa jest partycja i rozmiar tablicy. Na małej tablicy może sobie poradzić, gdyż głowica dysku nie musi pokonywać wielkich odległości.
  • ok 90% – Duże partycje FAT wymiękają całkowicie. NTFS zaczyna mieć kłopoty. Ponieważ przekroczone zostało 87,5% powierzchni partycji MFT Zone [bufor na MFT] zostaje on zmniejszony o połowę. Niestety ta połowa, to ta pierwsza połowa. Istnieje pewne prawdopodobieństwo, że MFT zostanie pofragmentowane. Jeżeli MFT ma zajęte wszystkie wcześniej zapisane rekordy, a MFT Zone już do niego nie przylega, wówczas kolejne rekordy zostaną zapisane w oddalonym fragmencie MFT Zone. Może się tak stać, ale nie musi. Problemy są tym większe, im większa jest partycji [większe odległości między fragmentami] i ilość plików które zostaną zapisane już po podzieleniu MFT ma dwie części.
  • 100% – MFT jest podzielone jak sito. Za każdym razem, gdy MFT Zone będzie ograniczał miejsce na dane zostanie on pomniejszony o połowę. Może to spowodować duży spadek wydajności w zależności od stopnia fragmentacji. Tak wygląda MFT, który został podzielony już trzy razy [fioletowy kolor]. FAT też nie czuje się dobrze. Głowica musi skakać jak oszalała nawet z krańca na kraniec partycji.

tablica alokacji
Dla FAT32/32x obok problemów związanych z ilością zajętej przestrzeni nakłada się rosnąca ilość plików i katalogów po zarządzania. W przypadku NTFS fragmentacji ulega MFT, a to bardzo, bardzo niedobrze, ale…

Microsoft przewidział ten problem!
Można zdefragmentować MFT systemowym defragmentatorem. Takie rozwiązanie ma tylko taką zaletę, że jest proste, ale stosunkowo mało skuteczne. Trudno jest defragmentować MFT w normalnym trybie, dlatego jest to tylko półśrodek. Kilka komercyjnych programów poradzi sobie z MFT i scali ją w ładny ciąg rekordów i ustawi za nim MFT Zone, czyli tak, jak powinno być. W większości wypadków taka defragmentacja wystarcza, ale nie zawsze.
Przy kolejnym podziale MFT Zone znowu może zabraknąć rekordów i trzeba będzie zapisać pierwsze zapasowe rekordy [MFT Zone]. Jest na to proste rozwiązanie. MFT rośnie wraz ze wzrostem liczby plików [dokładniej, zapisanych rekordów] i nie zmniejsza nigdy swych rozmiarów. Jeżeli mieliśmy kiedyś zapisane 10000 rekordów, a teraz jest ich 800, system nadal ma 9200 wolnych rekordów. Wykorzystajmy tę właściwość:
* Instalujemy programy i gry, których mamy zamiar używać.
* Uruchamiamy wiersz poleceń [Start – Uruchom – wpisz 'cmd’] i wpisujemy kolejno polecenia:

  • C: – lub inna litera partycji, którą chcemy zabezpieczyć przed fragmentacją MFT.
  • md s – tworzy katalog s
  • cd s – otwiera katalog s
  • FOR /L %f in (1,1,20000) do echo Hey > %f – tworzy 20.000 plików, które nie zawierają danych, ich jedynym zadaniem jest utworzenie nowych 20.000 rekordów w MFT. Będzie to dodatkowy ogromny bufor, który powinien uchronić MFT przed fragmentacją, nawet jeżeli podzielona zostanie MFT Zone.
  • del *.* /q – kasuje wszystkie utworzone pliki, spełniły one już swoje zadanie, bufor wewnątrz MFT został utworzony
  • cd.. – cofamy się o jeden poziom w strukturze katalogów
  • rd s – usuwamy katalog s

Polecenie „convert c: /fs:ntfs” ma za zadanie w bezbolesny sposób pozwolić użytkownikom Windows zmienić FAT32 na NTFS. Problem polega na tym, że jest ono bardzo mało efektywne. Użyte bez dodatkowych parametrów zapisuje MFT nie w ciągu klastrów, ale tam gdzie się zmieści. Z tego powodu może powstać niemała fragmentacja MFT, co bardzo negatywnie wpłynie na wydajność partycji. Poza tym MFT nie jest zapisany po 1/3 powierzchni partycje, więc mamy do czynienia z kolejnym spadkiem wydajności. Mamy zatem kolejny powód, który spowodował, że NTFS jest uważany za wolniejszy od FAT32. Najlepszym rozwiązaniem będzie pobranie demonstracyjnej wersji Perfect Disk 8 i użycie offline defragmentation. Opcja ta pozwoli na scalenie i umieszczenie MFT, MFT Zone i Metadaty w odpowiednim miejscu na partycji. Uwaga!!! Program używa nieco innego schematu, niż przedstawiony wyżej, więc proszę się nie dziwić, że Metadata wyląduje w centrum partycji [spokojnie,Perfect Disc ma certyfikat Microsoftu – jako jedyny defragmentator dla Windows].
Możemy dodatkowo spotkać się z jeszcze jednym niekorzystnym zjawiskiem. Może się zdarzyć, że przekonwertowana partycja będzie miała klaster 512B! Zdarza się to, gdy konwertowaliśmy partycję innym programem niż systemowy convert lub rozmiary klastrów FAT32/32x i NTFS się nie zgadzają. I jak wówczas można mówić o wydajności? Wiele osób nie ma pojęcia o wadach convert. Microsoft po raz kolejny pokpił sprawę i nie dopracował swojego narzędzia. Stąd biorą się negatywne opinie o NTFS. Aby naprawić tę wadę, trzeba po raz kolejny sięgnąć po program dyskowy i zmienić rozmiar klastra na odpowiedni.
Dzięki możliwości zabezpieczenia MFT przed fragmentacją, „wada fabryczna” NTFS może zostać wyeliminowana. W przypadku FAT32 nie mamy takiej możliwości.

Operacje odczytu

Często można spotkać opinie, że NTFS wolniej zapisuje i odczytuje dane ze względu na konieczność uporania się z atrybutami bezpieczeństwa. Oczywiście, dodatkowe funkcje muszą obciążać dysk i Ram, ale nie widać tego podczas odczytu NTFS. Odczyt jest bardzo mocną stroną tego systemu plików. Został on zaprojektowany do obsługi dużych partycji i wielkich ilości plików, więc z definicji musi sobie świetnie radzić z odczytem plików. Aby odczytać plik trzeba najpierw go znaleźć. Sam odczyt klastrów jest już czynnością niemal niezależną od systemu plików. Powtarzam, niemal – podatność na fragmentację ma tu niemałe znaczenie.
Wyobraźmy sobie hipotetyczną sytuację. Użytkownik otwiera partycję C:\, potem kolejno katalogi Windows, System, system32 i uruchamia dfrg.msc. Nie ma w tym nic nadzwyczajnego, ale FAT32 i NTFS zupełnie inaczej będą się zachowywać. Podstawowe czynności są podobne. System szuka rekordu pliku w odpowiednim katalogu, gdzie znajduje odnośnik do tablicy alokacji, z której potrzebne dane są ładowane do Ram-u. Następnie rozpoczyna się odczyt klastrów. NTFS ma nieco więcej pracy. Musi dodatkowo sprawdzić część atrybutów bezpieczeństwa, ale nie stanowi to dla niego żadnego problemu! I tak musi odczytać rekordy zawierające informacje zawarte w poszczególnych rekordach pliku. Przyjrzyjmy się różnicą między FAT i NTFS:
Szukanie rekordu pliku w katalogu.

  • FAT32 [katalogi linearne] – przeszukuje kolejno zapisane rekordy plików/katalogów od początku katalogu aż do momentu odnalezienia właściwego rekordu.
  • NTFS [katalogi o strukturze drzewa binarnego] – dzieli zawartość katalogu na dwie części. Tą, w której znajdzie plik dzieli na kolejne dwie i powtarza tą czynność aż do skutku.

FAT kontra NTFS

Im więcej plików w katalogu, tym NTFS jest szybszy, np. w katalogu jest 128 plików. NTFS musi sprawdzić średnio 8 wpisów, FAT- 64 wpisy. Gdy jest 1000 plików NTFS sprawdza 10 wpisów, FAT 500. Niezależnie od tego, czy plik ma swój wpis na początku, czy na końcu katalogu, NTFS zawsze znajdzie go w tej samej małej liczbie zapytań. FAT będzie męczył się, dopóki nie natrafi na odpowiedni wpis. Im więcej wpisów plików/katalogów jest w katalogu, tym NTFS ma większą przewagę.
W rekordzie pliku w katalogu znajduje się adres pierwszego sektora FAT i pierwszego rekordu MFT odpowiadających za ten plik. Tablica FAT ma wpisy odpowiadające za klastry. Oznacza to, że musi doczytywać z całej tablicy dane dotyczące poszczególnych klastrów, które zajmuje dany plik. Jak łatwo się domyślić wraz ze wzrostem wielkości tablicy i wielkości pliku mechanizm ten coraz bardziej zwalnia. NTFS nie ma takich problemów. MFT zawiera wpisy dotyczące plików. Jeden rekord MFT może zawierać informacje o tysiącach klastrów jakie zajmuje dany plik. Jeżeli brakuje miejsca w jednym rekordzie, co może się zdarzyć, jeżeli plik jest mocno pofragmentowany, wówczas zapisywany jest kolejny rekord. Morał z tego jest bardzo prosty – NTFS zdecydowanie szybciej znajduje odpowiednie klastry na podstawie MFT niż FAT na podstawie swojej tablicy. Oczywiście to, że MFT jest w środku partycji ma też swoje dodatkowe znaczenie.
Przy tak skonstruowanym mechanizmie wyszukiwania plików konieczność odczytu właściwości o zabezpieczeniach pliku znaczy tyle, co nic. Tylko na małych partycjach FAT32 ma jakiekolwiek teoretyczne szanse gonić NTFS w szybkości odczyty, ale przy większej ilości plików w katalogach i większym rozmiarze plików [więcej klastrów] szybko dostaje zadyszki.
W praktyce, NTFS ma większą przewagę w działaniu niż pokazują to testy! Większość operacji przeprowadzanych na dysku to odczyty! Nie wszystkie pliki, które zostały odczytane muszą zostać zapisane. Jeśli nie muszą zostać zapisane, NTFS uaktualnia jedynie wpis w MFT dotyczący czasu ostatniego dostępu do pliku. Wyobraźmy sobie start systemu i uruchamianie aplikacji. Podczas startu systemu pliki są wyłącznie odczytywane. Tak samo dzieje się podczas uruchamiania aplikacji. Postrach słabych maszyn DOOM 3, zapisuje jedynie save-y i pliki konfiguracyjne.
O wydajności PC-ta decyduje szybkość z jaką rozbuchane MHz-e dostaną dane do przetworzenia. NTFS dostarcza je znacznie szybciej niż FAT32. Jeżeli w testach nie widać takiej zależności oznacza to, że test został przeprowadzony w sposób stronniczy. Najczęściej jest to niezamierzone faworyzowanie FAT32. Jeżeli każemy dyskowi odczytać 1000 plików zajmujących 100 MB na początku partycji pustej partycji o wielkości 6 GB, FAT32 zwycięży. Pliki, chociaż w dużej ilości będą położone bezpośrednio za tablicą alokacji. Jeżeli dysk będzie zapełniony w 30%, wygra NTFS. Nie chodzi mi tu tylko o „wyrównywanie szans”, ale również o wydajność użytkową. Kto na partycji mającej 6 GB trzyma tylko 100 MB zdjęć?

Operacje zapisu

Zapis jest powszechnie uznany za piętę achillesową NTFS, ale nie jest to wina atrybutów zabezpieczeń. Tych atrybutów jest całkiem sporo, ale stanowią one tylko część obciążenia operacji zapisu dla NTFS. Aby system plików mógł zapisać klaster musi wykonać kilka operacji:

  • FAT32:
    1. gromadzi informacje o wszystkich klastrach pliku do ponownego zapisania, ewentualnie wyszukuje nowe miejsce na kolejne porcje danych,
    2. zmienia odpowiedni rekord w katalogu [właściwości pliku…] lub dodaje kolejny wpis,
    3. zapisuje klastry i wpisy w tablicy FAT
  • NTFS:
    1. gromadzi informacje o wszystkich klastrach pliku do ponownego zapisania, ewentualnie wyszukuje nowe miejsce na kolejne na kolejną porcję danych,
    2. zmienia rekord w strukturze katalogu, ewentualnie dodaje kolejne wpisy
    3. aktualizuje tablicę $Bitmap
    4. zapisuje klastry i rekordy MFT
    5. czuwa nad prawidłowym zakończeniem operacji zapisu – $LogFile

Wygląda strasznie? Tylko do czasu. Aby zapisać plik trzeba najpierw dobrać się do informacji o jego lokalizacji, a w tym NTFS jest o wiele lepszy. Jest również niesamowicie szybki podczas wyszukiwania wolnej przestrzeni. Jego $Bitmap jest niewielką zwartą tablicą, którą można szybko przeskanować. FAT szuka wolnych klastrów w całej tablicy alokacji od samego początku, dopóki nie znajdzie wymaganej liczby wolnych klastrów. Aktualizacja $Bitmap jest bardzo szybka, a z większą tablicą FAT dysk musi się więcej napracować. Po raz kolejny daje o sobie znać położenie FAT i nieustanne problemy z jej odległością od wielu klastrów.
Zabezpieczenie przed utratą danych stanowią narzut tylko dla NTFS, FAT jest wolny od tego „balastu”. NTFS 5.1 w przeciwieństwie do NTFS 5.0 [Windows 2000] ma rozdzielone metadane i MFT. Przewaga „lekkiego” FAT32 powoli staje się iluzją. Łatwiej znaleźć potrzebne dane oddzielone od siebie w dwóch miejscach niż wyszukiwać w jednym zbiorczym miejscu, nieprawdaż?
Po raz kolejny można powtórzyć: im mniej plików, im większa partycja, tym bardziej traci FAT32. Większa tablica FAT, to więcej wpisów do przeskanowania w rozległej strukturze. Wpisy MFT są malutkie, gdyż odnoszą się do plików, nie do pojedynczych klastrów.
Teraz można jeszcze dodać zarzut o gorszym radzeniu sobie z większymi plikami przez FAT32. Plik, który ma 300 MB na partycji z klastrem 8 KB to 386.000 klastrów [tak, 386 tysięcy!]. Na szczęście dla FAT podczas odczytu nie zawsze trzeba ładować cały plik do pamięci, a jedynie jego fragmenty. Spadek wydajności jest odczuwalny. NTFS i jego kompaktowe informacje o pliku w rekordach MFT bez kłopoty radzą sobie z plikami o wielkości kilku GB. Im więcej wpisów w FAT, tym gorzej radzi sobie ten system plików.

 

Fragmentacja i inne cechy NTFS i FAT

Cóż nam z teorii, jeżeli nie ma ona zastosowania w trakcie użytkowania partycji. To co jest charakterystyczne dla każdego systemu pliku, to fragmentacja danych. Występuje one wcześniej lub później, jest mniejsza lub większa, ale występuje zawsze.
fragmentacja – podzielenie plików na kilka części, powoduje spadek wydajności dysku a przez to całego systemu.
NTFS często jest chwalony za lepszy algorytm chroniący partycję przed fragmentacją. Prawdziwe jest stwierdzenie, że po tym samym czasie użytkowania, partycja NTFS jest o wiele mniej pofragmentowana. Algorytm zapisuje nowe klastry tam, gdzie jest najwięcej ciągłej wolnej przestrzeni na partycji. FAT32 zapisuje nowe dane w pierwszy wolny klaster. Nie trzeba być ekspertem, aby stwierdzić, że to drugie rozwiązanie jest bardzo mało efektywne.
Większa fragmentacja FAT32 w połączeniu z konstrukcją tablicy FAT powoduje, że defragmentacja FAT32 jest kłopotliwa i trwa bardzo długo w porównaniu analogicznym procesem dla NTFS. Nie bez znaczenia jest też fakt, że defragmentatory FAT32/32x „są skonstruowane na jedno kopyto”. O ile NTFS 5.1 ma znakomity Perfect Disk 8, który jest bliski ideału, o tyle programy scalające pliki FAT32, to naprawdę nic szczególnego.
Inicjalizacja systemu – NTFS jest skonstruowany tak, że potrafi w pełni wykorzystać zalety prefetchingu i Layout Optimalization – dwóch mechanizmów, które sprawiają, że XP uruchamia się naprawdę szybko. FAT32 podczas startu systemu musi wczytać całą tablicę alokacji do pamięci, NFTS nie musi. Małe partycje FAT32 mają oczywiście niewielkie tablice FAT, co sprawia, że nie jest to znaczące obciążenie, jednak ono występuje.
Bezpieczeństwo zgromadzonych danych – FAT32 nie ma żadnych zabezpieczeń przed utratą zgromadzonych danych. Co prawda, tablica FAT32 ma zawsze swoją kopię, jednak jest to mało skuteczne zabezpieczenie. Obie tablice to typowa lustrzanka i nic poza tym. FAT32 nie wie, że część danych leży na bad sectorach i wynikają z tego powodu bardzo nieprzyjemne konsekwencje – z reguły utrata pliku. NTFS wyposażony w kilka funkcji jest niemal „niezatapialny”.

  • journaling – specjalny dziennik przeprowadzanych zmian podczas zapisu danych
  • transakcyjne przeprowadzanie operacji na dysku – albo zmienione zostaną wszystkie klastry, metadane i MFT, albo cała operacja zostanie cofnięta
  • automatyczne prze-mapowanie bad sectorów – nawet jeżeli system wykryje bad sector, użytkownik się o tym nie dowie. Ta informacja nie będzie mu potrzebna, ponieważ NTFS sam zajmie się problemem.

Nawet restart w czasie zapisywania pliku na dysku, to dla niego niewielkie wyzwanie.
Inne możliwości NTFS:

  • rozbudowane opcje zabezpieczeń – szyfrowanie plików i rozbudowane atrybuty zabezpieczeń. Dla użytkownika, który sam używa komputera, nie ma to większego znaczenia. Dla administratorów i każdego, kto dba o zabezpieczenie danych jest to ogromna zaleta.
  • limity quota – możliwość ograniczenia jednemu użytkownikowi określonej ilości miejsca na dysku
  • kompresja danych – według mnie średnio udana realizacja pomysłu skądinąd ciekawego. Kompresja systemowa ma kilka wad i ograniczeń, ale to zawsze jakaś nowość.
  • jeszcze inne możliwości – obsługa Posix, usługa indeksowania, twarde linki, obsługa sparse files… więcej

Jak widać NTFS jest o wiele bardziej rozbudowany niż FAT32. Ma mnóstwo nowych funkcji, z których często nie korzystamy. W ostatecznym rozrachunku pamiętajmy jednak, że każdy odczuje korzyści wynikające z działania mechanizmów zabezpieczających dane przed uszkodzeniem, a także mniejszej fragmentacji danych.

Runda szósta – parametry dysku, a systemy plików

Właśnie tak, szybkość dysku ma takie samo znaczenie jak odpowiednia ilość pamięci operacyjnej dla NTFS. Malkontenci twierdzą, że FAT zyskuje tyle samo na szybszym dysku. Mylą się!
O wydajności dysku możemy mówić w dwóch kategoriach. Wydajności jałowej i wydajności użytkowej.

  • wydajność jałowa [zwiększenie gęstości zapisu na talerzach dysku] – Załóżmy hipotetyczną sytuację – mamy dwa dyski 20 i 80 GB, oba mają po 5400 obrotów na minutę bufor 2 MB, po dwa talerze i identyczny czas dostępu. Na tych dyskach znajdują się dwie partycje o rozmiarze X położone na początku dysków. Wzrost wydajności [potencjalnej] dysku następuje, ponieważ w jednym obrocie więcej danych może zostać odczytanych przez głowicę.
    FAT zyskuje, ponieważ odległość między krańcami partycji zmniejsza się czterokrotnie. Jest to szczególnie ważne dla większych partycji. NTFS również zyskuje, dzięki ułożeniu metadanych w środku partycji, głowica jedynie lekko drga i nadal wykonuje mniej zamaszystych ruchów. FAT zyskuje więcej dzięki zwiększeniu gęstości zapisu, ale… tylko teoretycznie. Większa gęstość zapisu charakteryzuje większe dyski, na których partycje są z założenia o wiele większe. Cała masa innych ograniczeń pozostaje. Poza tym, gęstość upakowania danych nie stanowi o wydajności w nazbyt wielkim stopniu. Ma ona znaczenie podczas przetwarzania strumieni danych, nie podczas obsługiwania systemu.
  • wydajność użytkowa [czas dostępu i szybkość obrotowa talerzy] – Nasze dyski testowe mają po 40 GB, po dwa talerze i 2 MB cache. Pierwszy ma 7200 rpm i czas dostępu 12 ms, drugi 5400 i 14,5 ms. Gęstość upakowania danych ma duże znaczenie tylko podczas operacji na ciągach danych, czas dostępu i szybkość wirowania talerzy mają większy wpływ na wydajność w czasie codziennego użytkowania dysku. Decydują one o szybkości zapisywania i odczytywania poszczególnych fragmentów dysku/partycji.
    FAT32 zyskuje tylko na szybszym przeskakiwaniu głowicy między tablicą FAT, katalogami i klastrami plików. W stosunku do FAT32, NTFS zyska o wiele więcej na szybszym działaniu dysku. Ponieważ wykonuje więcej operacji podczas zapisy danych, szybszy dysk będzie niwelował straty wynikające z dodatkowych ruchów głowicą. Dla prostszego w konstrukcji FAT32 wzrost wydajności dysku nie jest tak widoczny. Dysk po prostu bierze na siebie bardziej skomplikowane procedury NTFS. Dzięki temu na szybkich dyskach, nawet na małych partycjach NTFS będzie zawsze szybszy od FAT32.
  • Gdzie leży ta granica? To bardzo dobre pytanie. [Microsoft oficjalnie zaleca stosowanie NTFS dla partycji powyżej 400 MB]. Powołuje się przy tym na argument spadku wydajności FAT wraz ze wzrostem wielkości partycji. Teoria mówi wprost, im szybszy dysk, tym bardziej NTFS się rozpędza, a FAT co najwyżej szybko spaceruje. Spotkałem się ze stwierdzeniem, że 8 lub 10 GB jest taką granicą [inna szkoła mówi o granicy rzędu 2-3 GB]. Branie pod uwagę takiej wartości jest o tyle uzasadnione, że partycje ponad 8.4 GB to już bardzo mało wydajny FAT32x. Ale zastanówmy się nad dokładniejszym określeniem, kiedy NTFS się rozpędza, a nawet kiedy zrównuje się z FAT. Nowe funkcje są nie do pogardzenia, nie wolno ich lekceważyć.
    W rozważaniu kwestii na podstawie wielkości dysku jest trochę racji. Większe dyski często mają lepsze czasy dostępu, więcej obrotów, większy cache i lepszą gęstość zapisu. Dyski 7200 rpm powinny sprawdzić się jako domek dla NTFS znakomicie. Dyski 5400 rpm również powinny dać sobie radę, zwłaszcza te o wielkości przekraczającej 8 GB, z założenia o wiele szybsze niż te 4 GB. Szkoda, że nie mogłem zrobić dokładnych testów :((. Na usprawiedliwienie mogę tylko dodać, że niewielu użytkowników pracuje nadal na dyskach mniejszych niż 10 GB, na większych NTFS 5.1 jest bezkonkurencyjny

Jaki system plików dla partycji Windows

Po pierwsze, wszystkie partycji powyżej 8 GB muszą być sformatowane jako NTFS. FAT32x to strasznie spaprane rozszerzenie.
Komputery nie wyposażone w min 64 MB Ram-u [minimalne wymagania Windows 2000 i XP] nie powinny pracować z NTFS, który pochłania nieco więcej zasobów.
Szybkość FAT32 spada wraz ze wzrostem liczby plików na partycji i fragmentacją, która jest zmorą FAT32. FAT32 gorzej radzi sobie z dużymi plikami. Jeżeli partycja ma służyć jako mały magazyn na mnóstwo plików, którymi często operujesz, daj sobie spokój z FAT32.
Jeżeli Twój dysk jest wystarczająco szybki, aby udźwignąć wszystkie nowe funkcje NTFS ~ 5400 rpm i 10 GB powierzchni nawet na małych partycjach prostszy FAT32 traci przewagę w zapisie danych i to NTFS staje się królem wydajności.
Partycja systemowa powinna być partycją NTFS. Same funkcje autodetekcji nieprawidłowości i samoczynne ich naprawiania powinno być powodem takiej decyzji, ale są jeszcze inne. System przede wszystkim dokonuje na niej odczytów, zdecydowanie mniej zapisuje. Spotkać można osoby, które twierdzą, że partycja NTFS spowalnia działanie pliku stronicowania, ponieważ system cały czas sprawdza prawa dostępu do przechowywanych w nim plików. Zapraszam te osoby do zapoznania się z dokumentacją techniczną, bo mówią i piszą głupoty. Po pierwsze, plik stronicowania nie ma swoich praw dostępu. Po drugie, pagefile.sys nie jest zbiorem plików, a 4 KB-owych stron, którymi system operuje swobodnie i traktuje je jako rozszerzenie pamięci operacyjnej. Nie ma mowy o jakimkolwiek sprawdzaniu uprawnień, ich tam po prostu nie ma!!!
Pozostaje kwestia małych partycji.
do 2 GB – na starych i wolnych dyskach o małej pojemności FA32 może się okazać szybszy. Coraz mniej osób używa takich dysków i tak małych partycji. Na nowych dyskach, nawet jeżeli chcemy mieć małą skrytkę lepiej wykorzystać NTFS. Zabezpieczy to nasze pliki przed uszkodzeniem, a poza tym NTFS 5.1 nie będzie już wyraźnie wolniejszy.
2 – 4 GB – kwestia najbardziej kontrowersyjna. Plików nie jest tak dużo i nie za bardzo można składować jakieś większe sztuki na tak małej partycji. Szanse FAT32 i NTFS są mniej więcej równe. Ale do czasu… FAT32 szybko się fragmentuje, NTFS jest kilkakrotnie bardziej odporny na to niekorzystne zjawisko. Z czasem uwidoczni się przewaga NTFS. Wybór jest zatem tylko jeden!
4 – 8 GB – na takiej partycji z reguły jest już czym zarządzać, pliki są albo większe, albo jest ich już naprawdę dużo. NTFS sprawdzi się zdecydowanie lepiej.

Kiedy rozpoczynała się kariera NTFS został on szybko skazany na banicję. Używali go jedynie posiadacze Windows NT 3.51 i 4.0. Z czasem pojawił się Windows 2000, XP i 2003. Dopóki dyski nie osiągnęły wystarczającej wydajności, a komputery odpowiedniej wielkości Ram-u FAT32 sprawował rządy namiestnicze wspierany przez obiegowe, nieuzasadnione wiedzą techniczną opinie. Od dawna było wiadomo, że o wiele nowocześniejszy, zdecydowanie bardziej elastyczny NTFS zasiądzie na tronie, który został dla niego przeznaczony.
Ten czas właśnie nadszedł!
Chwała zwycięzcy, vea victis – biada pokonanym.

Marcin Krzysztof Kluczek [mkk270]

 

Spis treści: Wybór systemu plików NTFS vs FAT32 dla Windows XP

Click to rate this post!
[Total: 4 Average: 4.5]

Marcin Kluczek