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 =ディスクの空き容量)。を使用すると、他の結果が得られますdu
。df
削除されたファイルはまだカーネルファイル記述子から解放されていないため、使用量は100%で表示されます。
おそらく、次のシナリオが理解するのに役立ちます。
名前付き実行プロセスは、
xyz.service
パーティション内の名前付きファイルを使用しています。something.dump
/storage
に記載されています
file discriptor
。something.dump
process file descriptor table
xyz.service
その後、削除しましたが、
something.dump
まだxyz.service
実行中です。xyz.service
ファイルの更新ステータスが不明ですsomething.dump
。したがって、ファイル記述子はsomething.dump
まだ存在します。その後、コマンドを実行すると、
df
カーネルはすべてのプロセステーブルを調べて、空き領域を計算するために使用されるファイル記述子を確認します。カーネルは、ファイルがまだプロセスのファイル記述子テーブルにリストされていることを
inodes
発見something.dump
しますxyz.service
。したがって、something.dump
まだファイルシステムにあるので、some.dumpのinodeが空であるとは思わない。そのため、より多くの使い方を見ることができます。したがって、これらのinodeを解放すると、
SIGKILL
xyz.service
空き領域を見ることができます。システムを再起動すると、手順7と同じことが行われます。