Amazon EBSは、永続的にデータを保持できるボリューム(ディスク)が扱える、Amazon EC2のストレージオプションです。
通常(instance-store)のAmazon EC2のサーバローカルに接続されているディスクは、良くも悪くも停止時(terminate)にデータが消えてしまいますが、Amazon EBSのストレージをルートパーティションとしてインスタンスを起動(EBSブート)した場合は、停止(stop)してもデータは保持されたままとなり、ディスクに対する信頼性は向上します。(instance-storeからのブートにも良い点はあります。それは別エントリで。)
で、EBSブートのEC2インスタンスは、既存の(EBSブート用の)AMIから利用される方が多数だとは思いますが、このEBSブートした仮想サーバのルートパーティションのディスク容量は、デフォルトでは、AMIを作成した際のディスク容量に依存するようになっています。
ということで、EBSからブートしたAmazon EC2インスタンスのディスク容量を増やす方法を以下にメモしておきます。
前提
今回、例として利用する、Amazonから公式に提供されている「EBSブートなFedora8」のAMIでのルートパーティションのディスク容量は"15GB"となっています。
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 15481840 1636904 13058504 12% / none 874032 0 874032 0% /dev/shm
しかも、上記では"instance-store"の時は接続されていた"/mnt"にマウントされている"/dev/sdb"デバイス(m1.smallの場合は150GB程度)等に割り当てられているエフェメラルディスクがありません。
ということで、一時領域として使えるエフェメラルディスクを、きちんと使えるようにしつつ、ルートパーティションのディスク容量を増加させてみます。
インスタンス起動時の実行コマンドオプション
EC2のインスタンス起動時に使うコマンド"ec2-run-instances"の"-b"オプションを利用します。
使い方としては、以下のような感じです。
$ ec2-run-instances ami-853968c0 -k test_key -b /dev/sda1=:30 -b /dev/sdb=ephemeral0 -g default RESERVATION r-10b55354 973301199986 default INSTANCE i-6ebb532a ami-853968c0 pending test_key 0 m1.small 2010-06-08T07:55:09+0000 us-west-1a aki-a13667e4 ari-a33667e6 monitoring-disabled ebs
上記のコマンド例では、ルートパーティションに"30GB"を割り当てる指定例となります。
※ AMI-ID(ami-xxxxxxxx)やSecurity Groups(-gオプション)、Key Pair(-kオプション)の指定は、適宜変えてください。
ルートパーティションである"/dev/sda1"の部分には容量(":"につなげてGB単位の数字)を指定し、"-b"オプションを並べて(複数指定可)、"/dev/sdb"にエフェメラルディスクである"ephemeral0"を割り当てる指定をします。
尚、上位のインスタンスで、エフェメラルディスクがたくさんある場合は、ephemeral[0..3]的な感じで複数指定しましょう。(ephemeral1とかephemeral2とか)
インスタンス起動後
エフェメラルディスクですが、OSの"/etc/fstab"にマウントポイントが指定されていないと、デバイスが接続されただけの状態なので、下記のような感じでEC2のサーバにログイン後、手でマウントしましょう。(必要に応じて"/etc/fstab"も指定して、次回以降は自動でマウントされるようにしておくと良いですね。)
# mount /dev/sdb /mnt/
この時点でのパーティション情報は以下のような感じです。
エフェメラルディスクがマウントされて使えるようになったことが確認できます。(がっ!ルートパーティションは、まだ15GBのままなのです。続く。)
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 15481840 1636904 13058504 12% / none 874032 0 874032 0% /dev/shm /dev/sdb 153899044 192072 145889348 1% /mnt
ディスクデバイスがサイズアップしたことを認識させる
OS的、というかファイルシステム的にも、ディスクサイズが変わったことを知らせてやる必要があります。
以下のような感じで、ファイルシステムのリサイズを行います。
# resize2fs /dev/sda1 resize2fs 1.40.4 (31-Dec-2007) Filesystem at /dev/sda1 is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/sda1 to 7864320 (4k) blocks. The filesystem on /dev/sda1 is now 7864320 blocks long.
ここまで完了した時点で、以下のようにルートパーティションのサイズは30GBで認識、そしてエフェメラルディスクもマウントされた形になりました!めでたしめでたし。
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 30963708 1640696 27750340 6% / none 874032 0 874032 0% /dev/shm /dev/sdb 153899044 192072 145889348 1% /mnt
参考
まとめ
クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)
- 作者: 並河祐貴,安達輝雄,ITpro/日経SYSTEMS
- 出版社/メーカー: 日経BP社
- 発売日: 2009/11/05
- メディア: 単行本
- 購入: 4人 クリック: 372回
- この商品を含むブログ (18件) を見る