web-dev-qa-db-ja.com

dfがファイルシステム(ext4)の不正な空き領域を報告する

dfによって報告された誤ったfsスペースの問題に直面しています。

LVMが管理する/パーティションを備えたベアメタルUbuntu 14.04サーバーについて話しています。

dfによって報告されるサイズは、fsスーパーブロックによって報告されるサイズとは異なります。また、du -skhからサイズを計算すると(/パーティションに関連するディレクトリで)、dfが誤った結果を示していることがわかります。

これはdfによって報告されたものです:

Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root   20G   16G  2.8G  86% /

これがスーパーブロックが報告するものです(3616906*4096/1024**2=14128 MB free)

Last mounted on:          /
Filesystem magic number:  0xEF53
Filesystem state:         clean
Filesystem OS type:       Linux
Inode count:              1290240
Block count:              5242880 << exactly 20 GB
Reserved block count:     227170
Free blocks:              3616906 << around 14 GB free
Free inodes:              1201391
First block:              0
Block size:               4096
Fragment size:            4096

私はdfのstraceを実行し、statfs syscallを使用して特定のfs (962132*4096/1024**2=3758 MB free)に関する情報を取得していることがわかりました。

statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=5129119, f_bfree=**962132**, f_bavail=730866, f_files=1290240, f_ffree=1091851, f_fsid={-456623966, 1549023591}, f_namelen=255, f_frsize=4096}) = 0

おそらくstatfsの問題か、それがfs情報を取得する方法に問題があります。

それを解決するために、/パーティション(mount / -orw,remount)を再マウントしようとしましたが、役に立ちませんでした。

私の質問-再起動したり、このサーバーの通常の動作を妨げたりせずに、df情報を修正するにはどうすればよいですか?

追伸.

  • プロセスによって保留中のno fdがあります(lsof +L1 | grep deleted
  • 883 MBがUID 0のユーザー用に予約されていることに気づきました
  • これは、マウントポイントマスキングの問題ではありません(マウントポイントディレクトリにfs 'hide'ファイルをマウントした場合)
4
Tom Lime

同じ問題で立ち往生している仲間のために:

unmount /dev/mapper/rootvg-lv_rootを発行して解決しました。それは私にエラーを与えました、しかしdfが正しく報告した後。

umountのように見え、一部の内部構造体が更新されました。

それが誰かを助けることを願っています。

1
Tom Lime