EBSブートしたルートパーティションの領域拡張


 


us-westのEC2環境を使い始めたのを機に、昨年末話題になっていたEC2インスタンスのEBSブートを試した。
その際、以下の各サイトを参考にさせて頂いた。

http://nxdxa.blogspot.com/2010/02/amazon-ebs-ec2.html
http://blog.suz-lab.com/2010/01/migrating-centos-s3-based-ami-to-ebs.html
http://coderslike.us/2009/12/07/amazon-ec2-boot-from-ebs-and-ami-conversion/

ネット上の情報を見るに、EC2インスタンスのEBSブートには、以下のようなメリットがあるようだ。

・S3ベースのインスタンスと比較し、起動が速い。
・インスタンス停止時に”terminate”ではなく”stop”を実行することで、ルートパーティション上のデータが消されないで済む。
・S3ベースのインスタンスのルートパーティションの領域は、10GBが上限。一方、EBSベースの場合、1TBまで領域を拡張できる。

1つ目、2つ目のメリットについては噂通り。
インスタンスの起動時間は計測したわけではないが、速くなっている印象を受けた。
また、ルートパーティション上で変更を加えた場合(/etcの下のファイルをイジる、とか・・・)、以前ならec2-bundle-volしないといけなくてウザかったのだが、その必要はなくなった。インスタンスをterminateせず、stopしておけば、ルートパーティション上のデータは消えず、課金もされない。個人でちょくちょく使う利用者にとってはうれしい機能だ。

一方、3つ目のメリット、ルートパーティションの領域拡張については、最初若干うまくいかなかった。
参考にさせて頂いた3つめのサイトの情報を基に、インスタンス起動時にblock-device-mappingを指定してルートパーティションの領域を拡張しようとしたのだが、これがどうにもうまくいかない。ec2run -hの情報を見て色々試行錯誤したのだが、コマンドだとうまくいかない・・・なんでだろう?


C:\Amazon Web Services>ec2run ami-XXXXXXXX --block-device-mapping /dev/sda1=:50 -k xxxx -g xxxx -z us-west-1a
WARNING: Ignoring extra parameter(s): [ :50 ]
Invalid argument for option '-b, --block-device-mapping MAPPING': '/dev/sda1' (-h for usage)

結局、インスタンスはAWS Management Consoleで普通に起動させ、起動後にサーバにログインし、resize2fsしたら普通にうまくいった。
(以下はCentOSの例)


[root@hogehoge ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10321208 2340744 7456176 24% /
none 870472 0 870472 0% /dev/shm
[root@hogehoge ~]#

[root@hogehoge ~]# resize2fs /dev/sda1
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/sda1 to 13107200 (4k) blocks.
The filesystem on /dev/sda1 is now 13107200 blocks long.

[root@hogehoge ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 51606140 2350816 46634396 5% /
none 870472 0 870472 0% /dev/shm

インスタンスをterminateすると、拡張した領域のサイズも元に戻ってしまう。
インスタンスを止めたい時は、stopすること。

 

One Comment

  1. kt
    | Permalink

    こんにちは。
    WARNING: Ignoring extra parameter(s): [ :50 ]
    のエラーに関しては、”/dev/sda1=:50″ とくくればうまくいきそうです。
    同じ現象に遭ってそれでいけました。参考まで。

関連記事