完全仮想化と準仮想化
/ dev / sdaは、IDE / SATA / SCSIタイプの最初に検出されたディスクです。この場合、ハイパーバイザーによってエミュレート(完全仮想化)されます。
/ dev / vdaは、最初に検出された準仮想化ディスクドライバーです。両方が同じディスクを参照している場合、エミュレートされたドライブに比べて操作のオーバーヘッドが少ないため、エミュレートされたsdXデバイスよりも高速です。
参照:
http://www.ibm.com/developerworks/library/l-virtio/から:
完全仮想化と準仮想化
まず、完全仮想化と準仮想化という2つの異なるタイプの仮想化スキームについて簡単に説明します。完全仮想化では、ゲストオペレーティングシステムは、ベアメタル上にあるハイパーバイザー上で実行されます。ゲストは、仮想化されていることを認識していないため、この構成で機能するために変更する必要はありません。逆に、準仮想化では、ゲストオペレーティングシステムはハイパーバイザーで実行されていることを認識するだけでなく、ゲストからハイパーバイザーへの移行をより効率的にするためのコードを含みます。
完全な仮想化スキームでは、ハイパーバイザーはデバイスハードウェアをエミュレートする必要があります。デバイスハードウェアは、会話の最低レベル(ネットワークドライバーなど)でエミュレートします。エミュレーションはこの抽象化ではクリーンですが、最も効率が悪く、非常に複雑です。準仮想化スキームでは、ゲストとハイパーバイザーが協力してこのエミュレーションを効率化できます。準仮想化アプローチのマイナス面は、オペレーティングシステムが仮想化されていることを認識しており、動作するには変更が必要であることです。
http://www.carfax.org.uk/docs/qemu-virtioから:
準仮想デバイスとは何ですか?
仮想マシンを実行する場合、仮想環境はデバイスをゲストOSに提示する必要があります。ディスクとネットワークが主要2つです(さらに、ビデオ、USB、タイマーなど)。事実上、これはVMゲストが見るハードウェアです。
現在、ゲストが仮想化されているという事実を完全に無知のままにしておく場合、これはホストが何らかの種類の実際のハードウェアをエミュレートする必要があることを意味します。これは非常に遅く(特にネットワークデバイスの場合)、仮想マシンのパフォーマンス低下の主な原因です。
ただし、ゲストOSに仮想環境にあることを知らせたい場合は、実際のハードウェアの多くをエミュレートするオーバーヘッドを回避し、はるかに直接的なパスを使用してVM内のデバイスを処理できます。このアプローチは準仮想化と呼ばれます。この場合、ゲストOSには、準仮想デバイスと通信する特定のドライバーをインストールする必要があります。Linuxでは、このインターフェースは標準化されており、「virtio」インターフェースと呼ばれています。