ファイル削除後にext4ディスク領域が回収されない

ファイル削除後にext4ディスク領域が回収されない

最近、2TBの外付けext4ドライブで「デバイスがいっぱい」という警告を受けました。約90〜100GBの古いシステムバックアップファイルを削除し、すべてのごみ箱を空にしたくないので、ドライブからごみ箱フォルダを削除しました。ただし、ディスク容量は解放されず、90〜100 Gbを削除した後でも、約5 Gbの空き容量しか表示されません。

何らかの理由でファイルが開いていないことを確認するために、最初に再起動を試みました。実行しようとしましたが、どちらもディスク容量を表示しませんsudo e2fsck -fp /dev/sde1sudo e2fsck -f -D -C0 -E discard /dev/sde1inode使用量を確認してみると全体の0.3%程度が使われています。実行すると、sudo xdiskusageinodeが93GBを使用したことがわかります。 manはこれがファイルシステムの使用によるオーバーヘッドであると言います。 93GBはオーバーヘッドが多いようで、同じ数のファイルを削除してもディスク容量は解放されません。 trahフォルダを削除すると何かが混乱しているようです。ファイルを削除して取得できるスペースを再利用する方法はありますか?

ベストアンサー1

これには2つの可能性があるようです。

  1. dfルート予約スペースの(明らかに混乱している)動作について混乱しています。
  2. ファイルへのハードリンクを削除(リンク解除)し、より多くのリンクがありました。

個人的に私はあなたが#1を見ていると思います。詳細はいくつかの結論につながります。

混乱したdf行動

ルート以外のユーザーでファイルシステムを完全に入力すると、次のように表示されます。

Filesystem      Size  Used Avail Use% Mounted on
/dev/md10       248M  236M  1.0K 100% /boot

ただし、ルート用に予約されたスペースがありますが、通常5%です。ルートがそれを満たす場合は、次のようになりますdf(この小さなファイルシステムの場合は13 MB)。

Filesystem      Size  Used Avail Use% Mounted on
/dev/md10       248M  248M     0 100% /boot

100%使用から100%使用まで行われます。実際には5%が使用されます。フィールドはUsed期待どおりに上がりますが、フィールドavailは1Kから0に移動します。

最初の13MBのデータを削除するとどうなりますか?いいですね。最初の出力に戻りました。 5%を確保しましたが、まだ100%使用されているため、ほとんど使用できません。

結論:実際にどのくらいのスペースが解放されたかを確認するには、このUsed列を見てください。 - Avail、not Use%

最後のハードリンクではありません

rm実際にはそうではありません削除文書。リンクを解除します。つまり、ハードリンクを削除します。デフォルトでは、すべてのハードリンクはファイル名を指定します。ファイルにリンクがなく、開いていない場合にのみ、ファイルは実際に削除されます。

実際、ファイルは、名前の数に関係なく、ファイルシステム内の inode 番号で一意に識別されます。これらのファイルのinode番号がわかっている場合は、それを使用してすべてのfind -inumハードリンクを見つけることができますが、そうでない可能性があります。クリーンアップする必要がある関連ファイルがある場合は、.を使用してそのファイルへのすべてのハードリンク(今計算した名前を含む)を見つけることができますstatfind /path/to/mount -inum NUMBERまた、ファイルが実際に削除されると、inode番号を再利用できます。

覚えておいてください:inode番号はファイルシステムごと。だからその他ファイルは、2つの異なるファイルシステムのinode 42にすることができます。同じファイルシステムでのみ、inode 42が常に同じファイルであることを保証できます。また、inode 番号は、ネットワークファイルシステムや Unix 以外のファイルシステムに常に適用されるわけではありません。しかし、ext4を使用している場合は、これは確かに可能です。

それ以外の場合は、通常の方法で削除したい場合は、別の名前を見つけてください(たとえば、すでにやっているxdiskusageように大きな項目を見つける方法)。

一般的なガイドライン

ごみ箱フォルダは単なるディレクトリです。削除できないジャンクでいっぱいの場合に表示されますxdiskusage

古いバックアップをより効率的に削除するバックアップシステムを検討する必要があります。手動で削除するとエラーが発生しやすくなります。さらに悪いことは、忘れてバックアップが失敗し、頻繁に復元される可能性があることです。最近データ(例:偶発的な削除、ファイルの破損、ディスクエラー)ではなく、古いデータ(「ああ、はい、昨年削除したものが必要です...」)ではないため、「ディスク全体のバックアップに失敗しました」は実際に削除されていますを意味します。これ最も価値のあるアーカイブするデータ(新しいバックアップ)価値が最も低いデータ(2年前のバックアップ)。

おすすめ記事