漫谈虚拟化之二 (虚拟化的理解)

技术教程 2025-05-10 19:31:02 浏览
漫谈之二

漫谈虚拟化之二-虚拟化面临的挑战

2018-03-21 11:00:45软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。

在谈这部分内容之前,让我们先来了解一下常见的一些有关虚拟化的常用概念。

1. 常用概念

(1)宿主机或主机:即 Host Machine,指物理机资源,如果将一个物理机虚拟成多个虚拟机,则称该物理机为 Host Machine。

(2)客户机:即 Guest Machine,指虚拟机资源。

(3)Host OS 和 Guest OS:运行在 Host Machine 上的 OS 则为 Host OS;运行在 Guest Machine 上的 OS 为 Guest OS。

(4)Hypervisor 或 VMM:通过虚拟化层的模拟,虚拟机在上层软件看来就是一个真实的机器,这个虚拟化层一般称为虚拟机监控机(Virtual Machine Monitor,VMM)或Hypervisor。是一种运行在基础物理 服务器 和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。

进一步理解,可以认为 Hypervisor 是一种在虚拟环境中的“元”操作系统。它可以访问服务器上包括内存和磁盘在内所有物理设备。Hypervisor 不但协调着这些硬件资源的访问,同时也在各个虚拟机之间施加防护。当服务器启动并执行 Hypervisor 时,它会加载所有虚拟机客户端的操作系统,同时会分配给每一台虚拟机适量的内存、CPU、网络和磁盘。

(5)VM:即虚拟机,是指使用虚拟化技术,通过软件模拟完整的计算机硬件系统功能,构造出的完整虚拟计算机系统。该虚拟机可以独立运行在一个完全隔离的环境中,就像使用本地计算机一样,安全可靠。

2. 虚拟化面临的挑战

在通过软件手段设计 VMM 的时候,需要解决很多问题,我们来看一下:

(1)确保 VMM 控制所有的系统资源

x86 处理器有 4 个特权级别,Ring 0 ~ Ring 3,只有运行在 Ring 0 ~ 2 级时,处理器才可以访问特权资源或执行特权指令;运行在 Ring 0 级时,处理器可以访问所有的特权状态。x86 平台上的操作系统一般只使用 Ring 0 和 Ring 3 这两个级别,操作系统运行在 Ring 0 级,用户进程运行在 Ring 3 级。为了满足上面的第一个充分条件-资源控制,VMM 自己必须运行在 Ring 0 级,同时为了避免 Guest OS 控制系统资源,Guest OS 不得不降低自身的运行级别,运行在 Ring 1 或 Ring 3 级(Ring 2 不使用)。

(2)特权级压缩(Ring Compression)

VMM 使用分页或段限制的方式保护物理内存的访问,但是 64 位模式下段限制不起作用,而分页又不区分 Ring 0, 1, 2。为了统一和简化 VMM 的设计,Guest OS 只能和 Guest 进程一样运行在 Ring 3 级。VMM 必须监视 Guest OS 对 GDT(Global Descriptor Table 全局描述符表)、IDT(Interrupt Descriptor Table,即中断描述符表)等特权资源的设置,防止 Guest OS 运行在 Ring 0 级,同时又要保护降级后的 Guest OS 不受 Guest 进程的主动攻击或无意破坏。

(3)特权级别名(Ring Alias)

特权级别名是指 Guest OS 在虚拟机中运行的级别并不是它所期望的。VMM 必须保证 Guest OS 不能获知正在虚拟机中运行这一事实,否则可能打破等价性条件。例如,x86 处理器的特权级别存放在 CS(Code Segment 代码段) 代码段寄存器内,Guest OS 可以使用非特权 push 指令将 CS 寄存器压栈(栈是存储的系统,压栈是写入数据,用 push 表示,每压栈一次减 2,出栈是输出数据,用 pop 表示,每出栈一次加 2;遵循先进后出,后进先出的顺序),然后 pop 出来检查该值。又如,Guest OS 在低特权级别时读取特权寄存器 GDT、LDT(Local Descriptor Table 局部描述符表)、IDT 和 TR(Task Rigister 任务寄存器),并不发生异常,从而可能发现这些值与自己期望的不一样。为了解决这个挑战,VMM 可以使用动态二进制翻译的技术,例如预先把 “push %%cs” 指令替换,在栈上存放一个影子 CS 寄存器值;又如,可以把读取 GDT 寄存器的操作“sgdt dest”改为“movl fake_gdt, dest”。

