/dev/sdajest pierwszym dyskiem, który jest albo SCSI, albo (bardziej prawdopodobne) udostępnia interfejs API napędu SCSI do lądowania użytkownika. Obejmuje to dyski SATA i dyski IDE korzystające z libata. Może to być również IDE / SATA / SCSI / itp. dysk emulowany przez hiperwizora.
/dev/vdajest pierwszym dyskiem korzystającym ze sterownika dysku obsługującego wirtualizację. Wydajność powinna być znacznie lepsza, ponieważ hypervisor nie musi emulować interfejsu sprzętowego.
Jeśli dysk został udostępniony maszynie wirtualnej w obu interfejsach, powinieneś preferować, /dev/vdaponieważ prawie na pewno będzie on szybszy.
Jaki byłby cel posiadania urządzeń / dev / sdX i / dev / vdX na komputerze?
chromechris,
1
@ user42076 Jedyne, co mogę wymyślić, to firma hostingowa, która nie wie dokładnie, jaki system operacyjny działa na swojej maszynie wirtualnej, może oferować oba interfejsy, na wypadek gdyby Twój system operacyjny nie obsługiwał szybszego /dev/vda. Poza tym ... nie mam pojęcia, dlaczego to zrobiłeś. Jeśli faktycznie gdzieś to robisz, prawdopodobnie warto zadać sobie pytanie.
derobert
@ user42076 Tak, zamierzam o to zapytać. . . . . lol
chromechris
15
/dev/sdxi /dev/hdxsą dyskami fizycznymi (twardymi) lub emulowanymi dyskami fizycznymi (twardymi). Kiedy jądro lub jakiś program we / wy do nich wykonuje, robi różne rzeczy, takie jak doprowadzanie dysku we właściwe miejsce i wykonywanie różnego rodzaju „fizycznych rzeczy”.
/dev/vdxjest przeznaczony dla wirtualnych (twardych) dysków. Jądro, które wykonuje operacje we / wy, mówi wszystkim oprogramowaniu do wirtualizacji, że bity należy odczytać / zapisać i gotowe. Zasadniczo vdxjest szybszy, ponieważ jądro nie musi mówić dyskowi twardemu, aby zrobił całą masę losowych śmieci, które tak naprawdę nie powinny być potrzebne, ponieważ po prostu musi poinformować hiperwizora VM, aby zrobił różne rzeczy.
Przepraszam za słowo „rzeczy”, nie mogłem wymyślić lepszego słowa: D
Słowo było pełne ekspresji - dziękuję za odpowiedź.
mikeserv
1
Rzeczy? Nie można pomyśleć o „czymś” lub „żądanej operacji IO”. Przeprosiny nie są akceptowane. ;)
Johan
4
W udevregułach /lib/udev/rules.d/*jest zdefiniowany, jaki rodzaj sprzętu pobiera nazwę z jądra.
Zobacz zasady dotyczące /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}"
Podobnie /dev/vdajest z pierwszym wirtualnym dyskiem twardym (bez identyfikatorów sprzętowych) i identyfikatorem magistrali virtio. Wygląda na gościa qemu / kvm.
Reguły udev dla /dev/sd*urządzeń mogą być bardziej różnymi typami sprzętu: scsi, ata, ieee1394, usb, ...
/dev/ jest częścią drzewa katalogów unix, która zawiera wszystkie pliki „urządzeń” - unix tradycyjnie traktuje prawie wszystko, co można uzyskać, jako plik do odczytu lub zapisu.
Zasadniczo więc /dev/sdawszystkie pliki urządzeń znajdują się na dysku twardym, a /dev/vdawszystkie pliki urządzeń znajdują się w miejscu przydzielonym dla maszyny wirtualnej.
Jednym z dość fundamentalnych /dev/.daróżnic między tymi plikami urządzeń, o których jeszcze nie wspomniano, jest to, że reprezentują różne główne liczby jądra . Jeśli podążysz za tym linkiem, wylądujesz na stronie dokumentacji źródłowej jądra zawierającej tabelę zawierającą głównie wszystkie przydzielone główne numery urządzeń. Ten sam plik jest również bardzo prawdopodobne na twoim twardym dysku.
Oto, co pokazało mi szybkie CTRL-F w związku z twoim pytaniem:
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.
112Numer podany na górze wskazuje przydzielony numer główny oraz różne 0...8...200numery wymienione przed każdą linią wskazania możliwych zakresów numerycznych niewielkie. Liczby te, między innymi, są używane przez jądro Linuksa do parowania modułów sterowników z urządzeniami fizycznymi - identyfikują typ urządzenia.
Powyższa lista zawiera 3 z 4 dopasowań znalezionych za pomocą CTRL-F - oto czwarty:
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.
Zdecydowanie wydaje się, że istnieje pewien trend wśród vdatypów bloków. Zauważ, że mogą one nie być całkowicie aktualne w dokumentacji - nawet jak na link w kernel.org. W końcu twórcy są tylko ludźmi. Ale innym możliwym źródłem rozbieżności jest miejsce, w którym opiekunowie Twojej dystrybucji zdecydowali się zlokalizować urządzenia. Duża liczba wymienionych ścieżek to niewiele więcej niż sugestie - istnieje wiele sposobów ich przeniesienia.
A oto 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.
Jak już wspomniano - te ścieżki są doskonale konfigurowalne - ale same liczby główne / podrzędne służą jako dość wyraźne identyfikatory. Możesz to sprawdzić, statwywołując plik urządzenia.
To mój /dev/sda. Jest tam wiele informacji, ale po prawej stronie widać, że Device Typejest on określony jako numer główny 8, numer dodatkowy 0. Można w ten sposób zidentyfikować dowolny plik urządzenia, porównując jego maj / min z połączoną tabelą.
Odpowiedzi:
To różne urządzenia.
/dev/sda
jest pierwszym dyskiem, który jest albo SCSI, albo (bardziej prawdopodobne) udostępnia interfejs API napędu SCSI do lądowania użytkownika. Obejmuje to dyski SATA i dyski IDE korzystające z libata. Może to być również IDE / SATA / SCSI / itp. dysk emulowany przez hiperwizora./dev/vda
jest pierwszym dyskiem korzystającym ze sterownika dysku obsługującego wirtualizację. Wydajność powinna być znacznie lepsza, ponieważ hypervisor nie musi emulować interfejsu sprzętowego.Jeśli dysk został udostępniony maszynie wirtualnej w obu interfejsach, powinieneś preferować,
/dev/vda
ponieważ prawie na pewno będzie on szybszy.źródło
/dev/vda
. Poza tym ... nie mam pojęcia, dlaczego to zrobiłeś. Jeśli faktycznie gdzieś to robisz, prawdopodobnie warto zadać sobie pytanie./dev/sdx
i/dev/hdx
są dyskami fizycznymi (twardymi) lub emulowanymi dyskami fizycznymi (twardymi). Kiedy jądro lub jakiś program we / wy do nich wykonuje, robi różne rzeczy, takie jak doprowadzanie dysku we właściwe miejsce i wykonywanie różnego rodzaju „fizycznych rzeczy”./dev/vdx
jest przeznaczony dla wirtualnych (twardych) dysków. Jądro, które wykonuje operacje we / wy, mówi wszystkim oprogramowaniu do wirtualizacji, że bity należy odczytać / zapisać i gotowe. Zasadniczovdx
jest szybszy, ponieważ jądro nie musi mówić dyskowi twardemu, aby zrobił całą masę losowych śmieci, które tak naprawdę nie powinny być potrzebne, ponieważ po prostu musi poinformować hiperwizora VM, aby zrobił różne rzeczy.Przepraszam za słowo „rzeczy”, nie mogłem wymyślić lepszego słowa: D
źródło
W
udev
regułach/lib/udev/rules.d/*
jest zdefiniowany, jaki rodzaj sprzętu pobiera nazwę z jądra.Zobacz zasady dotyczące
/dev/vd*
:Podobnie
/dev/vda
jest z pierwszym wirtualnym dyskiem twardym (bez identyfikatorów sprzętowych) i identyfikatorem magistralivirtio
. Wygląda na gościa qemu / kvm.Reguły udev dla
/dev/sd*
urządzeń mogą być bardziej różnymi typami sprzętu: scsi, ata, ieee1394, usb, ...źródło
/dev/
jest częścią drzewa katalogów unix, która zawiera wszystkie pliki „urządzeń” - unix tradycyjnie traktuje prawie wszystko, co można uzyskać, jako plik do odczytu lub zapisu.Zasadniczo więc
/dev/sda
wszystkie pliki urządzeń znajdują się na dysku twardym, a/dev/vda
wszystkie pliki urządzeń znajdują się w miejscu przydzielonym dla maszyny wirtualnej.źródło
Jednym z dość fundamentalnych
/dev/.da
różnic między tymi plikami urządzeń, o których jeszcze nie wspomniano, jest to, że reprezentują różne główne liczby jądra . Jeśli podążysz za tym linkiem, wylądujesz na stronie dokumentacji źródłowej jądra zawierającej tabelę zawierającą głównie wszystkie przydzielone główne numery urządzeń. Ten sam plik jest również bardzo prawdopodobne na twoim twardym dysku.Oto, co pokazało mi szybkie CTRL-F w związku z twoim pytaniem:
112
Numer podany na górze wskazuje przydzielony numer główny oraz różne0...8...200
numery wymienione przed każdą linią wskazania możliwych zakresów numerycznych niewielkie. Liczby te, między innymi, są używane przez jądro Linuksa do parowania modułów sterowników z urządzeniami fizycznymi - identyfikują typ urządzenia.Powyższa lista zawiera 3 z 4 dopasowań znalezionych za pomocą CTRL-F - oto czwarty:
Zdecydowanie wydaje się, że istnieje pewien trend wśród
vda
typów bloków. Zauważ, że mogą one nie być całkowicie aktualne w dokumentacji - nawet jak na link w kernel.org. W końcu twórcy są tylko ludźmi. Ale innym możliwym źródłem rozbieżności jest miejsce, w którym opiekunowie Twojej dystrybucji zdecydowali się zlokalizować urządzenia. Duża liczba wymienionych ścieżek to niewiele więcej niż sugestie - istnieje wiele sposobów ich przeniesienia.A oto
sda
:Jak już wspomniano - te ścieżki są doskonale konfigurowalne - ale same liczby główne / podrzędne służą jako dość wyraźne identyfikatory. Możesz to sprawdzić,
stat
wywołując plik urządzenia.To mój
/dev/sda
. Jest tam wiele informacji, ale po prawej stronie widać, żeDevice Type
jest on określony jako numer główny 8, numer dodatkowy 0. Można w ten sposób zidentyfikować dowolny plik urządzenia, porównując jego maj / min z połączoną tabelą.źródło