web-dev-qa-db-ja.com

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

認定の準備をしています。ローカルにインストールされた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に関する情報が見つかりませんでした。

18
Mathias Begert

完全仮想化と準仮想化

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

17