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

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

我正在准备认证,并在本地安装了 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 的一些信息。

答案1

完全虚拟化与半虚拟化

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

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

参考:


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

完全虚拟化与半虚拟化

首先,我们来简单讨论一下两种不同类型的虚拟化方案:完全虚拟化和半虚拟化。在完全虚拟化中,客户操作系统在位于裸机上的虚拟机管理程序上运行。客户操作系统不知道自己正在被虚拟化,并且不需要进行任何更改即可在此配置下工作。相反,在半虚拟化中,客户操作系统不仅知道它在虚拟机管理程序上运行,而且还包含使客户操作系统到虚拟机管理程序的转换更高效的代码。

在完全虚拟化方案中,虚拟机管理程序必须模拟设备硬件,即在对话的最低级别进行模拟(例如,模拟到网络驱动程序)。尽管这种抽象的模拟很清晰,但它也是效率最低、最复杂的。在半虚拟化方案中,客户机和虚拟机管理程序可以协同工作,使这种模拟更加高效。半虚拟化方法的缺点是操作系统知道它正在被虚拟化,需要进行修改才能正常工作。

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

什么是半虚拟设备?

运行虚拟机时,虚拟环境必须向客户操作系统提供设备 - 磁盘和网络是主要设备(另外还有视频、USB、计时器等)。实际上,这是 VM 客户机看到的硬件。

现在,如果要让客户机完全不知道它是虚拟化的,这意味着主机必须模拟某种真实硬件。这非常慢(特别是对于网络设备),并且是虚拟机性能下降的主要原因。

但是,如果您愿意让客户操作系统知道它处于虚拟环境中,则可以避免模拟大量真实硬件的开销,并使用更直接的路径来处理虚拟机内的设备。这种方法称为半虚拟化。在这种情况下,客户操作系统需要安装一个与半虚拟设备通信的特定驱动程序。在 Linux 下,此接口已标准化,称为“virtio”接口。

相关内容