EC2 EBS ボリュームサイズ拡張の方法

tl;dr

EC2 でディスク使用量がパンパンになってきて
ボリュームをオンラインで拡張したくなったときのやりかたメモです。

基本的に公式ガイドに沿えば OK
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

のようですが、今回のケースではうまくいかなかったため、別の方法で実施したましあので、その内容をシェアします。

 

チェック

 
df -h
 
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.7G  6.7G  1.1G  87% /

(※ルート以外省略してます)

ここのルート / の容量を拡張したいとします。

 

lsblk
 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /

ボリュームの容量をチェックしておきます。

 ボリュームの容量を変更する

コンソールだとボリュームの編集でかんたんに変更できます:

Volumes___EC2_Management_Console.png

(少しだけ時間かかります。5分くらい?)

 パーティションの拡張

で lsblk でサイズを再度確認してみます:

 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  12G  0 disk
└─xvda1 202:1    0   8G  0 part /

ボリューム全体のサイズは拡張されていますが、
ルートのパーティションのサイズは変わってません。

なので growpart で xvda1 のサイズを拡張します:

sudo growpart /dev/xvda 1

CHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=25163743,end=25165791

CHANGED とか出たら変わってます。
容量がカツカツのときはこの操作に必要な一時ファイルを/tmp に作成することもできないので、いくらか空き容量を空けておきます。

ふたたび lsblk してパーティションが拡張されていれば OK です:

 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  12G  0 disk
└─xvda1 202:1    0  12G  0 part /

 ファイルシステムの拡張

ここで df -h をしてみて、まだ容量が変化してないことに気づいたときは:

 
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.7G  6.7G  1.1G  87% /

LVの拡張まで行って、最後にファイルシステムを拡張しようとするときに、CentOS 6の時代と同じくresize2fs とやると以下のエラー

[root@localhost ~]# resize2fs /dev/xvda1  
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock.

調べていくと、CentOS 7 からデフォルトになっているXFSではresize2fsは利用できないということ。

XFSではresize2fs の代わりに xfs_growfs を使えばOK

 

[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 39321600
[root@localhost ~]# echo $?
0

うまくいきました。

 

参考

qiita.com

qiita.com