¿Cuál es la diferencia entre / dev / vda y / dev / sda

16

Me estoy preparando para una certificación y tengo un CentOS7 (VirtualBox) instalado localmente y otra instancia en un servicio basado en la nube.

En el sistema local tengo un /dev/sday en el basado en la nube tengo un /dev/vda.

Ahora me pregunto qué significa exactamente esta diferencia. ¿Existe un estándar (documentación) para nombrar estos dispositivos y qué significan los diferentes nombres?

Editar:

Creo que este documento es muy útil para entender el nombre: 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

Pero no pude encontrar información sobre / dev / vda.

Mathias Begert
fuente

Respuestas:

15

Virtualización completa vs. Paravirtualización

/ dev / sda es el primer disco detectado de tipo IDE / SATA / SCSI. En este caso, emulado (completamente virtualizado) por el hipervisor.

/ dev / vda es el primer controlador de disco paravirtualizado detectado. Es más rápido que los dispositivos sdX emulados si ambos se refieren al mismo disco, porque hay menos sobrecarga en su funcionamiento en comparación con una unidad emulada.

Referencias


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

Virtualización completa vs. paravirtualización

Comencemos con una discusión rápida de dos tipos distintos de esquemas de virtualización: virtualización completa y paravirtualización. En la virtualización completa, el sistema operativo invitado se ejecuta sobre un hipervisor que se encuentra en el metal desnudo. El invitado no sabe que se está virtualizando y no requiere cambios para funcionar en esta configuración. Por el contrario, en la paravirtualización, el sistema operativo invitado no solo es consciente de que se está ejecutando en un hipervisor, sino que también incluye código para que las transiciones de invitado a hipervisor sean más eficientes.

En el esquema de virtualización completo, el hipervisor debe emular el hardware del dispositivo, que está emulando en el nivel más bajo de la conversación (por ejemplo, a un controlador de red). Aunque la emulación es limpia en esta abstracción, también es la más ineficiente y altamente complicada. En el esquema de paravirtualización, el invitado y el hipervisor pueden trabajar cooperativamente para que esta emulación sea eficiente. La desventaja del enfoque de paravirtualización es que el sistema operativo es consciente de que está siendo virtualizado y requiere modificaciones para funcionar.

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

¿Qué son los dispositivos paravirtuales?

Cuando se ejecuta una máquina virtual, el entorno virtual debe presentar dispositivos al sistema operativo invitado: los discos y la red son los dos principales (además de video, USB, temporizadores y otros). Efectivamente, este es el hardware que ve el invitado VM.

Ahora, si el huésped debe mantenerse completamente ignorante del hecho de que está virtualizado, esto significa que el host debe emular algún tipo de hardware real. Esto es bastante lento (particularmente para dispositivos de red), y es la causa principal de la reducción del rendimiento en máquinas virtuales.

Sin embargo, si está dispuesto a informar al sistema operativo invitado que está en un entorno virtual, es posible evitar los gastos generales de emular gran parte del hardware real y utilizar una ruta mucho más directa para manejar dispositivos dentro de la VM. Este enfoque se llama paravirtualización. En este caso, el sistema operativo invitado necesita un controlador particular instalado que habla con el dispositivo paravirtual. En Linux, esta interfaz se ha estandarizado y se conoce como la interfaz "virtio".

Thiago Rider Augusto
fuente
3
En particular, los /dev/vd*dispositivos están utilizando el virtiocontrolador de disco paravirtual.
Michael Hampton
@MichaelHampton ¡He mejorado mi respuesta con esta información! ¡Gracias!
Thiago Rider Augusto
44
Además, el controlador virtio-scsi es más rápido que el controlador virtio-blk, que se dirige a las unidades por sd *. Por lo tanto, vd * no siempre es más rápido. Todo lo que significa es un dispositivo de bloque manejado directamente por un controlador paravirtualizado, en lugar de un dispositivo de bloque manejado por una emulación de hardware o indirectamente por un controlador paravirtualizado.
Spooler