Porównanie systemów plików ext3 i NTFS.



ext3

NTFS


VFS, a pod nim konkretny FS (ext3)



NTFS – „zintegrowany” system plików


Wyraźny podział na dane i metadane.

Elegancka, abstrakcyjna koncepcja: wszystko jest plikiem. Nawet struktury z metadanymi są plikami. Jedynym wyjątkiem od tej reguły jest boot sektor.

Plik = dane + metadane

Plik jako zbiór atrybutów (nawet dane są traktowane jako atrybut – „data”). Przewidziane dodawanie nowych atrybutów przez niektóre aplikacje. Alternatywne strumienie danych (można w nich zapisywać np. metadane) – kolejne atrybuty, podobnie „data”.

Możliwość zdefiniowania zestawu funkcji działających na plikach i i-węzłach.

Reparse points – wprowadza podobne możliwości.

Montowanie.

Montowanie możliwe dzięki reparse points.

Wsparcie dla małych plików - fragmentacja bloków (ext3).

Wsparcie dla małych plików – małe pliki przechowywane w całości w MFT.

Obsługa plików „pustych” – np. utworzonych przez lseek. Nie zajmują przestrzeni dyskowej.

Obsługa plików rozrzedzonych od NTFS 5.0 („sparse files”) – zawierających dziury. Te dziury nie zajmują przestrzeni dyskowej.



Quota jest - od dawna.

Quota wprowadzona w NTFS 5.0 (ACL przechowywane w jednym z 16 specjalnych plików).

Stała liczba i-węzłów = ograniczona liczba plików w systemie. Aby zwiększyć liczbę i-węzłów, należy przeinstalować system plików.

MFT rośnie dynamicznie (B-drzewo i-węzłów, zwanych w NTFS „MFT entries”).

Ext3 w standardzie nie obsługuje niskopoziomowej kompresji. Podobną funkcjonalność można uzyskać korzystając z odpowiednich nakładek.

Obsługuje kompresję niskopoziomową (dla rozmiaru bloku do 4 kb – skąd takie ograniczenie?!?). Tylko co z tego – to jest niewydajne. W przyszłości będzie sprzętowa kompresja.


Kompresja poszczególnych plików, algorytm LZ77, jak w ZIP, od WinNT 3.51.

Ext3 w standardzie nie obsługuje niskopoziomowej kompresji. Podobną funkcjonalność można uzyskać korzystając z odpowiednich nakładek.

Nakładki na poziomie urządzeń blokowych.

Obsługuje kodowanie niskopoziomowe (można o tym myśleć jako o innym rodzaju kompresji), algorytmy oparte o klucz publiczny i prywatny.


Kodowanie poszczególnych plików, algorytmy: DESX (Win2000 +), 3DES (WinXP +), AES (WinXP SP1, Win 2003 +)

Kronikowanie w ext3 przy pomocy nakładki JBD (teoretycznie na dowolny system plików). 3 poziomy kronikowania: same metadane, albo metadane+dane (jedyny system umożliwiający kronikowanie danych). Dziennik jest zwykłym plikiem, ale można go umieścić na dowolnym urządzeniu blokowym.

Kronikowanie tylko metadanych. Dane mogą zostać stracone. Dziennik jest plikiem – nie można go umieścić na innym dysku dla zwiększenia wydajności.

Pliki: Jednostką danych są bloki. I-węzeł trzyma wskaźniki do pojedynczych bloków (bezpośrednie, pośrednie lub trójpośrednie). Nie zapobiega fragmentacji.

Pliki: Jednostką danych są „data-runs” (jest to nazwa Windowsowa, w innych systemach zwane są „extents”), czyli łańcuchy kolejnych bloków. I-węzeł trzyma wskaźniki do „data-runs” w B-drzewie. Teoretycznie „data-runs” zapobiegają fragmentacji. Na marginesie: MFT jest zwykłym plikiem, którego w dodatku nie można zdefragmentować.

Mapa bitowa zajętości bloków. Liniowy koszt wyszukiwania.

Mapa bitowa zajętości bloków. Liniowy koszt wyszukiwania.

Indeksowanie katalogów przy pomocy tablic haszujących.

Indeksowanie katalogów przy pomocy B-drzew.

Jest ACL (Access Control Lists) od wersji jądra 2.6.x. Dodatkowo ma oczywiście standardowe 9 bitowe uprawnienia.

Jest ACL. Brak interfejsu dla POSIX-owych uprawnień, chociaż można je wszystkie wyrazić przy pomocy ACL.

Nie ma wielu strumieni danych.

Wsparcie dla wielu strumieni danych. Plusy: dodatkowe metadane mogą być przechowywane jako niewidoczne dla użytkownika i większości aplikacji. Minusy: mogą tam się chować wirusy, ryzyko utraty danych przy kopiowaniu do innych systemów plików.

Nie ma w standardzie dziennika zmian plików.

Dziennik zmian plików (dokładniej: zmian w metadanych).

Inne: Bezpieczne usuwanie (przez zerowanie wskaźnika).

Inne: Auto-przenoszenie danych ze złych klastrów.

Tabela złych bloków.

B-drzewo złych bloków.

Ext3 jest obsługiwany przez praktycznie wszystkie Uniksowe systemy. Źródła oczywiście darmowe.

NTFS jest obsługiwany przez Windows NT i jego następców: 2000, XP i Server 2003. Szczegóły implementacji objęte są tajemnicą handlową.

Nie ma narzędzi do defragmentacji ext3, gdyż zakłada się, że fragmentacja nie jest znaczącym problemem dla ext3.

Są, ale nie potrafią zdefragmentować MFT.

Kompatybilny z popularnym ext2. Konwersja w obie strony bezbolesna. Pozwala na instalowanie ulepszeń bez konieczności kopiowania danych.

Konwersja tylko z FAT do NTFS. Generalnie: nie współpracuje z systemami nie-Windowsowymi, nie współpracuje nawet ze starymi Windowsami (≤ Win98)



Czego nie ma w tych systemach plików?


Ani jeden ani drugi nie ma:


Największa wada: oba ww. systemy plików są jednowątkowe. Mała wydajność dla DUŻYCH systemów plików.


NTFS ma kompresję – niepotrzebnie, gdyż zajmuje czas procesora. Poza tym, przewiduje się że w przyszłości kompresja danych będzie realizowana sprzętowo.


Maksymalny rozmiar dysku: w obu przypadkach wystarczająco duży, aby się nim nie przejmować.


Brak wsparcia dla jednoczesnego dostępu do systemu plików, jednowątkowość i obecność w różnych (co prawda nielicznych) miejscach tablic czy bitmap oraz stosowanie algorytmów liniowych czynią te systemy plików niepraktycznymi do zastosowań dla dużych systemów plików.


Dla komputerów domowych są w sam raz. :)


© Tomasz Socha