最近 Amazon EBS のストレージサイズを拡張することがあったので、その作業時の記録を備忘録も兼ねて共有しておきたいと思います。

昔は EBS のストレージサイズを変更する際はインスタンスを停止させて、ボリュームをデタッチして、ボリュームを作成してアタッチ…などといった手間のかかる作業が必要でしたが、2年ほど前からサイズの拡張であれば EC2 インスタンスを停止させること無く行うことができるようになっています。

1. 対象EBSボリュームのスナップショットを作成

作業を行う前にかならずバックアップは取っておきましょう。

2. ボリュームを変更

200GB → 300GB の変更を行ったのですが、90分ほどかかったので作業時間には余裕をもたせたほうが良さそうです。

3. df コマンドで現状のディスク使用状況を確認

$ df -h
(略)
/dev/nvme0n1p1   200G  157G   44G   79% /
(略)

4. lsblk コマンドで、物理ディスクが拡張されていることを確認

$ lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  300G  0 disk
├─nvme0n1p1   259:1    0  200G  0 part /
└─nvme0n1p128 259:2    0    1M  0 part

5. growpart コマンドでストレージを拡張

$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=419426271 end=419430367 new: size=629141471,end=629145567

6. fileコマンドで現状のファイルシステムを確認

$ sudo file -s /dev/nvme0n1p1
/dev/nvme0n1p1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)

Amazon Linux の場合はファイルシステムが XFS だったのですが、ext4 の場合は次の 7 で resize2fs コマンドを実行する必要があります。

7. xfs_growfs コマンドでファイルシステムを拡張

$ sudo xfs_growfs /dev/nvme0n1p1
meta-data=/dev/nvme0n1p1         isize=512    agcount=101, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=52428283, 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 52428283 to 78642683

8. df コマンドでディスクが拡張されていることを確認

$ df -h
(略)
/dev/nvme0n1p1   300G  157G  144G   53% /
(略)

 

以上で完了です。
めでたしめでたし。