一、什么是虚拟化
虚拟化就是在计算机上虚拟化出另一套操作系统。让一台计算机上可以运行多个操作系统。
二、虚拟化的应用
虚拟化的出现解决了什么样的问题?
1、计算资源的浪费(云)
问题:美国环境保护署(EPA)报告的一组有趣的统计数据就证明了其好处。EPA研究服务器和数据中心的能源效率时发现,实际上服务器只有5%的时间是在工作的。在其他时间,服务器都处于“休眠”状态。
如何解决?
虚拟化的诞生将一台服务器虚拟化出多个操作系统,通过隔离机制,分成不同的操作系统供多人使用或多程序运行。
2、软件研发流程
传统的软件研发流程问题:
1、资源利用效率低
2、单物理机多应用无法有效隔离(进程空间,cpu资源,磁盘)
3、运维部署不便
4、测试、版本管理复杂
5、迁移成本高
6、传统虚拟机,空间占用大,启动慢,管理复杂
以docker为代表的容器虚拟化技术,解决研发软件过程中运行环境和配置问题,方便发布,也就方便做持续集成。
三、虚拟化的分类
分类架构图:
1、纯软件仿真
- 通过模拟完整的硬件环境来化来宾平台。
- 模拟X86、ARM、 Powerpc等多种CPU
- 效率比较低
- 产品或方案QEMU、 Bochs、 Pearpc
2、虚拟化层翻译
- 多数的虚拟化而采用虛拟机管理程序 Hypervisor
- Hypervisor是一个软件层或子系统
也称为VMM( Virtual Machine Monitor,虚拟机监控器) - 允许多种操作系统在相同的物理系统中运行
- 控制硬件并向来宾操作系统提供访问底层硬件的途径
- 向来宾操作系统提供虚拟化的硬件
了解 x86 cpu 保护环
- 虚拟化时遇到了难题,多个操作系统抢占Ring0
- 由于操作系统内核需要访问cpu、内存…(硬件)
- 所以需要抢占Ring 0 这样子就使用特权指令
- 解决方式:增加hypervisor
(1)无硬件辅助的全虚拟化
(2) 硬件辅助的全虚拟化
- 由cpu增加一层Ring -1单独供 hypervisor 使用
- 应用指令直接发往操作系统由操作系统调用cpu
- 只有 sens… 特殊指令才会被发送到(hypervisor)vmm
Intel VT-x:
(3)半虚拟化
通过定制化的操作系统使得hypervisor与操作系统跑在ring0
优点:
部分指令省去hypervisor的翻译
性能得到增加
缺点:
需要定制化操作系统,不方便。
3、容器技术
使用 Linux container (内核容器虚拟化) 技术
使得容器使用一个内核,却隔离了环境
Docker 是什么?
1、Docker 是一个go语言遵从apache2.0协议开源的基于LXC的高级容器引擎
2、docker 想把我们的运行环境,通过标准化的手段自由的组装或封装
架构对比:
Hypervisor的分类
类型一:裸金属架构
没有单独的操作系统(或使用定制的操作系统)
优点:不用去维护中间不需要的操作系统
代表:Esxi
类型二:宿主机型
在操作系统上安装虚拟化的服务
基于底层的操作系统去虚拟化
缺点:底层的操作系统一旦奔溃上面的虚拟机也会停止运行