Ubuntu Weekly Topics

2011年3月18日号Linux ContainerとOpenStackサポート・PXEによるノード展開・cloud-initの強化

Nattyの開発

前回に引き続き、今回も「Nattyの新機能」の概要を見ていきましょう。今回はクラウド関連技術を中心にお届けします。

cloud-server-n-containers-finetune / cloud-server-n-containers-in-uec

Linuxには「コンテナ」と呼ばれる仮想化技術が存在します。KVMなどのハイパーバイザー型仮想マシンでは仮想マシン上で複数のカーネルを動作させるのに対して、コンテナ型は「既存のカーネルをそのまま利用し、カプセルに閉じ込めた環境として動かす」ものです。現在もっとも有名なコンテナ型仮想マシンは、おそらくOpenVZです。

コンテナ型仮想マシンの場合も、VMwareやKVMなどと同じく、⁠既存のOS環境のプロセスとして」仮想OSを生成して動作させることができます。ユーザーから見ると、基本的にはハイパーバイザー型であってもコンテナ型であっても、同じように扱えます。OpenVZを利用したVPS環境などを利用されている方もいるでしょう。

ただし、コンテナ型は「通常のオペレーションで使われる空間」「仮想OSが利用する空間」に論理的に分割しているだけで、⁠仮想マシン」といったレベルの仮想化は行っていません。コンテナ型は同じホストOS・ゲストOSで同じカーネルのインスタンスを利用し、Unix namespaceやデバイス制御などを「隔離」して用いているだけです[1]⁠。カーネル(特にメモリページ)が共用されているため、マシン一台あたりのリソース消費が少なくなる=多くのマシンを収容できる、ということです[2]⁠。ただしカーネルが共有されることで、仮想マシン(子)側からカーネルの脆弱性を突かれると、⁠親」側まで乗っ取られてしまうおそれがある、という問題があります。

要するに、⁠既存の環境から隔離されたプロセス環境が作れる」もしくは「非常に軽い仮想マシン環境(ただし少し制限がある⁠⁠」ものだと思っておけば、それほど間違ってはいません。

このコンテナ型仮想マシンの実装のひとつに「lxc」⁠Linux Container)があります。lxcは「一応」Linuxカーネルにすでに基本機能が取り込まれており、比較的容易に利用できる状態になっています。

