jaka jest różnica między / dev / vda i / dev / sda

16

Przygotowuję się do certyfikacji i mam lokalnie zainstalowany CentOS7 (VirtualBox) i inne wystąpienie w usłudze chmurowej.

W systemie lokalnym mam /dev/sdaa na chmurze mam /dev/vda.

Teraz zastanawiam się, co dokładnie oznacza ta różnica? Czy istnieje standard (dokumentacja?) Nazywania tych urządzeń i co oznaczają różne nazwy?

Edytować:

Myślę, że ten dokument jest bardzo przydatny do zrozumienia nazewnictwa: 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

Ale nie mogłem znaleźć informacji o / dev / vda.

Mathias Begert
źródło

Odpowiedzi:

15

Pełna wirtualizacja a parawirtualizacja

/ dev / sda jest pierwszym wykrytym dyskiem typu IDE / SATA / SCSI. W tym przypadku emulowany (w pełni zwirtualizowany) przez hiperwizora.

/ dev / vda to pierwszy wykryty parawirtualizowany sterownik dysku. Jest szybszy niż emulowane urządzenia sdX, jeśli oba są powiązane z tym samym dyskiem, ponieważ jego działanie jest mniejsze niż w przypadku emulowanego napędu.

Bibliografia:


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

Pełna wirtualizacja a parawirtualizacja

Zacznijmy od krótkiej dyskusji na temat dwóch różnych rodzajów schematów wirtualizacji: pełnej wirtualizacji i parawirtualizacji. W pełnej wirtualizacji system operacyjny gościa działa na hiperwizorze, który znajduje się na gołym metalu. Gość nie zdaje sobie sprawy, że jest wirtualizowany i nie wymaga żadnych zmian w pracy w tej konfiguracji. I odwrotnie, w parawirtualizacji, system operacyjny gościa nie tylko wie, że działa na hiperwizorze, ale zawiera kod, aby usprawnić przejścia z gościa do hiperwizora.

W schemacie pełnej wirtualizacji hiperwizor musi emulować sprzęt urządzenia, który emuluje na najniższym poziomie konwersacji (na przykład do sterownika sieciowego). Chociaż emulacja jest czysta przy tej abstrakcji, jest również najbardziej nieefektywna i bardzo skomplikowana. W schemacie parawirtualizacji gość i hiperwizor mogą współpracować, aby ta emulacja była wydajna. Minusem podejścia parawirtualizacji jest to, że system operacyjny jest świadomy, że jest wirtualizowany i wymaga modyfikacji do działania.

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

Co to są urządzenia parawirusowe?

Podczas uruchamiania maszyny wirtualnej środowisko wirtualne musi prezentować urządzenia systemowi-gościowi - dyski i sieć są głównymi dwoma (plus wideo, USB, timery i inne). W rzeczywistości jest to sprzęt widziany przez gościa VM.

Teraz, jeśli gość ma być całkowicie nieświadomy faktu, że jest zwirtualizowany, oznacza to, że host musi emulować jakiś prawdziwy sprzęt. Jest to dość powolne (szczególnie w przypadku urządzeń sieciowych) i jest główną przyczyną zmniejszonej wydajności maszyn wirtualnych.

Jeśli jednak chcesz poinformować system operacyjny gościa, że ​​jest on w środowisku wirtualnym, można uniknąć narzutów związanych z emulowaniem dużej części rzeczywistego sprzętu i użyć znacznie bardziej bezpośredniej ścieżki do obsługi urządzeń w maszynie wirtualnej. Takie podejście nazywa się parawirtualizacją. W takim przypadku system-gość wymaga zainstalowania określonego sterownika, który komunikuje się z urządzeniem parawirusowym. W Linuksie interfejs ten został znormalizowany i jest nazywany interfejsem „virtio”.

Thiago Rider Augusto
źródło
3
W szczególności /dev/vd*urządzenia używają virtioparawirtualnego sterownika dysku.
Michael Hampton
@MichaelHampton Poprawiłem swoją odpowiedź o te informacje! Dzięki!
Thiago Rider Augusto
4
Ponadto sterownik virtio-scsi jest szybszy niż sterownik virtio-blk, który adresuje dyski przez sd *. Tak więc vd * nie zawsze jest szybsze Wszystko, co oznacza, to urządzenie blokowe obsługiwane bezpośrednio przez parawirtualizowany sterownik, a nie urządzenie blokowe obsługiwane przez emulację sprzętową lub pośrednio przez parawirtualizowany sterownik.
Spooler