(4)地址空间压缩(Address Space Compression)

地址空间压缩是指 VMM 必须在 Guest OS 的地址空间中保留一部分供其使用。例如,中断描述表寄存器(IDT Register)中存放的是中断描述表的线性地址,如果 Guest OS 运行过程中来了外部中断或触发处理器异常,必须保证运行权马上转移到 VMM 中,因此 VMM 需要将 Guest OS 的一部分线性地址空间映射成自己的中断描述表的主机物理地址。VMM 可以完全运行在 Guest OS 的地址空间中,也可以拥有独立的地址空间,后者的话,VMM 只占用 Guest OS 很少的地址空间,用于存放中断描述表和全局描述符表(GDT)等重要的特权状态。无论如何哪种情况,VMM 应该防止 Guest OS 直接读取和修改这部分地址空间。

(5)处理 Guest OS 的缺页异常

内存是一种非常重要的系统资源,VMM 必须全权管理,Guest OS 理解的物理地址只是客户机物理地址(Guest Physical Address),并不是最终的主机物理地址(Host Physical Address)。当 Guest OS 发生缺页异常时,VMM 需要知道缺页异常的原因,是 Guest 进程试图访问没有权限的地址,或是客户机线性地址(Guest Linear Address)尚未翻译成 Guest Physical Address,还是客户机物理地址尚未翻译成主机物理地址。

一种可行的解决方法是 VMM 为 Guest OS 的每个进程的页表构造一个影子页表,维护 Guest Linear Address 到 Host Physical Address 的映射,主机 CR3 寄存器存放这个影子页表的物理内存地址。VMM 同时维护一个 Guest OS 全局的 Guest Physical Address 到 Host Physical Address 的映射表。发生缺页异常的地址总是 Guest Linear Address,VMM 先去 Guest OS 中的页表检查原因,如果页表项已经建立,即对应的 Guest Physical Address 存在,说明尚未建立到 Host Physical Address 的映射,那么 VMM 分配一页物理内存,将影子页表和映射表更新;否则,VMM 返回到 Guest OS,由 Guest OS 自己处理该异常。

(6)处理 Guest OS 中的系统调用

系统调用是操作系统提供给用户的服务进程,使用非常频繁。最新的操作系统一般使用 SYSENTER/SYSEXIT 指令对来实现快速系统调用。SYSENTER 指令通过IA32_SYSENTER_CS,IA32_SYSENTER_EIP 和 IA32_SYSENTER_ESP 这 3 个 MSR(Model Specific Register)寄存器直接转到 Ring 0 级;而 SYSEXIT 指令不在 Ring 0 级执行的话将触发异常。因此,如果 VMM 只能采取 Trap-And-Emulate 的方式处理这 2 条指令的话,整体性能将会受到极大损害。

(7)转发虚拟的中断和异常

所有的外部中断和主机处理器的异常直接由 VMM 接管,VMM 构造必需的虚拟中断和异常,然后转发给 Guest OS。VMM 需要模拟硬件和操作系统对中断和异常的完整处理流程,例如 VMM 先要在 Guest OS 当前的内核栈上压入一些信息,然后找到 Guest OS 相应处理例程的地址,并跳转过去。VMM 必须对不同的 Guest OS 的内部工作流程比较清楚,这增加了 VMM 的实现难度。同时,Guest OS 可能频繁地屏蔽中断和启用中断,这两个操作访问特权寄存器 EFLAGS,必须由 VMM 模拟完成,性能因此会受到损害。 Guest OS 重新启用中断时,VMM 需要及时地获知这一情况,并将积累的虚拟中断转发。

的理解

(8)Guest OS 频繁访问特权资源

Guest OS 对特权资源的每次访问都会触发处理器异常,然后由 VMM 模拟执行,如果访问过于频繁,则系统整体性能将会受到极大损害。比如对中断的屏蔽和启用,cli(Clear Interrupts)指令在 Pentium 4 处理器上需要花费 60 个时钟周期(cycle)。又如,处理器本地高级可编程中断处理器(Local APIC)上有一个操作系统可修改的任务优先级寄存器(Task-Priority Register),IO-APIC 将外部中断转发到 TPR 值最低的处理器上(期望该处理器正在执行低优先级的线程),从而优化中断的处理。TPR 是一个特权寄存器,某些操作系统会频繁设置(linux Kernel 只在初始化阶段为每个处理器的 TPR 设置相同的值)。

