Die Dateisystemfamilie ext2 / ext3 / ext4 muss nicht defragmentiert werden.
Welches zugrunde liegende Design hilft diesem Dateisystem, nicht fragmentiert zu werden?
Die Dateisystemfamilie ext2 / ext3 / ext4 muss nicht defragmentiert werden.
Welches zugrunde liegende Design hilft diesem Dateisystem, nicht fragmentiert zu werden?
Antworten:
Eine Möglichkeit, wie das ext4-Dateisystem die Fragmentierung in Schach hält, ist der Prozess der verzögerten Zuweisung (Standardzuweisungsmodus von ext4).
Bei einer verzögerten Zuordnung wird die Zuordnung neu geschriebener Dateidatenblöcke zu Plattenblöcken im Dateisystem bis zur Rückschreibzeit verschoben.
Dies funktioniert, indem die meisten Blöcke gleichzeitig für eine Datei zugewiesen werden, wenn die Gesamtzahl der Blöcke (oder zumindest ein Baseballstadion) in jeder Datei bekannt ist. Auf diese Weise kann der Blockzuweiser (der mballoc
in der Antwort von MMK erwähnte) besser einen Bereich mit ausreichend großem freiem Speicherplatz für die Datei finden.
Im ext3-Dateisystem gibt es für jeden Block einen Blockzuweiser für die Festplatte. Daher ist es durchaus möglich, dass eine Fragmentierung auftritt.
Im ext4-Dateisystem gibt es jedoch einen Multi-Block-Allokator, der das Schreiben von Blöcken auf die Festplatte verzögern kann, sodass mehrere Blöcke gleichzeitig in einem einzelnen Block der Festplatte zugeordnet werden können, um ein zusammenhängendes Schreiben zu ermöglichen - und so weiter. Es ist weniger wahrscheinlich, dass eine Fragmentierung auftreten kann (es ist immer noch möglich, nur weniger wahrscheinlich).
Zumindest für Ext2 (und Ext3, obwohl ich mir weniger sicher bin) gibt es nichts im Format / in der Struktur auf der Festplatte, was eine Defragmentierung verhindern würde.
Der Mangel an Defragmentierungsbedarf liegt auf der Implementierungsebene, die von Betriebssystem zu Betriebssystem unterschiedlich sein wird. Das heißt, abhängig von der Implementierung kann eine Datei in Ext2 fragmentiert sein oder nicht.
Wenn eine Fragmentierung vermieden wird, liegt dies wahrscheinlich an der verzögerten Zuweisung physischer Blöcke. Das heißt, auf einer bestimmten Ebene der Implementierung speichert das Dateisystem die Daten zwischen (und greift über die logische Blocknummer darauf zu), bis sie auf die Festplatte geschrieben / festgeschrieben werden. Wenn die Daten endgültig auf die Festplatte geschrieben werden, müssen physische Blöcke zugewiesen werden. Der Zuweisungsalgorithmus kann eine Anzahl zusammenhängender verfügbarer physikalischer Blöcke für die Daten zuweisen (oder auch nicht).
Hoffe das hilft.