Warum ist Linux 30x beim Kopieren von Dateien schneller als Windows 10?

20

Ich habe 20,3 Gig von Dateien und Ordnern mit mehr als 100.000 Elementen. Ich habe alle diese Dateien in einem Verzeichnis von Windows 10 dupliziert und es dauerte für mich unerträgliche 3 Stunden, sie zu kopieren. Erledigt.

Neulich habe ich unter Linux Fedora 24 gebootet, den gleichen Ordner und die gleiche Datei kopiert! Es dauerte nur 5 Minuten, um es am selben Ort, aber in einem anderen Verzeichnis zu duplizieren.

Warum ist Linux so schnell? Und Windows ist akribisch langsam?

Es gibt hier eine ähnliche Frage

Ist der (Ubuntu) Linux-Dateikopieralgorithmus besser als Windows 7?

Die akzeptierte Antwort fehlt jedoch.

Jones G
quelle
Sie verwenden weder "Windows" noch "Linux" zum Kopieren von Dateien, sondern verwenden ein bestimmtes Programm, das unter jedem dieser Betriebssysteme ausgeführt wird. Programme unterscheiden sich stark in den verwendeten Methoden und den Kompromissen, die sie eingehen. Welche hast du benutzt? Und wie?
Kreemoweet
5
@kreemoweet: Betriebssysteme auch - Windows NTFS ist dafür bekannt, dass es im Vergleich zu den meisten anderen Dateisystemen sehr schlecht mit vielen kleinen Dateien umgehen kann.
user1686
2
Und nette Ablehnung von einem Windows-Fan, oder? Sie sehen, das Kopieren von Dateien, obwohl simple viele Anwendungen hat, die von der Datensicherung im Geschäft bis zu wissenschaftlichen Studien reichen. In CERN müssen beispielsweise Petabyte an Daten verarbeitet werden, langsames Kopieren ist nicht akzeptabel.
Jones G
Über denselben Link - überprüfen Sie die zweite Antwort von unten. Linux speichert alle Dateien im verfügbaren Arbeitsspeicher und schreibt sie auf die Festplatte, wenn sie können - daher sieht es schneller aus (da es erst einmal lesen und schreiben muss, wenn sie können).
Darius
@DominicGuana Dateisysteme tragen ihren Teil dazu bei (ext3 / ext4 können Blöcke von 100 MB gleichzeitig zuweisen). Wussten Sie, dass Antivirus unter Windows auch eine (verlangsamende) Rolle spielen kann? Übrigens für ähnliche Probleme mit dem SLAC-Datenerfassungsfluss (nachdem der Auslöser der ersten Ebene zu viele Daten enthielt) haben wir gelernt, parallel auf die Festplatte zu schreiben ...
Hastur,

Antworten:

24

Die Grundlagen gliedern sich in einige Schlüsselkomponenten des Gesamtsystems: das UI-Element (der grafische Teil), den Kernel selbst (was mit der Hardware kommuniziert) und das Format, in dem die Daten gespeichert werden (dh das Dateisystem) ).

Das Zurückgehen NTFSist seit einiger Zeit das De-Facto für Windows, während das De-Facto für die wichtigsten Linux-Varianten das extDateisystem ist. Das NTFS-Dateisystem selbst hat sich seit Windows XP (2001) nicht geändert. Viele der vorhandenen Funktionen (z. B. Verkleinern / Heilen von Partitionen, transaktionales NTFS usw.) sind Funktionen des Betriebssystems (Windows Vista / 7/8/10). und nicht NTFS selbst. Das extDateisystem hatte seine letzte stabile Hauptversion ( ext4) im Jahr 2008. Da das Dateisystem selbst bestimmt, wie und wo auf Dateien zugegriffen wird, besteht ext4die Möglichkeit, dass Sie eine Verbesserung der Geschwindigkeit gegenüber NTFS feststellen. Beachten Sie jedoch, dass Sie bei der Verwendung ext2möglicherweise feststellen, dass die Geschwindigkeit vergleichbar ist.

Es könnte auch sein, dass eine Partition in kleineren Blöcken als die andere formatiert ist. Die Standardeinstellung für die meisten Systeme ist eine 4096 byte 1 , 2 Clustergröße, aber wenn Sie Ihre formatierte ext4Partition etwas wie 16k 3 dann jeder Lese auf dem ext4System würde die Daten gegenüber dem NTFS - System erhalten 4x (das könnte die Dateien bedeuten 4x je nachdem , was gespeichert wo / wie und wie groß usw.). Die Fragmentierung der Dateien kann auch eine Rolle bei der Geschwindigkeit spielen. NTFS behandelt die Dateifragmentierung ganz anders als das extDateisystem. Bei mehr als 100.000 Dateien besteht eine gute Chance, dass eine gewisse Fragmentierung auftritt.

Die nächste Komponente ist der Kernel selbst (nicht die Benutzeroberfläche, sondern der Code, der tatsächlich mit der Hardware kommuniziert, das wahre Betriebssystem). Hier gibt es ehrlich gesagt keinen großen Unterschied. Beide Kernel können so konfiguriert werden, dass sie bestimmte Aufgaben ausführen, z. B. das Zwischenspeichern / Puffern von Datenträgern, um das Lesen und das wahrgenommene Schreiben zu beschleunigen. Zum Beispiel kann das Cachen die Geschwindigkeit des Kopierens / Speicherns massiv erhöhen. Wenn Sie jedoch während des Cacheschreibens die Energie verlieren (oder das USB-Laufwerk herausziehen), verlieren Sie alle Daten, die nicht tatsächlich auf die Festplatte geschrieben wurden, und möglicherweise sogar beschädigte Daten, die bereits geschrieben wurden auf die Festplatte.

