Amazon EC2のディスクはEBS(Elastic Block Store)と呼ばれるストレージボリュームで管理されています。

EC2のインスタンスを生成する際、[highlight]デフォルトでは8GB[/highlight]のディスクが割り当てられたEBSが接続されるので、何も意識しないと、8GBしかないWebサーバーが立ち上がることになります。もちろんインスタンス生成時にディスク容量を指定すれば8GB以上のインスタンスを立ち上げることはできます。

アクセス数の多いWebサーバーなどでは、ログが肥大化すればすぐに8GB位になってしまうので、ディスク100%になる障害も、AWS触り立てだとよくある失敗事例となります。

そこで、EC2に割り当てられたディスク容量を拡張する方法を紹介したいと思います。
ディスク拡張の方法はいくつかありますが、今回は、AMIを一旦作ってから再度EC2インスタンスを立ち上げる方法をご紹介いたします。

[divider]

1. 既に動いているインスタンスのAMIを作成する。
 OSイメージのコピーを作っておきます。
 起動中のEC2インスタンスのAMI作成中は、EC2が再起動されるので注意が必要です。(no rebootというオプションを指定すれば、再起動させない事もできます)

2. AMIを作成する。この時、ディスク容量を大きくしておく。

3. 2で作成したAMIから新しくEC2インスタンスを生成。

4. OSにログインして、rootでresize2fsコマンドでディスク拡張する
[text]resize2fs /dev/xvda1[/text]

/dev/xvda1部分は、実際のファイルシステム名を指定します。df -hなどのコマンドで確認してください。

5. コピー前のインスタンスに割当たっているIPアドレス(Elastic IP Address)をデタッチし、新しいインスタンスにアタッチする

[box type=”note”]Elastic IP Addressを利用しないと、EC2インスタンスのグローバルIPアドレスは固定ではありません。インスタンスを再起動するとIPアドレスが変更されてしまうので注意が必要です。固定IPにしたい場合は、Management Consoleのサイドメニュー「Elastic IPs」から【Allocate New Address】で固定IPを取得し、その後に【Associate Address】ボタンからEC2インスタンスにIPアドレスを割り当てることでEC2のグローバルIPを固定にすることができます。[/box]

EC2のディスク容量や、グローバルIPアドレスの件などは初めてAWSを触るときの注意事項の1つかと思います。