Quando uso Ubuntu e CentOS, vedo /dev/sda
e /dev/vda
. Quindi non riesco a capire qual è la differenza tra i due precedenti?
Quando uso Ubuntu e CentOS, vedo /dev/sda
e /dev/vda
. Quindi non riesco a capire qual è la differenza tra i due precedenti?
Risposte:
Sono dispositivi diversi.
/dev/sda
è il primo disco che è SCSI o (più probabilmente) che fornisce l'API dell'unità SCSI per atterrare l'utente. Ciò include le unità SATA e le unità IDE che usano libata. Questo può anche essere un IDE / SATA / SCSI / ecc. unità emulata dall'hypervisor.
/dev/vda
è il primo disco che utilizza il driver del disco compatibile con la virtualizzazione. Le prestazioni dovrebbero essere molto migliori, poiché l'hypervisor non deve emulare alcune interfacce hardware.
Se il disco è stato esposto alla tua VM in entrambe le interfacce, dovresti preferire /dev/vda
in quanto sarà quasi sicuramente più veloce.
/dev/vda
. A parte questo ... non ho idea del perché lo faresti. Se lo stai vedendo effettivamente fatto da qualche parte, probabilmente vale la sua domanda.
/dev/sdx
e /dev/hdx
sono unità disco (rigide) fisiche o unità disco (rigide) fisiche emulate. Quando il kernel o alcuni I / O del programma sono su questi, fa ogni sorta di cose come portare il disco nel posto giusto e fare ogni sorta di "roba" fisica specifica.
/dev/vdx
è per unità disco (rigide) virtuali. Tutto ciò che il kernel fa quando deve eseguire l'I / O è dire al software di virtualizzazione che i bit devono essere letti / scritti e il gioco è fatto. In generale, vdx
è più veloce perché il kernel non ha bisogno di dire al disco rigido di fare un sacco di spazzatura casuale che in realtà non dovrebbe essere necessaria perché deve solo dire all'hypervisor VM di fare cose.
Mi scuso per la parola "roba", non riuscivo a pensare a una parola migliore: D
Nelle udev
regole in /lib/udev/rules.d/*
è definito quale tipo di hardware ottiene quale nome dal kernel.
Vedi le regole per /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}"
Così /dev/vda
è il primo disco rigido virtuale (senza identificatori hardware) e un ID bus virtio
. Sembra un ospite qemu / kvm.
Le regole udev per i /dev/sd*
dispositivi possono essere tipi di hardware più diversi: scsi, ata, ieee1394, usb, ...
/dev/
è la parte nella struttura di directory di unix che contiene tutti i file "dispositivo": unix tratta tradizionalmente quasi tutto ciò a cui è possibile accedere come file da cui leggere o scrivere.
Quindi, in sostanza, /dev/sda
sono tutti i file di dispositivo trovati nel tuo Harddrive mentre /dev/vda
sono tutti i file di dispositivo trovati nello spazio allocato per la tua macchina virtuale.
Un modo abbastanza fondamentale in cui /dev/.da
differiscono questi file di dispositivo che non è stato ancora menzionato è che rappresentano numeri principali del kernel diversi . Se segui quel link, finirai su una pagina di documentazione sorgente del kernel che contiene una tabella contenente principalmente tutti i principali numeri di dispositivo allocati. Questo stesso file è anche molto probabile sul tuo hard disk da qualche parte.
Ecco cosa mi è emerso in breve CTRL-F per quanto riguarda la tua domanda:
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.
Il 112
numero elencato in alto indica il numero maggiore assegnato e i vari 0...8...200
numeri elencati prima di ogni riga indicano i possibili intervalli di numeri minori. Questi numeri, tra le altre cose, sono usati dal kernel Linux per accoppiare i moduli driver con dispositivi fisici - identificano un tipo di dispositivo.
L'elenco sopra riportato rappresenta 3 di 4 corrispondenze trovate con CTRL-F - ecco il quarto:
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.
Sembra che ci sia sicuramente una tendenza tra i vda
tipi di blocco. Si noti che questi potrebbero non essere completamente aggiornati nella documentazione, anche se collegati a kernel.org. Dopotutto, gli sviluppatori sono solo umani. Ma un'altra possibile fonte di discrepanza è dove i manutentori della tua distribuzione hanno scelto di localizzare i dispositivi. Un gran numero di percorsi elencati equivale a poco più che a suggerimenti: ci sono molti modi per trasferirli.
Ed ecco 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.
Come già notato - questi percorsi sono eminentemente configurabili - ma i numeri maggiori / minori stessi fungono da identificatori piuttosto espliciti. Puoi verificarli con una stat
chiamata a un file del 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: -
Questo è il mio /dev/sda
. Ci sono molte informazioni lì, ma a destra puoi vedere che Device Type
è specificato come numero maggiore 8, numero minore 0. Puoi identificare praticamente qualsiasi file di dispositivo in questo modo confrontando il suo maj / min con la tabella collegata.