OSSのクラウド基盤「Eucalyptus」を使う(6)--VM実行環境の設定とCentOSでのイメージ作成

箕浦真(VA Linux Systems Japan)
2009-07-21 10:45:01
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

 この連載では、Amazon EC2互換のクラウド基盤であるOSS「Eucalyptus」を使い、「自分たち専用」のクラウド環境を構築することを目標に解説を行っています。今回は、仮想マシン実行環境の設定方法と、CentOSでの実用イメージの作成方法について説明しましょう。なお、記事で利用しているEucalyptusのバージョンは「1.5.1」になりますが、7月中旬に「1.5.2」がリリースされたとのニュースがありました。バグ修正が主なようですが、ライセンスがGNU GPL3に変更になっています。

 記事中に登場する用語や略語、概念などで分からないものが出てきた場合には、この連載の過去記事を参照しながら読み進めてください。

10.仮想マシンの実行環境

 Eucalyptusのウェブ設定画面のConfigurationタブには、「VM Types」というセクションがあります。「m1.small」「c1.medium」「m1.large」「m1.xlarge」「c1.xlarge」の5つのタイプそれぞれに対し、仮想CPU数、メモリサイズ、ディスクサイズの設定が可能です。

 CPU、メモリ、ディスクのそれぞれの項目は、m1.smallからc1.xlargeの順に昇順になっていなければなりません。編集には少々コツが必要で、たとえばメモリを既定の「128、128、512、1024、2048」から「512、2048、2048、2048、4096」に変更したい時、これらを一気に変更して「Save VmTypes」ボタンを押してもうまくいきません。恐らく内部的に1つずつ変更しているのでしょう。m1.smallの値を512にしようとした瞬間に、c1.mediumの古い値である128と比較して大きいためにエラーが出るものと思われます。面倒ですが、c1.xlargeから1つずつ変更していけば大丈夫です。

 CPUは前述の通り、計算ノードのCPUコアの数に対応しますから、仮に計算ノードがすべてCore 2 Duoを1つだけ搭載したマシンで構成されていた場合、仮想CPUが4のインスタンスは逆立ちしても作成することはできません。5つのタイプすべてを、「1」か「2」に設定する必要があるでしょう。

 次にメモリは、ハイパーバイザ用には32Mバイト(ハードコード)、Domain 0用には「/etc/xen/xend-config.sxp」の変数「com0-min-mem」で指定した値(既定では256Mバイト)が、それぞれ予約され、残りをインスタンスに割り当てます。たとえば、4Gバイト(4096Mバイト)のメモリを積んだ計算ノードの場合、全インスタンスの合計で3808Mバイト(4096-32-256=3808)までが割り当てられます。

 すべての計算ノードが均一の構成の場合、各タイプのCPUとメモリを比例させると効率的に割り当てることができます。たとえば、各計算ノードのコア数が4、メモリが4Gバイトであれば、1コアあたり900Mバイトのメモリを割り当てることにして、

タイプ CPU メモリ(MB)
m1.small 1 900
c1.medium 1 900
m1.large 2 1800
m1.xlarge 2 1800
c1.xlarge 4 3600

のように割り当てると、メモリとCPUを無駄なく(スキ間なく)割り当てることができます(実際には3808Mバイトまでですので、202Mバイトほど余ります)。

 ディスクは各計算ノードのローカルディスクにディスクイメージファイルとして作成されます。各インスタンスには3つのディスクが割り当てられ、その合計がウェブ設定画面で指定される容量となります。

 1つ目のディスクはルートファイルシステム用で、マシンイメージを展開したサイズになります。実際に試してみると、64bit OSの場合、最低でも2GバイトくらいはないとOS自体が入り切らないのではないかと思います。ルートファイルシステムは、sda1として割り当てられます(*1)。このディスクのイメージは基本的には「ec2-run-instances」で指定したマシンイメージを展開したものですが、これがext3ファイルシステムのイメージであれば、tune2fsで定期的なfsckを禁止した上で、「/root/.ssh/authorized_keys」を編集して「ec2-run-instances」で指定したssh鍵に対応する公開鍵を登録する処理が行われます。公開鍵はインスタンスメタデータとして取得することもできるので、ext3以外のファイルシステムや、Linux以外のOSイメージを使うことも可能です。

 2つ目のディスクはswap用で、サイズは512Mバイト固定です。mkswapされた上で仮想マシンに渡されます。デバイス名はsda3です。

 この2つのディスクで指定容量に達した場合、インスタンスの実行は行われません。

 残りの容量が一時ディスクとしてsda2となります。これは、mkfs.ext3された上で仮想マシンに渡されます。

 以上を考慮すると、既定のVM Typesではディスクのサイズが小さすぎるように思えます。

(*1) ゲストOSのフロントエンドドライバの対応状況により実際にゲストOSから認識されるデバイス名は異なります。CentOS 5.3やopenSUSE 11.1のカーネルはsda1として認識しますが、Ubuntu 9.04のカーネルはxvda1、NetBSD 5.0のカーネルならxbd0と認識します。同様に、一時ディスクはCentOSとopenSUSEがsda2、Ubuntuがxvda2、NetBSD ならxbd1となり、swapはそれぞれsda3、xvda3、xbd2となります。

11.実用イメージの作成 〜CentOS 5.3編〜

  • 新着記事
  • 特集
  • ブログ