
xfsは、ファイルに必要なものより15〜30%多くのディスク容量を使用しているようです。
# du
0 .
# dd if=/dev/zero of=test bs=1M count=5k
5120+0 records in
5120+0 records out
5368709120 bytes (5,4 GB) copied, 10,527 s, 510 MB/s
# ls -l
total 8388608
-rw-r--r-- 1 root root 5368709120 Oct 19 16:04 test
# du
8388608 .
ファイルシステム全体に対してある程度これを行うようです。ファイルシステムサイズの1%未満のファイルを追加すると、ファイルシステムはディスクがいっぱいであると報告します。
# df
/dev/sdb6 40957913088 35624042728 5333870360 87% /xfs-export
mkxfsを実行すると、いくつかの素晴らしいオプション(ext2で予約されている5%に似ている)が原因で発生しますか?
# uname -a
Linux server 2.6.39-bpo.2-amd64 #1 SMP Tue Jul 26 10:35:23 UTC 2011 x86_64 GNU/Linux
答え1
環境変数BLOCKSIZEを640に設定したため、奇妙な数字が表示されるようです。 BLOCKSIZEはls、du、dfの印刷に影響を与えます。 BLOCKSIZEを「1024」または「1k」に設定すると、予想される出力が表示されます。
答え2
この問題を再現してから長い時間が経ちました。今分かったようです。
$ ls -l
total 0
$ dd if=/dev/md0 >> a bs=10000k &
$ ls -l
total 9111552
-rw-r--r-- 1 rt rt 5816320000 Jan 7 23:31 a
dd
中断しても完了(または終了)するまでこの状態は維持されますdd
。その後、状況は正常に見えます。
$ kill %1; ls -l
total 20120000
-rw-r--r-- 1 rt rt 20602880000 Jan 7 23:33 a
したがって、xfsはファイル拡張子のためのスペースを予約しているようです。
質問の内容はdd
完全ですが、保存を正当化できる他の開いているファイルがある可能性があります。
答え3
XFSには、動的推測的EOF事前割り当てという機能があります。ファイルの断片化を減らすために、より多くのバイトを書き込むことを期待して、より多くのスペースを割り当てることができます。 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=055388a3188f56676c21e92962fc366ac8b5cb72)