加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 综合聚焦 > CentOS > 正文

Centos 7搭KVM

发布时间:2023-12-14 02:40:40 所属栏目:CentOS 来源:DaWei
导读: KVM简介及虚拟化技术简介
说道KVM,那必须先提虚拟化技术,我网上查的资料,貌似大家对虚拟化的一些术语没有达成统一的标准,如:仿真、完全虚拟化、超虚拟化、超虚拟化、操作系统级虚拟化。

KVM简介及虚拟化技术简介

说道KVM,那必须先提虚拟化技术,我网上查的资料,貌似大家对虚拟化的一些术语没有达成统一的标准,如:仿真、完全虚拟化、超虚拟化、超虚拟化、操作系统级虚拟化。
其实我觉得这些术语没有统一,也仅仅是因为角度的问题。也或许是理解不深,所以我这说的也仅仅是个人理解,可能也是理解不够深,仅供参考。
而单单连虚拟化这词,在不同人,不同层面上理解,都不一样。

神级别的虚拟化(虚拟化的起源)

先站住计算机科学的层面来看,也就是站在神级别的角度去看(仅仅为了说得生动而已,并非神化科学),站在神级别的角度来看什么是虚拟化,准确来说是虚拟化的起源:

它的存在已经超过 50多年了。虚拟化技术最早用在包括 IBM的7044、麻省理工学院(MIT)的 CTSS(Compatible Time Sharing System)以及曼彻斯特大学的 Atlas 项目(世界上最早的超级计算机之一),这些都是请求页面调度和监管进程调用的先驱。 硬件虚拟化 IBM 早在 20 世纪 60 年代开发 System/360 Model 67 大型机时就认识到了虚拟化的重要性。Model 67 通过 VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。在早期计算中,操作系统被称为supervisor。能够在其他操作系统上运行的操作系统被称为 hypervisor(这个术语是在 20 世纪 70 年代出现的)。
VMM 可以直接在底层硬件上运行,允许运行多个虚拟机(VM)。每个 VM 都可以运行一个自己私有操作系统的实例 ―― 在早些时候,这称为 CMS(或 Conversational Monitor System)。之后 VM 继续发展,现在您可以在 System z9 大型机上发现 VM。这提供了很好的向后兼容性,甚至是对 System/360 产品线的兼容性。

这里,这个hypervisor术语有点重要,要考的。在早期计算中,操作系统被称为supervisor。能够在其他操作系统上运行的操作系统被称为 hypervisor。

处理器虚拟化 虚拟化早期的另外一种用法(在本例中是对处理器的仿真)是 P-code(或伪码)机。P-code 是一种机器语言,运行于虚拟机而不是实际硬件。P-code 早在 20 世纪 70 年代就已在加州大学圣地亚哥分校(UCSD)Pascal 系统上颇有名气了,它将 Pascal 程序编译成 P-code,然后在一个 P-code 虚拟机上运行。这就使 P-code 程序具有了高度的可移植性,而且,只要有可用的 P-code 虚拟机,P-code 程序就可以运行。
20 世纪 60 年代对 BCPL(Basic Combined Programming Language)的设计中也采用了相同的概念,C 语言即由 BCPL 发展而来。在这种用法中,编译器会将 BCPL 代码编译成称为 O-code 的中间机器代码。接下来的第二个步骤是将 O-code 编译成目标机器的原始语言。现代编译器所使用的这种模型为将编译器移植到新目标体系结构上提供了很大的灵活性(通过一种中间语言将前端和后端分隔开来)。

soga,原来C的设计也是有这么一方面的考虑。-0-这虚拟化概念牵涉真深。

指令集虚拟化 虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被转换成底层硬件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某个段进行转换。如果出现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常类似,后者是将指令块从内存移动到本地快速缓存中执行。
这种模型最近在 Transmeta 设计的 Crusoe 中央处理单元(CPU)中得到了使用。二进制转换由 Code Morphing 的专利技术实现。类似的一个例子是完全虚拟化解决方案通过运行时代码扫描来查找和重定向特权指令(用来解决特定处理器指令集的一些问题)。

这么一说,好像是Java的JIT(just-in-time) 即时编译

当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是 JIT 编译器。 人级别的虚拟化(大家常说的虚拟化)

而这个层面,虚拟化是:

虚拟化是指在同一台物理服务器上模拟多台虚拟机的能力,且每台虚拟机在逻辑上拥有独立的CPU、内存、硬盘和网络接口等。虚拟化可以提高硬件资源的利用率,使多个应用能隔离的运行在同一台物理机上。

站在广义的虚拟化来看(知道我为什么上面用神级别虚拟化来代替吧,我真不知道比广义还广的应该叫啥,知道的同学可以帮忙科普下):
虚拟化分为硬件层面的虚拟化和软件层面的虚拟化。

硬件层面的虚拟化

硬件层面的虚拟化,我发现好像很多人是站在这个角度去看的,所以才把这里面的虚拟化技术分为:仿真、完全虚拟化、超虚拟化、超虚拟化、操作系统级虚拟化(这个应该属于软件层面的虚拟化,放在这里方便统一记忆)。

在硬件虚拟化的层面,现代虚拟化技术通常是全虚拟和半虚拟的混合体。常见的硬件虚拟化技术例如VMWare、Xen和KVM都同时支持全虚拟化和半虚拟化。硬件虚拟化方式提供的虚拟机,都独立的运行着一个完整的操作系统,这样在同一台物理宿主机上存在大量相同或者相似的进程和内存页,从而导致较大的性能损耗(比如:宿主机操作系统是Centos,使用KVM生成的多个虚拟机,且在每个虚拟机中都运行Windows操作系统和相同的QQ程序,这样宿主机的性能必然产生较大损耗)。因此,硬件虚拟化也被称为重量级虚拟化,在同一宿主机上能够同时运行的虚拟机数量相当有限。

这层面虚拟化项目有:

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章