仮想化道場

FreeBSDのハイパーバイザー「bhyve」

 仮想化道場では多くのハイパーバイザーを紹介してきたが、今回は最近開発されたハイパーバイザー「bhyve(ビーハイブ:BSD hypervisorの略)」を紹介していく。

 bhyveは、FreeBSDをホストOSとするハイパーバイザーだ。このため、多くのクラウド環境で利用されているわけではないが、ユーザーが個人で試してみるには、コンパクトで面白いハイパーバイザーだろう。

FreeBSD 10でディストリビューションに正式採用

 もともとFreeBSDは、カリフォルニア大学バークレー校が開発したBSD UNIXをx86プロセッサに移植したものだ。UNIXのライセンスに抵触しない4.4 BSD Liteをもとに、1994年から開発が進められており、現在のバージョン10まで、メジャーバージョンアップを続けている。

 WindowsやLinuxなどのように多くのユーザーに知られているわけではないものの、多くの企業がFreeBSDを使った製品をリリースしている。例えば、ネットワーク関連ではJuniper Networksのルータ用OS「JUNOS」が、ストレージ関連ではNetAppがストレージOS「Data ONTAP」が、FreeBSDをベースに開発されている。bhyveも、NetAppが2011年に開発して、FreeBSDコミュニティに提供したものだ。

 bhyveの特徴としては、プロセッサが仮想化支援機能を持つようになってから開発されたハイパーバイザーであるため、そうした支援機能を最大限に生かしていることが挙げられる。

 動作環境としては、IntelプロセッサではVT-x(CPU仮想化機能)とEPT(メモリ仮想化機能)が必須となっている。このため、Nehalem(開発コード名)以降のプロセッサが対象となる。また、AMDプロセッサに関しては、AMD-VとNPT(Nested Page Tables)をサポートしている必要がある(2014年10月のリリースで対応した)。

 ゲストOSは、FreeBSD 8.4/9/10/11以外に、OpenBSD、NetBSD、Linuxをサポートする。Linux系OSに関しては、CentOS、Red Hat Enterprise Linux、Debian、Fedora、OpenSUSE、Ubuntuなどの動作がテストされている。

bhyveはNetAppのエンジニアが開発した。LinuxのKVMと同じように、FreeBSDと一緒になって動作するハイパーバイザー(出典:BSDConf、以下同じ)
bhyveは、プロセッサの仮想化支援機能(Vt-x,EPT)を前提としている。このため、動作するプロセッサを選ぶ。Intelのプロセッサすべてで仮想化支援機能がサポートされているわけではないので、注意が必要だ
メモリのオーバーコミットメント機能をサポート。IntelのHaswell世代のプロセッサに対応して、仮想環境でのAVX2のサポートも行われている
FreeBSD 10.1では、bhyveは16仮想CPUまでサポートした。さらに、AHCIをサポートすることで、SATAディスクやATAPI(CD/DVDドライブ)などもサポートした
AMDのプロセッサを最新リリースのFreeBSD 10.1でサポートした。今後は、I/O仮想化のVT-dやIOMMUへの対応、UEFIのサポート、illumos(OpenSolarisからのスピンアウトOS)やWindowsのゲストOSとしてのサポート、サスペンド/レジューム/ライブマイグレーション機能のサポートなどが計画されている

 またbhyveは、VMware ESXiのように単独のハイパーバイザーとして存在するのではなく、FreeBSDのコア部分と一体となっているのも特徴。LinuxのKVMに近い作り方となっているようだ。

 ただ、bhyveはハイパーバイザーとしてのコア部分はFreeBSD 10に入ったが、さまざまな機能が未実装だったりする。このため、Linuxなどで開発されている、さまざまな仮想化をサポートするソフトウェアプロジェクトが、bhyveもサポートしてきている。

 例えば、Red Hatが中心となって開発を行っている、仮想環境の管理インターフェイスとして有名なlibvirtは、2014年にbhyveに対応した。また、ゲストOSのI/Oなどをハイパーバイザーに最適化する、準仮想化ソフトのVirtIOもbhyveのサポートを行っている。

 OpenStackからも、FreeBSDとbhyveをコントロールできるようにソフトウェア開発が進んでいる。将来的には、KVMやXen、VMware ESXi、Microsoft Hyper-vなどのように、OpenStackのインフラとして利用できるようになるだろう。

PCIバスのパススルーもサポート。VirtIOでもPCIバスの仮想化をサポートしている
Linuxで多く使われているVirtIOがbhyveで利用できるため、多くのゲストOSを動かすことができる

商業的にはまだまだ

 現状のbhyveに関しては、ハイパーバイザーのコア部分ができあがった、といった状態のため、KVMやXenに比べると、その展開は遅れている。VirtIOやlibVirtなどがサポートされ、ある程度周辺ソフトウェアがそろってきた段階だが、実際に、商用という部分ではまだまだ未成熟だ。

 いくつかのトラブルがまだあるようだし、RHELのKVM、Citrix XenServer、VMware vSphere、Hyper-Vのように、グラフィカルな管理コンソールが用意されているわけではない。現状では、FreeBSDなどの精通した開発者などが利用している仮想化環境といえるだろう。

 ただ、FreeBSDコミュニティ自体が積極的な開発を進めているため、数年のうちには、ほかのOSと同じようなソフトウェア環境がサポートされていくだろう。またbhyve自体が、仮想化支援機能を持たない古いプロセッサ向けのコードを持たないことから、ハイパーバイザーとして非常にコンパクトにできあがっている。

 そのため、オーバーヘッドとなるハイパーバイザーの処理が非常に小さくコンパクトにできあがっている。またFreeBSD自体も、OSのコア部分は非常にコンパクトで、組み込みOSなどに利用されている。

bhyveのパフォーマンス。OSとハイパーバイザーがコンパクトにできているため、ベアメタルとあまり変わらない性能を持つ

 FreeBSDとbhyveの組み合わせは、企業のプライベートクラウドやパブリッククラウドで積極的に利用されるわけではないだろう。しかし、今後大きな普及が期待されているIoTにおいては、組み込みOSとして利用される可能性が高い。

 今後、IoTなどでさまざまな機器がネットに接続する時代が来ることを考えれば、コンパクトなOSとハイパーバイザーで、高いセキュリティ性を持つ仮想マシンができるようになることに、大きなメリットがある。

 将来的には、ARMプロセッサでも、FreeBSDとbhyveを使った仮想化環境が利用されるようになるかもしれない(FreeBSDのARMプロセッサへの移植は進んでいるが、bhyveの移植は初期段階)。

 なお、FreeBSDとbhyveの組み合わせは、ユーザーが持っているPCですぐにでも試せるため、時間のあるときに一度試してみると面白いだろう。

bhyveは、FreeBSD 10からはインストールパッケージに入っている。FreeBSD.orgのWebサイトからインストールパッケージをダウンロードできる(FreeBSD.orgのWebサイトより)

山本 雅史