成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

云計算底層技術之 KVM 初探

云計算 虛擬化
KVM 是業界最為流行的 Hypervisor。它是作為 Linux kernel 中的一個內核模塊而存在,模塊名為 kvm.ko,也可以看作是一個進程,被內核調度并管理,從 Linux 2.6.20 版本開始被完全正式加入到內核的主干開發和正式發布代碼中。

 [[281929]]

KVM 是業界最為流行的 Hypervisor,全稱是 Kernel-based Virtual Machine。它是作為 Linux kernel 中的一個內核模塊而存在,模塊名為 kvm.ko,也可以看作是一個進程,被內核調度并管理,從 Linux 2.6.20 版本開始被完全正式加入到內核的主干開發和正式發布代碼中。 KVM 主要用于管理 CPU 和內存的虛擬化,IO 設備的虛擬化則是由 Qemu 來完成。為什么會有這樣的分工,請繼續往下看。

KVM 與 Qemu 的前世今生

Qemu 是一個純軟件實現的開源「模擬」軟件,它能夠模擬整套虛擬機的實現,包括 CPU、內存、各種 IO 設備、鼠標、鍵盤、USB 、網卡、聲卡等等,基本上沒有它不能模擬的。有人可能會比較疑惑它跟 KVM 之間到底有何關系,我們可以把它們看成是合作關系,好基友,誰都離不開彼此。

KVM 離不開 Qemu。KVM 實現初期,為了簡化開發和代碼重用,在 Qemu 的基礎上進行了修改,主要是將比較耗性能的 CPU 虛擬化和內存虛擬化部分移到了內核中實現,保留 IO 虛擬化模塊在用戶空間實現。這樣的做法主要是考慮到性能的原因,CPU 和 內存虛擬化是非常復雜的虛擬化模塊,而且使用非常頻繁,如果實現在用戶空間的話,用戶態和內核態的頻繁切換勢必會對性能造成很大的影響。那為什么要單獨保留 IO 虛擬化在用戶空間呢,這個也是權衡之下的結果,首先 IO 設備太多了,其次 IO 虛擬化相對其他兩個模塊使用不是很頻繁,開銷會小一些,所以,為了盡可能保持內核的純凈性,才有了這樣的分配。

Qemu 離不開 KVM。上面也說了,Qemu 是一個純軟件的實現,運行在用戶空間,性能非常低下,所以,從 Qemu 的角度,可以說是 Qemu 使用了 KVM 的虛擬化功能,為自身虛擬機提供加速。

早期兩者還沒有區分(沒有同居),KVM 修改的模塊叫 qemu-kvm,到 Qemu1.3 版本之后,兩者就合二為一了(同居啦),如果我們在用 Qemu 創建虛擬機時,要加載 KVM 模塊,需要為其指定參數 --enable-kvm。

KVM 與 Qemu 的關系

 

KVM 架構

KVM 是基于硬件虛擬化(Intel VT 或 AMD-V)實現的一套虛擬化解決方案,通過以上一個與 Qemu 關系的分析,我們基本上知道它在虛擬化領域處在一個什么樣的地位。它其實只負責 CPU 和內存的虛擬化,不負責任何設備的模擬,而是提供接口給用戶空間的 Qemu 來模擬。這個接口是 /dev/kvm ,

Qemu 通過 /dev/kvm 接口設置一個虛擬機的地址空間,然后向它提供模擬好的 I/O 設備,并將相關的設備回顯操作映射到宿主機,完成整個 I/O 設備的虛擬化操作。

 

KVM 架構

/dev/kvm 接口是 Qemu 和 KVM 交互的“橋梁”,基本的原理是:/dev/kvm 本身是一個設備文件,這就意味著可以通過 ioctl 函數來對該文件進行控制和管理,從而可以完成用戶空間與內核空間的數據交互。在 KVM 與 Qemu 的通信過程主要就是一系列針對該設備文件的 ioctl 調用。

