EC2のボリューム(EBS)容量拡張方法検証 (AmazonLinux)

## 結論を3行で

* まず[【遂に来た！】EBS でボリュームサイズを変更できるようになりました（ボリュームタイプ変更も） ｜ Developers.IO](http://dev.classmethod.jp/cloud/aws/release-change-ebs-volume-size/) の `Modify Volume`をやる
* resize2fsが実行できなくてハマりそうになった場合、AmazonLinuxはだいたいの場合boot時にresize2fsされるので、rebootすれば解決する
* いい時代になった


## 検証

[【遂に来た！】EBS でボリュームサイズを変更できるようになりました（ボリュームタイプ変更も） ｜ Developers.IO](http://dev.classmethod.jp/cloud/aws/release-change-ebs-volume-size/) を参考に、稼働中のインスタンスにアタッチ済みのボリュームのサイズを増やしてみます。

今回ボリュームを増やしたいインスタンスはこのような感じです。

インスタンス的には`/dev/xvda`というところに30GBのボリュームがあります。

```shell-session
ec2-user@ip-172-31-10-224 ~ $  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       30G  3.8G   26G  13% /
devtmpfs        490M   56K  490M   1% /dev
tmpfs           499M     0  499M   0% /dev/shm

ec2-user@ip-172-31-10-224 ~ $  lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  30G  0 disk
└─xvda1 202:1    0  30G  0 part /
```


ほとんど元記事のとおりですが以下のような感じです。

<img width="1305" alt="スクリーンショット_2017-05-18_11_30_15.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/010731bb-6b59-677e-62d9-51dad916f64d.png">

Modify Volumeを押します

<img width="328" alt="スクリーンショット 2017-05-18 11.30.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/45f36ce1-ab0d-8d62-5329-bfc04141b014.png">

今回は 30GB -> 100GBにします


<img width="572" alt="スクリーンショット 2017-05-18 11.32.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/ba497e65-4201-176c-ce2d-0750e6e63e25.png">

パフォーマンスが変更されるまで時間がかかるとのこと。。yesを押す。

<img width="568" alt="スクリーンショット 2017-05-18 11.33.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/92082779-8c24-2544-45c5-84626fa8a0a1.png">

完了。

<img width="577" alt="スクリーンショット 2017-05-18 11.34.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/93b8324d-8bab-0b47-ef8e-9f02f64c8597.png">

ボリュームの状態は `optimizing...0%` という表示になりますが、もうこの状態で **ディスクの拡張は終わっています。**

<img width="1433" alt="スクリーンショット 2017-05-18 11.34.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/30715/2eb551ff-259e-0174-9d3f-6990baaf86c6.png">

awscli的には `$ aws ec2 describe-volumes-modifications` と叩くと進捗が表示されます(引数なしでOK)

```json
$ aws ec2 describe-volumes-modifications
{
    "VolumesModifications": [
        {
            "TargetSize": 100,
            "TargetVolumeType": "gp2",
            "ModificationState": "optimizing",
            "VolumeId": "vol-0e92fb2e26dfd9687",
            "TargetIops": 300,
            "StartTime": "2017-05-18T02:34:07.151Z",
            "Progress": 0,
            "OriginalVolumeType": "gp2",
            "OriginalIops": 100,
            "OriginalSize": 30
        }
    ]
}
```


`"Progress": 0` ですが、`lsblk` を叩くともう反映されていることがわかります。

```shell-session
ec2-user@ip-172-31-3-117 ~ $  lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  100G  0 disk             # <- 100になってる
└─xvda1 202:1    0   30G  0 part /
```


次に `resize2fs` すればよいのですが、以下のような感じで怒られます。

```
resize2fs 1.42.12 (29-Aug-2014)
resize2fs: Device or resource busy while trying to open /dev/xvda
Couldn't find valid filesystem superblock.
```

今回はパーティションの設定がされているためと思われます。パーティションを利用している場合の設定はこちら。http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/storage_expand_partition.html
ただルートパーティションの場合は面倒そうなので、起動時に実行されるresize2fsに任せることにしました。

見たところAmazonLinuxの場合  `/etc/cloud/cloud.cfg.d/00_defaults.cfg` の中で `resize2fs` の記述があるので、再起動時に実行されるようです。

こうして、何も考えずにrebootすることにより、dfの結果が変わりました :tada: 

```shell-session
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       99G  9.1G   90G  10% /           # <- 99GBに増えてる
devtmpfs        490M   56K  490M   1% /dev
tmpfs           499M     0  499M   0% /dev/shm

```