在上一篇中我們簡單的說明了KVM虛擬化的概念,KVM的CPU虛擬化,內存虛擬化,這一篇我們主要談一下IO設備的虛擬化。
這里我們有必要先來說明一下計算機中的IO設備有哪些,很多人以為IO設備就是鍵盤鼠標,打印機,U盤這些外置的設備是IO設備,這當然沒錯,不過根據傳統意義上IO設備的定義是指一切在計算機中輸入和輸出的所有設備,這些設備還包括硬盤,顯卡,聲卡,網卡等,都屬于IO設備的范疇。
KVM的虛擬化環境中,對IO設備的虛擬化有多種技術方案,如下:
1.全虛擬化 兼容性好,無硬件依賴,但是性能較差2.半虛擬化 型號較好,但是需要安裝特定驅動,對舊系統的兼容性差3.硬件輔助虛擬化 性能很好,設備可以共享,是現在比較常用的虛擬化方案。
硬件輔助虛擬化在現在雖然比較常用,但是在實際的使用也存在一些問題,比如多用戶使用同一設備,以及需要對系統進行改造,都增加了這種虛擬化的使用成本。
KVM中通過QEMU來模擬硬盤和一些網絡設備。我們來看看系統中如何對虛擬設備進行訪問: 1.發起IO操作時被KVM的內核捕獲,處理后發送到IO共享頁并通知QEMU; 2.QEMU獲取IO交給硬件模擬代碼模擬IO操作,并發送IO請求到底層硬件處理,處理結果返回到IO共享頁; 3.然后通知IO捕獲代碼,返回結果。
KVM中的網絡虛擬化:virtio-net
后端驅動由用戶空間的QEMU提供,但網絡協議棧處于內核中,如果通過內核空間來處理網絡IO,可以減少了網絡IO處理過程中的多次上下文切換,從而提高網絡吞吐量與性能。所以,新的內核中提供vhost-net驅動,使前端網絡驅動virtio-net的后端處理任務QEMU改到內核空間執行。
在KVM的IO設備虛擬化中還有一種設備直通的方法,可以將物理設備如:硬盤,網卡,USB設備等直接分配給用戶,而不經過QEMU來做處理,比較常見的是使用在顯卡的虛擬化上,由于有些虛擬化的環境中對顯卡的需求比較高,就可以使用這種顯卡直通的方式,就像使用本機的顯卡一樣。需要注意的是通過這種直通方式分配的硬件不能共享給多個用戶使用,并且也不能動態遷移。
相關閱讀:
云桌面系統詳解一:什么是KVM?
作者:禹龍云 上傳時間:2021-05-17 11:27:08
上一篇:<< 云桌面系統詳解一:什么是KVM? | 下一篇:云計算和虛擬化常見術語解答 >>