Was ist der Unterschied zwischen / dev / vda und / dev / sda?

16

Ich bereite mich auf eine Zertifizierung vor und habe ein lokal installiertes CentOS7 (VirtualBox) und eine andere Instanz in einem Cloud-basierten Dienst.

Auf dem lokalen System habe ich ein /dev/sdaund auf dem Cloud-basierten habe ich ein /dev/vda.

Jetzt frage ich mich, was genau dieser Unterschied bedeutet? Gibt es einen Standard (Dokumentation?) Für die Benennung dieser Geräte und wofür stehen die verschiedenen Namen?

Bearbeiten:

Ich denke, dieses Dokument ist sehr nützlich, um die Benennung zu verstehen: 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

Ich konnte jedoch keine Informationen zu / dev / vda finden.

Mathias Begert
quelle

Antworten:

15

Volle Virtualisierung vs. Paravirtualisierung

/ dev / sda ist die erste erkannte Festplatte vom Typ IDE / SATA / SCSI. In diesem Fall vom Hypervisor emuliert (vollständig virtualisiert).

/ dev / vda ist der erste gefundene paravirtualisierte Festplattentreiber. Es ist schneller als emulierte sdX-Geräte, wenn beide auf dieselbe Festplatte verweisen, da im Vergleich zu einem emulierten Laufwerk weniger Systemaufwand entsteht.

Verweise:


Unter http://www.ibm.com/developerworks/library/l-virtio/ :

Volle Virtualisierung vs. Paravirtualisierung

Beginnen wir mit einer kurzen Erörterung zweier unterschiedlicher Arten von Virtualisierungsschemata: vollständige Virtualisierung und Paravirtualisierung. Bei vollständiger Virtualisierung wird das Gastbetriebssystem auf einem Hypervisor ausgeführt, der sich auf dem Bare Metal befindet. Dem Gast ist nicht bekannt, dass er virtualisiert wird, und er muss keine Änderungen vornehmen, um in dieser Konfiguration zu arbeiten. Umgekehrt ist dem Gastbetriebssystem bei der Paravirtualisierung nicht nur bewusst, dass es auf einem Hypervisor ausgeführt wird, sondern es enthält auch Code, um die Übergänge von Gast zu Hypervisor effizienter zu gestalten.

Im vollständigen Virtualisierungsschema muss der Hypervisor Gerätehardware emulieren, die auf der untersten Ebene der Konversation emuliert wird (z. B. für einen Netzwerktreiber). Obwohl die Emulation bei dieser Abstraktion sauber ist, ist sie auch die ineffizienteste und höchst komplizierte. Im Paravirtualisierungsschema können Gast und Hypervisor zusammenarbeiten, um diese Emulation effizienter zu gestalten. Der Nachteil des Paravirtualisierungsansatzes besteht darin, dass das Betriebssystem sich dessen bewusst ist, dass es virtualisiert wird, und dass Änderungen erforderlich sind, um zu funktionieren.

Von http://www.carfax.org.uk/docs/qemu-virtio :

Was sind paravirtuelle Geräte?

Wenn eine virtuelle Maschine ausgeführt wird, muss die virtuelle Umgebung den Gastbetriebssystemen Geräte präsentieren - Festplatten und Netzwerk sind die beiden wichtigsten (plus Video, USB, Timer und andere). Tatsächlich ist dies die Hardware, die der VM-Gast sieht.

Wenn der Gast keine Ahnung davon haben soll, dass er virtualisiert ist, muss der Host eine echte Hardware emulieren. Dies ist sehr langsam (insbesondere bei Netzwerkgeräten) und die Hauptursache für die verringerte Leistung in virtuellen Maschinen.

Wenn Sie dem Gastbetriebssystem jedoch mitteilen möchten, dass es sich in einer virtuellen Umgebung befindet, können Sie den Aufwand für die Emulation eines Großteils der realen Hardware vermeiden und einen direkteren Pfad für die Verarbeitung von Geräten in der VM verwenden. Dieser Ansatz wird als Paravirtualisierung bezeichnet. In diesem Fall muss auf dem Gastbetriebssystem ein bestimmter Treiber installiert sein, der mit dem paravirtuellen Gerät kommuniziert. Unter Linux wurde diese Schnittstelle standardisiert und wird als "virtio" -Schnittstelle bezeichnet.

Thiago Fahrer Augusto
quelle
3
Insbesondere verwenden /dev/vd*Geräte den virtioparavirtuellen Plattentreiber.
Michael Hampton
@MichaelHampton Ich habe meine Antwort mit diesen Informationen verbessert! Vielen Dank!
Thiago Rider Augusto
4
Außerdem ist der virtio-scsi-Treiber schneller als der virtio-blk-Treiber, der Laufwerke mit sd * adressiert. Vd * ist also nicht immer schneller Alles, was es bedeutet, ist ein Blockgerät, das direkt von einem paravirtualisierten Treiber gehandhabt wird, und nicht ein Blockgerät, das von einer Hardware-Emulation oder indirekt von einem paravirtualisierten Controller gehandhabt wird.
Spooler