Dlaczego sprawdzanie dysku Ext4 jest o wiele szybsze niż NTFS?

12

Miałem dzisiaj sytuację, w której ponownie uruchomiłem komputer i powiedziałem, że muszę sprawdzić dysk pod kątem spójności. Około 10 minut później (przy ukończeniu „1%”) poddałem się i postanowiłem pozwolić mu działać, kiedy wracam do domu.

Dla porównania, mój komputer domowy używa Ext4 dla wszystkich partycji, a sprawdzanie dysku (które są uruchamiane raz w tygodniu) zajmuje tylko kilka sekund. Pamiętam, że przeczytałem, że szybkie sprawdzanie dysku było priorytetem, ale nie wiem, jak mogliby to zrobić.

Jak więc Ext4 sprawdza tak szybko sprawdzanie dysku? Czy jest jakiś ogromny przełom w zrobieniu tego po wyjściu NTFS (~ 10 lat temu)?

Uwaga: Dysk NTFS ma pojemność ~ 300 GB, a dysk Ext4 ~ 500 GB. Oba są prawie w połowie pełne.

Brendan Long
źródło
Nie miałem Windows chkdsk woluminu NTFS podczas uruchamiania od wydania 2008 R2. Nawet w klastrze CSV z wieloma węzłami uzyskującymi dostęp do tego samego woluminu NTFS blokującego dziesiątki tysięcy plików indeksu Lucene. To całkiem imponujące.
Brain2000
Chkdsk uruchomiony przy starcie prawdopodobnie oznacza, że ​​system operacyjny napotkał niespójność metadanych systemu plików, poważny problem. Program Chkdsk został prawdopodobnie wywołany z flagą „sprawdź każdy sektor dysku pod kątem wad i napraw, jeśli to możliwe”, co jest bardzo czasochłonną operacją. Rutynowe kontrole fsck na pewno tego nie robią.
kreemoweet

Odpowiedzi:

11

Istnieją dwa główne powody różnicy wydajności i dwa możliwe powody. Po pierwsze, główne powody:


Zwiększona wydajność ext4 w porównaniu z NTFS

Różne testy porównawcze wykazały, że rzeczywisty system plików ext4 może wykonywać wiele operacji odczytu i zapisu szybciej niż partycja NTFS. Zauważ, że chociaż testy te nie wskazują rzeczywistej wydajności, możemy ekstrapolować te wyniki i wykorzystać to jako jeden z powodów.

Jeśli chodzi o to, dlaczego ext4 faktycznie działa lepiej, to NTFS można przypisać wielu różnym przyczynom. Na przykład ext4 obsługuje bezpośrednio opóźnioną alokację. Znowu jednak wzrost wydajności zależy ściśle od używanego sprzętu (i może być całkowicie zanegowany w niektórych przypadkach).

Ograniczone wymagania dotyczące sprawdzania systemu plików

System plików ext4 jest również zdolny do szybszego sprawdzania systemu plików niż inne równoważne systemy plików kronikowania (np. NTFS). Według strony Wikipedii:

W ext4 nieprzydzielone grupy bloków i sekcje tabeli i-węzłów są oznaczone jako takie. Umożliwia to e2fsck całkowite pominięcie ich podczas sprawdzania i znacznie skraca czas sprawdzania, czy system plików o rozmiarze ext4 jest zbudowany do obsługi. Ta funkcja jest zaimplementowana w wersji 2.6.24 jądra Linux.


A teraz dwa możliwe powody:


Narzędzia do sprawdzania systemu plików

Niektóre aplikacje mogą uruchamiać różne procedury w systemach plików, aby faktycznie wykonać „sprawdzenie” kondycji. Można to łatwo zauważyć, jeśli używasz zestawu narzędzi fsck w systemie Linux w porównaniu z narzędziem chkdsk w systemie Windows. Aplikacje te są napisane w różnych systemach operacyjnych dla różnych systemów plików. Powodem, dla którego przedstawiłem to jako możliwą przyczynę, jest to, że wywołania systemowe niskiego poziomu w każdym systemie operacyjnym są inne, więc możesz nie być w stanie bezpośrednio porównać narzędzi za pomocą dwóch różnych systemów operacyjnych.

