搜索
首页数据库mysql教程X86服务器虚拟化的三种技术(2)

在上一讲中我介绍了:Intel的VT(Virtual Technology)和AMD的AMD-V(AMD Virtualization)技术对X86架构处理器打了硬件补丁之后,X86平台在虚拟CPU与内部存储器方面变成了一个支持完全虚拟化的平台,在这方面,Citrix Xen,MS Hyper-V(在旁边的虚拟化)与V

在上一讲中我介绍了:Intel的VT(Virtual Technology)和AMD的AMD-V(AMD Virtualization)技术对X86架构处理器打了硬件补丁之后,X86平台在虚拟CPU与内部存储器方面变成了一个支持完全虚拟化的平台,在这方面,Citrix Xen,MS Hyper-V(“在旁边的虚拟化”)与VMware ESX(全虚拟化)之间的差别已不复存在。但我必须提醒:前两者与后者在虚拟输入输出设备(IO Devices)方面仍然存在着一个根本的重要的差别。本讲揭示这一差别。

与虚拟CPU和内存的情况一样,虚拟一个IO设备也是让一个虚拟机(VM)感觉到它是在独享该设备。所以IO设备虚拟化任务也是替每一个VM分别管理好所用设备的服务状态(service state)。设想当一个设备(如网卡)在某个时间片断为VM1提供了一个服务片断(读入一页网页),在下一个时间片断要转而向VM2提供服务时,此时系统就必须先记住该设备为VM1提供当前服务片断后的状态,才可以让设备转向服务于VM2。只有这样做该设备才会知道以后再回到VM1时怎样继续提供尚未完成的服务。因为每一个IO设备都完全受控于一个叫做设备驱动器的软件,所以对一个设备和一个VM之间进行状态跟踪管理也就是针对相应驱动软件的服务状态进行跟踪管理。

“在旁边的虚拟化”(Para-Virtualization, Citrix Xen与MS Hyper-V都是)采用了非常简单实用的“在旁边有驱动器”之方法:让所有的客户(guest)VM 都去使用安装在那个“管理OS”(Xen的Dom0,Hyper-V的Parent Partition)里面现成的设备驱动器。这样一来整个平台上的IO设备就可以步调一致井井有条地为每一个客户VM服务了。当一个客户VM中的OS(中自有的设备驱动器)向硬件发出IO设备使用指令时,这些指令会被trap到hypervisor里,再被转到管理OS去使用它里面相应的设备驱动器。

与这个方法不同,VMware ESX选择在hypervisor里面置入并管理平台上所有的IO设备驱动器。ESX上的管理OS(又叫做Host OS或Service Console)只负责让系统管理员来管理客户VMs,比如创立、启动客户VM,启动VMotion操作等等,而不负责虚拟任何IO驱动器。另外我们知道ESXi压根就不带有管理OS,系统管理员是通过网络进入hypervisor来管理客户VM的。

上回我还讲道:Intel和AMD在给X86架构打硬件补丁的工作还实现了统一控制平台上IO设备对内存的直接访问(Direct Memory Access, DMA)。这改变了以前机器上IO设备可以随意对主机内存进行直接访问的无政府主义危险状况。诸位不要以为只有中央处理器(CPU)才是平台上唯一的脑子可以对内存进行访问操作。CPU的确可以被看作是平台上的“大脑”,然而平台上还有诸多“小脑”们:几乎每一个现代IO设备都自身带有固件,里面装有可执行指令可对主机内存进行读写访问。在以前的X86硬件上这些小脑们对主机内存进行DMA读写操作根本不必听从大脑的指挥。幸亏在非虚拟情况下平台上只跑一个操作系统,如果某个小脑对主机内存做了错误操作,造成的破坏也许还可以容忍,因为大不了平台崩溃只不过毁掉了跑在一台机器上的应用(一定遇到过Windows的蓝屏吧!)。如今在一个虚拟化的服务器平台上跑着许多不同虚拟机和不同操作系统,无政府主义的危害就不再那么单纯无邪了。小脑的一个误操作有可能打破不同虚拟机之间的隔离,轻者造成所模拟的操作系统出错,重者导致平台上所有的虚拟机全部崩溃。最近在X86硬件上的补丁工作(Intel的 VT-d, AMD的 IOMMU)对主板进行了重新布线,将所有小脑们的IO连线都统一联到北桥上的一个硬件部件IOMMU,于是大脑就可以使用该部件,采用MMU同样的方法统一协调管理小脑们对内存的IO访问了。有了大脑统一协调管理IOMMU,小脑即使误操作也应该无法穿越不同VM之间的隔离。但是这个说法只适用于通常的非恶意系统软硬件错误情形,不适用于在计算机安全上出错的情形。在考虑安全问题时所谓错误都是恶意攻击的结果,是攻击者有意引入的。在考虑安全问题时小脑们的驱动器软件(请回忆,IO设备都是受驱动器控制的)身处于系统软件栈的哪个权限层次就是一个非常重要的问题。这些软件所处的权限层次越接近硬件层,攻击者对它们进行攻击的手段就越有限也越困难。

