EC2でvolumeアタッチしたはずなのに、possibly out of free disk space とかでる時は、パーテーションの拡張を確認してみる

## 概要
急に`possibly out of free disk space`といったエラーがでた時の原因のひとつ。
EC2のinstanceを生成する時には、十分な容量のEBSボリュームをアタッチしたはずなのになあ、おかしいなと思っていたところ、**割り当てたボリュームが認識されていない**という問題がありました。

## 動作環境
AWS CentOS Linux release 7.7.1908 (Core)


## 解決策
まず、パーテーションの確認を行います。
xvdaには最初にアタッチした160GBのストレージを確認できますが、実際に使われているのは、そのうちのxvda2のパーテーションの34GBしかないです。

```sh
$ 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%になっています。

```sh
$ 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できない場合は、空き容量がないということなので、いらないファイルを削除して、再試行するするとうまくいくと思います。

```sh
$ sudo yum install cloud-utils-growpart
$ sudo growpart /dev/xvda 2 # xvdaの2番目のパーテーション(xvda2)を拡張
```

```sh
$ 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の確認→パーテーションの拡張→ファイルシステムの拡張の順番で処理していけば大丈夫そうですね。

## 参考
[ボリュームサイズ変更後の Linux ファイルシステムの拡張](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html)