「ncdu」または「df」を使用すると、rootの空きディスク容量に大きな違いがあることに気づきました。
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/
10,5 GiB [## ] /usr
3,5 GiB [ ] /var
72,0 MiB [ ] /opt
55,1 MiB [ ] /boot
45,9 MiB [ ] /tmp
「ndcu」は、「df」と比較して、ルート用に約5.5GB多くの空き容量を示しています。私は何かが足りないのですか、それとも大きな違いがあるのですか?前もって感謝します!
/
の下のどこか深いところにあるさまざまなマウントポイントの下にマウントされた他のさまざまなファイルシステムがあります。ルートファイルシステムにそれらの場所にファイルが含まれている場合、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
を実行してマウントを解除します。
df -Th
は、「使用可能な」ディスク容量を示します。 rootとして実行した場合でも、これはrootユーザー用に予約されている(通常は最大5%の)ディスク領域のない空き領域です。
ncdu
は、rootとして実行されると、root用に予約されているスペースを含む、ディスク上の実際の空きスペースをすべて考慮します。そのため、df
が「使用可能な」スペースを報告するよりも多くの「空き」スペースを報告します。
その予約済みスペースとそのサイズを変更する方法の詳細については、私の質問への回答を参照してください ここ 。