/dev/sdaest le premier disque SCSI ou (plus probablement) fournissant l’API du lecteur SCSI à l’utilisateur. Cela inclut les disques SATA et les disques IDE utilisant libata. Cela peut aussi être un IDE / SATA / SCSI / etc. lecteur imité par l'hyperviseur.
/dev/vdaest le premier disque utilisant le pilote de disque prenant en charge la virtualisation. Les performances devraient être bien meilleures, car l'hyperviseur n'a pas à émuler une interface matérielle.
Si le disque a été exposé à votre machine virtuelle sous les deux interfaces, préférez-le, /dev/vdacar il sera certainement plus rapide.
Quel serait l'objectif d'avoir les deux périphériques / dev / sdX et / dev / vdX sur une machine?
chromechris
1
@ user42076 La seule chose à laquelle je peux penser est une société d'hébergement qui ne sait pas exactement quel système d'exploitation vous exécutez sur sa machine virtuelle pourrait offrir les deux interfaces, au cas où votre système d'exploitation ne prend pas en charge le plus rapidement /dev/vda. Autre que cela ... aucune idée pourquoi vous le feriez. Si vous le constatez quelque part, cela vaut probablement la peine de poser sa propre question.
derobert
@ user42076 Oui, je vais poser une question à ce sujet. . . . . lol
chromechris
15
/dev/sdx et /dev/hdx sont des lecteurs de disque physiques (durs) ou des lecteurs de disque physique (durs) émulés. Lorsque le noyau ou un programme fait des entrées / sorties, il fait toutes sortes de choses, comme placer le disque au bon endroit et faire toutes sortes de "choses" spécifiques à la physique.
/dev/vdxest pour les disques virtuels (durs). Tout ce que le noyau fait quand il / elle dit est de dire au logiciel de virtualisation que les bits doivent être lus / écrits et c'est fait. En général, vdxc'est plus rapide, car le noyau n'a pas besoin d'indiquer au disque dur de faire toute une série de fichiers aléatoires inutiles, car il doit simplement indiquer à l'hyperviseur de machine virtuelle d'effectuer certaines tâches.
Je m'excuse pour le mot "substance", je ne pouvais pas penser à un meilleur mot: D
Le mot est très expressif - merci de votre réponse.
mikeserv
1
Des trucs? Vous ne pouviez pas penser à "quelque chose" ou à "l'opération IO demandée". Les excuses ne sont pas acceptées. ;)
Johan
4
Dans les udevrègles de/lib/udev/rules.d/* on définit quel type de matériel tire quel nom du noyau.
Voir les règles pour /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}"
Il en /dev/vdava de même du premier disque dur virtuel (sans identificateur matériel) et d’un identifiant de bus.virtio . Ressemble à un invité qemu / kvm.
Les règles udev pour les /dev/sd*périphériques peuvent être des types de matériel plus différents: scsi, ata, ieee1394, usb, ...
/dev/ est la partie de l’arborescence de répertoires unix qui contient tous les fichiers "périphériques" - unix traite généralement à peu près tout ce à quoi vous pouvez accéder en tant que fichier à lire ou à écrire.
En /dev/sdarésumé , tous les fichiers de périphérique trouvés dans votre disque dur /dev/vdasont tous contenus dans l’espace alloué à votre machine virtuelle.
Une différence assez fondamentale entre ces /dev/.dafichiers de périphériques et qui n'a pas encore été mentionnée est qu'ils représentent des nombres majeurs différents du noyau . Si vous suivez ce lien, vous arriverez sur une page de documentation du noyau contenant un tableau contenant la plupart des numéros majeurs de périphériques alloués. Ce même fichier est également très probablement sur votre disque dur quelque part.
Voici ce qu'un rapide CTRL-F a fait surface pour moi concernant votre question:
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.
Le 112numéro en haut indique le numéro majeur attribué et les différents numéros.0...8...200 numéros répertoriés avant chaque ligne indiquent les plages de numéros mineurs possibles. Ces nombres, parmi beaucoup d'autres choses, sont utilisés par le noyau Linux pour associer des modules de pilotes à des périphériques physiques - ils identifient un type de périphérique.
La liste ci-dessus représente 3 sur 4 correspondances trouvées avec CTRL-F - en voici le quatrième:
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.
Il semble bien y avoir une tendance parmi vda les types de blocs. Notez que ces informations peuvent ne pas être complètement à jour dans la documentation, même si elles sont liées à kernel.org. Les développeurs ne sont, après tout, que des humains. Mais une autre source possible de divergence réside dans le choix des responsables de la maintenance de votre distribution pour localiser les périphériques. Un grand nombre des chemins énumérés ne représentent guère plus que des suggestions - il existe de nombreuses façons de les déplacer.
Et voici 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.
Comme indiqué plus haut, ces chemins sont parfaitement configurables, mais les nombres majeurs / mineurs servent eux-mêmes d’identifiants assez explicites. Vous pouvez les vérifier en statappelant un fichier de périphérique.
C'est mon /dev/sda. Il y a beaucoup d'informations ici, mais à droite vous pouvez voir qu'il Device Typeest spécifié comme numéro majeur 8, numéro mineur 0. Vous pouvez identifier à peu près n'importe quel fichier de périphérique de cette manière en comparant son rapport maj / min à la table liée.
Réponses:
Ils sont différents appareils.
/dev/sda
est le premier disque SCSI ou (plus probablement) fournissant l’API du lecteur SCSI à l’utilisateur. Cela inclut les disques SATA et les disques IDE utilisant libata. Cela peut aussi être un IDE / SATA / SCSI / etc. lecteur imité par l'hyperviseur./dev/vda
est le premier disque utilisant le pilote de disque prenant en charge la virtualisation. Les performances devraient être bien meilleures, car l'hyperviseur n'a pas à émuler une interface matérielle.Si le disque a été exposé à votre machine virtuelle sous les deux interfaces, préférez-le,
/dev/vda
car il sera certainement plus rapide.la source
/dev/vda
. Autre que cela ... aucune idée pourquoi vous le feriez. Si vous le constatez quelque part, cela vaut probablement la peine de poser sa propre question./dev/sdx
et/dev/hdx
sont des lecteurs de disque physiques (durs) ou des lecteurs de disque physique (durs) émulés. Lorsque le noyau ou un programme fait des entrées / sorties, il fait toutes sortes de choses, comme placer le disque au bon endroit et faire toutes sortes de "choses" spécifiques à la physique./dev/vdx
est pour les disques virtuels (durs). Tout ce que le noyau fait quand il / elle dit est de dire au logiciel de virtualisation que les bits doivent être lus / écrits et c'est fait. En général,vdx
c'est plus rapide, car le noyau n'a pas besoin d'indiquer au disque dur de faire toute une série de fichiers aléatoires inutiles, car il doit simplement indiquer à l'hyperviseur de machine virtuelle d'effectuer certaines tâches.Je m'excuse pour le mot "substance", je ne pouvais pas penser à un meilleur mot: D
la source
Dans les
udev
règles de/lib/udev/rules.d/*
on définit quel type de matériel tire quel nom du noyau.Voir les règles pour
/dev/vd*
:Il en
/dev/vda
va de même du premier disque dur virtuel (sans identificateur matériel) et d’un identifiant de bus.virtio
. Ressemble à un invité qemu / kvm.Les règles udev pour les
/dev/sd*
périphériques peuvent être des types de matériel plus différents: scsi, ata, ieee1394, usb, ...la source
/dev/
est la partie de l’arborescence de répertoires unix qui contient tous les fichiers "périphériques" - unix traite généralement à peu près tout ce à quoi vous pouvez accéder en tant que fichier à lire ou à écrire.En
/dev/sda
résumé , tous les fichiers de périphérique trouvés dans votre disque dur/dev/vda
sont tous contenus dans l’espace alloué à votre machine virtuelle.la source
Une différence assez fondamentale entre ces
/dev/.da
fichiers de périphériques et qui n'a pas encore été mentionnée est qu'ils représentent des nombres majeurs différents du noyau . Si vous suivez ce lien, vous arriverez sur une page de documentation du noyau contenant un tableau contenant la plupart des numéros majeurs de périphériques alloués. Ce même fichier est également très probablement sur votre disque dur quelque part.Voici ce qu'un rapide CTRL-F a fait surface pour moi concernant votre question:
Le
112
numéro en haut indique le numéro majeur attribué et les différents numéros.0...8...200
numéros répertoriés avant chaque ligne indiquent les plages de numéros mineurs possibles. Ces nombres, parmi beaucoup d'autres choses, sont utilisés par le noyau Linux pour associer des modules de pilotes à des périphériques physiques - ils identifient un type de périphérique.La liste ci-dessus représente 3 sur 4 correspondances trouvées avec CTRL-F - en voici le quatrième:
Il semble bien y avoir une tendance parmi
vda
les types de blocs. Notez que ces informations peuvent ne pas être complètement à jour dans la documentation, même si elles sont liées à kernel.org. Les développeurs ne sont, après tout, que des humains. Mais une autre source possible de divergence réside dans le choix des responsables de la maintenance de votre distribution pour localiser les périphériques. Un grand nombre des chemins énumérés ne représentent guère plus que des suggestions - il existe de nombreuses façons de les déplacer.Et voici
sda
:Comme indiqué plus haut, ces chemins sont parfaitement configurables, mais les nombres majeurs / mineurs servent eux-mêmes d’identifiants assez explicites. Vous pouvez les vérifier en
stat
appelant un fichier de périphérique.C'est mon
/dev/sda
. Il y a beaucoup d'informations ici, mais à droite vous pouvez voir qu'ilDevice Type
est spécifié comme numéro majeur 8, numéro mineur 0. Vous pouvez identifier à peu près n'importe quel fichier de périphérique de cette manière en comparant son rapport maj / min à la table liée.la source