3. 总结

软件 VMM 所遇到的以上挑战从本质上来说是因为 Guest OS 无法运行在它所期望的最高特权级,传统的 Trap-And-Emulate 处理方式虽然以透明的方式基本解决上述挑战,但是带来极大的设计复杂性和性能下降。早期比较先进的虚拟化软件结合使用二进制翻译和半虚拟化的技术,核心思想是动态或静态地改变 Guest OS 对特权状态访问的操作,尽量减少产生不必要的硬件异常,2005 年随着硬件辅助虚拟化技术的出现,进一步简化了 VMM 的设计,VMM 的性能也能得到很大提高。


如何开启BIOS虚拟化设置?

查了下E5400,不支持虚拟化,建议使用securable虚拟化检测工具检测下。Intel® Pentium® Processor E5400 (2M Cache, 2.70 GHz, 800 MHz FSB)基本要素发行日期Q109处理器号E5400内核数2时钟速度2.7 GHz二级高速缓存2 MB前端总线输出800 MHz指令集64-bit提供嵌入式方案 No光刻45 nm最大散热设计功耗(TDP)65 WVID 电压范围0.8500V-1.3625V-TCASE74.1°C封装大小37.5mm x 37.5mm处理芯片大小82 mm2处理芯片晶体管数228 million支持的插槽LGA775-先进技术英特尔® 睿频加速技术 ‡No英特尔® 超线程技术 ‡ No英特尔® 虚拟化技术 ‡See Ordering Info英特尔® 定向 I/O 虚拟化技术 ‡ No英特尔® 64 ‡ Yes空闲状态Yes增强型 Intel SpeedStep® 动态节能技术 Yes英特尔® 按需配电技术 No温度监视技术Yes英特尔® 数据保护技术AES 新指令 No可信执行技术 ‡ No执行禁用位 ‡Yes

java中,什么是云计算?

广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。 这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。 解释: 这种资源池称为“云”。 “云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。 云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。 这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。 有人打了个比方:这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。 它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。 最大的不同在于,它是通过互联网进行传输的。 云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。 云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。 总的来说,云计算可以算作是网格计算的一个商业演化版。 早在2002年,我国刘鹏就针对传统网格计算思路存在不实用问题,提出计算池的概念:“把分散在各地的高性能计算机用高速网络连接起来,用专门设计的中间件软件有机地粘合在一起,以Web界面接受各地科学工作者提出的计算请求,并将之分配到合适的结点上运行。 计算池能大大提高资源的服务质量和利用率,同时避免跨结点划分应用程序所带来的低效性和复杂性,能够在目前条件下达到实用化要求。 ”如果将文中的“高性能计算机”换成“服务器集群”,将“科学工作者”换成“商业用户”,就与当前的云计算非常接近了。 云计算具有以下特点: (1) 超大规模。 “云”具有相当的规模,Google云计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。 企业私有云一般拥有数百上千台服务器。 “云”能赋予用户前所未有的计算能力。 (2) 虚拟化。 云计算支持用户在任意位置、使用各种终端获取应用服务。 所请求的资源来自“云”,而不是固定的有形的实体。 应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。 只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。 (3) 高可靠性。 “云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。 (4) 通用性。 云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。 (5) 高可扩展性。 “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。 (6) 按需服务。 “云”是一个庞大的资源池,你按需购买;云可以象自来水,电,煤气那样计费。 (7) 极其廉价。 由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。 云计算可以彻底改变人们未来的生活,但同时也用重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。

雷网主机服务器虚拟化技术的优缺点有哪些?请详解

