/ dev / vda和/ dev / sda有什么区别


16

我正在准备认证,并且在基于云的服务中具有本地安装的CentOS7(VirtualBox)和另一个实例。

在本地系统上,我有一个/dev/sda;在基于云的系统上,我有一个/dev/vda

现在我想知道这种差异到底意味着什么?是否有关于此设备命名的标准(文档?),不同的名称代表什么?

编辑:

我认为该文档对于理解命名非常有用:https : //www.kernel.org/doc/Documentation/admin-guide/devices.txt

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

但是我找不到有关/ dev / vda的信息。


Answers:


15

完全虚拟化与半虚拟化

/ dev / sda是第一个检测到的IDE / SATA / SCSI类型的磁盘。在这种情况下,由管理程序进行仿真(完全虚拟化)。

/ dev / vda是第一个检测到的半虚拟化磁盘驱动程序。如果两者都被引用到同一个磁盘,则它比仿真sdX设备要快,因为与仿真驱动器相比,其操作开销较小。

参考文献:


http://www.ibm.com/developerworks/library/l-virtio/

完全虚拟化与半虚拟化

让我们开始快速讨论两种不同类型的虚拟化方案:完全虚拟化和半虚拟化。在完全虚拟化中,客户操作系统运行在裸机上的虚拟机管理程序之上。来宾不知道已对其进行了虚拟化,并且不需要任何更改即可在此配置中工作。相反,在半虚拟化中,来宾操作系统不仅意识到它在虚拟机管理程序上运行,而且还包括使客户机到管理程序之间转换更加有效的代码。

在完全虚拟化方案中,系统管理程序必须模拟设备硬件,该设备硬件在会话的最低级别上进行模拟(例如,模拟到网络驱动程序)。尽管在此抽象中仿真是干净的,但它也是效率最低且最复杂的。在准虚拟化方案中,来宾和管理程序可以协同工作以使此仿真高效。半虚拟化方法的缺点是,操作系统知道它已被虚拟化,因此需要进行修改才能工作。

http://www.carfax.org.uk/docs/qemu-virtio

什么是半虚拟设备?

运行虚拟机时,虚拟环境必须将设备展示给来宾OS-磁盘和网络是主要的两个(以及视频,USB,计时器和其他)。实际上,这是VM guest虚拟机看到的硬件。

现在,如果要使来宾完全不了解虚拟化这一事实,则意味着主机必须模拟某种真实的硬件。这非常慢(尤其是对于网络设备),并且是虚拟机性能降低的主要原因。

但是,如果您希望让来宾OS知道它在虚拟环境中,则可以避免模拟许多实际硬件的开销,并可以使用更直接的路径来处理VM中的设备。这种方法称为半虚拟化。在这种情况下,来宾操作系统需要安装一个与半虚拟设备对话的特定驱动程序。在Linux下,该接口已经标准化,被称为“ virtio”接口。


3
特别是,/dev/vd*设备正在使用virtio半虚拟磁盘驱动程序。
迈克尔·汉普顿

@MichaelHampton我已经用这些信息改善了答案!谢谢!
Thiago Rider Augusto

4
而且,virtio-scsi驱动程序比virtio-blk驱动程序更快,后者通过sd *寻址驱动器。因此,vd *并不总是更快,它表示的是直接由半虚拟化驱动程序处理的块设备,而不是由硬件仿真或半虚拟化控制器间接处理的块设备。
后台处理程序
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.