Linuxディスク使用量を100%から40%まで減らした
こんにちは、PRESSの開発統括をしているさいぬ(sainu_____)です。
今回は、EC2インスタンスのディスク使用量が100%になり、サーバーが落ちてしまったので、その時に施した対応についてまとめたいと思います。
状況把握
とりあえずディスク使用量を df
コマンドで確認します。
[ec2-user@ip-172-31-15-187 log]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 59G 59G 00G 100% / devtmpfs 1.9G 56K 1.9G 1% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm # 左から以下の項目で表示されます # ファイルシステムの名前 割りあてサイズ 使用領域サイズ 空き領域サイズ 使用率 マウントポイント
Use%
が100%で、ファイルシステムの容量がいっぱいになってしまっています。
ディスクがいっぱいだと、データの書き込みができなくなり、サーバーのプロセスが停止してしまうことがあります。つまり、サーバーが応答しなくなります。
サイズが大きいファイルを探す
サーバーのファイルシステムを圧迫している主な原因はだいたいログファイルです。また、PRESSではnginxとRailsで開発しているので、nginxとRailsのログファイルが含まれるディレクトリのサイズを確認してみます。
出力のメモを取り忘れてしまったので、入力コマンドだけ・・・
以下のコマンドで、nginxとrailsのログの使用量を見てみます。すると、それぞれ合わせて30GB近くありました。まずいですね、ログローテーションをちゃんと設定していればこんなことにはなりません。
[root@ip-172-31-15-187 nginx]# du -h --max-depth=1 /var/log [root@ip-172-31-15-187 nginx]# du -h --max-depth=1 /var/www/press/shared
-h
オプションはサイズをGB
やMB
のように、桁数が大きい容量に関しては単位を付けて見やすく表示します。
--max-depth=1
は、出力するディレクトリ階層を1段階に指定します。これを省略すると、ディレクトリを再帰的に表示するので、サイズが大きいディレクトリが特定しにくくなります。
圧縮
では、nginxとrailsのログファイル内を見てみます。
[root@ip-172-31-15-187 nginx]# ls -lah total 23G drwx------ 2 nginx nginx 12K May 26 03:42 . drwxr-xr-x 8 root root 4.0K May 26 16:03 .. -rw-r--r-- 1 nginx nginx 58M May 26 18:25 access.log -rw-r--r-- 1 root nginx 407M Dec 19 03:43 access.log-20171218 -rw-r--r-- 1 root nginx 1.2G Dec 24 03:46 access.log-20171220 -rw-r--r-- 1 root nginx 1.2G Dec 30 03:30 access.log-20171226 -rw-r--r-- 1 root nginx 321M Jan 1 03:11 access.log-20171231 -rw-r--r-- 1 root nginx 2.5G Jan 10 03:12 access.log-20180102 -rw-r--r-- 1 root nginx 2.4G Jan 16 03:25 access.log-20180111 -rw-r--r-- 1 root nginx 1.2G Jan 18 03:14 access.log-20180117 -rw-r--r-- 1 root nginx 976M Jan 20 03:16 access.log-20180119 -rw-r--r-- 1 root nginx 2.5G Jan 25 03:14 access.log-20180121 -rw-r--r-- 1 root nginx 1017M Jan 27 03:43 access.log-20180126 -rw-r--r-- 1 root nginx 1.1G Feb 7 03:16 access.log-20180202 -rw-r--r-- 1 root nginx 425M Feb 10 04:41 access.log-20180209 -rw-r--r-- 1 root nginx 309M Feb 12 03:12 access.log-20180211 -rw-r--r-- 1 root nginx 1.2G Feb 20 03:41 access.log-20180213 -rw-r--r-- 1 root nginx 255M Feb 25 03:24 access.log-20180223 -rw-r--r-- 1 root nginx 614M Mar 2 03:35 access.log-20180226 -rw-r--r-- 1 root nginx 211M Mar 7 03:33 access.log-20180306 -rw-r--r-- 1 root nginx 327M Mar 17 04:20 access.log-20180315 -rw-r--r-- 1 root nginx 291M Mar 20 03:43 access.log-20180318 -rw-r--r-- 1 root nginx 241M Mar 30 03:18 access.log-20180329 -rw-r--r-- 1 root nginx 457M Apr 6 03:20 access.log-20180403 -rw-r--r-- 1 root nginx 209M Apr 10 03:19 access.log-20180409 -rw-r--r-- 1 root nginx 205M Apr 12 03:19 access.log-20180411 -rw-r--r-- 1 root nginx 187M Apr 16 03:18 access.log-20180415 -rw-r--r-- 1 root nginx 163M Apr 19 03:23 access.log-20180418 -rw-r--r-- 1 root nginx 7.2M Apr 20 03:28 access.log-20180420.gz -rw-r--r-- 1 root nginx 7.2M Apr 21 04:29 access.log-20180421.gz -rw-r--r-- 1 root nginx 8.8M Apr 22 03:42 access.log-20180422.gz -rw-r--r-- 1 root nginx 314M Apr 25 03:45 access.log-20180423 -rw-r--r-- 1 root nginx 7.4M Apr 26 03:06 access.log-20180426.gz -rw-r--r-- 1 root nginx 5.5M Apr 27 03:37 access.log-20180427.gz -rw-r--r-- 1 root nginx 6.1M Apr 28 03:26 access.log-20180428.gz -rw-r--r-- 1 root nginx 184M Apr 30 03:17 access.log-20180429 -rw-r--r-- 1 root nginx 375M May 4 03:18 access.log-20180501 -rw-r--r-- 1 root nginx 251M May 6 12:20 access.log-20180505 -rw-r--r-- 1 nginx nginx 1.7M May 7 03:24 access.log-20180507.gz -rw-r--r-- 1 root nginx 9.2M May 8 03:30 access.log-20180508.gz -rw-r--r-- 1 root nginx 8.0M May 9 03:25 access.log-20180509.gz -rw-r--r-- 1 root nginx 328M May 12 03:16 access.log-20180510 -rw-r--r-- 1 root nginx 273M May 14 00:30 access.log-20180513 -rw-r--r-- 1 nginx nginx 658K May 14 03:09 access.log-20180514.gz -rw-r--r-- 1 root nginx 440M May 17 11:50 access.log-20180515 -rw-r--r-- 1 nginx nginx 90M May 18 09:55 access.log-20180518 -rw-r--r-- 1 nginx nginx 282M May 20 07:49 access.log-20180519 -rw-r--r-- 1 nginx nginx 126M May 21 04:58 access.log-20180521 -rw-r--r-- 1 nginx nginx 223M May 23 08:33 access.log-20180522 -rw-r--r-- 1 nginx nginx 198M May 25 03:17 access.log-20180524 -rw-r--r-- 1 nginx nginx 142M May 26 09:00 access.log-20180526 -rw-r--r-- 1 nginx nginx 428K May 26 17:45 error.log -rw-r--r-- 1 root nginx 4.6M Dec 19 03:43 error.log-20171218 -rw-r--r-- 1 root nginx 7.4M Dec 24 03:18 error.log-20171220 -rw-r--r-- 1 nginx nginx 205 Dec 20 03:38 error.log-20171221 -rw-r--r-- 1 nginx nginx 207 Dec 21 03:39 error.log-20171222 -rw-r--r-- 1 nginx nginx 207 Dec 22 03:48 error.log-20171223 -rw-r--r-- 1 root nginx 2.4M Dec 30 03:00 error.log-20171226 -rw-r--r-- 1 nginx nginx 205 Dec 26 03:20 error.log-20171227 -rw-r--r-- 1 nginx nginx 207 Dec 27 03:28 error.log-20171228 -rw-r--r-- 1 nginx nginx 207 Dec 28 03:33 error.log-20171229 -rw-r--r-- 1 root nginx 524K Jan 1 03:07 error.log-20171231 -rw-r--r-- 1 root nginx 551K Jan 10 02:39 error.log-20180102 -rw-r--r-- 1 nginx nginx 207 Jan 2 03:14 error.log-20180103 -rw-r--r-- 1 nginx nginx 207 Jan 3 03:39 error.log-20180104 -rw-r--r-- 1 nginx nginx 207 Jan 4 03:35 error.log-20180105 -rw-r--r-- 1 nginx nginx 205 Jan 5 03:45 error.log-20180106 -rw-r--r-- 1 nginx nginx 207 Jan 6 03:41 error.log-20180107 -rw-r--r-- 1 nginx nginx 205 Jan 7 03:30 error.log-20180108 -rw-r--r-- 1 nginx nginx 207 Jan 8 03:22 error.log-20180109 -rw-r--r-- 1 root nginx 12M Jan 16 03:24 error.log-20180111 -rw-r--r-- 1 nginx nginx 207 Jan 11 03:49 error.log-20180112 -rw-r--r-- 1 nginx nginx 207 Jan 12 03:27 error.log-20180113 -rw-r--r-- 1 nginx nginx 205 Jan 13 03:25 error.log-20180114 -rw-r--r-- 1 nginx nginx 207 Jan 14 03:11 error.log-20180115 -rw-r--r-- 1 root nginx 37M Jan 18 02:58 error.log-20180117 -rw-r--r-- 1 root nginx 1.7M Jan 20 03:15 error.log-20180119 -rw-r--r-- 1 root nginx 75M Jan 25 03:03 error.log-20180121 -rw-r--r-- 1 nginx nginx 207 Jan 21 03:20 error.log-20180122 -rw-r--r-- 1 nginx nginx 207 Jan 22 03:38 error.log-20180123 -rw-r--r-- 1 nginx nginx 207 Jan 23 03:10 error.log-20180124 -rw-r--r-- 1 root nginx 4.4M Jan 27 03:32 error.log-20180126 -rw-r--r-- 1 root nginx 1019K Feb 7 03:13 error.log-20180202 -rw-r--r-- 1 nginx nginx 207 Feb 2 03:19 error.log-20180203 -rw-r--r-- 1 nginx nginx 205 Feb 3 03:12 error.log-20180204 -rw-r--r-- 1 nginx nginx 207 Feb 4 03:43 error.log-20180205 -rw-r--r-- 1 nginx nginx 207 Feb 5 03:26 error.log-20180206 -rw-r--r-- 1 root nginx 287K Feb 10 04:38 error.log-20180209 -rw-r--r-- 1 root nginx 161K Feb 12 03:05 error.log-20180211 -rw-r--r-- 1 root nginx 1.2M Feb 20 03:38 error.log-20180213 -rw-r--r-- 1 nginx nginx 207 Feb 13 03:48 error.log-20180214 -rw-r--r-- 1 nginx nginx 205 Feb 14 03:06 error.log-20180215 -rw-r--r-- 1 nginx nginx 207 Feb 15 03:18 error.log-20180216 -rw-r--r-- 1 nginx nginx 205 Feb 16 03:21 error.log-20180217 -rw-r--r-- 1 nginx nginx 205 Feb 17 03:34 error.log-20180218 -rw-r--r-- 1 nginx nginx 205 Feb 18 03:37 error.log-20180219 -rw-r--r-- 1 root nginx 6.1M Feb 25 03:24 error.log-20180223 -rw-r--r-- 1 nginx nginx 205 Feb 23 03:24 error.log-20180224 -rw-r--r-- 1 root nginx 1.9M Mar 2 03:09 error.log-20180226 -rw-r--r-- 1 nginx nginx 205 Feb 26 03:31 error.log-20180227 -rw-r--r-- 1 nginx nginx 205 Feb 27 03:47 error.log-20180228 -rw-r--r-- 1 nginx nginx 207 Feb 28 03:28 error.log-20180301 -rw-r--r-- 1 root nginx 559K Mar 7 03:25 error.log-20180306 -rw-r--r-- 1 root nginx 760K Mar 17 04:12 error.log-20180315 -rw-r--r-- 1 nginx nginx 207 Mar 15 03:28 error.log-20180316 -rw-r--r-- 1 root nginx 374K Mar 20 03:42 error.log-20180318 -rw-r--r-- 1 nginx nginx 205 Mar 18 03:36 error.log-20180319 -rw-r--r-- 1 root nginx 115K Mar 30 03:13 error.log-20180329 -rw-r--r-- 1 root nginx 655K Apr 6 03:15 error.log-20180403 -rw-r--r-- 1 nginx nginx 207 Apr 3 03:14 error.log-20180404 -rw-r--r-- 1 nginx nginx 207 Apr 4 03:11 error.log-20180405 -rw-r--r-- 1 root nginx 240K Apr 10 03:07 error.log-20180409 -rw-r--r-- 1 root nginx 143K Apr 12 02:30 error.log-20180411 -rw-r--r-- 1 root nginx 620K Apr 16 03:15 error.log-20180415 -rw-r--r-- 1 root nginx 241K Apr 19 03:22 error.log-20180418 -rw-r--r-- 1 root nginx 418K Apr 25 03:39 error.log-20180423 -rw-r--r-- 1 nginx nginx 207 Apr 23 03:33 error.log-20180424 -rw-r--r-- 1 root nginx 5.0K Apr 26 03:06 error.log-20180426.gz -rw-r--r-- 1 root nginx 6.0K Apr 27 03:37 error.log-20180427.gz -rw-r--r-- 1 root nginx 48K Apr 28 03:26 error.log-20180428.gz -rw-r--r-- 1 root nginx 839K Apr 30 02:48 error.log-20180429 -rw-r--r-- 1 nginx nginx 181 Apr 30 03:17 error.log-20180430.gz -rw-r--r-- 1 root nginx 100K May 4 02:56 error.log-20180501 -rw-r--r-- 1 nginx nginx 207 May 1 03:08 error.log-20180502 -rw-r--r-- 1 nginx nginx 207 May 2 03:21 error.log-20180503 -rw-r--r-- 1 nginx nginx 183 May 4 03:18 error.log-20180504.gz -rw-r--r-- 1 root nginx 46K May 6 12:11 error.log-20180505 -rw-r--r-- 1 nginx nginx 207 May 5 04:49 error.log-20180506 -rw-r--r-- 1 nginx nginx 958 May 7 03:24 error.log-20180507.gz -rw-r--r-- 1 root nginx 1.6K May 8 03:30 error.log-20180508.gz -rw-r--r-- 1 root nginx 6.4K May 9 03:25 error.log-20180509.gz -rw-r--r-- 1 root nginx 141K May 12 01:32 error.log-20180510 -rw-r--r-- 1 nginx nginx 207 May 10 03:28 error.log-20180511 -rw-r--r-- 1 nginx nginx 183 May 12 03:16 error.log-20180512.gz -rw-r--r-- 1 root nginx 149K May 14 00:30 error.log-20180513 -rw-r--r-- 1 nginx nginx 2.6K May 14 03:09 error.log-20180514.gz -rw-r--r-- 1 root nginx 9.5M May 17 11:46 error.log-20180515 -rw-r--r-- 1 nginx nginx 207 May 15 03:22 error.log-20180516 -rw-r--r-- 1 nginx nginx 207 May 16 03:14 error.log-20180517 -rw-r--r-- 1 nginx nginx 453K May 18 08:58 error.log-20180518 -rw-r--r-- 1 nginx nginx 1.8M May 20 07:48 error.log-20180519 -rw-r--r-- 1 nginx nginx 205 May 19 03:35 error.log-20180520 -rw-r--r-- 1 nginx nginx 1.6M May 21 04:41 error.log-20180521 -rw-r--r-- 1 nginx nginx 4.1M May 23 07:54 error.log-20180522 -rw-r--r-- 1 nginx nginx 205 May 22 05:06 error.log-20180523 -rw-r--r-- 1 nginx nginx 1.7M May 25 03:03 error.log-20180524 -rw-r--r-- 1 nginx nginx 205 May 24 03:06 error.log-20180525 -rw-r--r-- 1 nginx nginx 789K May 26 08:43 error.log-20180526
あらら・・・圧縮されてないですね・・・
gzip
コマンドで圧縮します。
[root@ip-172-31-15-187 nginx]# gzip access.log-20180501 access.log-20180505 access.log-20180510 access.log-20180513 access.log-20180515 access.log-20180518 access.log-20180519 access.log-20180521 ...
こんな感じでファイルを圧縮していきます。圧縮したら、s3とかに移動しておくと良いですね。
そんな感じで、railsのログファイルもどうように圧縮、移動をすると、ディスク容量はだいぶ減るかと思います。