Welche Linux-Dateisysteme unterstützen die Vorabzuweisung ganzer Dateien, um die Dateifragmentierung von Torrent/Gnutella zu reduzieren?

Welche Linux-Dateisysteme unterstützen die Vorabzuweisung ganzer Dateien, um die Dateifragmentierung von Torrent/Gnutella zu reduzieren?

So wie ich es verstehe, werden zumindest beim Linux-Ext3-Dateisystem beim Erstellen einer großen Datei die Blöcke erst dann tatsächlich auf der Festplatte zugewiesen, wenn Daten tatsächlich in diesen Teil der Datei geschrieben werden. Linux macht etwas Ähnliches, wenn Programme Speicher zuweisen, wobei die Zuweisungen verzögert erfolgen und Seiten erst dann tatsächlich zugewiesen werden, wenn Daten in sie geschrieben werden, aber das ist ein anderes Thema.

Wenn File-Sharing-Programme wie Bittorrent und Gnutella in Dateien schreiben, schreiben sie kleine Blöcke in zufällige Bereiche der Datei. Das Linux-Dateisystem platziert diese Teile der Datei überall auf der Festplatte, was zu einer starken Fragmentierung führt. Wenn auf diese Weise in mehrere Dateien gleichzeitig geschrieben wird, ist das Problem besonders schlimm. Selbst die Auswahl der Vorabzuordnung von Dateien im File-Sharing-Programm scheint nicht zu helfen. Dass diese Dateien nur mit 10 MB/s gelesen werden können, ist typisch für den Grad der daraus resultierenden Fragmentierung. Mit dem Dienstprogramm filefrag können Sie feststellen, wie viele Fragmente eine Datei hat. Eine Datei wie /var/log/messsages ist ein guter Ort zum Testen.

Bei ext3 und ich gehe davon aus, dass dies auch bei den meisten anderen Linux-Dateisystemen der Fall ist, müssen einige Daten tatsächlich in die gesamte Datei geschrieben werden, um von Anfang bis Ende eine vollständig zugewiesene Datei mit minimaler Fragmentierung zu haben.

Ich könnte versuchen, ein NTFS-Volume in Linux zu mounten, aber es muss einen besseren Weg geben! Es gibt ext4, btrfs, xfs, jfs, ReiserFS, ExFAT und sogar FAT32, die man in Betracht ziehen kann! Ordnet einer dieser Typen Dateien vorab zu oder verfügt er zumindest über eine API, die dies ermöglicht, ohne dass zuerst Daten in die gesamte Datei geschrieben werden müssen?

Antwort1

Im Jahr 2024 unterstützen die folgenden Linux-Dateisysteme die Dateivorzuweisung posix_fallocate():

Lokale Dateisysteme:

  • bcachefs (derzeit sehr experimentell, nicht für den allgemeinen Gebrauch empfohlen)
  • btrfs
  • ext4/ext3
  • F2FS
  • NTFS3 ( prealloczum Aktivieren der Funktion muss eine Mount-Option angegeben werden)
  • VFAT/FAT32
  • XFS

Netzwerkdateisysteme:

  • GFS2
  • NFS
  • OCFS2
  • CIFS/SAMBA

Wichtige Hinweise:

  • Die Anwendung muss diese Funktion nutzen
  • Die Vorzuweisung führt möglicherweise nicht zu optimalen Ergebnissen, wenn Ihr Dateisystem bereits [stark] fragmentiert ist und keine ausreichend großen Lücken vorhanden sind.
  • Vorausgesetzt, es ist genügend freier Speicherplatz vorhanden, um die Dateien richtig auszurichten:
    • Unter Linux kann nur XFS vollständig defragmentiert werden (d. h. Sie können auch freien Speicherplatz defragmentieren).
    • Unter Windows können Sie NTFS/VFAT natürlich vollständig defragmentieren.

verwandte Informationen