Inside PRESSBLOG

PRESSBLOG / Instagram / SNS マーケティングとか

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オプションはサイズをGBMBのように、桁数が大きい容量に関しては単位を付けて見やすく表示します。

--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のログファイルもどうように圧縮、移動をすると、ディスク容量はだいぶ減るかと思います。

© DESSART & Co.