du/df と ls が異なるディスク使用量を報告する

du/df と ls が異なるディスク使用量を報告する

先週末、同僚の一人が共有コンピューティング サーバーの 1 つに異常があることに気づきました。

ls -lサイズが 132G のファイルが含まれていると表示されるディレクトリがあります。

しかし、実行すると、df -hディスク上で使用されているスペースの合計量は128Gと表示されます。さらに、du -h --max-depth=1ドライブのルートで実行すると、128Gと表示されます。.

当初、この問題は、開いているファイル ハンドルなどが原因で、これらのバイナリが異なる情報を報告しているのではないかと考えました。しかし、ディスクのアンマウントと再マウントを試みたところ、すべてのバイナリが以前と同じ結果を報告しました。

ドライブの構成についてもう少し詳しく説明します。

  • ボリュームは、LUKS 暗号化に加えて EXT4 を使用してフォーマットされます。
  • ディスクは NFS などを介して共有されません。
  • 問題のファイルを確認しましたが、リンクされていないようです。
  • ボリュームをアンマウントして再マウントするときに、fsck -fボリューム上で実行してディスク チェックを強制しましたが、問題は返されませんでした。
  • ディスクが配置されているサーバーは仮想化ホストではなく、OS として Ubuntu 14.04 を実行しています。

答え1

あなたのサーバーは仮想化ホストですか?

実際のファイルとディスク領域のサイズが異なるのは、動的に拡張される仮想ディスクの通常の動作です。このディスクには、実際のファイルサイズとヘッダーファイルサイズデータが異なります。

:

おそらく、qemu 仮想ディスク (qcow2 拡張機能またはその他) を使用していると思われます。これは、次の方法で見つけることができます。

find / -regex '.*\.qcow.*$'

/var/lib/vz/images/105/vm-105-disk-1.qcow2
...

vm-105-disk-1.qcow2サイズを確認してみましょうstat:

stat vm-105-disk-1.qcow2

  File: vm-100-disk-1.qcow2
  Size: 68745560064

79728541696 - 約64GB

確認するwc

wc -c <vm-105-disk-1.qcow2

68745560064

同じ結果です... 確認してくださいdu:

du -sh vm-105-disk-1.qcow2

15G        vm-105-disk-1.qcow2

たった15GB! qemu-imgutilで確認してみましょう:

qemu-img info vm-105-disk-1.qcow2

image: vm-105-disk-1.qcow2
file format: qcow2
virtual size: 64G (68719476736 bytes)
disk size: 14G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

次の 2 行に注意すれば、すべてが明らかになるはずです。

virtual size: 64G (68719476736 bytes)
disk size: 14G

サーバーが仮想化ホストでない場合は、次のトピックを参照してください。

関連情報