Virtualization

/dev/vda 和 /dev/sda 有什麼區別

  • February 12, 2019

我正在準備認證,並在本地安裝了 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 的資訊。

完全虛擬化與半虛擬化

/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 來賓看到的硬體。

現在,如果要讓來賓完全不知道它是虛擬化的,這意味著主機必須模擬某種真實的硬體。這很慢(特別是對於網路設備),並且是虛擬機性能下降的主要原因。

但是,如果您願意讓來賓作業系統知道它處於虛擬環境中,則可以避免模擬大部分真實硬體的成本,並使用更直接的路徑來處理 VM 內的設備。這種方法稱為半虛擬化。在這種情況下,客戶作業系統需要安裝一個特定的驅動程序來與準虛擬設備對話。在 Linux 下,這個介面已經被標準化,被稱為“virtio”介面。

引用自:https://serverfault.com/questions/803388