Wenn ich Ubuntu und CentOS benutze, sehe ich /dev/sda
und /dev/vda
. Also kann ich nicht verstehen, was der Unterschied zwischen den beiden oben ist?
Wenn ich Ubuntu und CentOS benutze, sehe ich /dev/sda
und /dev/vda
. Also kann ich nicht verstehen, was der Unterschied zwischen den beiden oben ist?
Antworten:
Sie sind verschiedene Geräte.
/dev/sda
Dies ist die erste Festplatte, die entweder SCSI oder (wahrscheinlicher) die SCSI-Laufwerk-API für Benutzer bereitstellt. Dies schließt SATA-Laufwerke und IDE-Laufwerke mit libata ein. Dies kann auch eine IDE / SATA / SCSI / etc sein. Laufwerk vom Hypervisor emuliert.
/dev/vda
ist die erste Festplatte, die den virtualisierungsfähigen Festplattentreiber verwendet. Die Leistung sollte viel besser sein, da der Hypervisor keine Hardwareschnittstelle emulieren muss.
Wenn die Festplatte unter beiden Schnittstellen Ihrer VM ausgesetzt war, sollten Sie dies vorziehen, /dev/vda
da sie mit ziemlicher Sicherheit schneller ist.
/dev/vda
. Davon abgesehen ... keine Ahnung, warum du es tun würdest. Wenn Sie es tatsächlich irgendwo machen lassen, ist es wahrscheinlich eine eigene Frage wert.
/dev/sdx
und /dev/hdx
sind physische (Festplatten-) Laufwerke oder emulierte physische (Festplatten-) Laufwerke. Wenn der Kernel oder ein Programm E / A-Vorgänge für diese ausführt, werden alle möglichen Dinge ausgeführt, z. B. die Festplatte an die richtige Stelle zu bringen und alle möglichen physikspezifischen "Dinge" zu erledigen.
/dev/vdx
ist für virtuelle (Festplatten-) Laufwerke. Der Kernel teilt der Virtualisierungssoftware lediglich mit, dass Bits gelesen / geschrieben werden müssen, und fertig. Im Allgemeinen vdx
ist es schneller, weil der Kernel die Festplatte nicht anweisen muss, eine ganze Reihe zufälliger Junk-E-Mails zu erstellen, die eigentlich nicht benötigt werden sollten, da der VM-Hypervisor lediglich angewiesen werden muss, bestimmte Aufgaben auszuführen.
Ich entschuldige mich für das Wort "Zeug", ich konnte mir kein besseres Wort vorstellen: D
In den udev
Regeln in /lib/udev/rules.d/*
wird definiert, welche Art von Hardware welchen Namen vom Kernel bekommt.
Siehe die Regeln für /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}"
So /dev/vda
ist die erste, virtuelle Festplatte (keine Hardware-Identifikatoren) und eine Bus-ID virtio
. Sieht aus wie ein qemu / kvm-Gast.
Die udev-Regeln für /dev/sd*
Geräte können verschiedene Hardwaretypen sein: scsi, ata, ieee1394, usb, ...
/dev/
ist der Teil in der Unix-Verzeichnisstruktur, der alle "Geräte" -Dateien enthält. Unix behandelt traditionell fast alles, auf das Sie zugreifen können, als Datei, aus der Sie lesen oder in die Sie schreiben können.
Im Wesentlichen befinden sich /dev/sda
also alle Gerätedateien auf Ihrer Festplatte, während /dev/vda
sich alle Gerätedateien auf dem für Ihre virtuelle Maschine zugewiesenen Speicherplatz befinden.
Ein ziemlich grundlegender /dev/.da
Unterschied zwischen diesen Gerätedateien, der noch nicht erwähnt wurde, besteht darin, dass sie unterschiedliche Kernel-Hauptnummern darstellen . Wenn Sie diesem Link folgen, gelangen Sie auf eine Kernel-Quelldokumentationsseite, die eine Tabelle mit den meisten zugewiesenen Gerätenummern enthält. Dieselbe Datei befindet sich höchstwahrscheinlich auch irgendwo auf Ihrer Festplatte.
Hier ist, was für ein schnelles STRG-F für mich in Bezug auf Ihre Frage aufgetaucht ist:
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.
Die 112
oben aufgeführte Nummer gibt die zugewiesene Hauptnummer an, und die verschiedenen 0...8...200
vor jeder Zeile aufgeführten Nummern geben die möglichen Nebennummernbereiche an. Diese Nummern werden unter anderem vom Linux-Kernel verwendet, um Treibermodule mit physischen Geräten zu koppeln - sie identifizieren einen Gerätetyp.
Die obige Liste enthält 3 von 4 Übereinstimmungen, die mit STRG-F gefunden wurden - hier ist die vierte:
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.
Es scheint definitiv einen Trend unter vda
den Blocktypen zu geben. Beachten Sie, dass diese in der Dokumentation möglicherweise nicht vollständig auf dem neuesten Stand sind - auch wenn sie unter kernel.org verlinkt sind. Die Entwickler sind schließlich nur Menschen. Eine weitere mögliche Ursache für Unstimmigkeiten besteht darin, wo die Verantwortlichen Ihrer Distribution die Geräte gefunden haben. Viele der aufgeführten Pfade sind nur Vorschläge - es gibt viele Möglichkeiten, sie zu verlagern.
Und hier ist 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.
Wie bereits erwähnt, sind diese Pfade in hohem Maße konfigurierbar, aber die Haupt- / Nebennummern selbst dienen als ziemlich explizite Kennungen. Sie können diese durch stat
Aufrufen einer Gerätedatei überprüfen .
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: -
Das ist meine /dev/sda
. Dort gibt es viele Informationen, aber rechts können Sie sehen, dass Device Type
es als Hauptzahl 8 und Nebenzahl 0 angegeben ist. Sie können so ziemlich jede Gerätedatei identifizieren, indem Sie ihre Maj / Min mit der verknüpften Tabelle vergleichen.