EC2のボリュームも課金対象なので未使用領域が大きいと無駄です。
ディスクの拡大はオンラインで簡単にできますが縮小は手間がかかります。
EC2のボリュームを縮小する方法
無料期間が終了したのでディスクサイズをできるだけ縮小して費用をできるだけ抑えようと思います。
ボリュームの縮小に加えてインスタンスタイプとEIPの自動割り当ても実施します。
- インスタンスタイプをmicroからnanoに変更
- EBSを30GBから15GBに縮小
- EIPを開放してパブリックIPの自動割当を有効にする。
インスタンスタイプの変更
インスタンスタイプの変更はインスタンスを停止する必要があります。
インスタンスをシャットダウンした後にコンソール上で対象のインスタンスを作成し、インスタンスの設定→インスタンスタイプを変更を選択
インスタンスタイプを選択して適用を押しましょう。
EIPを解放して自動割り当てに変更する
起動したEC2にアタッチされているEIPは課金されませんが
停止中のEC2にアタッチされているEIPは課金されて月額500円くらい持ってかれます。
使っていないEIPは解放して課金を回避しましょう
EIPの自動割り当て
EIPの自動割り当て機能はインスタンス作成時に指定する必要があります。
作成済みのインスタンスでEIPを有効化するためには
- インスタンスのAMIカスタムイメージを作成
- AMIから起動時にパブリックIPの自動割当を有効にする
という操作が必要です。
ボリュームの縮小
ボリュームの縮小は下記の流れで行います。ボリュームの縮小は停止が必要です。
- スナップショットを作成
- EBSボリュームの作成(縮小したいサイズのディスク)
- 縮小したいEC2インスタンススナップショットのボリューム(縮小前ディスクと縮小後のディスクの両方)
- 縮小元(スナップショットのボリューム)から縮小後のからディスクにrsyncでコピーする
- コピーした縮小後のディスクをルートディスクとしてアタッチしてインスタンスを起動する
わざわざスナップショットを作成するのは起動中のOSのディスクからは完全にコピーができないからです。
詳しい手順は
- 変更したいインスタンスを停止、スナップショットを取得(後に削除。オンラインでスナップショットとっても良いけど停止が推奨)
- 縮小したいサイズのボリュームを持つインスタンスを新規で作成(OSは揃える)
- 新規インスタンスを停止してディスクをデタッチ
- 変更したいインスタンスにスナップショットのボリュームとデタッチした縮小サイズのボリュームをアタッチ
- 変更したいインスタンスを起動してmount /mnt/old /mnt/newにマウントする
- rsyncでoldからnewに同期する。オプションはrsync -avHAXS
- インスタンスを停止。ルートディスクのルートデバイス名をメモ(/dev/xvdaとか)。すべてのボリュームをデタッチして縮小したボリュームをルートディスクとしてアタッチする
- 起動して動作確認