dfコマンドは、ファイルを削除した後も同じ使用量(100%)を表示します。

dfコマンドは、ファイルを削除した後も同じ使用量(100%)を表示します。

dfコマンドを使用すると、Nandフラッシュストレージパーティションが100%いっぱいになっているように見えます。使用量を手動で計算すると約7~80%(最大)です。複数のファイル(約50〜60 MB)を削除した後でも、dfコマンドの出力はまだ変更されていません。新しいファイルを作成できません。エラー:「ストレージデバイスに残りのスペースがありません。」syncコマンドを試しましたが、違いはありません。

Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                   262144     20780    241364   8% /tmp
tmpfs                      512         0       512   0% /dev
/dev/ubi0_0            1275540   1275540         0  100% /storage

実際のストレージスペースがいっぱいになっていない(手動計算基準)、doe dfコマンドが100%いっぱいであることを示すのはなぜですか?

ベストアンサー1

再起動して再インストールすると、問題が解決すると思います。

理由:その理由は次dfのとおりです。統計ファイルシステム(2)ファイルシステム統計を取得するためのシステムコール。これは、開かれたカーネルファイル記述子をチェックして名前の空き容量を計算することを意味します(df =ディスクの空き容量)。を使用すると、他の結果が得られますdudf削除されたファイルはまだカーネルファイル記述子から解放されていないため、使用量は100%で表示されます。

おそらく、次のシナリオが理解するのに役立ちます。

  1. 名前付き実行プロセスは、xyz.serviceパーティション内の名前付きファイルを使用しています。something.dump/storage

  2. に記載されていますfile discriptorsomething.dumpprocess file descriptor tablexyz.service

  3. その後、削除しましたが、something.dumpまだxyz.service実行中です。

  4. xyz.serviceファイルの更新ステータスが不明ですsomething.dump。したがって、ファイル記述子はsomething.dumpまだ存在します。

  5. その後、コマンドを実行すると、dfカーネルはすべてのプロセステーブルを調べて、空き領域を計算するために使用されるファイル記述子を確認します。

  6. カーネルは、ファイルがまだプロセスのファイル記述子テーブルにリストされていることをinodes発見something.dumpしますxyz.service。したがって、something.dumpまだファイルシステムにあるので、some.dumpのinodeが空であるとは思わない。そのため、より多くの使い方を見ることができます。

  7. したがって、これらのinodeを解放すると、SIGKILL xyz.service空き領域を見ることができます。

  8. システムを再起動すると、手順7と同じことが行われます。

おすすめ記事