в чем разница между / dev / vda и / dev / sda

16

Я готовлюсь к сертификации и имею локально установленный CentOS7 (VirtualBox) и другой экземпляр в облачной службе.

В локальной системе у меня есть /dev/sdaи на облачной основе у меня есть /dev/vda.

Теперь мне интересно, что именно означает эта разница? Существует ли стандарт (документация?) Для именования этих устройств и что означают разные названия?

Редактировать:

Я думаю, что этот документ очень полезен для понимания наименования: 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

Но я не смог найти некоторую информацию о / dev / vda.

Матиас Бегерт
источник

Ответы:

15

Полная виртуализация против паравиртуализации

/ dev / sda - это первый обнаруженный диск типа IDE / SATA / SCSI. В этом случае эмулируется (полностью виртуализируется) гипервизором.

/ dev / vda - это первый обнаруженный паравиртуализированный драйвер диска. Это быстрее, чем эмулируемые устройства sdX, если оба относятся к одному и тому же диску, потому что в его работе меньше накладных расходов по сравнению с эмулируемым диском.

Ссылки:


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

Полная виртуализация против паравиртуализации

Давайте начнем с быстрого обсуждения двух различных типов схем виртуализации: полная виртуализация и паравиртуализация. В полной виртуализации гостевая операционная система работает поверх гипервизора, который стоит на голом железе. Гость не знает, что он виртуализируется и не требует никаких изменений для работы в этой конфигурации. И наоборот, при паравиртуализации гостевая операционная система не только осознает, что работает на гипервизоре, но и содержит код для повышения эффективности переходов между гостями и гипервизорами.

В схеме полной виртуализации гипервизор должен эмулировать аппаратное обеспечение устройства, которое эмулируется на самом низком уровне диалога (например, для сетевого драйвера). Хотя эмуляция чиста в этой абстракции, она также является самой неэффективной и очень сложной. В схеме паравиртуализации гость и гипервизор могут работать совместно, чтобы сделать эту эмуляцию эффективной. Недостатком подхода паравиртуализации является то, что операционная система осознает, что она виртуализирована и требует изменений для работы.

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

Что такое паравиртуальные устройства?

При запуске виртуальной машины виртуальная среда должна представлять устройства для гостевой ОС - основными являются диски и сеть (плюс видео, USB, таймеры и другие). По сути, это оборудование, которое видит гость виртуальной машины.

Теперь, если гость должен оставаться полностью неосведомленным о факте его виртуализации, это означает, что хост должен эмулировать какое-то реальное оборудование. Это довольно медленно (особенно для сетевых устройств) и является основной причиной снижения производительности виртуальных машин.

Однако, если вы хотите сообщить гостевой ОС, что она находится в виртуальной среде, можно избежать накладных расходов, связанных с эмуляцией большей части реального оборудования, и использовать гораздо более прямой путь для обработки устройств внутри виртуальной машины. Этот подход называется паравиртуализацией. В этом случае гостевой ОС необходим определенный драйвер, который обращается к паравиртуальному устройству. В Linux этот интерфейс был стандартизирован и называется интерфейсом virtio.

Тьяго Райдер Аугусто
источник
3
В частности, /dev/vd*устройства используют virtioдрайвер виртуального диска.
Майкл Хэмптон
@MichaelHampton Я улучшил свой ответ этой информацией! Благодарность!
Тьяго Райдер Аугусто,
4
Кроме того, драйвер virtio-scsi работает быстрее, чем драйвер virtio-blk, который обращается к дискам с помощью sd *. Таким образом, vd * не всегда быстрее Все, что он означает, - это блочное устройство, обрабатываемое непосредственно паравиртуализированным драйвером, а не блочное устройство, управляемое аппаратной эмуляцией или косвенно паравиртуализированным контроллером.
Спулер