1.什么是虚拟化
1.1.非虚拟化
我们首先来认识什么是非虚拟化
1.一台机器、一个操作系统、几个应用程序
2.应用程序可能会相互影响。
3.机器利用率较低,正常情况下低于25%。
关于X86平台:
1.服务器基础设施利用率低(10-18%)
2.增加物理基础设施成本(设施、电力、冷却等)。
3.增加IT 管理成本(配置、部署、更新等)
4.一次只运行一个操作系统,效率低
1.2. 虚拟化
所以提出了虚拟化的解决方案
1.虚拟化使多个操作系统和应用程序能够在一个物理服务器上运行。
2.每个自包含的“虚拟机”都与其他虚拟机隔离。利用率高,并尽可能多地使用主机的计算资源
1.2.1.虚拟化定义
虚拟化是一个广义的术语,是指计算机资源的抽象。
虚拟化是一种隐藏计算资源的物理特性以避免其他系统、应用程序或最终用户与这些计算资源交互的技术。
1.2.2.使用场景
1.性能要求不高:中小型应用程序,而不是用于高性能应用程序。
2.非实时响应:不适用于实时响应需求
3.低IO:不适用于高输入/输出需求
问题:将所有关键服务器放到一个物理服务器中真的明智吗?◦
不,我们可以使用冗余。当单个物理服务器发生故障时,另一个物理服务器上的其他虚拟服务器将自动占用空闲服务器。
2.虚拟化种类
2.1.服务器虚拟化(Server Virtualization)
总体思想:在一台主机上运行多个guest OS,这些guest OS运行在自己的硬件上
优点:
1.客户虚拟机的可移植性
2.降低了操作、管理成本
3.服务器整合(server consolidation)
4.灾难恢复
物理到虚拟服务器迁移工具 (Physical to virtual):
1.将获取现有的物理服务器,并通过必要的修改生成该服务器的虚拟硬盘驱动器映像。
2.服务器将启动并作为虚拟服务器运行,无需重建、手动重新配置和许可证获取成本
3.bouns:可以获得灾难恢复方案,因为虚拟化映像可以用于立即恢复所有服务器
2.1.1.不同程度level:
1.1st Generation- full virtualization :guest OS is unmodified and believes it is running on the same hardware as the host OS(VMware和微软)
2.2nd Generation-Paravirtualization: guest OS is modified(VMware、Xen)
3.3rd Generation-Hardware-assisted virtualization :unmodified OS on virtualization-aware hardware platforms
完全虚拟化
第一代提供x86/x64服务器虚拟化
动态二进制翻译
1.仿真层与操作系统对话,操作系统与计算机硬件对话
2.客户操作系统看不到它是在一个模拟环境
所有的硬件仿真包括CPU。
仿真层:
1.将虚拟机与主机操作系统隔离
2.控制单个VM对系统资源的访问,防止不稳定的VM影响系统性能。
VM可移植性:;VM能够在具有不同硬件的主机之间透明地移动,而不会出现任何问题。
部分虚拟化
guest OS完全了解如何处理特权指令
VMM(virtual Machine Manager)不支持特权指令(privileged instructions)转换。guest OS使用专门的API与VMM通信以执行特权指令
硬件辅助虚拟化
VMM使用处理器扩展(如Intel®-VT或AMD-V)截获并模拟来宾中的特权操作
优点:它允许运行未经修改的操作系统(因此旧操作系统可以毫无问题地运行)
缺点:1.灵活性
2.未修改的操作系统不知道自己正在虚拟化环境中运行,因此无法利用任何虚拟化功能
3.可以使用半虚拟化部分解决此问题
2.2.桌面虚拟化(Desktop Virtualization)
在物理桌面上运行的虚拟机管理程序或系统管理程序。
在另一个操作系统上模拟一个操作系统,案例:虚拟机内测试代码,windows运行linux
2.2.1.服务器端工作区虚拟化(或桌面整合)Server-side workspace virtualization (or Desktop consolidation)
在服务器上托管的虚拟机内运行的工作区(具有自定义配置的桌面操作系统),服务器上存在一个虚拟工作区池(pool of virtual workspaces)
案例:远程用户通过微软的远程桌面协议(RDP)从任何联网的设备登录到他们中
优点:可以打破虚拟工作区和最终用户之间的1:1的比例,从而优化资源的使用。
问题:性能受到**网络性能(带宽)**的限制
2.2.2.客户端工作区虚拟化(Client-side workspace virtualization)
在桌面上托管的虚拟机内运行的一个工作区(具有自定义配置的桌面操作系统),提供一个虚拟工作区以在客户端设备上执行。
优点:对客户端上的数据和逻辑的安全性和隔离性( security and isolation)
2.3.应用程序隔离(Application Isolation ( or encapsulation封装) )
打包封装:一个应用程序打包了它自己的操作系统资源的虚拟副本,否则它可能需要更改(注册表、文件系统、库),每个应用程序都有自己独特的注册表和文件系统,但不是一个完整的操作系统。
(隔离)这些额外的工具使应用程序免受对底层桌面操作系统的更改和不兼容的影响。
案例:在Thinstall中,应用程序使用与应用程序一起嵌入到包中的虚拟注册表和文件系统。
2.4.应用程序流(Application Streaming)
将服务器托管的应用程序及时交付到桌面,以便在从服务器下载整个文件之前执行桌面应用程序
应用程序隔离的超级集合,包括传递方法和执行模式。
◦ 您可以将应用程序代码流式传输到桌面,在那里它可以独立运行。
没有完整的PC环境,只有应用程序,所以你必须提供一个工作空间。
◦ 需要维护客户端操作系统并确保兼容性
优点:流式传输将应用程序隔离的安全性和许可证管理优势与实时交付相结合。
问题:按正确的顺序流