EBSボリュームの拡張方法

# はじめに
[前回](https://qiita.com/sakai00kou/items/a32f4143f2ddbb77cfa9)のディスクフルでログインできなくなった際の対処を行った後など、そもそものサイズを増やすためEBSボリュームを拡張することもあるかと思うので、拡張方法を紹介しようと思います。

- 【前】[ディスクフルになって接続できなくなった場合の対処方法](https://qiita.com/sakai00kou/items/a32f4143f2ddbb77cfa9)

# EBSボリュームの拡張
EC2インスタンスのボリュームを拡張する場合、使用しているファイルシステムによりますが、`ext4`や`xfs`ファイルシステムの場合は無停止で拡張できるようになっているため、急遽容量を追加したい場合でもすぐに対処できるのが利点です。

尚、今回は`xfs`のファイルシステムを使用している場合の手順となりますので、他のファイルシステムを使用している場合はファイルシステムに沿った方法を実施してください。

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

## EBSボリュームサイズの変更
EBSボリュームの拡張を行うために、「**Elastic Block Store**」→「**ボリューム**」で該当のEBSボリュームを選択→「**アクション**」から「**ボリュームの変更**」を選択します。

![Monosnap_20230205_160329.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/d530e1b7-7f6b-2938-51c3-fe475c413418.png)

「**サイズ(GiB)**」のサイズを変更して「**変更**」を選択することでボリュームサイズを変更します。

![Monosnap_20230205_160403.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/22920767-ece1-41fd-9094-53f988d25ed5.png)

## パーティションの拡張
上記のボリューム変更を行っただけでは、ファイルシステムとして認識されているサイズは変わらないため、拡張操作を行い、領域を拡張します。

`lsblk`コマンドで物理デバイスのサイズとパーティションサイズを確認すると、物理デバイスのサイズとしては20GBとして認識されておりますが、デバイスの中で区切られたパーティションのサイズは8GBとなっていることが確認できると思います。

```bash:EBSボリュームサイズ変更時のlsblk結果
$ sudo lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk
└─xvda1 202:1    0   8G  0 part /
```

パーティションのサイズを拡張して全領域使用するため、`growpart`コマンドでパーティションのサイズを拡張します。

尚、デバイス名と末尾の「**1**」の間にはスペースが必要となり、末尾の「**1**」はパーティション番号を指定する必要があります。

パーティション番号は`lsblk`で表示されたパーティション番号を指定してください。

```bash:パーティションのサイズ拡張
$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=41938911 end=41943007
```

成功すれば、`lsblk`コマンドの結果が以下のようになることが確認できるかと思います。

```bash:パーティションサイズ変更後のlsblk結果
$ sudo lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk
└─xvda1 202:1    0  20G  0 part /
```

## ファイルシステムの拡張
パーティションサイズを変更しただけでは以下のようにファイルシステムとして認識しているサイズは変わりません。

パーティションサイズを変更した時点で`df`コマンドを実行すると`/dev/xvda1`のサイズが8.0Gのままであることが確認できるかと思います。

```bash:パーティションサイズ変更後のdfの結果
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  452K  482M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  1.6G  6.5G  20% /
tmpfs            97M     0   97M   0% /run/user/1000
```

拡張したパーティションを`xfs`で使用できるようにするため、`xfs_growfs`コマンドを実行し、ファイルシステム領域を拡張します。

`-d`で拡張したいマウントポイントを指定することで拡張できます。

```bash:ファイルシステム領域の拡張
$ sudo xfs_growfs -d /
meta-data=/dev/xvda1             isize=512    agcount=4, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0
         =                       reflink=0    bigtime=0 inobtcount=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 log           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 5242363
```

ファイルシステム拡張後、再度`df`コマンドを実行すると、`/dev/xvda1`のサイズが20Gに拡張されたことが確認できるかと思います。

```bash:ファイルシステム領域拡張後のdfの結果
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  452K  482M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1       20G  1.6G   19G   8% /
tmpfs            97M     0   97M   0% /run/user/1000
```

# おわりに
頻繁に発生する問題では無いですが、たまにしかやらないこともあり毎回調べて行っていたので、次からは本記事を見返してやろうと思います。