我就拿創建虛擬機舉個例子,虛擬機本質上是宿主機的一個進程,包括用戶態數據結構和內核態數據結構,用戶態部分由 Qemu 創建并初始化,內核態部分則由 KVM 來完成,完成后會返回一個文件句柄來代表所創建的虛擬機,針對該文件句柄的 ioctl 調用就可以對虛擬機進行相應的管理,比如建立虛擬機地址空間和宿主機地址空間的映射關系,創建多個線程(虛擬處理器,vCPU)來供虛擬機使用等,對于創建出的 vCPU,也會生成相應的文件句柄,同樣,對 vCPU 的文件句柄的 ioctl 調用就可以對 vCPU 進行管理。

關于這塊的具體細節,后面會有文章來專門討論。

VMM 管理工具 —— libvirt

目前,虛擬化這個領域可以說是百花齊放,針對不同的場景提出了很多的虛擬化解決方案,KVM、Xen、VMware、VirtualBox、Hyper-V 等等,具體的這些方案有什么特點,可以看前文「虛擬化技術總覽 」。這么多方案勢必有很多通用的模塊,不同之處可能在于,與不同硬件廠商的適配上,為了支持更多廠商,以及應用更多的領域,有很多 IaaS 解決方案需要融合多種虛擬化技術。這個時候如果有一個平臺類的管理工具就會非常方便,libvirt 就是這樣一個工具。


libvirt 架構

libvirt 除了能夠支持多種虛擬化方案之外,還支持 OpenVZ、LXC 等容器虛擬化系統。它提供一套完善的虛擬機管理工具,支持 GUI 和命令行的形式,如 virsh、virt-install、virt-manager。由于它的通用性和易管理,很多云計算框架平臺都在底層使用 libvirt 的 API 來管理虛擬機,比如 OpenStack、OpenNebula、Eucalyptus 等。這個工具我們僅僅提一下,有興趣的可以裝個玩玩。

下面給出 KVM 和 Qemu 的 git 路徑,有興趣的可以把源碼下下來研究下。

  1. kvm.git: 
  2. git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git 
  3. qemu.git(包括了 kvm): 
  4. git clone git://git.qemu-project.org/qemu.git 

 

責任編輯:武曉燕 來源: Linux云計算網絡
相關推薦

2022-04-15 15:03:42

云計算容器Linux

2024-10-29 14:00:21

云計算虛擬網絡

2010-05-28 10:48:49

云計算

2015-09-09 10:34:58

底層網絡技術網絡技術

2013-02-28 14:56:32

IBMKVM虛擬化

2012-02-29 15:03:30

2013-03-01 10:35:56

公有云IBMIaaS

2020-11-25 10:55:56

云計算

2011-07-28 17:32:21

2025-04-14 10:45:03

2011-10-18 10:37:05

ibmdwJVM

2022-08-02 17:04:50

云計算安全云平臺

2020-05-22 10:43:04

Windows容器DevOps

2013-04-10 11:23:27

2011-03-27 23:15:09

ibmdw云計算

2019-04-22 15:09:24

云計算KVMXEN

2010-03-12 13:45:40

云計算服務

2012-02-13 17:02:44

內網安全行為監控CISA

2012-07-12 09:31:06

虛擬化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区四区五区 | 久久精品久久久久久 | 国产精品无码专区在线观看 | 91在线视频免费观看 | 欧美福利专区 | 中文字幕成人 | 久草久草久草 | 性欧美hd | 欧美激情国产日韩精品一区18 | 久久综合成人精品亚洲另类欧美 | 操一草 | 在线成人免费观看 | 日韩精品成人网 | 亚洲一区 | 日韩一区二区在线播放 | 久久久精品黄色 | 久久国产精品72免费观看 | 99热碰 | 99爱国产 | 久久黄色 | 国产片一区二区三区 | 欧美无乱码久久久免费午夜一区 | 久久精品国产久精国产 | 日本不卡一区二区 | 最新国产精品视频 | 日日夜夜精品视频 | 国产片侵犯亲女视频播放 | 七七婷婷婷婷精品国产 | 在线日韩| 国产激情第一页 | 9久久婷婷国产综合精品性色 | 天堂成人国产精品一区 | 午夜精品久久久久久久久久久久 | 国产精品一区二区在线播放 | 国产精品久久久久久亚洲调教 | 中文字幕一区二区三区四区五区 | 91免费视频观看 | 国产美女在线观看 | 成人夜晚看av | 波多野结衣亚洲 | 亚洲一区二区精品视频 |