Когда я использую Ubuntu и CentOS, я вижу /dev/sda
и /dev/vda
. Так что я не могу понять, в чем разница между двумя выше?
Когда я использую Ubuntu и CentOS, я вижу /dev/sda
и /dev/vda
. Так что я не могу понять, в чем разница между двумя выше?
Ответы:
Это разные устройства.
/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*
:
# 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
вызова файла устройства.
stat /dev/sda
File: ‘/dev/sda’
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 5h/5d Inode: 7598 Links: 1 Device type: 8,0
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)
Access: 2014-07-18 11:10:13.112495427 -0700
Modify: 2014-07-16 18:59:41.313323401 -0700
Change: 2014-07-16 18:59:41.313323401 -0700
Birth: -
Это мое /dev/sda
. Там много информации, но справа вы можете видеть, что она Device Type
указана как старший номер 8, младший номер 0. Таким образом, вы можете идентифицировать практически любой файл устройства, сравнивая его maj / min со связанной таблицей.