FreeBSD - The Power To Serve

7日と8日、ドイツのカールスルーエにおいてFreeBSD DevSummitが開催された。続く9日と10日にはEuroBSDCon 2010が開催されている。毎年この時期に開催されている*BSD国際会議で、欧州では最大の*BSDカンファレンスとなる。

FreeBSDの最新開発状況に関する興味深い発表がいくつかあったので、内容をかいつまんで紹介する。

Virtual Private System

EuroBSDCon 2010でおそらくもっとも開発者の目を惹いたのがKlaus P. Ohrhallinger氏が開発したOSレベルの新しい仮想化機能であるVPS (Virtual Private System)だ。これまでFreeBSDにはなかったまったく新しい仮想化機能で、軽量で高速に動く上に、高いスケーラビリティと細かいリソース制御機能まで実現する。デモンストレーションでApacheやPostgreSQLのプロセスが別のインスタンスへ移動するようすは圧巻だ。

既存の類似技術にはSolaris Containers/Solaris Zones、AIX Workload Partition、OpenVZ/Virtuozzoなどがある。言ってしまえばこの機能をFreeBSDカーネル内部で実現して、軽量なOSレベル仮想機能を提供するというものだ。物理マシンを越えてプロセスを移動したりコピーしたりできる。

VPSインスタンス

VPSでは仮想環境をVPSインスタンスとして提供する。VPSインスタンスは可能な限りホストOSのように振舞う環境になっている。ホストOSとの違いは、リソースへのアクセスがそれぞれ仮想化されている点にある。たとえば解りやすいのはプロセステーブルだ。Jailではカーネルで単一のプロセステーブルを使う。つまり、Jail AにあるプロセスID A番は、ほかのJailには存在しない。プロセスIDはカーネルで重複することがないからだ。

VPSインスタンスでは違う。VPSインスタンスはぞれぞれのインスタンスがプロセルテーブルを持っている。つまり、VPSではインスタンスどうしにそれぞれ同じプロセスIDのプロセスが存在できる。/sbin/initは通常プロセス番号1で動作するが、ホストにプロセスID1の/sbin/initが、VPSインスタンスAにもPID1の/sbin/initが、VPSインスタンスBにもPID1の/sbin/initが存在できる。またVPSインスタンスは入れ子にして生成することもできる。

仮想化されるのはプロセステーブルのみならず、すべてのグローバルリソースが対象となる。TCPコネクションなども対象となる。たとえばsshdをVPSを動作させておき、ほかの物理マシンへ移動させることができる。TCPコネクションも維持されるので、sshでアクセスしているユーザにとってはシステムが一瞬フリーズしたようにしか見えない。

VPSの開発状況と今後の開発

VPSの開発の現状は次のようになっていると説明があった。

  • FreeBSD 8.0-RELEASE i386版に対して実装。
  • 開発は初期段階にある。
  • 仮想ネットワークスタックの実現にはVIMAGEを使用。
  • Apache、SSH、PostgreSQLのライブマイグレーション(実行したまま他のVPSインスタンスや物理マシンへプロセスを移動させる)を確認。
  • いくつかのリソースと特殊なケースはまだサポートしていない。
  • 特権/セキュリティに関する部分はまだ十分に実装していない。

今後の開発として次の項目が挙げられていた。

  • 可能な限りの仮想化の実現とライブマイグレーションのサポート。
  • 異なるFreeBSDバージョンや、i386/amd64などの異なるアーキテクチャ間でのライブマイグレーションの実現。
  • 適切なリソース制御機能とアカウンティングの実装。
  • 現在提供しているvpsctlユーティリティに加え、より強力な管理デーモンの実装、スナップショットインタフェースの策定、GUI管理アプリの開発、オフラインツールの提供。

VPSの取り組みが進められていることをEuroBSDCon 2010ではじめて知ったという開発者も少なくなかったようで、発表は興味深いものがあった。

VPSユースケース

VPSのユースケースには、複数の物理マシンで動作しているアプリケーションを負荷状況に合わせてライブマイグレーションするという方法が考えられる。たとえば負荷が低い状況では、1台のマシンへすべてのアプリケーションをマイグレーションして、ほかのホストは電源を落としてしまう。負荷が高くなってきたら物理マシンの電源を入れ、そちらにライブマイグレーションする。

デスクトップやワークステーションでも便利に使える機能だ。利用しているアプリケーションをほかのマシンへライブマイグレーションして、そちらで作業を継続する、またはそっちで作業をしてもらうなど、さまざまな応用が考えられる。

ZFSの提供、Jailの強化とVIMAGEによる仮想化ネットワークスタックの実現、VPSによるプロセスのライブマイグレーションなどの機能は、これまでOpenSolarisで提供されてきた機能に相当するものになりつつある。Oracleの判断からOpenSolarisは実質的に終了。OpenIndianaが後継となるが、FreeBSDもOpenSolarisの代替え候補としての立場を固めつつある。

540KB、2万行パッチのゆくえ

Jailは仮想化というよりはセキュリティを強化するために分離した空間を提供するもの。VMwareやXenは大量のホストに対してはスケールしにくい。Virtuozzoのような機能がほしいものの、FreeBSD版は存在しないので、Klaus P. Ohrhallinger氏は自分で開発した、というわけだ。仮想化スタックとしてはVIMAGEが先行している。このVIMAGEの実装アイディアから閃くものもあったようで、VIMAGEに触発される形でVPSの開発を開始したという。現に仮想ネットワークスタックの実装にはVIMAGEを使用している。

FreeBSD 8.0向けのVPSのパッチは約540KB、パッチサイズは2万行弱だ。この手の大量のパッチがFreeBSDに取り込まれるまでには、ほかのFreeBSD開発者から理解を得るとともに、カーネルやサブシステムに変更をもたらすものであればそれぞれのサブシステムの担当者にも理解を得る必要がある。通例、きわめて長い時間がかかる。VIMAGEはその典型例で、マージまでにはかなりの時間がかかった。

しかしVPSのパッチは量は多いとはいえ、VPSの機能自体はVPSのサブディレクトリに集約されており、FreeBSDカーネルとのジョイント部分も限られた部分に限定されている。仮想化の仕組みも明確だ。カンファレンスでの発表を繰り返すなど活動が必要になるかもしれないが、VPSの提供する実益を考えるとFreeBSDカーネルへのマージはそう難しい話ではないように思える。

「後藤大地が現地取材! EuroBSDCon 2010報告会」開催!


「EuroBSDCon 2010」(ドイツで10月8日~10日開催)で話題になった最新技術情報を、同カンファレンスに参加した後藤大地氏が詳しくご紹介します。

日時 : 11月4日(木) 18:00~20:00

場所 : パレスサイドビル マイナビルーム9F-L
    ※ 東京メトロ 東西線 竹橋駅 直通。 竹橋駅からの道順はこちらのWebページをご参照ください。

参加費: 無料

定員: 80名

参加ご希望の方は、以下の「お申込みはこちら」ボタンをクリックして応募作業を進めてください。なお、今回のセミナーではアンケート等を設けていないため、マイコミジャーナル会員の方は1クリックで応募作業が完了いたします。マイコミコミジャーナル会員でない方は、案内に従って会員登録をお願いいたします。

応募作業が完了すると、マイコミジャーナル会員ページでご登録いただいているメールアカウントにメールが配信されますので、セミナー当日に提示できる状態(印刷もしくは各種端末でのディスプレイ表示)でお持ちください。