仮想化

 RHEL5から、仮想化機能として「Xen」や「KVM」を搭載してきた。RHEL6では、Linuxの標準仮想化機能となった「KVM」のみの搭載となった。KVMはRHEL5.4からも含まれていたが、今回RHEL6に含まれたKVMは、性能の向上やデバイス仮想化の新技術への対応、管理性の向上を図ったものになっている。クラウドコンピューティングのインフラとして最適な仮想化機能を目指したものだ。ここではRHEL6で強化された仮想化に関する仕組みとツールについて解説しよう。

 RHEL6ではXenが削除され、Linux KVM(Kernel-based Virtual Machine)(以下、KVM)のみがサポートされる。KVMは x86_64アーキテクチャのマシンでのみ利用可能だ。

 KVMは、Linuxカーネルに仮想化ソフトウエアの機能を統合したものである。最大の特徴は、Linuxカーネルで実装されている機能すべてを利用可能であるため、仮想化環境の管理にLinuxのノウハウが適用可能な点だ。

 主な強化点の1つとして、仮想マシン内のI/Oスループットを高速化する仕組み「vhost-net」やデバイスの仮想化を支援する「SR-IOV」に対応した。

状態遷移を省略する「vhost-net」

 KVMの仮想化環境でのネットワークの高速化処理にはこれまで、「virtio」ドライバというデバイスドライバを利用していた。RHEL6では、そのネットワークI/O処理をさらに高速化するためのものとして、vhost-netという仕組みが新たに追加された。

図5●virtio-netとvhost-netの対比
図5●virtio-netとvhost-netの対比
[画像のクリックで拡大表示]

 virtio利用時の仮想マシンのネットワークI/O処理には、仮想マシンソフトウエア「QEMU」がゲストOSのネットワークI/O要求をハンドルする。そのため、QEMUプロセスとホストOSのカーネルとの間での状態遷移が発生する(図5)。

 この状態遷移を省略するためにホストOSのカーネルにvirtioを実装したものがvhostである。つまり、virtioの利用時にQEMU経由で処理するネットワークI/O要求を、vhostを利用してホストOSのカーネルで直接処理することを目的としている。vhost-netでゲストOSのネットワークI/O要求を高速に処理できる。