Warum ist eine Ext4-Festplattenprüfung so viel schneller als NTFS?

12

Ich hatte heute eine Situation, in der ich meinen Computer neu gestartet habe und es hieß, ich müsse die Festplatte auf Konsistenz überprüfen. Ungefähr 10 Minuten später (bei "1%" abgeschlossen) gab ich auf und beschloss, es laufen zu lassen, wenn ich nach Hause gehe.

Zum Vergleich: Mein Heimcomputer verwendet Ext4 für alle Partitionen, und die Festplattenprüfungen (die etwa einmal pro Woche ausgeführt werden) dauern nur einige Sekunden. Ich erinnere mich, dass ich gelesen habe, dass schnelle Festplattenprüfungen Priorität hatten, aber ich weiß nicht, wie sie das tun könnten.

Wie führt Ext4 so schnell Festplattenprüfungen durch? Gibt es einen großen Durchbruch, nachdem NTFS herauskam (vor ~ 10 Jahren)?

Hinweis: Die NTFS-Festplatte hat ~ 300 GB und die Ext4-Festplatte ~ 500 GB. Beide sind ungefähr halb voll.

Brendan Long
quelle
Ich habe Windows chkdsk seit der Veröffentlichung von 2008 R2 kein NTFS-Volume beim Booten gehabt. Selbst in einem CSV-Cluster mit mehreren Knoten, die auf dasselbe NTFS-Volume zugreifen und Zehntausende von Lucene-Indexdateien sperren. Es ist ziemlich beeindruckend.
Brain2000

Antworten:

11

Es gibt zwei Hauptgründe für den Leistungsunterschied und zwei mögliche Gründe. Erstens die Hauptgründe:


Erhöhte Leistung von ext4 gegenüber NTFS

Verschiedene Benchmarks haben ergeben, dass das eigentliche ext4-Dateisystem eine Vielzahl von Lese- / Schreibvorgängen schneller als eine NTFS-Partition ausführen kann . Beachten Sie, dass diese Tests zwar keinen Hinweis auf die tatsächliche Leistung geben, wir diese Ergebnisse jedoch extrapolieren und als einen Grund verwenden können.

Warum ext4 tatsächlich eine bessere Leistung als NTFS erbringt, kann auf eine Vielzahl von Gründen zurückgeführt werden. Beispielsweise unterstützt ext4 die verzögerte Zuweisung direkt. Auch hier hängen die Leistungssteigerungen streng von der verwendeten Hardware ab (und können in bestimmten Fällen vollständig negiert werden).

Reduzierte Anforderungen an die Überprüfung des Dateisystems

Das ext4-Dateisystem kann auch schnellere Dateisystemprüfungen durchführen als andere gleichwertige Journal-Dateisysteme (z. B. NTFS). Laut der Wikipedia-Seite:

In ext4 werden nicht zugewiesene Blockgruppen und Abschnitte der Inode-Tabelle als solche markiert. Auf diese Weise kann e2fsck sie bei einer Prüfung vollständig überspringen und die Zeit für die Prüfung eines Dateisystems der Größe ext4, das unterstützt wird, erheblich verkürzen. Diese Funktion ist in Version 2.6.24 des Linux-Kernels implementiert.


Und jetzt die zwei möglichen Gründe:


Dienstprogramme zur Überprüfung des Dateisystems selbst

Bestimmte Anwendungen führen möglicherweise unterschiedliche Routinen auf Dateisystemen aus, um die Integritätsprüfung tatsächlich durchzuführen. Dies ist leicht zu erkennen, wenn Sie das unter Linux festgelegte Dienstprogramm fsck im Vergleich zum Dienstprogramm chkdsk unter Windows verwenden. Diese Anwendungen sind auf verschiedenen Betriebssystemen für verschiedene Dateisysteme geschrieben. Der Grund, warum ich dies als möglichen Grund anspreche, ist, dass die Systemaufrufe auf niedriger Ebene in jedem Betriebssystem unterschiedlich sind. Daher können Sie die Dienstprogramme möglicherweise nicht direkt mit zwei verschiedenen Betriebssystemen vergleichen.

Festplattenfragmentierung

Dieser ist leicht zu verstehen und hilft uns auch, die Unterschiede zwischen Dateisystemen zu verstehen. Während alle digitalen Daten in einer Datei gleich sind, unterscheidet sich die Art und Weise , wie sie auf der Festplatte gespeichert werden, von Dateisystem zu Dateisystem erheblich. Die Dateifragmentierung kann offensichtlich die Zugriffsgeschwindigkeit erhöhen, was auf einen größeren Geschwindigkeitsunterschied zurückzuführen ist.

