Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1233978
  • 博文数量: 1096
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 11060
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-07 15:17
个人简介

linux工程师,RHCE

文章分类

全部博文(1096)

文章存档

2023年(84)

2022年(314)

2021年(251)

2020年(244)

2019年(176)

2018年(27)

我的朋友

分类: 系统运维

2023-02-23 08:52:24

 

由于工作的原因,需要开始接触虚拟化。正好前几天学了许岑的《如何成为有效学习的高手》,其中建议成年人需要以任务驱动的方式进行学习,并且需要刻意制造反馈,比如把学习内容整理成文章才能更有效的学习,所以尝试写下此文作为学习虚拟化历程的记录。

虚拟化我们都不陌生,平时我们网络工程师或者 运维工程师进行实验的各个平台都用了虚拟化的技术,比如VMware 还有EVE 模拟器等等。但其实我们使用的 Windows 其实也是一种{BANNED}最佳基础的虚拟化,它是分时复用系统,会将所有硬件进行虚拟化,再硬件资源逻辑化的基础之上,使用分时复用和共享内存功能,所以我们的电脑才能同时处理不同软件的工作。编程领域的 Java 虚拟机其实也是一种虚拟化技术,也是将操作系统资源进行虚拟化,然后 Java 程序就可以方便的移植到其他计算机上了。

广义上来讲,虚拟化就是在一套硬件上同时运行多个OS。虚拟化的实现就是开发出VMMvirtual machine monitor)虚拟机监视程序。{BANNED}最佳早的发展其实就是 IBM 开发分时系统了,IBM 工程师们通过将 CPU 的占用切分为无数个极短的时间片,然后让每片去执行不同的任务,通过轮询的方式使之伪装成多个 CPU 处理不同的程序,把物理资源逻辑化,以提高利用效率。

不同厂家开发出了不通的虚拟化软件和技术,他们的实现也有所不同。比如VMware 针对个??户是VMware Workstation ,针对苹果系统是VMware Fusion,针对企业?户是VMware vSphere+VMware vCenterLinux大厂 RedHat 使用的是(QEUM-KVMkernel-based virtual machine QEUM。微软开发的是 hyper-V 运用在自家的 windows 系统上,厂家Citrix开发的是 Xen,这家和其他厂家不太相同,是一种半虚拟化技术。

因为工作的原因,我注重学习的是 Linux KVM Linux IT 领域应用的更为广泛,学习 Linux 就不在此多叙,如果想系统的入门学习Linux,可以去看看这本书。

在虚拟化中,物理机提供物理资源,再上一层是 Hypervior/VMM 也就是宿主机,由他分成不同的客户机 OS1OS2OS3......

虚拟化模式下有两种指令,特权指令和敏感指令。顾名思义,特权指令是操作和管理关键系统资源的指令,只有在{BANNED}最佳高特权级才能正确运行,如果在非{BANNED}最佳高特权级运行,特权指令会引发一个异常,处理器可能会陷入{BANNED}最佳高特权级,交由系统软件进行处理。敏感指令,是操作特权资源的指令,其中包含修改虚拟机的运?模式或者下?物理机的状态;读写时钟、地址重定位系统及所有的I/O指令、中断等寄存器;访问存储保护系统等等。通过对比可以得出特权指令比敏感指令等级更高。当 guest OS 执?特权指令的时候,VMM会捕捉到异常,对 guest OS 执?的特权指令进?特权降级,然后进行模拟,通过模拟的?式实现 guest OS 需要实现的操作。

需要注意的是由于X86架构的CPU,敏感指令并不完全是特权执?,有些敏感指令对于VMM来说是捕捉不到的,所以?法进?特权降级然后陷?模拟,所以由于X86架构的CPU的这种情况,?法实现虚拟化的全部功能。

但如何解决X86架构的虚拟化实现呢,VMware给出了他们的技术方案,那就是通过二进制翻译(BinaryTranslation)。X86硬件虚拟化诞生也就十多年,但VMware已经成立了二十多年了,BT技术的历史也早已超过硬件虚拟化的历史,所以这是一项成熟到有些过时的技术了。BT技术包含了二进制代码翻译技术还有优先级压缩技术,他们的共用实现了让虚拟监视器和客户机可以运行在不同的特权级,实现Guest OS 的核心指令通过虚拟监视器的捕获和模拟来执行,实现客户操作系统需要做的操作。由于纯软件的实现?式导致效率极低,速度慢,所以又有了半虚拟化技术。半虚拟化采用了 Hypercall 技术,guest os 部分的代码被改变,使它会将特权指令的草案中都转还给 VMM Hypercall,由 VMM 继续处理,使 guest os 知道自己运行在1环而不是0环,有效的避免了虚拟化的执行冲突问题。半虚拟化有一项优点,那就是效率高,但缺点是他无法虚拟化Windows,因为Windows不能修改代码。

本片介绍了虚拟化的概念还有各个厂家对虚拟化的不同技术实现,下一篇会持续介绍Linux 虚拟化技术 KVM 的安装和使用等。

阅读(147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~