Різниця між sdX і vdX


33

Коли я використовую Ubuntu та CentOS, я бачу /dev/sdaі /dev/vda. Тож я не можу зрозуміти, чим відрізняється вище двох?


Один із них у ВМ?
goldilocks

Так. Я використовую VM .. :)
Supun Rathnayake

Відповіді:


29

Вони різні пристрої.

/dev/sdaце перший диск, який або SCSI, або (що швидше за все) надає API приводу SCSI на приземлення користувача. Сюди входять диски SATA та IDE-накопичувачі, що використовують libata. Це також може бути IDE / SATA / SCSI / тощо. диск, емульований гіпервізором.

/dev/vda- це перший диск, що використовує драйвер диска, відомого про віртуалізацію. Продуктивність повинна бути набагато кращою, оскільки гіпервізору не потрібно імітувати якийсь апаратний інтерфейс.

Якщо диск був підданий вашій машині управління в обох інтерфейсах, вам слід віддати перевагу, /dev/vdaоскільки це майже напевно буде швидше.


2
Якою була б мета мати пристрої / dev / sdX & / dev / vdX в машині?
chromechris

1
@ user42076 Єдине, про що я можу придумати, - це хостингова компанія, яка точно не знає, яку ОС ви працюєте на своєму VM, може запропонувати обидва інтерфейси, якщо ваша ОС не підтримує швидше /dev/vda. Крім цього ... не маю уявлення, чому ви це зробите. Якщо ви насправді бачите це зроблено десь, напевно, варто це власне питання.
derobert

@ user42076 Так, я збираюся запитати про це. . . . . lol
chromechris

15

/dev/sdxі /dev/hdxє фізичними (жорсткими) дисководами або імітованими фізичними (жорсткими) дисками. Коли ядро ​​або якась програма вводить-виводить їх, вони роблять всілякі речі, такі як приведення диска в потрібне місце і виконання всіляких фізичних специфічних "речей".

/dev/vdxпризначений для віртуальних (жорстких) дисків. Все ядро ​​робить, коли це I / O'd - це сказати програмному забезпечення для віртуалізації, що біти потрібно читати / записувати, і це робиться. Взагалі, vdxце швидше, тому що ядро ​​не потрібно говорити на жорсткому диску робити цілу купу випадкових мотлохів, які справді не знадобляться, тому що йому просто потрібно сказати гіпервізору VM робити речі.

Прошу вибачення за слово "речі", я не міг придумати кращого слова: 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, ...


2

/dev/ це частина дерева дерев каталогів Unix, яка містить усі файли "пристрою" - unix традиційно обробляє майже все, до чого ви можете отримати доступ до файлу для читання або запису в нього.

Отже, по суті, /dev/sdaце всі файли пристроїв, які знаходяться у вашому Harddrive, тоді /dev/vdaяк всі файли пристроїв знаходяться у просторі, виділеному для вашої віртуальної машини.


0

Один з досить принципових способів, якими /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. Ви можете ідентифікувати майже будь-який файл пристрою таким чином, порівнюючи його май / хв із пов'язаною таблицею.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.