qual é a diferença entre / dev / vda e / dev / sda

16

Estou me preparando para uma certificação e tenho um CentOS7 (VirtualBox) instalado localmente e outra instância em um serviço baseado em nuvem.

No sistema local eu tenho um /dev/sdae na nuvem eu tenho um /dev/vda.

Agora estou me perguntando o que exatamente essa diferença significa? Existe um padrão (documentação?) Para a nomeação desses dispositivos e quais são os nomes diferentes?

Editar:

Eu acho que este documento é muito útil para entender a nomeação: 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

Mas não consegui encontrar algumas informações sobre / dev / vda.

Mathias Begert
fonte

Respostas:

15

Virtualização completa versus para-virtualização

/ dev / sda é o primeiro disco detectado do tipo IDE / SATA / SCSI. Nesse caso, emulado (totalmente virtualizado) pelo hipervisor.

/ dev / vda é o primeiro driver de disco paravirtualizado detectado. É mais rápido que os dispositivos sdX emulados se ambos forem referidos ao mesmo disco, porque há menos sobrecarga em sua operação em comparação com uma unidade emulada.

Referências:


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

Virtualização completa vs. paravirtualização

Vamos começar com uma rápida discussão sobre dois tipos distintos de esquemas de virtualização: virtualização completa e paravirtualização. Na virtualização completa, o sistema operacional convidado é executado em cima de um hipervisor que fica na base do metal. O convidado não sabe que está sendo virtualizado e não requer alterações para funcionar nessa configuração. Por outro lado, na paravirtualização, o sistema operacional convidado não só está ciente de que está sendo executado em um hypervisor, mas inclui código para tornar as transições de convidado para hypervisor mais eficientes.

No esquema de virtualização completo, o hipervisor deve emular o hardware do dispositivo, que está emulando no nível mais baixo da conversa (por exemplo, para um driver de rede). Embora a emulação seja limpa nessa abstração, também é a mais ineficiente e altamente complicada. No esquema de paravirtualização, o convidado e o hipervisor podem trabalhar cooperativamente para tornar essa emulação eficiente. A desvantagem da abordagem de paravirtualização é que o sistema operacional está ciente de que está sendo virtualizado e requer modificações para funcionar.

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

O que são dispositivos paravirtuais?

Ao executar uma máquina virtual, o ambiente virtual deve apresentar dispositivos ao SO convidado - discos e rede sendo os dois principais (além de vídeo, USB, cronômetros e outros). Efetivamente, esse é o hardware que o convidado da VM vê.

Agora, se o convidado deve permanecer totalmente ignorante do fato de ser virtualizado, isso significa que o host deve emular algum tipo de hardware real. Isso é bastante lento (principalmente para dispositivos de rede) e é a principal causa de desempenho reduzido em máquinas virtuais.

No entanto, se você deseja que o sistema operacional convidado saiba que ele está em um ambiente virtual, é possível evitar a sobrecarga de emular grande parte do hardware real e usar um caminho muito mais direto para manipular dispositivos dentro da VM. Essa abordagem é chamada paravirtualização. Nesse caso, o sistema operacional convidado precisa de um driver específico instalado que fale com o dispositivo paravirtual. No Linux, essa interface foi padronizada e é chamada de interface "virtio".

Thiago Rider Augusto
fonte
3
Em particular, os /dev/vd*dispositivos estão usando o virtiodriver de disco paravirtual.
Michael Hampton
@MichaelHampton Melhorei minha resposta com essas informações! Obrigado!
Thiago Rider Augusto
4
Além disso, o driver virtio-scsi é mais rápido que o driver virtio-blk, que trata de unidades por sd *. Portanto, vd * nem sempre é mais rápido Tudo o que isso significa é um dispositivo de bloco manipulado diretamente por um driver paravirtualizado, em vez de um dispositivo de bloco manipulado por uma emulação de hardware ou indiretamente por um controlador paravirtualizado.
Spooler