dockerを起動しようとしたら以下のエラーが発生した。
$ docker-compose build
Failed to write all bytes for _codecs_cn.so
fwrite: No space left on device
容量不足により起動不可となっているようだ。 以下のコマンドを叩くと容量を喰っているファイルを見つけることができる。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 13M 479M 3% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 8.0G 22M 100% / //容量不足
tmpfs 99M 0 99M 0% /run/user/1001
/dev/xvda1 というファイルがかなりの容量を占めている。
logなどの不要ファイルを削除しても解決できる場合もあるが、今回はEC2で使用しているEBSのサイズを変更して対応する。
無料利用枠のt2.microでは8GBがデフォルトで、今回は16GBに変更する。(若干料金が発生する:約1$/月)
AWSのEC2に移動し、ボリュームに移動する。
目的のボリュームを選択した状態で アクション→ボリュームの変更→サイズを変更(任意の数字:今回は16)→変更
変更が反映され状態がin-useになったらOK。
あとはターミナルからEC2にログインし、以下のコマンドを順に実行していく。
$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=33550303 end=33554399
xvdaが16GBに変更されていることが確認できる。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
ファイルシステム上は変更されていないので次のコマンドで変更できる。
$ sudo xfs_growfs /dev/xvda1
meta-data=/dev/xvda1 isize=512 agcount=4, agsize=524159 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0
data = bsize=4096 blocks=2096635, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2096635 to 4193787
変更が反映されていたら以下のように容量が8GB→16GBに変更されており、
使用率が低減できていることが確認できる。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 16G 0 part /
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 13M 479M 3% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 16G 5.6G 11G 35% /
tmpfs 99M 0 99M 0% /run/user/1001
無事に起動できるようになり、容量にもかなりの余裕ができた。
$ docker-compose build
Building web
:
Successfully built 99f5770ca10a
Successfully tagged app_web:latest
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 14M 479M 3% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 16G 8.1G 8.0G 51% / //容量に余裕ができた
tmpfs 99M 0 99M 0% /run/user/1001
参考記事
https://www.souichi.club/aws/aws-ebs/
CentOS 7からは、xfs_growfsというコマンドを使うことになったようだ。
https://qiita.com/ponsuke0531/items/04153c6228516e48a55e