对于“在旁边的虚拟化”方法( Citrix Xen与MS Hyper-V),前面我们说过所有设备驱动器软件都安装在管理OS里面。这个管理OS虽然跑在一个低特权态(hypervisor之上的非内核态),却由于需要向平台上所有客户VMs提供设备驱动器服务因而必须可以操控所有这些客户VMs。于是这个处于低特权态的管理OS就自然形成了一个可以被利用来对任一客户VM进行DMA攻击的最薄弱环节。所有对一般OS有效的攻击方法(我们知道有大量这样的方法)都可以被利用来攻击这个OS中的驱动器软件,对客户VM实施DMA攻击。

而VMware ESX的情况不同:平台上所有设备驱动器都是在hypervisor中模拟得到的。我们知道hypervisor是直接跑在硬件上的,即处于最高特权态。一般攻击OS的用户态手段都不能对hypervisor产生有效攻击。另外Intel VT-d和AMD IOMMU都格外注重对hypervisor代码与数据施加保护。如果想要通过攻击hypervisor中设备驱动器的方法来对客户VM实施DMA攻击,那要远比这些设备驱动器处身于用户态OS中的情况困难得多。

业界诸多专家已经认可如下为不争事实:用可信计算技术来保护hypervisor是一个可行方法,Intel的Trusted eXecution Technology(TXT)就是一个典型案例。而用可信计算技术来保护用户态OS是一个不可行方法,MS的Vista OS中的BitLocker技术就是尝试这一方法的一个典型失败案例。

下一讲将介绍可信计算技术并讨论为什么使用可信计算技术来保护hypervisor,尤其是保护象VMware ESX那种自身含有IO设备驱动器的hypervisor,这种技术方法可以在云计算或基于服务架构的安全保护上找到重要有效的应用。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何识别和优化MySQL中的慢速查询? (慢查询日志,performance_schema)如何识别和优化MySQL中的慢速查询? (慢查询日志,performance_schema)Apr 10, 2025 am 09:36 AM

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL:开发人员的基本技能MySQL和SQL:开发人员的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

描述MySQL异步主奴隶复制过程。描述MySQL异步主奴隶复制过程。Apr 10, 2025 am 09:30 AM

MySQL异步主从复制通过binlog实现数据同步,提升读性能和高可用性。1)主服务器记录变更到binlog;2)从服务器通过I/O线程读取binlog;3)从服务器的SQL线程应用binlog同步数据。

mysql:简单的概念,用于轻松学习mysql:简单的概念,用于轻松学习Apr 10, 2025 am 09:29 AM

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL:数据库的用户友好介绍MySQL:数据库的用户友好介绍Apr 10, 2025 am 09:27 AM

MySQL的安装和基本操作包括:1.下载并安装MySQL,设置根用户密码;2.使用SQL命令创建数据库和表,如CREATEDATABASE和CREATETABLE;3.执行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.创建索引和存储过程以优化性能和实现复杂逻辑。通过这些步骤,你可以从零开始构建和管理MySQL数据库。

InnoDB缓冲池如何工作,为什么对性能至关重要?InnoDB缓冲池如何工作,为什么对性能至关重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通过将数据和索引页加载到内存中来提升MySQL数据库的性能。1)数据页加载到BufferPool中,减少磁盘I/O。2)脏页被标记并定期刷新到磁盘。3)LRU算法管理数据页淘汰。4)预读机制提前加载可能需要的数据页。

MySQL:初学者的数据管理易用性MySQL:初学者的数据管理易用性Apr 09, 2025 am 12:07 AM

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

与MySQL中使用索引相比,全表扫描何时可以更快?与MySQL中使用索引相比,全表扫描何时可以更快?Apr 09, 2025 am 12:05 AM

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。