/dev/sdaэто первый диск, который либо SCSI, либо (что более вероятно) предоставляет API-интерфейс диска SCSI для пользователей. Это включает в себя диски SATA и IDE с использованием libata. Это также может быть IDE / SATA / SCSI / и т.д. диск эмулируется гипервизором.
/dev/vdaэто первый диск, использующий драйвер диска с поддержкой виртуализации. Производительность должна быть намного лучше, поскольку гипервизор не должен эмулировать какой-либо аппаратный интерфейс.
Если диск был открыт для вашей виртуальной машины под обоими интерфейсами, вы должны предпочесть, /dev/vdaпоскольку он почти наверняка будет быстрее.
Какова цель наличия на машине обоих устройств / dev / sdX и / dev / vdX?
Chromechris
1
@ user42076 Единственное, о чем я могу думать, - это хостинговая компания, которая не знает точно, какая ОС, на которой вы работаете, на своей виртуальной машине может предложить оба интерфейса, если ваша ОС не поддерживает более быструю /dev/vda. Кроме этого ... понятия не имею, зачем ты это делаешь. Если вы на самом деле видите, что это было сделано где-то, возможно, это стоит того, чтобы ответить на этот вопрос.
Дероберт
@ user42076 Да, я собираюсь спросить об этом. , , , , LOL
Chromechris
15
/dev/sdxи /dev/hdxявляются физическими (жесткими) дисками или эмулируемыми физическими (жесткими) дисками. Когда ядро или какой-либо программный ввод / вывод работают с ними, он делает все, что угодно, например, приводит диск в нужное место и выполняет всякие физические «вещи».
/dev/vdxдля виртуальных (жестких) дисков. Все, что делает ядро при вводе / выводе, - это сообщает программному обеспечению для виртуализации, что биты должны быть прочитаны / записаны, и все готово. В целом, vdxэто быстрее, потому что ядру не нужно указывать жесткому диску делать целую кучу случайного мусора, который на самом деле не нужен, потому что ему просто нужно сказать гипервизору виртуальной машины, чтобы он что-то делал.
Я прошу прощения за слово "вещи", я не мог придумать лучшего слова: D
Слово было достаточно выразительным - спасибо за ваш ответ.
mikeserv
1
Материал? Вы не могли думать о «чем-то» или «запрошенной операции ввода-вывода». Извинения не принимаются. ;)
Йохан
4
В udevправилах /lib/udev/rules.d/*определяется, какое оборудование получает какое имя от ядра.
Смотрите правила для /dev/vd*:
# partitions do not have hardware identifiers
ENV{DEVTYPE}!="disk", GOTO="persistent_storage_not_a_disk"
# nor do paravirtualized hard disks
KERNEL=="vd*", GOTO="persistent_storage_not_a_disk"
...
KERNEL=="vd*", ATTRS{serial}=="?*", \
ENV{ID_BUS}="virtio", ENV{ID_SERIAL}="$attr{serial}"
Так же /dev/vdaкак и первый виртуальный жесткий диск (без аппаратных идентификаторов) и идентификатор шины virtio. Похоже, гость QEMU / KVM.
Правила udev для /dev/sd*устройств могут быть разных типов оборудования: scsi, ata, ieee1394, usb, ...
/dev/ это часть в дереве каталогов unix, которая содержит все файлы «устройств» - unix традиционно рассматривает практически все, к чему вы можете обращаться, как файл для чтения или записи.
Таким образом, по сути, /dev/sdaэто все файлы устройств, найденные в жестком диске, в то время /dev/vdaкак все файлы устройств находятся в пространстве, выделенном для вашей виртуальной машины.
Один довольно фундаментальный способ /dev/.daотличия этих файлов устройств, который еще не был упомянут, состоит в том, что они представляют разные основные числа ядра . Если вы перейдете по этой ссылке, вы попадете на исходную страницу документации ядра, содержащую таблицу, состоящую в основном из всех основных номеров выделенных устройств. Этот же файл также очень вероятно где-то на вашем жестком диске.
Вот что быстрое CTRL-F обнаружило для меня по вашему вопросу:
112 block IBM iSeries virtual disk
0 = /dev/iseries/vda First virtual disk, whole disk
8 = /dev/iseries/vdb Second virtual disk, whole disk
...
200 = /dev/iseries/vdz 26th virtual disk, whole disk
208 = /dev/iseries/vdaa 27th virtual disk, whole disk
...
248 = /dev/iseries/vdaf 32nd virtual disk, whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 7.
112Номер , указанный на вершине указывает на выделенный номер основной и различные 0...8...200номера , указанные перед каждой линии , указывают на возможные диапазоны незначительное число. Эти числа, помимо прочего, используются ядром linux для сопряжения модулей драйверов с физическими устройствами - они идентифицируют тип устройства.
Приведенный выше список учитывает 3 из 4 совпадений, найденных с помощью CTRL-F - вот четвертый:
202 block Xen Virtual Block Device
0 = /dev/xvda First Xen VBD whole disk
16 = /dev/xvdb Second Xen VBD whole disk
32 = /dev/xvdc Third Xen VBD whole disk
...
240 = /dev/xvdp Sixteenth Xen VBD whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
Определенно, кажется, есть тенденция среди vdaтипов блоков. Обратите внимание, что они могут быть не полностью обновлены в документации - даже если они указаны на kernel.org. В конце концов, разработчики - только люди. Но еще один возможный источник расхождений - это то, где сопровождающие вашего дистрибутива решили найти устройства. Множество перечисленных путей представляют собой нечто большее, чем просто предложения - есть много способов их перемещения.
И вот sda:
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
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
Как уже отмечалось - эти пути в высшей степени настраиваются, но сами старшие / младшие числа служат довольно явными идентификаторами. Вы можете проверить это с помощью statвызова файла устройства.
Это мое /dev/sda. Там много информации, но справа вы можете видеть, что она Device Typeуказана как старший номер 8, младший номер 0. Таким образом, вы можете идентифицировать практически любой файл устройства, сравнивая его maj / min со связанной таблицей.
Ответы:
Это разные устройства.
/dev/sda
это первый диск, который либо SCSI, либо (что более вероятно) предоставляет API-интерфейс диска SCSI для пользователей. Это включает в себя диски SATA и IDE с использованием libata. Это также может быть IDE / SATA / SCSI / и т.д. диск эмулируется гипервизором./dev/vda
это первый диск, использующий драйвер диска с поддержкой виртуализации. Производительность должна быть намного лучше, поскольку гипервизор не должен эмулировать какой-либо аппаратный интерфейс.Если диск был открыт для вашей виртуальной машины под обоими интерфейсами, вы должны предпочесть,
/dev/vda
поскольку он почти наверняка будет быстрее.источник
/dev/vda
. Кроме этого ... понятия не имею, зачем ты это делаешь. Если вы на самом деле видите, что это было сделано где-то, возможно, это стоит того, чтобы ответить на этот вопрос./dev/sdx
и/dev/hdx
являются физическими (жесткими) дисками или эмулируемыми физическими (жесткими) дисками. Когда ядро или какой-либо программный ввод / вывод работают с ними, он делает все, что угодно, например, приводит диск в нужное место и выполняет всякие физические «вещи»./dev/vdx
для виртуальных (жестких) дисков. Все, что делает ядро при вводе / выводе, - это сообщает программному обеспечению для виртуализации, что биты должны быть прочитаны / записаны, и все готово. В целом,vdx
это быстрее, потому что ядру не нужно указывать жесткому диску делать целую кучу случайного мусора, который на самом деле не нужен, потому что ему просто нужно сказать гипервизору виртуальной машины, чтобы он что-то делал.Я прошу прощения за слово "вещи", я не мог придумать лучшего слова: D
источник
В
udev
правилах/lib/udev/rules.d/*
определяется, какое оборудование получает какое имя от ядра.Смотрите правила для
/dev/vd*
:Так же
/dev/vda
как и первый виртуальный жесткий диск (без аппаратных идентификаторов) и идентификатор шиныvirtio
. Похоже, гость QEMU / KVM.Правила udev для
/dev/sd*
устройств могут быть разных типов оборудования: scsi, ata, ieee1394, usb, ...источник
/dev/
это часть в дереве каталогов unix, которая содержит все файлы «устройств» - unix традиционно рассматривает практически все, к чему вы можете обращаться, как файл для чтения или записи.Таким образом, по сути,
/dev/sda
это все файлы устройств, найденные в жестком диске, в то время/dev/vda
как все файлы устройств находятся в пространстве, выделенном для вашей виртуальной машины.источник
Один довольно фундаментальный способ
/dev/.da
отличия этих файлов устройств, который еще не был упомянут, состоит в том, что они представляют разные основные числа ядра . Если вы перейдете по этой ссылке, вы попадете на исходную страницу документации ядра, содержащую таблицу, состоящую в основном из всех основных номеров выделенных устройств. Этот же файл также очень вероятно где-то на вашем жестком диске.Вот что быстрое CTRL-F обнаружило для меня по вашему вопросу:
112
Номер , указанный на вершине указывает на выделенный номер основной и различные0...8...200
номера , указанные перед каждой линии , указывают на возможные диапазоны незначительное число. Эти числа, помимо прочего, используются ядром linux для сопряжения модулей драйверов с физическими устройствами - они идентифицируют тип устройства.Приведенный выше список учитывает 3 из 4 совпадений, найденных с помощью CTRL-F - вот четвертый:
Определенно, кажется, есть тенденция среди
vda
типов блоков. Обратите внимание, что они могут быть не полностью обновлены в документации - даже если они указаны на kernel.org. В конце концов, разработчики - только люди. Но еще один возможный источник расхождений - это то, где сопровождающие вашего дистрибутива решили найти устройства. Множество перечисленных путей представляют собой нечто большее, чем просто предложения - есть много способов их перемещения.И вот
sda
:Как уже отмечалось - эти пути в высшей степени настраиваются, но сами старшие / младшие числа служат довольно явными идентификаторами. Вы можете проверить это с помощью
stat
вызова файла устройства.Это мое
/dev/sda
. Там много информации, но справа вы можете видеть, что онаDevice Type
указана как старший номер 8, младший номер 0. Таким образом, вы можете идентифицировать практически любой файл устройства, сравнивая его maj / min со связанной таблицей.источник