/ dev / vdaと/ dev / sdaの違いは何ですか


16

認定の準備をしており、CentOS7(VirtualBox)とクラウドベースのサービスに別のインスタンスがローカルにインストールされています。

ローカルシステムにはが/dev/sdaあり、クラウドベースにはがあり/dev/vdaます。

今、私はこの違いが正確に何を意味するのだろうか?このデバイスの命名に関する標準(ドキュメント?)はありますか?

編集:

このドキュメントは命名を理解するのに非常に役立つと思います:https : //www.kernel.org/doc/Documentation/admin-guide/devices.txt

8 block SCSI disk devices (0-15)
      0 = /dev/sda      First SCSI disk whole disk
     16 = /dev/sdb      Second SCSI disk whole disk
     32 = /dev/sdc      Third SCSI disk whole disk
        ...
    240 = /dev/sdp      Sixteenth SCSI disk whole disk

しかし、/ dev / vdaに関する情報を見つけることができませんでした。


回答:


15

完全仮想化と準仮想化

/ 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」インターフェースと呼ばれています。


3
特に、/dev/vd*デバイスはvirtio準仮想ディスクドライバーを使用しています。
マイケルハンプトン

@MichaelHamptonこの情報で答えを改善しました!ありがとう!
チアゴライダーアウグスト

4
また、virtio-scsiドライバーは、sd *でドライブをアドレス指定するvirtio-blkドライバーよりも高速です。したがって、vd *は必ずしも高速ではありません。ハードウェアエミュレーションまたは準仮想化コントローラーによって間接的に処理されるブロックデバイスではなく、準仮想化ドライバーによって直接処理されるブロックデバイスのみを意味します。
スプーラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.