Kopieren Sie beispielsweise viele Dateien auf ein FAT-formatiertes USB-Laufwerk in Windows und Linux. Unter Windows kann es 10 Minuten dauern, unter Linux 10 Sekunden. Entfernen Sie das Laufwerk sofort nach dem Kopieren der Dateien sicher, indem Sie es auswerfen. Unter Windows wird es sofort aus dem System entfernt und Sie können das Laufwerk aus dem USB-Anschluss entfernen. Unter Linux kann es 10 Minuten dauern, bis Sie das Laufwerk tatsächlich entfernen können. Dies liegt an der Zwischenspeicherung (dh Linux hat die Dateien in den Arbeitsspeicher geschrieben und sie dann im Hintergrund auf die Festplatte geschrieben, während das zwischenspeicherlose Windows die Dateien sofort auf die Festplatte schrieb).

Das letzte ist die Benutzeroberfläche (der grafische Teil, mit dem der Benutzer interagiert). Die Benutzeroberfläche ist möglicherweise ein hübsches Fenster mit einigen coolen Diagrammen und hübschen Balken, die mir eine allgemeine Vorstellung davon geben, wie viele Dateien kopiert werden und wie groß alles ist und wie lange es dauern könnte. die UI könnte auch eine Konsole sein, die nicht gedruckt werden alle Informationen außer wenn es fertig ist . Wenn die Benutzeroberfläche zuerst alle Ordner und Dateien durchsuchen muss, um zu bestimmen, wie viele Dateien es gibt, sowie deren Größe und eine ungefähre Schätzung, bevor mit dem Kopieren begonnen werden kann, kann der Kopiervorgang aufgrund der erforderlichen Benutzeroberfläche länger dauern mach das. Auch dies gilt unabhängig vom Betriebssystem.

Sie können einige Dinge so konfigurieren, dass sie gleich sind (wie das Zwischenspeichern von Festplatten oder die Clustergröße), aber realistisch gesehen kommt es einfach darauf an, wie alle Teile miteinander verbunden sind, damit das System funktioniert, und genauer gesagt, wie oft diese Codeteile tatsächlich aktualisiert werden. Das Windows-Betriebssystem hat seit Windows XP einen langen Weg zurückgelegt, aber das Festplattensubsystem ist ein Bereich, in dem das Betriebssystem seit vielen Jahren nicht mehr über alle Versionen hinweg überarbeitet wurde (im Vergleich zum Linux-Ökosystem , in dem es neue FS zu geben scheint) oder Verbesserung eher häufig).

Ich hoffe, das schafft Klarheit.

txtechhelp
quelle
Schreckliche Antwort meiner Meinung nach und abgestimmt. Sie führen Unterschiede ein, bei denen es keine gibt. Niemand fragte, wie unterschiedlich partitionierte Laufwerke funktionieren. Natürlich dreht sich die Frage um das Gebot "Alles andere ist gleich". Ich kann eine fs für ein 8-nvme-RAID0 wählen, wie ich will, mit einer nativen Lesegeschwindigkeit von über 16 Gigabyte pro Sekunde, und dennoch erreicht eine Windows-Dateikopie jederzeit eine maximale Größe von 1,4 bis 1,5 Gigabyte. Hat nichts mit Caching, fs, Partitionen zu tun, sondern eher mit Einschränkungen des Windows-Betriebssystems.
Matthias Wolf
@Matt In welchem Dateisystem formatieren Sie das RAID-Array? Wenn es sich um NTFS handelt, könnte dies die Verlangsamung erklären. Wenn Sie jedoch weitere Informationen zur Verfügung stellen müssen, können Sie eine relevante Antwort hinzufügen, insbesondere, wenn Sie Quellcode (und keinen Assembly-Dump) für das Windows-Kernbetriebssystem haben direkt zu erklären, warum die besagte Verlangsamung auftritt (das würde mich jedenfalls besonders interessieren!).
txtechhelp
Ich benutze ntfs, welche bessere Option gibt es als fs auf einem Windows-Server?
Matthias Wolf
Ich habe mich mit MSFT in Verbindung gesetzt, viele Diskussionen geführt und im Laufe der Jahre viele Dinge ausprobiert und nie mehr als 1,5 GB / s erreicht, obwohl auf jedem Computer 100-Gbit-Netzwerkkarten vorhanden sind und der gesamte andere Datenverkehr pro Mellanox-Profilerstellungstool zeigt, dass die Verbindungen einwandfrei funktionieren Durchsatz von 94-95 Gbit / s. Keine Verlangsamung zwischen Linux-Maschinen, aber sobald eine Windows-OS-Maschine beteiligt ist, sehe ich diese Engpässe
Matthias Wolf
Ich spreche von Single-File-Übertragungen, alle Single-Threaded. Es gibt keinen Hardware-Engpass, sondern nur ein Betriebssystem.
Matthias Wolf