CPU 和内存虚拟化原理 - 每天5分钟玩转 OpenStack(6)
前面我们成功地把 KVM 跑起来了,有了些感性认识,这个对于初学者非常重要。不过还不够,我们多少得了解一些 KVM 的实现机制,这对以后的工作会有帮助。
CPU 虚拟化
KVM 的虚拟化是需要 CPU 硬件支持的。还记得我们在前面的章节讲过用命令来查看 CPU 是否支持KVM虚拟化吗?
root@ubuntu:~# egrep -o '(vmx|svm)' /proc/cpuinfo vmx
如果有输出 vmx 或者 svm,就说明当前的 CPU 支持 KVM。CPU 厂商 Intel 和 AMD 都支持虚拟化了,除非是非常老的 CPU。
一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,与其他 Linux 进程一样被调度。 比如在我的实验机上运行的虚机 kvm1 在宿主机中 ps 能看到相应的进程。
虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程。看下图
在这个例子中,宿主机有两个物理 CPU,上面起了两个虚机 VM1 和 VM2。 VM1 有两个 vCPU,VM2 有 4 个 vCPU。可以看到 VM1 和 VM2 分别有两个和 4 个线程在两个物理 CPU 上调度。
这里也演示了另一个知识点,即虚机的 vCPU 总数可以超过物理 CPU 数量,这个叫 CPU overcommit(超配)。 KVM 允许 overcommit,这个特性使得虚机能够充分利用宿主机的 CPU 资源,但前提是在同一时刻,不是所有的虚机都满负荷运行。 当然,如果每个虚机都很忙,反而会影响整体性能,所以在使用 overcommit 的时候,需要对虚机的负载情况有所了解,需要测试。
内存虚拟化
KVM 通过内存虚拟化共享物理系统内存,动态分配给虚拟机。看下图
为了在一台机器上运行多个虚拟机,KVM 需要实现 VA(虚拟内存) -> PA(物理内存) -> MA(机器内存)直接的地址转换。虚机 OS 控制虚拟地址到客户内存物理地址的映射 (VA -> PA),但是虚机 OS 不能直接访问实际机器内存,因此 KVM 需要负责映射客户物理内存到实际机器内存 (PA -> MA)。具体的实现就不做过多介绍了,大家有兴趣可以查查资料。
还有一点提醒大家,内存也是可以 overcommit 的,即所有虚机的内存之和可以超过宿主机的物理内存。但使用时也需要充分测试,否则性能会受影响。
下一节我们讨论 KVM 如何实现存储虚拟化。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
只需一步:创建oss bucket并控制访问权限
本文介绍怎样利用阿里云资源编排服务(ROS),一步创建阿里云资源(以OSS为例)、创建多个子帐号,并付给子帐号不同的资源访问权限。 先试为快,一步创建 >> 资源编排的RAM功能介绍 阿里云资源访问控制服务(RAM),帮助您把不同的资源权限分配给特定的用户(比如员工、系统或应用程序),达到最小特权的安全实践。例如,授权某个子用户管理两台指定的ECS实例。 资源编排服务按照三种粒度进行访问控制: ALIYUN::RAM::User 给当前账号创建子账号,同时给子帐号指定授权策略 ALIYUN::RAM::Group 创建用户组,如果给组指定授权策略,组中的每个用户都默认拥有了相同的访问权限 ALIYUN::RAM::Role 创建角色,如果给角色设置授权策略,那么扮演此角色的用户即拥有了此访问权限 给子用户授权OSS访问的实践 应用场景: 在某
- 下一篇
红帽工程师Theron Conrey谈oVirt,OpenStack与VMware
转载http://www.infoq.com/cn/news/2013/05/conrey-on-ovirt 红帽工程师Theron Conrey谈oVirt,OpenStack与VMware 作者杨赛发布于 2013年5月3日|讨论 oVirt是一个虚拟化管理软件的开源项目。该项目起源于Qumranet,该公司在2008年被红帽收购之后,其原有的虚拟化管理软件被从C#改写为Java,并在2011年开源为oVirt项目。2011年11月初,红帽在思科公司举办了第一次oVirt研讨会(oVirt Workshop),与IBM、英特尔、思科、Canonical、NetApp与SUSE一同宣布oVirt社区的成立。 利用oVirt管理KVM虚拟机和网络,企业可以快速的搭建起一个私有云环境。从这一点看来,oVirt的定位和另一个知名云计算项目OpenStack的定位是有些类似的。不过有意思的是,oVirt实际上是红帽的企业级虚拟化解决方案RHEV的上游项目,而这些支持oVirt项目的厂商们,也同时是OpenStack项目的参与者。为什么要同时支持两个目标有所重合的云计算项目?企业可以利用oVi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16