当我使用Ubuntu和CentOS时,我看到/dev/sda和/dev/vda。所以我不明白上面两个有什么区别?
当我使用Ubuntu和CentOS时,我看到/dev/sda和/dev/vda。所以我不明白上面两个有什么区别?
Answers:
他们是不同的设备。
/dev/sda是第一个使用SCSI或(更可能)将SCSI驱动器API提供给用户土地的磁盘。这包括使用libata的SATA驱动器和IDE驱动器。这也可以是IDE / SATA / SCSI / etc。系统管理程序模拟的驱动器。
/dev/vda是使用虚拟化感知磁盘驱动程序的第一个磁盘。由于虚拟机管理程序不必模拟某些硬件接口,因此性能应该会好得多。
如果磁盘在两个接口下都已暴露给您的VM,则您应该选择磁盘,/dev/vda因为它几乎肯定会更快。
/dev/vda。除此之外...不知道为什么要这么做。如果您实际上在某处看到它完成了,那么可能值得考虑一下。
/dev/sdx并且/dev/hdx是物理(硬盘)磁盘驱动器或模拟的物理(硬盘)磁盘驱动器。当内核或某个程序的I / O对它们进行处理时,它会执行各种操作,例如将磁盘放到正确的位置并进行各种物理特定的“填充”。
/dev/vdx用于虚拟(硬盘)驱动器。当需要I / O时,内核所做的所有事情就是告诉虚拟化软件需要读取/写入位,并且已经完成。通常,vdx速度更快是因为内核不需要告诉硬盘驱动器来做一堆真正不需要的随机垃圾,因为它只需要告诉VM虚拟机管理程序即可完成工作。
我为“东西”这个词表示歉意,我想不出更好的词了:D
在udev规则中/lib/udev/rules.d/*定义了哪种硬件从内核获取哪个名称。
请参阅以下规则/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}"
所以/dev/vda是第一,虚拟硬盘(无硬件identificators)和总线ID virtio。看起来像qemu / kvm来宾。
/dev/sd*设备的udev规则可以是更多不同的硬件类型:scsi,ata,ieee1394,usb,...
/dev/.da尚未提及的这些设备文件的一种相当基本的方式是,它们代表不同的内核主编号。如果您点击该链接,您将进入内核源代码文档页面,其中包含一个主要由以下内容组成的表所有已分配设备主编号的表。同一文件也很可能在您硬盘上的某个位置。
这是关于您的问题的快速CTRL-F对我浮出水面的:
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.
112顶部列出的数字表示分配的专业编号和各种0...8...200号码,每行之前列出数字指示可能的次要电话号码范围。这些数字,除其他外,Linux内核用于将驱动程序模块与物理设备配对-它们标识设备类型。
上面的列表说明了CTRL-F找到的4个匹配项中的3个-这是第四个:
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.
vda块类型之间肯定存在趋势。请注意,这些内容在文档中可能不是最新的-甚至链接到kernel.org。毕竟,开发人员只是人。但是,差异的另一个可能来源是您的发行版的维护人员选择查找设备的位置。列出的大量路径只不过是建议而已-有许多方法可以将其重新放置。
这是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.
如前所述,这些路径是可配置的,但是主要/次要数字本身是非常明确的标识符。您可以通过stat调用设备文件来检查这些内容。
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: -
那是我的/dev/sda。那里有很多信息,但是在右边您可以看到它Device Type被指定为主要数字8,次要数字0。通过将其设备的maj / min与链接的表进行比较,可以以此方式标识几乎任何设备文件。