Database JUNKY

MySQL,MariaDBを中心としたブログです

AWS EC2インスタンスのEBSディスク領域をサービス無停止で拡張する方法

amazon ec2ディスクを無停止で拡張する

EC2インタンスで数年運用していると、様々の理由でディスクの領域が枯渇することってないですか?私の場合、データベースサーバをEC2 インスタンスで動かしていて、初めは不要なファイル、もしくはテーブルをDROPしてなんとか対処していたのですが、にっちもさっちもいかなくなってもう限界に・・しかし、サービス止めれないよな?どうしよう(汗)って感じで、色々調べているうちに、いつの間にかインスタンスを止めずにディスク領域を拡張できるようになっていた・・・って話です。

今回EC2のインスタンスは、CENTOS7で実行しております。redhat linuxおよび amazon linuxでの作業内容に大きな差はないと思います。

ディスク領域の拡張

対象インスタンスのデバイスを確認する

f:id:hit10231023:20190930110049j:plain

対象のEBSIDをクリックする

f:id:hit10231023:20190930110123j:plain

ディスク確認

対象のディスクが100GBであることを確認する、今回はこれを拡張する

f:id:hit10231023:20190930110140j:plain

ディスクの拡張

ディスク拡張

ボリュームを変更する

f:id:hit10231023:20190930110231j:plain

100GB -> 200GBに拡張

f:id:hit10231023:20190930110247j:plain

確認画面がでるので「はい」を選択

f:id:hit10231023:20190930111152j:plain

変更が正常に完了すると以下のダイアログが表示されます

f:id:hit10231023:20190930110326j:plain

Linuxでの作業

ディスクの状態をチェックする

xvdaが200GBになっていることを確認、ただし、マウントは100G

[centos@my-server ~]$df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       100G   40G   61G   40% /
devtmpfs          16G     0   16G    0% /dev
tmpfs             16G     0   16G    0% /dev/shm
tmpfs             16G  1.2G   15G    8% /run
tmpfs             16G     0   16G    0% /sys/fs/cgroup
tmpfs            3.2G     0  3.2G    0% /run/user/1000
[centos@my-server ~]$lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  200G  0 disk
└─xvda1 202:1    0  100G  0 part /

念のためファイルシステムを確認する

ファイルシステムは、xfs

[centos@my-server ~]$df -T
ファイルシス   タイプ     1K-ブロック     使用        使用可 使用% マウント位置
/dev/xvda1     xfs          104846316 41230940      63615376   40% /
devtmpfs       devtmpfs      16369716        0      16369716    0% /dev
tmpfs          tmpfs         16390380        0      16390380    0% /dev/shm
tmpfs          tmpfs         16390380  1237288      15153092    8% /run
tmpfs          tmpfs         16390380        0      16390380    0% /sys/fs/cgroup
tmpfs          tmpfs          3278076        0       3278076    0% /run/user/1000

ディスク拡張作業

growpart コマンドを利用します

[centos@my-server ~]$sudo growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=209713119 end=209715167 new: size=419428319,end=419430367

上記コマンド実行後、再度チェック

200GBになっていることを確認

[centos@my-server ~]$lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  200G  0 disk
└─xvda1 202:1    0  200G  0 part /

xfsフォーマットでファイルシステムを拡張

上記のコマンドだけでは、論理ディスクは拡張できないので、xfs_growfs コマンドでファイルシステムも拡張します

[centos@my-server ~]$sudo xfs_growfs -d /
meta-data=/dev/xvda1             isize=512    agcount=51, agsize=524224 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=26214139, 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 26214139 to 52428539

作業後チェック

ルートボリュームが、200Gになっていることを確認

[centos@my-server ~]$df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       200G   40G  161G   20% /
devtmpfs          16G     0   16G    0% /dev
tmpfs             16G     0   16G    0% /dev/shm
tmpfs             16G  1.2G   15G    8% /run
tmpfs             16G     0   16G    0% /sys/fs/cgroup
tmpfs            3.2G     0  3.2G    0% /run/user/1000

f:id:hit10231023:20180309123622p:plain