今回は、先日ディスク容量に悩まされたので、ディスク容量圧迫の原因についてまとめます。
先日仮想環境VirtualBoxでDebianを使用していたら、
知らぬ間にディスク容量が95%になっており、何が原因がつかめず悩みました。
しかし、調べまくった結果、原因は「ゴミ箱」でした。
それでは、詳しく解説します。
発生した問題と開発環境
問題が起きた原因は、以下の環境です。
仮想環境:VirtualBox【バージョン 6.0.14 r133895 (Qt5.6.2)】
LinuxOS:Debina
ホストOS:Windwos10
ディスク容量の状況
User@Debian:~$ df -h
/dev/mapper/Debian–vg-root 31G 27G 1.7G 95% /
容量の原因は「ゴミ箱」
ディスク容量がいっぱいになった時は、以下のファイルパスを確認してみてください。
以下のようなGUIを使用している人は、よく見る「ゴミ箱」ではありません。
このファイルパスにあるゴミ箱は、「管理者のゴミ箱」です。
どのタイミングで、「管理者のゴミ箱」にファイルが格納されるのでしょうか。
答えは、「ログインユーザーが管理者権限でファイルを削除したとき」です。(まんまですね。)
上記のファイルパスを確認してみると以下の3つのディレクトリがあります。
User@Debian:~$ ls -l /home/User/.local/share/Trash/
合計 28
drwx------ 22 User User 4096 5月 30 14:50 expunged
drwx------ 6 User User 12288 5月 30 14:51 files
drwx------ 2 User User 12288 5月 30 14:51 info
このディレクトリの容量を調べてみましょう。
User@Debian:~$ sudo du -s -h /home/User/.local/share/Trash/* |sort -n
5.8M /home/User/.local/share/Trash/files
15G /home/User/.local/share/Trash/expunged
44K /home/User/.local/share/Trash/info
ここがディスク容量を圧迫していた原因でした。
それぞれ説明していきます。
/home/User/.local/share/Trash/expunged
このディレクトリに関する情報は、調べても一切ヒットしなかったので、まとめます。
私の環境でディスク容量が圧迫していた原因は、.local/share/Trash/expungedにありました。
このファイルに何が入っていたかと調べてみました。
User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/expunged/
合計 80
drwx------ 14 User User 4096 5月 28 13:34 1267574603
drwx------ 14 User User 4096 5月 28 11:12 1436928464
drwx------ 4 User User 4096 5月 28 14:10 2197676137
drwx------ 13 User User 4096 4月 1 08:19 2781978847
drwx------ 14 User User 4096 5月 27 11:58 2803165290
drwxrwxrwx 4 root root 4096 4月 1 08:19 2899766730
drwx------ 13 User User 4096 4月 1 08:19 3227185015
drwx------ 14 User User 4096 5月 28 13:53 3259714353
drwxrwxrwx 4 root root 4096 4月 1 08:19 3472617615
drwx------ 14 User User 4096 5月 28 14:37 3506982058
drwx------ 13 User User 4096 4月 1 08:19 3630424732
drwx------ 3 User User 4096 4月 1 08:19 3637541275
drwx------ 14 User User 4096 5月 28 15:28 3773794587
drwx------ 14 User User 4096 4月 1 08:19 3847952378
drwx------ 13 User User 4096 4月 1 08:19 461281774
drwx------ 12 User User 4096 4月 1 08:19 501081716
drwx------ 14 User User 4096 5月 27 11:58 725418797
drwx------ 14 User User 4096 5月 28 14:13 936609419
drwx------ 14 User User 4096 5月 27 11:58 972273848
drwx------ 14 User User 4096 4月 1 08:19 974106353
何やら、謎の数値ファイルが格納されていました。
この内容を確認すると、ルートファイルシステムを作成に失敗したときの残骸が残っていました。
作成したルートファイルシステムの全てが入っいたわけではなく、ルートファイルシステムの一部が入っていました。
そのファイルは、管理者でないと削除できない場合や、ファイルに実行権(chmod -x)が付与されていないファイル群がありました。
このことから、実行権の関係で削除できなかったファイル、もしくはrootユーザー以外では削除しきれないファイルがここへ移動するみたいです。
その結果、ごみが積もりに積もってディスク容量を圧迫していました。
このディレクトリ以下のファイルは削除しても、システムに問題ありません。
Linuxのディスク容量を圧迫している場合は、削除してももんだないでしょう。
以下のコマンドで削除できます。
User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/expunged/*
/home/User/.local/share/Trash/files
このディレクトリには、管理者で削除された実際のファイルが存在します。
User@Debian:~$ ls -l /home/User/.local/share/Trash/files/
合計 489996
-rw-r--r-- 1 User User 210 2月 4 00:59 sample.c
-rw-r--r-- 1 User User 35 3月 1 22:03 sudo
-rw-r--r-- 1 User User 8278 2月 12 00:24 temp.2.txt
-rw-r--r-- 1 User User 11351 2月 12 01:07 temp.3.txt
-rw-r--r-- 1 User User 10066 2月 11 23:41 temp.txt
-rw-r--r-- 1 User User 2 2月 3 01:04 test
多いため割愛
このディレクトリに存在するファイルは、ログインユーザーのゴミ箱には移動せず、このディレクトリに移動します。
このディレクトリもディスク容量圧迫の原因になるので、削除しても構いません。
以下のコマンドで削除してしまいましょう。
User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/files/*
/home/User/.local/share/Trash/info
このディレクトリは、削除されたファイル情報が書かれたファイルが存在します。
User@Debian:~$ ls -l /home/User/.local/share/Trash/info/
-rw-r--r-- 1 User User 73 3月 1 12:46 sample.c.trashinfo
-rw-r--r-- 1 User User 124 4月 18 09:37 sudo.trashinfo
-rw-r--r-- 1 User User 145 2月 12 00:30 temp.2.txt.trashinfo
-rw-r--r-- 1 User User 145 2月 12 01:09 temp.3.txt.trashinfo
-rw-r--r-- 1 User User 145 2月 11 23:55 temp.txt.trashinfo
-rw-r--r-- 1 User User 74 3月 1 12:46 test.trashinfo
先程の/home/User/.local/share/Trash/files/に対応したファイルに関するinfoファイルが格納されています。
このファイルに何が書かれているのか確認しましよう。
User@Debian:~$ cat /home/User/.local/share/Trash/info/sample.c.trashinfo
[Trash Info]
Path=/home/User/sample.c
DeletionDate=2020-03-01T12:46:31
書かれている内容は、「削除前のファイルパス」「削除したときのタイムスタンプ」が書かれています。
もちろんこのディレクトリ以下のファイルも削除しましょう。
User@Debian:~$ sudo ls -l /home/User/.local/share/Trash/info/*
/home/User/.local/share/Trash/を整理した結果
管理者のゴミ箱:/home/User/.local/share/Trash/を整理した結果、以下の通りディスク容量が増えました。
User@Debian:~E$ df -h
/dev/mapper/Debian–vg-root 31G 7.8G 21G 28% /
いやー、これで一安心ですよ。
Linuxディスク容量圧迫原因を調べる
以下に個人的にオススメな、Linuxディスク容量を確認するために使用したコマンドを紹介します。
ハードディスクのベンチマークを知る方法も以下にまとめたので、参考にしてみてください。
dfコマンド
オプション-hを使用すると、Linuxディスク空き容量を人に見やすい形式で出力してくれます。
私はオプション-hよく使用します。
【コマンド】 df -h
mint@mint-VirtualBox:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 457M 0 457M 0% /dev
tmpfs 99M 1.1M 98M 2% /run
/dev/sda1 16G 6.7G 8.2G 46% /
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 492M 0 492M 0% /sys/fs/cgroup
tmpfs 99M 16K 99M 1% /run/user/1000
/dev/sr0 74M 74M 0 100% /media/mint/VBox_GAs_6.0.14
duコマンド
基本的に
私がおすすめなのが、以下の使い方です。
アクセス制限を避けるためsudoコマンドを使用し、duコマンドの結果を降順に表示します。
/*の部分は、自分が検索したいファイルパスを指定します。例:/etc/*など
sudo du -s -h /* |sort -n
mint@mint-VirtualBox:~$ sudo du -s -h /* |sort -n
0 /dev
0 /initrd.img
0 /initrd.img.old
0 /proc
0 /sys
0 /vmlinuz
1.1M /run
4.0K /cdrom
4.0K /lib64
4.0K /mnt
4.0K /srv
4.6G /usr
7.5M /home
15M /etc
16K /lost+found
16M /bin
19M /sbin
21M /opt
36K /root
72K /tmp
74M /media
82M /boot
601M /lib
630M /var
760M /swapfile
こちらは、先ほどと違いduコマンドの結果を、昇順に並び替えます。
sudo du -s -h /* |sort -nr
760M /swapfile
630M /var
601M /lib
82M /boot
74M /media
72K /tmp
36K /root
21M /opt
19M /sbin
16M /bin
16K /lost+found
15M /etc
7.5M /home
4.6G /usr
4.0K /srv
4.0K /mnt
4.0K /lib64
4.0K /cdrom
1.1M /run
0 /vmlinuz
0 /sys
0 /proc
0 /initrd.img.old
0 /initrd.img
0 /dev
コマンドの勉強で参考にした本は以下の本を使いました。
Linuxシステム全体を把握するためには、以下の本がおススメ。
最後に
今回は、意外に見落としがちなディスク容量を圧迫する原因として、ゴミ箱を紹介しました。
私は、この存在に気付かずに、いつの間にかディスク容量が圧迫していました。
もし、あまり容量をとるようなファイルを置いてないのに、ディスク容量が圧迫してきたなと感じたら、「管理者のゴミ箱」を確認してみてください。
コメント
本ページ、大変参考になりました。
一点、ファイル削除のコマンドはlsではなく、rmではないでしょうか?
lsだとファイルの表示のみでとどまってしまいます。
sudo ls -l /home/User/.local/share/Trash/expunged/*
の箇所を
sudo rm -rv /home/User/.local/share/Trash/expunged/*
に修正されると良いかと思います。
以上、よろしくお願いいたします。