Nattyで利用可能になる新機能のひとつは、この「lxc」を簡単に利用できるようにする、というものです。すでに現状で「lxc上でmavericやnattyを動かし、仮想マシンインスタンスとして扱う」ことが簡単に行える状態になっています(lxc-debianやlxc-fedora等もありますが、これはlxcの配布物そのもの⁠⁠。Debian環境で比較用にUbuntuを利用する、あるいはUbuntu環境の中で開発用にDebian sidを稼働させる、といった開発者的な用途にも使え、これ単体でも非常に便利な状態になっています

今回のlxc関連の機能強化は、これだけではありません。Eucalyptusを利用したAmazon EC2互換のクラウド基盤環境、Ubuntu Enterprise Cloud(UEC)への適用も行われようとしています。UECは基本的にKVMを前提としているため、HVM(Intel VT-xやAMD-V)をサポートするハードウェアでなければ動作が行えませんでした。これにより、⁠古いマシンをUECに組み入れて使う」といったことはできません。また、ARMやPPCなど、そもそもHVMをサポートしたCPUが入手でいないアーキテクチャもあり、こうした環境ではUECを利用してなにかを作る、ということは不可能でした。

UECで利用可能な仮想化方式としてlxcが追加されることで、こうした環境でもUECを利用することが可能になります。また、lxcはメモリ効率やストレージの利用効率といった面でKVMに比べて有利なため、ハードウェア性能に不安がある環境で、⁠軽量な仮想マシン環境」として利用できます。これはそのままUEC環境にも適用されるため、ARMベースの高電力効率マシンを用いたUECファーム、といった応用も可能になる、と言えます。

cloud-server-n-install-service

UEC(Eucalyptus)では、⁠実際に仮想マシンを動作させるマシン」「NC」と呼びます。他のマシン群(CLC・CC・SC・Warlus)はストレージを担当したり、⁠司令塔」「窓口」としての役割を果たし、最終的に「NC」でKVMかlxc仮想マシンが動作する、というモデルです。

UECは必要に応じて構成マシンを追加していくことができるのですが、大量のマシンでUECを構築した場合、そのほとんどは「実際に仮想マシンを動かす」役割を果たすNCとなります。UEC環境のセットアップは非常に簡単で、Ubuntu ServerのCDを用いて起動し、UECのセットアップモードを指定、NCとして設定、といった単純な手順でNCを増やしていけるのですが、CDからわざわざ起動して手動で設定、というのは非常に面倒なものです。

そこで、Nattyからは「PXEブートで起動することで、自動的にNCとしてセットアップされる」という新機能が企画されています。もともとはcobblerとpuppetを組み合わせ、PXEブートで任意の機能を持ったサーバーを導入できるようにする、というものだったのですが、コンセプト実証のためにNCの自動インストール機能が提供されるようになりました。今後、さらに機能が充実し、他の種別のサーバーも容易にインストールできるようになりそうです。

cloud-server-n-openstack-integration

OpenStack[3]は、Eucalyptusなどと同じクラウド基盤で、多くの企業が参加して開発が行われているオープンソースプロジェクトです(Canonicalも参加しています⁠⁠。Natty以降、UbuntuではOpenStackもパッケージ環境に含まれ、容易に利用できるようになります。

Nattyに含まれるOpenStackは、⁠Bexar」です[4]⁠。

cloud-server-n-cloud-init

cloud-initは、Ubuntuのリリース形態のひとつである「EC2向け」イメージ[5]で利用される、⁠クラウド環境特有の初期化処理を行うためのユーティリティ」です。起動時に自動的に呼び出され、⁠設定ファイルを指定されたサーバーからダウンロードし、IPアドレスの設定を行う」⁠EC2環境では基本⁠⁠、⁠SSH公開鍵を任意に登録する」⁠これもEC2環境では自動的に行われるのが前提)といった処理を行います。

Nattyのcloud-initでは設定ファイルとしてyamlも利用できるようになる・RightScaleで利用するソフトウェアを事前設定できるようになる等、細かな部分のチューニングが行われます。特にyamlで設定できるようになる点は非常に大きいと言えるでしょう[6]⁠。

その他のニュース

今週のセキュリティアップデート

usn-1087-1:libvpxのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001276.html
  • Ubuntu 10.10用のアップデータがリリースされています。CVE-2010-4489を修正します。
  • CVE-2010-4489は、WebMメディアファイルの処理における問題で、悪意ある細工の施されたWebMファイルを開いた際にクラッシュが発生するものです。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
  • 備考:このアップデートはセキュリティ修正だけでなく、それ以外の修正点も含んでいます。
usn-1085-2:tiffの再アップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001277.html
  • 現在サポートされている全てのUbuntu(6.06 LTS・8.04 LTS・9.10・10.04 LTS・10.10)用のアップデータがリリースされています。usn-1085-1の再アップデートです。LP#731540を修正します。
  • usn-1085-1として提供されたアップデータに問題があり、CCITTFAX4ファイルの扱いによる脆弱性を修正しきれていませんでした。
  • 対処方法:アップデータを適用の上、セッションを再起動(一度ログアウトして再ログイン)してください。
usn-1079-2:OpenJDK 6のセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001278.html
  • usn-1079-1のARM環境向けリリースです。
usn-1088-1:Kerberosのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001279.html
  • Ubuntu 9.10・10.04 LTS・10.10用のアップデータがリリースされています。CVE-2011-0284を修正します。
  • CVE-2011-0284は、KerberosのKDCにおいて、PKINIT機能を有効にしている場合に限り、ネットワーク越しに悪意あるパケットを送出することで、メモリの二重解放によるクラッシュを引き起こせる問題です。理論的には任意のコードの実行も可能ですが、現実的な環境を仮定した場合は機能する攻撃コードの作成は困難と考えられます。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

おすすめ記事

記事・ニュース一覧