Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 22058

〜Linux初心者に捧ぐ〜 原始的だけど確実なディスクのお掃除テク

$
0
0

ある日、仕事で出会った開発系の若者が自サーバで何かトラブルがあったらしく、

「なんか・・・なんか・・・アプリケーション動かんくなったんですけど・・・」

なんや、どした?

「なんか・・・なんか・・・こんな英語が出てくるんですけど・・・」

ピロンッ(Slack通知音) No space left on device

そんくらいのイングリッシュはマウスで言え。
まーまーまー、若者よ、怖がることはない。
dfduコマンドって知ってるかい?

というやり取りがあり、意外と知らないもんなんやなと思い、教えてあげた解決方法です。

兎にも角にも現状を把握しよう

手元ではLinux系ディストリのUbuntuを使ってるので、そいつを例に解説していきます。

  • df
    パーティション毎のディスク使用量が見れます。
    • -hデフォでByte表記になるので、人が見やすい、Mega,Giga表記で表示してくれるオプション
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.9G     0  2.9G   0% /dev
tmpfs           597M  1.4M  595M   1% /run
/dev/sda2        80G   79G    1G 100% / ←ココ
tmpfs           3.0G     0  3.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.0G     0  3.0G   0% /sys/fs/cgroup
/dev/loop0       94M   94M     0 100% /snap/core/9066
/dev/loop1       98M   98M     0 100% /snap/core/9289
tmpfs           597M     0  597M   0% /run/user/1000

パーティションがいくつか出てきますが、私の場合/一本なので、上の内容はUbuntuの最小構成だと思います。
/80G79G使っていて、残り 1Gしかないということがわかりますね。

ドロ臭いけど一番確実な方法はduコマンドをひたすら繰り返すこと

duは、ディスクの使用量をディレクトリごとに集計して表示するコマンドです。
【 du 】コマンド――ディスクの使用量を表示する

どこのファイルが肥大化しているのか全く検討が付かない場合は、一番上の階層である/から始めましょう。
あたりが付いてるようであれば、そのディレクトリ配下から始めましょう。
素直に使ってれば大体溜まりやすいのは、/home/usr//varあたりでしょう。

duコマンドに付けるオプション

  • -hデフォはByte表記なので、見やすいようにMega,Giga表記
    ディレクトリ数が多い場合は、逆に付けない方がひと目で見分けやすいこともあります。
  • -d何回層下までもぐるか
    今回はわかりやすくするために1階層毎に繰り返します。
$ sudo du -hd 1 /
15M     /bin
142M    /boot
0       /dev
5.4M    /etc
4.4G    /home
838M    /lib
0       /lib64
0       /media
0       /mnt
0       /opt
...省略...

/など権限規制がかかっているようなディレクトリに関してはsudoを使ってルート権限で実行する必要があります。

一部省略してますが、/homeで4.4G取られてるみたいなので、次はここを探ってみましょう。

$ sudo du -hd 1 /home
4.4G    /home/nyamane
32K     /home/kamaitachi
4.4G    /home/

私のホームディレクトリの容量がほとんどということがわかりますね。
では次は、私のホームディレクトリを探っていきましょう。
ディレクトリ数が多い場合は、Mとか、Gが並んでると見分けにくいこともあるので、試しに-hオプションを取って見てみましょう。

$ sudo du -d 1 /home/nyamane/
40420   /home/nyamane/.cache
0       /home/nyamane/.gnupg
16      /home/nyamane/.ssh
3444    /home/nyamane/.config
2251960 /home/nyamane/repos
0       /home/nyamane/snap
87396   /home/nyamane/pkgs
11436   /home/nyamane/.kube
4       /home/nyamane/.k9s
4       /home/nyamane/.docker
1316    /home/nyamane/.kubectx
41556   /home/nyamane/google-cloud-sdk.staging
159004  /home/nyamane/google-cloud-sdk
1103432 /home/nyamane/.vscode-server
357428  /home/nyamane/.npm
366672  /home/nyamane/.rbenv
4892    /home/nyamane/.gem
27016   /home/nyamane/.solargraph
59920   /home/nyamane/.local
80      /home/nyamane/.pylint.d
4516088 /home/nyamane/

/home/nyamane/repos約2.2GB
/home/nyamane/.vscode-server約1.1GB

さー、いよいよ核心に近づいて来ましたね。
ここは私の開発用のリポジトリをまとめたディレクトリです。
後は今ままでの作業を繰り返して一歩ずつ進むのみです。
最終的に最下層まで調べたとして、最後はlsでファイル単位まで突き止めましょう。

$ ls -laF /home/nyamane/repos/some_repos/logs

lsで調べた結果、development.logというファイルが大きいことがわかったので、消しちゃいましょう。

$ rm -f /home/nyamane/repos/some_repos/logs/development.log

おめでとうございます。
これであなたは+何GBかのディスク容量を確保することができました。

おわりに

今回は自作アプリケーションが出力している開発用のログ・ファイルだったので、ただ単にrmしてますが、そもそも消していいファイルかどうかの判断も必要なので、そこは適宜調べて対処する必要があります。
何も考えずに消してしまうと、痛い目に合う可能性もありますのでご注意下さい。

しょっちゅうディスク容量が頭打つ場合は、そもそもの容量設定が厳しいので、ディスクサイズの拡張、HDD換装なども検討しましょう。
開発用に使ってるサーバであれば、アプリケーションでログ出し過ぎということも考えられます。


Viewing all articles
Browse latest Browse all 22058

Trending Articles