Fragmentacja dysku

Ten jest łatwy do zrozumienia, a także pomaga nam zrozumieć różnice między systemami plików. Chociaż wszystkie dane cyfrowe przechowywane w pliku są takie same, sposób ich przechowywania na dysku twardym różni się w zależności od systemu plików. Fragmentacja plików może oczywiście zwiększyć prędkość dostępu, przypisując większą różnicę prędkości.

Przełom
źródło
1
To, co mnie dezorientuje, to to, że początkowo wydaje się, że twój drugi punkt miałby największy efekt, ale moja partycja Ext4 ma tyle samo zajętego miejsca, co moja partycja NTFS - zamiast być znacznie szybszym, powinny być o tej samej prędkości. Wydaje mi się prawdopodobne, że ulepszenia wydajności Ext4 przyspieszają również sprawdzanie, ale Ext4 nie jest tak dużo szybszy niż NTFS (z pewnością nie kilka rzędów różnicy wielkości, które widzę podczas kontroli systemu plików).
Brendan Long
Nie jestem pewien, co masz na myśli ... Ogólnie rzecz biorąc, zawartość pliku zajmuje znacznie więcej miejsca niż indeksy w większości nowoczesnych systemów plików (łącznie z ext4 i NTFS). Systemy plików po prostu przechowują zawartość inaczej, co (jak już wspomniałem, w niektórych przypadkach) pozwala na wyższą wydajność.
Przełom
To, co mnie dezorientuje, to fakt, że faktycznie sprawdzona część powinna mieć mniej więcej ten sam rozmiar na obu (ponieważ moja partycja Ext4 ma mniej więcej tyle miejsca, ile partycja NTFS ma w sumie), ale partycja Ext4 sprawdza w kilka sekund, podczas gdy NTFS jeden zajmuje godziny.
Brendan Long
1
@Brendan Długo, jeśli spojrzysz na pierwszy link w mojej odpowiedzi, niektórzy zauważyli, że odczyt plików jest w rzeczywistości szybszy na dysku używającym ext4 w porównaniu z NTFS. Mimo że dane cyfrowe przechowywane w pliku są takie same , nie są przechowywane w ten sam sposób na dysku. Jeśli jednak powiesz, że NTFS zajmuje kilka godzin , być może weryfikujesz każdy sektor na dysku, więc możesz pomijać niektóre alternatywne kontrole podczas sprawdzania systemu plików ext4 (wyjaśniając dużą różnicę prędkości). Dużo szybciej jest zweryfikować każdy plik niż całą powierzchnię dysku.
Przełom
1
Ta odpowiedź to tylko lista punktów rozmowy na temat ext4 vs NTFS, bez znaczenia dla pytania. Kronikowane systemy plików nigdy nie muszą być sprawdzane podczas zwykłego działania. Automatyczna kontrola oznacza, że ​​coś jest naprawdę nie tak. Nie wiedząc, co jest nie tak, nie wiadomo, dlaczego sprawdzanie jest tak wolne. Porównanie go z cotygodniowymi kontrolami ext4 polega na porównaniu jabłek i pomarańczy.
benrg
3

Z mojego zrozumienia, ext4 próbuje zapisywać dane do największej ciągłej luki w otwartych i-węzłach, gdzie obecnie nie ma żadnych danych. Znacząco zmniejsza to opóźnienie, gdy pliki te muszą być odczytane, ponieważ w większości przypadków cała zawartość pojedynczego pliku leżałaby w większości na jednej ciągłej ścieżce, więc głowa napędów miałaby mniej wysiłku przy wyszukiwaniu każdego bloku zawierającego dane co stanowi ten jeden plik.

To (ext4) wciąż może ulec fragmentacji, ale o wiele mniej i niekoniecznie w sposób, który wpływa na wydajność odczytu / zapisu poważnie, jak w przypadku NTFS. W NTFS dane są zapisywane w pierwszych otwartych blokach na ścieżce głowy.