朋友:你问题中的雷网主机是一家空间提供商。 服务器虚拟化技术最显著的功能之一就是可以在主机集群内瞬间迁移虚拟机(VM)、减少服务器或应用系统的停机时间。 在使用微软Hyper-V搭建的测试环境中,通过构建主机集群环境,我节省了无数的服务器停机时间。 但是,这个技术也引起了一些问题。 这里,TechTarget中国的特约专家RobMcShinsky将阐述虚拟主机集群环境最重要的三个优缺点。 服务器虚拟化技术优点一:主动的风险回避我相信,服务器集群的最大优点是它可以主将VM从一个主机迁移到另外一个主机。 这样的话,就可以提高服务器和应用系统的运行时间。 在我的环境中,当内存不足、CPU负载偏高或者虚拟主机遇到较高的I/O压力时,我会收到警报。 如果我不能确定真正的原因或者系统需要重启,我就可以主动将VM迁移到集群内的其他主机。 如果这是一个单机,或者说,在主机重启期间,VM不可以关闭;如果重启之后,问题依然存在,我就不得不延长VM的停机时间直到我找到了问题的起因。 但是,在虚拟主机集群中,VM就可以被迁移到其他的主机直到问题解决。 服务器虚拟化技术优点二:反应性容错因为集群中的主机监控着所有VM的活动,因此,当一个节点失效时,失效节点的负载就会被指派到另外一个替代的主机。 如果需要较长时间解决失效主机的故障,只要替代它的健康主机有足够的资源,VM就会正常工作。 在我的环境中,如果一个主机失效,VM会自动迁移到另外一个节点。 虽然迁移的过程并不平滑,但工作负载自动变化几乎没有停顿。 服务器虚拟化技术优点三:主动的管理我在一个7*24的组织中工作,因此,打补丁和升级工作就必须采取非常严格的管理。 正常情况下,协调1—2台物理主机的停机时间已经比较困难,而要关闭位于同一个物理主机的30多个VM的复杂性就会呈指数增长。 自从切换到单机之后,我妻子就不用担心我要在周日早上1:00-6:00去升级虚拟主机,那个时候,我可以呆在家里休息。 利用虚拟主机集群,当某个主机打补丁和重启的时候,其上的VM迁移到替代的主机。 打完补丁,VM再迁移到原来的主机。 这样,就允许我们在早上极短的时间内,不用停掉整个系统,完成集群的升级。 服务器虚拟化技术的缺点虽然主机集群环境有令人瞩目的优点,但它同样存在一些实施和管理上的缺点。 服务器虚拟化技术缺点一:实施和配置的复杂性配置复杂可能是集群的最大缺点。 建立集群框架、管理主机间的连通性、配置共享存储都不是简单的任务,可能涉及到组织内部多个团队。 你可能不害怕增加的复杂度,然而,很大程度上,都是技术性的工作;但是,随着复杂度的增加,你可能会遗漏某些东西从而影响系统的稳定性。 服务器虚拟化技术缺点二:更新和升级的不利因素升级到更新版本的产品和硬件组件也可能引起困难。 因为,虚拟主机集群连接多个系统,各组件间发生着大量的、复杂的交互。 以更新主机上的多路径I/O(MPIO)驱动为例,该操作会影响整个集群。 首先,它影响节点转移逻辑单元号(LUN)到其他节点的效率。 同时,在更新MPIO驱动之前,集群中所有主机的HBA卡的Firmware都需要升级。 如果FW不用升级,那也必须首先安装HBA卡的驱动。 如果是单机,这可以通过1-2次重启解决。 在集群环境中,协调多个虚拟主机服务器则较为困难。 升级实际的虚拟主机软件一定是一个具有挑战性的任务,因为集群节点的交互以及不同软件版本支持(比如,SCVMM、ProtectionManager等)。 一般情况下,厂商会为这些复杂升级提供详细的、一步一步的操作操作指南;同时,大多数情况下,都会比较顺利。 服务器虚拟化技术缺点三:集群成本因素成本是另外一个主要的考虑因素。 要实现一个虚拟主机集群环境,你需要复制部分基础架构并同时保持虚拟机与主机的比例。 此外,大部分厂商的实现需要一个SAN或者独立的磁盘子系统。 开源iSCSI或者廉价的磁盘阵列可能是个精明的选择,但这些选项可能存在性能和稳定性的问题。 以我的经验,在重要的基础架构组件上选择廉价的路线会产生问题,造成绊脚石。 就因为选择了一个特殊的配置能够工作并不意味着就满足了项目目标。 如果管理部门对成本感到担忧,你可以解释给他们虚拟主机集群环境可以提高正常运行时间、提供更好的服务。 依我看,如果正确实施,这种配置就完全对得起付出的成本。 最后,每个组织不得不判断虚拟主机集群环境是否适合自己业务系统模式。 虽然虚拟主机集群环境引入配置的复杂度、升级问题和潜在的额外成本,但是,你的环境可以从加强的服务器或者应用系统可用性和更好的管理上获益。 尽管有潜在的困难或不利因素,但是,我相信实施虚拟主机集群所付出的努力和成本是值得的。 以上就是本人对服务器虚拟化技术的优缺点的分析,希望对你会有些帮助。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