Linuxサーバの運用中に、ディスクフル(使用容量100%)になり何もファイルを操作できなくなったことがありませんか。
初歩的なコマンドですが、その際の対応方法を紹介したいと思います。
全ファイルシステムの容量確認
まずはdfコマンドで全ファイルシステムの容量を確認し、どのファイルシステムが容量不足になっているかを確認します。
僕はdfコマンドには -hPオプションを付けるのがクセになっています。容量単位が見やすくなり、改行もなくなるのでおすすめです。
[root@cent77 ~]# df -hP
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.8M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 5.3G 12G 31% /
/dev/sda1 1014M 140M 875M 14% /boot
192.16.30.100:/dekinfs 4.5T 4.5T 0 100% /nfs_srv
tmpfs 100M 0 100M 0% /run/user/0
どのディレクトリが容量を多く使用しているか確認
容量不足のファイルシステムを特定できたら、次はduコマンドでどのディレクトリが使用容量が多いかを調べます。
[root@cent77 ~]# cd /nfs_srv
[root@cent77 nfs_srv]# du -hs *
20K dekien
950M bin
1.4T archive
3.0T backup
後は容量の大きなディレクトリ配下に対して、duコマンドで同じように調査、lsコマンドで大きなファイルを探してrmコマンドでの削除や、圧縮や移動をして空き容量を増やすだけです。
findコマンドで容量の多いファイルを探す
以下のfindコマンドのオプションとlsコマンドで、一定サイズ以上のファイルを探すことも可能です。
find <探したいディレクトリ> -size +<指定容量> |xargs ls -lh
以下の例では、500M以上のファイルを探した結果となります。
[root@cent77 ~]# [root@cent77 ~]# find /tmp -size +500M |xargs ls -lh
-rw-r--r-- 1 root root 521M Mar 29 13:48 /tmp/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar