こんにちは、インフラエンジニアの綿引です。

EC2 運用時に いつのまにかディスク使用率が 100% に、、
という経験がある方もいらっしゃるのでないでしょうか。

そこで今回は EC2 の EBS ボリュームを拡張したので、方法を共有したいと思います。

対象の方は以下のような方でしょうか。

  • EC2 のディスク使用率がそろそろ危ない、、

実施方法

では早速実施していきます。拡張対象の EC2 の情報は以下です。

  • OS : CentOS 7
  • 拡張対象 : ルートパーティション

そしてやる前に 必ずバックアップ を取得しておきましょう。

EBS ボリュームの拡張

まずは EBS ボリュームの拡張を行なっていきます。

マネジメントコンソールの EBS の画面から、拡張対象の EBS ボリュームを選択し 「アクション」 → 「ボリュームの変更」 を選択します。

そして画面遷移後、ボリュームタイプ・サイズを任意のものにして「変更」を押下します。

今回は 200GB → 400GB に変更しました。

変更が開始されると、画面の下部に進捗が表示されますので 100% になるまで待ちます。

パーティションとファイルシステムの拡張

EBS のボリューム拡張が完了したら、次は OS 側にてパーティションとファイルシステムの拡張をしていきます。

まずブロックデバイスが拡張されているか lsblk コマンドで確認します。

[root@ebs-test 02:30:58 ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  400G  0 disk
└─xvda1 202:1    0  200G  0 part /

df コマンドでも確認してみます。

[root@ebs-test 02:31:01 ~]# df -h
Filesystem        Size  Used Avail Use% Mounted on
/dev/xvda1        200G  188G   13G  94% /

ルートボリュームの xvda は先ほどの EBS のボリューム拡張にて 400GB になっていますが、ルートパーテーションの xvda1 はまだ 200GB のままです。

ではパーティションの拡張を growpart コマンドで行います。

[root@ebs-test 02:31:22 ~]# growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=419428319 end=419430367 new: size=838858719 end=838860767

これで xvda1 パーティションが 200GB から 400GB に拡張されました。

[root@ebs-test 02:31:25 ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  400G  0 disk
└─xvda1 202:1    0  400G  0 part /

次にファイルシステムの拡張を xfs_growfs コマンドで行います。

[root@ebs-test 02:32:00 ~]# xfs_growfs /dev/xvda1
meta-data=/dev/xvda1             isize=512    agcount=9, agsize=6553536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=52428539, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 52428539 to 104857339

ファイルシステムの拡張も完了したので、最後に df コマンドで確認してみます。

[root@ebs-test 02:32:28 ~]# df -h
Filesystem        Size  Used Avail Use% Mounted on
/dev/xvda1        400G  188G  213G  47% /

これで OS 側の拡張も完了です。

注意点

注意点としてはファイルシステムによって、パーティション拡張コマンドが異なることです。

  • xfs_growfs : XFS
  • resize2fs : ext2・ext3・ext4

CentOS7 以上ですとファイルシステムが XFS ですので上記手順の xfs_growfs コマンドで問題ないですが、CentOS6 以下をお使いの方は resize2fs コマンドを使っていただければと思います。

最後に

今回は EC2 インスタンスの EBS ボリュームを拡張してみましたが、オンラインでできたのは良かったです。

EBS ボリュームの拡張時間としては 200GB 増やして 5〜6時間 ほどでした。
その間パフォーマンスが劣化するとのことだったので、実施タイミングだけ気をつけたいです。

また EBS を拡張すると、EBS ボリューム分のコストが発生する点も気にしておきたいですね。

エンジニア募集中

Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽に話を聞いてみてください。
株式会社ウエディングパークwantedly

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る