Xenの内部設計(後編)(2/2 ページ)

» 2007年01月24日 08時00分 公開
[高橋浩和(VA Linux Systems Japan),ITmedia]
前のページへ 1|2       

デバイスモデル

 準仮想化ドメインは、仮想デバイスを経由してI/Oを実現します。

仮想ブロックデバイス

 仮想ブロックデバイスは、IDEやSCSIディスクの動作をまねます。ドメインU上のゲストOSは、仮想デバイスを制御する仮想デバイスドライバを持ち、このドライバはフロントドライバと呼ばれます。フロントドライバは、仮想デバイスを操作するための入り口部分の処理のみを行い、I/O要求をドメイン0に投げます。具体的には、I/Oリングに書き込んだ後、イベントチャネルを利用してドメイン0にI/O要求が発生したことを通知するといった動作になります。

 ドメイン0はイベントチャネルから要求を受け取ると、仮想デバイスドライバを起動し、これはバックエンドドライバと呼ばれています。I/OリングからI/O要求を取り出し、ドメイン0の実デバイスを制御するドライバにI/Oを要求します(図14)

図14 図14 仮想ブロックデバイス

 この2つの仮想デバイスドライバ(ドメインUのフロントエンドドライバと、ドメイン0のバックエンドドライバ)は、Xenバスという仕組みを通して制御情報をやり取りし、協調動作できるようになっています。

仮想ネットワークインタフェース

 Xenでは、ネットワークインタフェースも仮想化されています。ドメイン間に仮想的なネットワークを立ち上げており、Linuxカーネルが用意しているブリッジ機能を利用して、物理ネットワークインタフェース(peth0)の先に、仮想ネットワークインタフェースをつなぎます。ドメインUが送信したパケットは、ドメイン0の物理ネットワークインタフェース(peth0)を通して外の世界に送り出されます(受信はその逆となります)。ドメイン0がeth0として利用しているネットワークが、仮想ネットワークインタフェースとして実装されているのが、面白い点でしょう(図15)

図15 図15 仮想ネットワークインタフェース

マイグレーション

 Xenは、ドメインを異なる実マシン上に移動する機能を持っています。いったんゲストOSを停止し、そのイメージをファイルに保存、別の実マシンにそのファイルを転送して、そこからゲストOSを再開できます。また、これに加えてXenでは、ゲストOSを止めずにこの移動を行うための機能(ライブマイグレーション)も提供しています。

 動作しているゲストOSのイメージを、ほかのマシンに移動するわけですが、この場合、せっかく転送したメモリイメージが元のマシン上では書き換えられてしまうことがあります。これを検出し再度転送し直す仕掛けも用意されています。

 この仕組みは、イメージを転送したページに書き込み保護をかけることで実現されています。再度このページに更新があったときに発生する例外を捕捉し、このページのイメージを再送しなければならないことを認識するわけです。

 更新頻度の高いページはどうしても残るので、一番最後にはゲストOSを一瞬だけ停止し、これら更新頻度の高いページのイメージを転送します。

今後の連載予定

 さて、駆け足でしたが、第1回はXenの機能概要を説明しました。次回からは、Xenの構造の詳細説明に入っていきます。

 解説の対象は、x86(IA-32)アーキテクチャの準仮想化ドメインに絞りたいと思います。準仮想化ドメインの実装をもとに、ドメインスケジューリング、割り込み、メモリ管理、仮想デバイスなどの話をしましょう。準仮想化ドメインの話が一通り終わった後で、完全仮想化に関連する機能をまとめて解説する予定です。どうぞお楽しみに。

本記事は、オープンソースマガジン2006年4月号 「仮想マシンモニター Xen 3.0解読室」連載第1回を再構成したものです。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