Warum ist das Löschen von Dateien in Ubuntu langsam?

Warum ist das Löschen von Dateien in Ubuntu langsam?

Ich habe in einem Stackoveflow-Beitrag gelesen, dass unter Linux eine Datei nicht wirklich gelöscht wird, wenn wir sie löschen. Nur der Link aus der Inode-Tabelle zu dieser Datei wird entfernt. Wenn das der Fall ist, warum ist das Löschen dann kein zeitkonstanter Vorgang?

Ich habe auch ein Experiment versucht: Ich habe einen Ordner mit 1500 Bildern erstellt und ein Tar-Objekt dieser Bilder erstellt. Sowohl das Verzeichnis als auch die Tar-Datei haben dieselbe Größe. Die Zeitabläufe zum Löschen des Tar-Objekts und des Verzeichnisses mit 1500 Bildern sind wie folgt

TAR-Datei löschen time rm test.tar:


real    0m0.024s
user    0m0.001s
sys     0m0.024s

Verzeichnis löschen:time rm -r test


real    0m0.219s
user    0m0.024s
sys     0m0.191s

Nach meinem Verständnis ist dieser Zeitunterschied darauf zurückzuführen, dass
die Verknüpfung einer Datei im Vergleich zu der von 1500 Dateien aufgehoben wird. Aber sollte das Löschen des Tar-Objekts nicht 1500-mal schneller sein?

Antwort1

Weil esnichteine einfache „einen einzelnen Inode als gelöscht markieren“-Operation:https://www.slashroot.in/wie-funktioniert-das-löschen-von-dateien-unter-linux

Zumindest auf Extents ist das Löschen von Dateien auf Extents wesentlich schneller als auf Ext2/Ext3-Partitionen.

Bei SSDs kann das Löschen von Dateien langsamer als nötig sein, da die Option „Verwerfen“ verwendet wird, die Ihre SSD anweist, alle zu einer Datei gehörenden Blöcke physisch zu verwerfen, um die Lebensdauer Ihrer SSD zu verlängern. Es ist sehrnichtratsam, es zu deaktivieren.

verwandte Informationen