今カーネルに空きディスク容量を返すように指示する方法はありますか? /proc/に何かを書くのが好きですか? ext4でUbuntu 11.10を使用します。
これはおそらく古いそして非常に反復的なトピック。スペースがゼロになった後、編集者が私が開いたソースコードファイルを保存できないことがわかりました。
ユーザーとルートから100MBの大容量ファイルを削除し、ハードリンクも作成しました。
これを行う直前はapt-get clean
/var/cache/apt/archivesに900MBを超えていましたが、今は108KBに過ぎません。
# du
108 /var/cache/apt/archives
1時間経ってもエディタで開かれた貴重なファイルを保存できる空き容量はありませんが、次の違いに注意してください。
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
どんな提案がありますか?一部のサービス/プロセスを終了しましたが、誰がディスク容量を積極的に占めているかを確認する方法がわかりません。
追加情報
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
答え1
lsof
開いているファイルがあることを確認してください。スペースは閉じるまで解放されません。
sudo /usr/sbin/lsof | grep deleted
削除されたファイルがまだ開いているかどうかを知らせます。
答え2
lsof
削除されたがまだスペースを占めている開いているファイルを見つけるために使用されます。
lsof | grep deleted | grep etilqs_1IlrBRwsveCCxId
chrome 3446 user 128u REG 253,2 16400 2364626 /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)
/proc/<pid>/fd/
ファイルハンドルに対応する項目を探します。
ls -l /proc/3446/fd/etilqs_1IlrBRwsveCCxId
lrwx------. 1 user unix 64 Feb 11 15:31 128 -> /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)
ここでcat /dev/null
fdと入力してください。
cat /dev/null > /proc/3446/fd/128
inodeはまだ開いていますが、長さは0です。
chrome 3446 user 128u REG 253,2 0 2364626 /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)
答え3
df
予約されたスペースは表示されませんroot
(実行中でもroot
)。
# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/optvol 625G 607G 0 100% /opt
...
「予約ブロック率」を変更する方法
予約済みスペースを4%に減らします。
# tune2fs -m4 /dev/sda4
df -h
これで45M無料が表示されます。
- 私のファイルをすばやく保存
5%に復元
# tune2fs -m5 /dev/sda4
答え4
sudo lsof | grep "(deleted)$" | sed -re 's/^\S+\s+(\S+)\s+\S+\s+([0-9]+).*/\1\/fd\/\2/' | while read file; do sudo bash -c ": > /proc/$file"; done
注:
Greplsof
出力は削除されたファイルのみを抽出します。 sedは各行からプロセスIDとファイル記述子IDを抽出し、フォーマットの文字列を生成します{pid}/fd/{fid}
。 whileループを実行し、各ファイルに何も出力せずに空白に設定します。