概要
急にpossibly out of free disk space
といったエラーがでた時の原因のひとつ。
EC2のinstanceを生成する時には、十分な容量のEBSボリュームをアタッチしたはずなのになあ、おかしいなと思っていたところ、割り当てたボリュームが認識されていないという問題がありました。
動作環境
AWS CentOS Linux release 7.7.1908 (Core)
解決策
まず、パーテーションの確認を行います。
xvdaには最初にアタッチした160GBのストレージを確認できますが、実際に使われているのは、そのうちのxvda2のパーテーションの34GBしかないです。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 160G 0 disk
├─xvda1 202:1 0 1G 0 part /boot
└─xvda2 202:2 0 34G 0 part /
この時のdisk容量を確認すると、見事100%になっています。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 225M 7.6G 3% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/xvda2 34G 34G 0 100% /
/dev/xvda1 1014M 192M 823M 19% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
したがって、この状況を解決するには、
まず、xvda2のパーテーションを拡張する必要があります。
その時にgrowpart
というツールを使うので、インストールします。
growpart
をinstallできない場合は、空き容量がないということなので、いらないファイルを削除して、再試行するするとうまくいくと思います。
$ sudo yum install cloud-utils-growpart
$ sudo growpart /dev/xvda 2 # xvdaの2番目のパーテーション(xvda2)を拡張
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 160G 0 disk
├─xvda1 202:1 0 1G 0 part /boot
└─xvda2 202:2 0 159G 0 part /
パーテーションを拡張できました!
念の為、ファイルサイズを確認すると、、、
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 225M 7.6G 3% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/xvda2 34G 34G 249M 100% /
/dev/xvda1 1014M 192M 823M 19% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
あれれ。。。まだ使用率が100%になっています。
このままだと、xvda2のファイルサイズが、元の34GBのままなので、今度はファイルシステムを拡張する必要があります。その前に、ext2、ext3、ext4、XFS
といったどのファイルシステムでxvdaが管理されているのかを確認します。
$ df -T
ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs devtmpfs 8110620 0 8110620 0% /dev
tmpfs tmpfs 8132940 0 8132940 0% /dev/shm
tmpfs tmpfs 8132940 229880 7903060 3% /run
tmpfs tmpfs 8132940 0 8132940 0% /sys/fs/cgroup
/dev/xvda2 xfs 35640300 35386356 253944 100% /
/dev/xvda1 xfs 1038336 195928 842408 19% /boot
tmpfs tmpfs 1626592 0 1626592 0% /run/user/1000
xvda2はxfs形式であることが確認できました。
それでは、xvda2のmount pointである/
からファイルシステムを拡張します。
$ sudo xfs_growfs -d /
meta-data=/dev/xvda2 isize=512 agcount=31, agsize=288256 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=8912635, 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 8912635 to 41680635
無事ファイルシステムを拡張することができました!
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 225M 7.6G 3% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/xvda2 159G 34G 126G 22% /
/dev/xvda1 1014M 192M 823M 19% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
volumeの確認→パーテーションの拡張→ファイルシステムの拡張の順番で処理していけば大丈夫そうですね。