4.3.2. 準仮想化デバイス
準仮想化は、ゲストがホストマシン上のデバイスを使用するための高速かつ効率的な通信手段を提供します。KVM は、ハイパーバイザーとゲスト間のレイヤーとして Virtio API を使用し、準仮想化されたデバイスを仮想マシンに提供します。
準仮想化デバイスは、I/O 待ち時間を短縮し、I/O スループットをベアメタルレベル近くにまで高めるものもあれば、その他の方法では利用できない機能を仮想マシンに追加するものもあります。I/O 集約型アプリケーションを稼働している仮想マシンには、エミュレートされたデバイスの代わりに準仮想化ドライバーの使用が推奨されます。
すべての virtio デバイスは、ホストデバイスとゲストドライバーの 2 つの部分から構成されます。準仮想化デバイスドライバーにより、ゲストのオペレーティングシステムはホストシステム上の物理デバイスにアクセスできます。
準仮想化デバイスドライバーは、ゲストオペレーティングシステムにインストールする必要があります。デフォルトでは、Red Hat Enterprise Linux 4.7 以降、Red Hat Enterprise Linux 5.4 以降、および Red Hat Enterprise Linux 6.0 以降に準仮想化デバイスドライバーが含まれています。Windows ゲストでは、準仮想化デバイスドライバーを手動でインストールする必要があります。
注記
準仮想化デバイスおよびドライバーの使用に関する詳細は、『Red Hat Enterprise Linux 6 仮想化ホスト設定およびゲストインストールガイド』 を参照してください。
- 準仮想化ネットワークデバイス (virtio-net)
- 準仮想化ネットワークデバイスは、仮想マシンにネットワークアクセスを提供する仮想ネットワークデバイスであり、入出力パフォーマンスを強化し、待ち時間を短縮します。
- 準仮想化ブロックデバイス (virtio-blk)
- 準仮想化ブロックデバイスは、高パフォーマンスの仮想ストレージデバイスであり、これにより、I/O パフォーマンスが強化され、待ち時間が短縮されます。準仮想化ブロックデバイスはハイパーバイザーによってサポートされ、仮想マシンにアタッチされます (フロッピーディスクドライブは例外で、これにはエミュレートが必要になります)。
- 準仮想化コントローラーデバイス (virtio-scsi)
- 準仮想化 SCSI コントローラーデバイスは Red Hat Enterprise Linux 6.4 の新機能で、virtio-blk により柔軟でスケーラブルな選択肢を提供します。virtio-scsi ゲストはターゲットデバイスの機能一式を継承でき、わずか 28 デバイスしか処理できない virtio-blk に比べて数百ものデバイス処理が可能です。Red Hat Enterprise Linux 6.4 以降では、virtio-scsi は以下のゲストオペレーティングシステムに完全対応しています。
- Red Hat Enterprise Linux 6.4 以降
- Windows Server 2008
- Windows 7
- Windows Server 2012
- Windows 8 (32/64 bit)
- 準仮想化クロック
- タイムスタンプカウンター (TSC) をクロックソースとして使用するゲストは、時間管理の問題に直面することがあります。一定したタイムスタンプカウンターを持たないホストに関しては、KVM はゲストに準仮想化クロックを提供することで対処します。さらに、準仮想化クロックは、ゲストによる S3 の実行または RAM へのサスペンド操作の後に必要な時間の調整を支援します。
- 準仮想化シリアルデバイス (virtio-serial)
- 準仮想化シリアルデバイスは、 バイトストリーム指向の文字ストリームデバイスで、ホストのユーザー領域とゲストのユーザー領域をつなぐシンプルな通信インターフェースを提供します。
- バルーンデバイス (virtio-balloon)
- バルーンデバイスは仮想マシンの RAM の一部を未使用として指定することが可能で (バルーン膨張) 、これによりメモリーが解放されて、ホスト (またはホスト上の他の仮想マシン) が使用できるようになります。仮想マシンが再度メモリーを必要とした際には、バルーンを 縮小 させて、ホストが RAM を仮想マシンに配分し直すことができます。
- 準仮想化グラフィックカード (QXL)
- 準仮想化グラフィックカードは、QXL ドライバーと連携して機能し、リモートホストから仮想マシンのグラフィックスを表示する効率的な方法を提供します。SPICE を使用するには QXL ドライバーが必要です。