Ubuntu でファイルを削除するのが遅いのはなぜですか?

Ubuntu でファイルを削除するのが遅いのはなぜですか?

Stackoveflow の投稿で、Linux ではファイルを削除しても実際には削除されず、inode テーブルからそのファイルへのリンクのみが削除されると読みました。そうだとしたら、なぜ削除は一定時間の操作ではないのでしょうか?

私も実験してみました。1500枚の画像が入ったフォルダを作成し、これらの画像のtarオブジェクトを作成しました。ディレクトリとtarファイルは両方とも同じサイズです。tarオブジェクトと1500枚の画像のディレクトリを削除するタイミングは次のとおりです。

tar ファイルを削除していますtime rm test.tar:


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

ディレクトリを削除しています:time rm -r test


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

私の理解では、この時間の違いは、
1 つのファイルのリンクを解除する場合と 1500 個のファイルのリンクを解除する場合の違いによるものです。しかし、tar オブジェクトの削除は 1500 倍高速であるべきではないでしょうか?

答え1

それはだからない単純な「単一の inode を削除済みとしてマークする」操作:https://www.slashroot.in/how-does-file-deletion-work-linux

少なくとも ext4 では、エクステントの使用により、ファイルの削除は ext2/ext3 パーティションよりもはるかに高速になります。

SSDの場合、SSDの寿命を延ばすために、ファイルに属するすべてのブロックを物理的に破棄するようにSSDに指示する「破棄」オプションの使用により、ファイルの削除は必要以上に遅くなる可能性があります。ない無効にすることをお勧めします。

関連情報