qual è la differenza tra / dev / vda e / dev / sda


16

Mi sto preparando per una certificazione e ho un CentOS7 (VirtualBox) installato localmente e un'altra istanza in un servizio basato su cloud.

Sul sistema locale ho un /dev/sdae sul cloud ho un/dev/vda .

Ora mi chiedo cosa significhi esattamente questa differenza? Esiste uno standard (documentazione?) Per la denominazione di questi dispositivi e cosa significano i diversi nomi?

Modificare:

Penso che questo documento sia molto utile per comprendere la denominazione: 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

Ma non sono riuscito a trovare alcune informazioni su / dev / vda.


Risposte:


15

Virtualizzazione completa vs. paravirtualizzazione

/ dev / sda è il primo disco rilevato di tipo IDE / SATA / SCSI. In questo caso, emulato (completamente virtualizzato) dall'hypervisor.

/ dev / vda è il primo driver del disco paravirtualizzato rilevato. È più veloce dei dispositivi sdX emulati se entrambi fanno riferimento allo stesso disco, poiché il suo funzionamento ha un sovraccarico minore rispetto a un'unità emulata.

Riferimenti:


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

Virtualizzazione completa vs. paravirtualizzazione

Cominciamo con una rapida discussione di due distinti tipi di schemi di virtualizzazione: virtualizzazione completa e paravirtualizzazione. Nella virtualizzazione completa, il sistema operativo guest viene eseguito su un hypervisor che si trova sul metallo nudo. L'ospite non è a conoscenza del fatto che viene virtualizzato e non richiede modifiche per funzionare in questa configurazione. Al contrario, nella paravirtualizzazione, il sistema operativo guest non solo è consapevole di essere in esecuzione su un hypervisor ma include un codice per rendere più efficienti le transizioni da guest a hypervisor.

Nello schema di virtualizzazione completo, l'hypervisor deve emulare l'hardware del dispositivo, che emula al livello più basso della conversazione (ad esempio, a un driver di rete). Sebbene l'emulazione sia pulita in questa astrazione, è anche la più inefficiente e altamente complicata. Nello schema di paravirtualizzazione, l'ospite e l'hypervisor possono collaborare per rendere efficiente questa emulazione. L'aspetto negativo dell'approccio alla paravirtualizzazione è che il sistema operativo è consapevole che viene virtualizzato e richiede modifiche per funzionare.

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

Cosa sono i dispositivi paravirtuali?

Quando si esegue una macchina virtuale, l'ambiente virtuale deve presentare i dispositivi al sistema operativo guest: i dischi e la rete sono i due principali (più video, USB, timer e altri). In effetti, questo è l'hardware che vede il guest VM.

Ora, se l'ospite deve essere tenuto completamente ignaro del fatto che è virtualizzato, ciò significa che l'host deve emulare un qualche tipo di hardware reale. Questo è piuttosto lento (in particolare per i dispositivi di rete) ed è la principale causa di prestazioni ridotte nelle macchine virtuali.

Tuttavia, se si desidera far sapere al SO guest che si trova in un ambiente virtuale, è possibile evitare i costi generali di emulazione di gran parte dell'hardware reale e utilizzare un percorso molto più diretto per gestire i dispositivi all'interno della VM. Questo approccio si chiama paravirtualizzazione. In questo caso, il SO guest richiede l'installazione di un driver specifico che comunica con il dispositivo paravirtuale. Sotto Linux, questa interfaccia è stata standardizzata e viene definita interfaccia "virtio".


3
In particolare, i /dev/vd*dispositivi utilizzano il virtiodriver del disco paravirtuale.
Michael Hampton

@MichaelHampton Ho migliorato la mia risposta con queste informazioni! Grazie!
Thiago Rider Augusto,

4
Inoltre, il driver virtio-scsi è più veloce del driver virtio-blk, che indirizza le unità da sd *. Quindi vd * non è sempre più veloce. Tutto ciò che significa è un dispositivo a blocchi gestito direttamente da un driver paravirtualizzato, piuttosto che un dispositivo a blocchi gestito da un'emulazione hardware o indirettamente da un controller paravirtualizzato.
Spooler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.