Durchbruch
quelle
1
Was mich verwirrt ist, dass Ihr zweiter Punkt zunächst den größten Effekt zu haben scheint, aber meine Ext4-Partition hat ungefähr so ​​viel Speicherplatz wie meine NTFS-Partition insgesamt - anstatt viel schneller zu sein, sollten sie ungefähr die gleiche Geschwindigkeit haben. Ich denke , es ist wahrscheinlich , dass Ext4 der Performance - Verbesserungen machen es schneller als auch zu überprüfen, aber Ext4 ist nicht , dass viel schneller als NTFS (schon gar nicht die mehr Größenordnung Unterschied , den ich in Dateisystem überprüft sehen).
Brendan Long
Ich bin mir nicht sicher, was Sie meinen ... Im Allgemeinen nimmt der Dateiinhalt viel mehr Platz ein als die Indizes der meisten modernen Dateisysteme (einschließlich ext4 und NTFS). Die Dateisysteme speichern den Inhalt nur unterschiedlich, was (wie bereits erwähnt, in einigen Fällen) eine höhere Leistung ermöglicht.
Durchbruch
Was mich verwirrt ist, dass der tatsächlich überprüfte Teil auf beiden ungefähr gleich groß sein sollte (da meine Ext4-Partition ungefähr so ​​viel Speicherplatz hat wie die NTFS-Partition insgesamt), aber die Ext4-Partition ihre Prüfung in Sekunden durchführt, während die NTFS man braucht Stunden.
Brendan Long
1
@Brendan Lange, wenn Sie sich den ersten Link in meiner Antwort ansehen, haben einige Leute festgestellt, dass das Lesen von Dateien mit einem Laufwerk mit ext4 im Vergleich zu NTFS tatsächlich schneller ist. Obwohl die in der Datei enthaltenen digitalen Daten identisch sind , werden sie nicht auf dieselbe Weise auf der Festplatte gespeichert. Wenn Sie jedoch sagen, dass das NTFS Stunden dauert , überprüfen Sie möglicherweise jeden Sektor auf dem Laufwerk, sodass Sie möglicherweise einige alternative Überprüfungen in der ext4-Dateisystemprüfung überspringen (was den großen Geschwindigkeitsunterschied erklärt). Es ist viel schneller, jede Datei zu überprüfen, als die gesamte Festplattenoberfläche.
Durchbruch
Diese Antwort ist nur eine Liste von ext4- und NTFS-Gesprächsthemen ohne Relevanz für die Frage. Journalisierte Dateisysteme müssen im normalen Betrieb niemals überprüft werden. Eine automatische Überprüfung bedeutet, dass etwas ernsthaft falsch ist. Ohne zu wissen, was falsch ist, ist es unmöglich zu wissen, warum die Überprüfung so langsam ist. Wenn man es mit den wöchentlichen Kontrollen von ext4 vergleicht, vergleicht man Äpfel und Orangen.
Benrg
3

Nach meinem Verständnis versucht ext4, Daten in die größte kontinuierliche Lücke offener Inodes zu schreiben, in der sich derzeit keine Daten befinden. Dies verringert die Latenz erheblich, wenn diese Dateien gelesen werden müssen, da der gesamte Inhalt einer einzelnen Datei größtenteils auf einer einzigen fortlaufenden Spur liegt, sodass der Laufwerkskopf weniger nach etwas suchen muss, wenn er jeden Block findet, der die Daten enthält das macht diese eine Datei aus.

Es (ext4) kann immer noch fragmentiert werden, aber viel weniger und nicht unbedingt so, dass die Lese- / Schreibleistung wie bei NTFS stark beeinträchtigt wird. Unter NTFS werden Daten in die ersten offenen Blöcke im Pfad des Kopfes geschrieben.

Wo immer der Kopf liegt und offene Blöcke vorhanden sind, schreibt er so viele dieser Daten, wie passen, und schreibt dann überall dort, wo er an anderer Stelle auf der Festplatte landet, wenn der Kopf beispielsweise in einen anderen Teil der Festplatte verschoben werden muss, um auf eine andere Datei zuzugreifen muss in einem Programm geöffnet werden, das Sie gerade geladen haben, während diese andere Datei noch geschrieben wurde.
Dies bedeutet, dass die Datei, wenn sie groß ist, wahrscheinlich in voneinander getrennten Blöcken auf separaten Spuren verteilt ist. Daher ist für NTFS häufig eine Defragmentierung erforderlich.

Auch, warum Server es im Allgemeinen nicht verwenden, da auf einem Server, auf dem ständig rund um die Uhr Daten geschrieben und gelesen werden, schwerere E / A-Vorgänge ausgeführt werden.

Ich bin mir auch nicht sicher, aber wenn ich chkdskdie Integrität jeder Datei überprüfe (was ich sowohl glaube als auch fscktue), wäre sie im Vergleich zu dem, was ich gerade über das Fragmentieren unter NTFS beschrieben habe, auch langsamer.

Jesse James
quelle
Weder NTFS chkdsk noch ext4 fsck lesen Dateidaten. Es wäre sinnlos, da es keine Prüfsumme oder eine andere Möglichkeit gibt, ihre Integrität zu überprüfen.
Benrg
0

Windows sollte beim Start niemals ein NTFS-Volume überprüfen müssen. Wenn dies der Fall ist, ist etwas ernsthaft schiefgegangen - etwas viel Schlimmeres als ein bloßer BSOD oder ein Stromausfall. Es besteht eine erhebliche Wahrscheinlichkeit, dass einige Ihrer Daten auch durch die beschädigten Metadaten des Dateisystems beschädigt wurden. Die Festplattenprüfung kann das nicht erkennen. Ihr einziger Zweck ist es, weitere Korruption zu vermeiden.

KB2854570 listet einige Gründe auf, aus denen dies passieren kann. Eine Möglichkeit besteht darin, ein Betriebssystem mit einem gemounteten Volume in den Ruhezustand zu versetzen, den Inhalt des Volumes zu ändern und dann den Ruhezustand mit dem (erneut) angehängten Volume fortzusetzen. Wenn Sie dies tun, besteht eine hohe Wahrscheinlichkeit einer stillen Datenbeschädigung.

Ich weiß nicht, warum sich Ihr ext4-Dateisystem einmal pro Woche selbst überprüft hat, aber es war wahrscheinlich (hoffentlich) nicht auf eine vergleichbare Krise zurückzuführen, die sich wöchentlich wiederholte. Es handelte sich wahrscheinlich nur um eine routinemäßige Überprüfung der geistigen Gesundheit und nicht um eine vollständige Konsistenzprüfung.

benrg
quelle