web-dev-qa-db-ja.com

空きディスク容量の違い-ncduとdf

「ncdu」または「df」を使用すると、rootの空きディスク容量に大きな違いがあることに気づきました。

df -Th:

    dev              devtmpfs  7,8G       0  7,8G    0% /dev
    run              tmpfs     7,8G    1,4M  7,8G    1% /run
    /dev/nvme0n1p2   ext4       25G     19G  4,3G   82% /
    tmpfs            tmpfs     7,8G     77M  7,7G    1% /dev/shm
    tmpfs            tmpfs     7,8G       0  7,8G    0% /sys/fs/cgroup
    tmpfs            tmpfs     7,8G     50M  7,7G    1% /tmp
    /dev/loop1       squashfs  4,3M    4,3M     0  100% /var/lib/snapd/snap/ngrok/11
    /dev/loop0       squashfs   91M     91M     0  100% /var/lib/snapd/snap/core/6405
    /dev/nvme0n1p1   vfat      246M     56M  191M   23% /boot
    /dev/mapper/home ext4      428G     52G  354G   13% /home
    tmpfs            tmpfs     1,6G     20K  1,6G    1% /run/user/

ncdu

10,5 GiB [##        ] /usr
 3,5 GiB [          ] /var
72,0 MiB [          ] /opt
55,1 MiB [          ] /boot
45,9 MiB [          ] /tmp

「ndcu」は、「df」と比較して、ルート用に約5.5GB多くの空き容量を示しています。私は何かが足りないのですか、それとも大きな違いがあるのですか?前もって感謝します!

2
sleepi

考えられるシナリオ

/の下のどこか深いところにあるさまざまなマウントポイントの下にマウントされた他のさまざまなファイルシステムがあります。ルートファイルシステムにそれらの場所にファイルが含まれている場合、dfはファイルを「カウント」しますが(ファイルシステム自体を照会するため)、duはカウントしません(使用可能なツリーをスキャンするため)。


/がマウントされた直後、/homeには4GBのデータが含まれています。次に、別のファイルシステムが/homeにマウントされ、52GBのデータが含まれます。この場合:

  • ルートファイルシステムは、独自の使用量をdfに報告するだけです。これには4GBが含まれます。
  • ncduディレクトリツリーをスキャンします。 /homeでは、otherファイルシステムから52GBを確認できます。 ncdu -xはこれを完全にスキップします。どちらの場合も、/homeは別のファイルシステムであることがわかっているため、無視します。

その結果、ncduから関連するすべての行を合計した後でも、それらの4GBを見逃すことになります。


確認

同じファイルシステムを他の場所にバインドマウントします(-Bはサブマウントをマウントしないことに注意してください):

Sudo mount -B / /mnt/elsewhere

ncdu /mnt/elsewhereがもたらすものを分析します。 /mnt/elsewhere/home/mnt/elsewhere/boot、または通常はサブマウントでカバーされている別のディレクトリにデータがありますか?それは矛盾を説明できますか?

何かを削除する前に、自分が何をしているのかを確認してください。最後にSudo umount /mnt/elsewhereを実行してマウントを解除します。

1

df -Thは、「使用可能な」ディスク容量を示します。 rootとして実行した場合でも、これはrootユーザー用に予約されている(通常は最大5%の)ディスク領域のない空き領域です。

ncduは、rootとして実行されると、root用に予約されているスペースを含む、ディスク上の実際の空きスペースをすべて考慮します。そのため、dfが「使用可能な」スペースを報告するよりも多くの「空き」スペースを報告します。

その予約済みスペースとそのサイズを変更する方法の詳細については、私の質問への回答を参照してください ここ

0
confetti