Коли я використовую 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
призначений для віртуальних (жорстких) дисків. Все ядро робить, коли це I / O'd - це сказати програмному забезпечення для віртуалізації, що біти потрібно читати / записувати, і це робиться. Взагалі, vdx
це швидше, тому що ядро не потрібно говорити на жорсткому диску робити цілу купу випадкових мотлохів, які справді не знадобляться, тому що йому просто потрібно сказати гіпервізору VM робити речі.
Прошу вибачення за слово "речі", я не міг придумати кращого слова: 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
це всі файли пристроїв, які знаходяться у вашому Harddrive, тоді /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. Ви можете ідентифікувати майже будь-який файл пристрою таким чином, порівнюючи його май / хв із пов'язаною таблицею.