Więc gdziekolwiek leży głowa i tam są otwarte bloki, zapisuje tyle danych, ile może zmieścić, a następnie zapisuje gdziekolwiek wyląduje gdzie indziej na dysku, gdy głowa musi się przenieść, powiedzmy, do innej części dysku, aby uzyskać dostęp do innego pliku, który musi zostać otwarty w programie, który właśnie załadowałeś podczas zapisywania tego innego pliku.
Oznacza to, że jeśli plik jest duży, prawdopodobnie zostanie rozłożony na bloki oddzielone od siebie na osobnych ścieżkach i dlatego defragmentacja jest często potrzebna dla NTFS.

Ponadto, dlaczego serwery na ogół go nie używają, ponieważ na serwerze dzieje się coraz więcej operacji we / wy, na których dane są ciągle zapisywane i odczytywane z dysku 24/7.

Również nie jestem pewien, ale jeśli chkdsksprawdzi integralność każdego pliku (w co wierzę i to fsckrobię), będzie on również wolniejszy w porównaniu z powodu tego, co właśnie opisałem na temat fragmentowania w NTFS.

Jesse James
źródło
Ani NTFS chkdsk, ani ext4 fsck nie czytają danych pliku. Byłoby to bezcelowe, ponieważ nie ma sumy kontrolnej ani żadnego innego sposobu weryfikacji jej integralności.
benrg
1

System Windows nigdy nie powinien sprawdzać woluminu NTFS podczas uruchamiania. Jeśli tak, coś poszło nie tak - coś znacznie gorszego niż zwykły BSOD lub awaria zasilania. Istnieje znaczna szansa, że ​​niektóre dane zostały również uszkodzone przez jakiekolwiek uszkodzenie metadanych systemu plików. Kontrola dysku nie może tego wykryć; jego jedynym celem jest uniknięcie dalszej korupcji.

KB2854570 wymienia niektóre powody, dla których może się to zdarzyć. Jednym z nich jest hibernacja systemu operacyjnego z zamontowanym woluminem, modyfikowanie zawartości woluminu, a następnie wznawianie z hibernacji z podłączonym woluminem (ponownie). Jeśli to zrobisz, istnieje wysokie prawdopodobieństwo cichego uszkodzenia danych.

Nie wiem, dlaczego twój system plików ext4 sprawdzał się raz w tygodniu, ale prawdopodobnie (prawdopodobnie) nie było to spowodowane porównywalnym kryzysem, który pojawiał się co tydzień. Prawdopodobnie robił to rutynowo, a nie pełna kontrola spójności.

benrg
źródło
1
Przez długi czas automatyczne sprawdzanie fsck przy każdym montażu N-tego systemu plików było standardem w większości dystrybucji Linuksa. Obecnie ta opcja jest zazwyczaj domyślnie wyłączona.
kreemoweet
0

Ponieważ technologie UNIX / Linux Ext2 / Ext3 / Ext4 nakładają znacznie ciaśniejszy pasek magnetyczny bitów danych w porównaniu z NTFS układającymi bity magnetyczne, podobnie jak spray farby. NTFS potrzebuje regularnego „Defrag”, gdzie jako Ext2 / 3/4 rzadko potrzebuje defrag. To takie proste. Jeśli potrzebujesz czegoś poza dyskiem UNIX / Linux - system operacyjny dokładnie wie, gdzie odbierać sterty mocno namagnesowanych bitów danych, podczas gdy NTFS musi przesuwać się po dyskach, aby je odebrać. System dziennika NTFS działa bardzo dobrze - ale głowy grają w ponga, aby podnieść leżące bity magnetyczne. Podwójny system plików FAT działa dobrze - ale kiedy musisz biegać przez całe piekielne akry, aby zebrać buszle pojedynczych bitów - jest to znacznie szybsze, jeśli nie musisz i możesz zebrać całe ciągi bitów.

BlueAdept
źródło