Cuando uso Ubuntu y CentOS, veo /dev/sda
y /dev/vda
. Entonces, ¿no puedo entender cuál es la diferencia entre los dos anteriores?
Cuando uso Ubuntu y CentOS, veo /dev/sda
y /dev/vda
. Entonces, ¿no puedo entender cuál es la diferencia entre los dos anteriores?
Respuestas:
Son diferentes dispositivos.
/dev/sda
es el primer disco que es SCSI o (más probablemente) que proporciona la API de la unidad SCSI a la tierra del usuario. Esto incluye unidades SATA y unidades IDE que usan libata. Esto también puede ser un IDE / SATA / SCSI / etc. unidad emulada por el hipervisor.
/dev/vda
es el primer disco que usa el controlador de disco compatible con la virtualización. El rendimiento debería ser mucho mejor, ya que el hipervisor no tiene que emular alguna interfaz de hardware.
Si el disco ha sido expuesto a su VM en ambas interfaces, debería preferirlo, /dev/vda
ya que seguramente será más rápido.
/dev/vda
. Aparte de eso ... no tengo idea de por qué lo harías. Si realmente lo está viendo en algún lugar, probablemente valga la pena su propia pregunta.
/dev/sdx
y /dev/hdx
son unidades de disco físicas (duras) o unidades de disco físicas (duras) emuladas. Cuando el núcleo o algún programa de E / S es para estos, hace todo tipo de cosas, como llevar el disco al lugar correcto y hacer todo tipo de "cosas" específicas para el físico.
/dev/vdx
es para unidades de disco virtuales (duras). Todo lo que hace el núcleo cuando tiene que hacer I / O es decirle al software de virtualización que los bits necesitan ser leídos / escritos y listo. En general, vdx
es más rápido porque el núcleo no necesita decirle al disco duro que haga una gran cantidad de basura aleatoria que realmente no debería ser necesaria porque solo necesita decirle al hipervisor VM que haga cosas.
Pido disculpas por la palabra "cosas", no podría pensar en una palabra mejor: D
En las udev
reglas /lib/udev/rules.d/*
se define qué tipo de hardware obtiene qué nombre del núcleo.
Vea las reglas para /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}"
También lo /dev/vda
es el primer disco duro virtual (sin identificadores de hardware) y una identificación de bus virtio
. Parece un invitado qemu / kvm.
Las reglas de udev para /dev/sd*
dispositivos pueden ser tipos de hardware más diferentes: scsi, ata, ieee1394, usb, ...
/dev/
es la parte del árbol de directorios de Unix que contiene todos los archivos de "dispositivo". Tradicionalmente, Unix trata casi todo lo que puede acceder como un archivo para leer o escribir.
En esencia, /dev/sda
todos los archivos de dispositivos se encuentran en su disco duro, mientras /dev/vda
que todos los archivos de dispositivos se encuentran en el espacio asignado para su máquina virtual.
Una forma bastante fundamental en la que /dev/.da
difieren estos archivos de dispositivos que aún no se ha mencionado es que representan diferentes números principales del núcleo . Si sigue ese enlace, aterrizará en una página de documentación de la fuente del núcleo que contiene una tabla de la mayoría de los números principales de dispositivos asignados. Este mismo archivo también es muy probable en su disco duro en alguna parte.
Esto es lo que me ha surgido un CTRL-F rápido con respecto a su pregunta:
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.
El 112
número que aparece en la parte superior indica el número principal asignado y los diversos 0...8...200
números que figuran antes de cada línea indican los posibles rangos de números menores. Estos números, entre muchas otras cosas, son utilizados por el kernel de Linux para emparejar módulos de controladores con dispositivos físicos: identifican un tipo de dispositivo.
La lista anterior representa 3 de 4 coincidencias encontradas con CTRL-F : aquí está el cuarto:
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.
Definitivamente parece haber una tendencia entre los vda
tipos de bloque. Tenga en cuenta que estos pueden no estar completamente actualizados en la documentación, incluso si están vinculados en kernel.org. Los desarrolladores son, después de todo, solo humanos. Pero otra posible fuente de discrepancia es donde los encargados de su distribución eligieron ubicar los dispositivos. Una gran cantidad de las rutas enumeradas son poco más que sugerencias: hay muchas formas de reubicarlas.
Y aquí está 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.
Como ya se señaló, estas rutas son eminentemente configurables, pero los números mayor / menor sirven como identificadores bastante explícitos. Puede verificar esto con una stat
llamada a un archivo de dispositivo.
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: -
Esa es mi /dev/sda
. Hay mucha información allí, pero a la derecha puede ver que Device Type
se especifica como número mayor 8, número menor 0. Puede identificar prácticamente cualquier archivo de dispositivo de esa manera comparando su maj / min con la tabla vinculada.