| 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) | 
Ani jeden ani drugi nie ma:
sum kontrolnych (bezp. danych)
opóźnionej alokacji (mniejsza fragmentacja, większa wydajność)
wsparcia dla jednoczesnego dostępu (!) (wydajność)
wielowątkowości (!)
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