专利名称:替换系统硬件的利记博彩app
替换系统硬件
些旦
^r眾
微处理器是能够为诸如台式计算机、膝上型计算机、服务器计算机、 蜂窝电话、激光打印机等计算设备执行处理和控制功能的电子设备。通常, 微处理器包括包含并保护包括复杂集成电路的小片半导体材料的小塑料或 陶瓷封装。连接到集成电路的引线被附连到从封装伸出的引脚上,从而允 许该集成电路连接到其它电子设备和电路。微处理器通常被插入或以其它 方式附连到包含其它电子设备的电路板。
尽管微处理器集成电路通常只包括一个计算单元,即一个处理器,但
在微处理器集成电路中可能包括多个处理器。该通常被称为"核"的多个
处理器包括在同一片半导体材料上并连接到微处理器封装引脚上。具有多
个核增加微处理器的计算能力。例如,具有四个核的微处理器可以提供几 乎与四个单核微处理器相等量的计算能力。
多个微处理器和多核微处理器在传统计算设备中的使用已经增加。传 统计算设备只能够运行操作系统的一个实例。即使是包含多核微处理器、
多个微处理器、或多个多核微处理器的传统计算设备也只能够运行操作系 统的一个实例。然而,利用多核微处理器所提供的增加的计算能力允许用 较少的计算设备来执行先前由多个计算设备执行的计算功能。 例如,服务器是连接到网络的、向连接到该网络的其它实体提供服务
或一组服务的计算设备。包括32个传统计算设备的服务器(即32路(32 way)服务器)可以包括8个微处理器,每一微处理器具有四个核。进一步 考虑这一概念,如果每一单独的核的能力是32个计算设备中的一个的8倍, 则32路服务器的能力可以由该四核微处理器来提供。这种四核服务器的明 显的好处是计算资源冗余与传统服务器所提供的相比更可承受。另外,减 少微处理器的数量降低服务器的成本、对该服务器供电所需要的电量、和 服务器所需要的维护的量。
使用"分区"来更好地利用多核微处理器的计算能力是可能的。分区是可以运行操作系统的独立实例(即局部操作系统)的计算设备内的、可 以在电学上隔离的一组电子设备,例如处理器、存储器等。可分区计算设 备是可被划分为各个分区并且因而能够运行多个局部操作系统的计算设 备。可分区服务器是作为可分区计算设备并且因而能够运行多个局部操作 系统的服务器。可分区服务器的分区还可被称为"逻辑服务器"。g卩,对 网络上的其它实体而言,逻辑服务器表现为独立的服务器,即使它并不是。 还可能将多个服务器(逻辑的或其它)组装成"服务器集群"。服务器集 群是相当于提供服务或一组服务的单元的多个服务器。
使用多核微处理器的优点正驱动"服务器合并"的趋势。服务器合并 是用更少的服务器(例如一个服务器)替换(例如服务器集群中的)多个 服务器的过程。替换多个服务器的服务器通常包含等于或超过该多个服务 器的能力的计算能力。尽管降低成本、电量和维护,但服务器合并导致孤 注一掷的后果。服务器合并可以增加服务器故障的影响。例如,如果曾经 在多个服务器上运行的多个应用程序全都在同一服务器上运行,并且该服 务器发生故障,则结果可能影响所有的应用程序。在最差的情况下,这意 味着应用程序停机。为防止这种影响,许多高端服务器,即具有大量计算 能力的服务器,将其能力的一部分应用于可靠性特征。
一种这样的可靠性特征是"故障切换(failover)"能力。故障切换是 第一实体优选地在该第一实体完全失效之前将该第一实体所包含的信息传 递到第二类似的实体的能力。已经为传统服务器,即基于传统计算设备的 服务器开发了以受控和顺序的方式执行故障切换的技术,以确保在从发生 故障的服务器到替换服务器的转移期间没有数据丢失并且没有正在进行的 进程被中断。
为创建与传统服务器一样稳健和可靠的多核微处理器服务器,在处理 器级操作的类似技术是有用的。
概述
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。本概述并不旨在标识所需要保护的主题的关键特征,也不旨在用于帮助确定所需要保护的主题的范围。
公开了一种用于管理诸如服务器等包括全局管理实体和多个局部操作 系统的可分区计算设备中的备用分区单元的方法和装置。该方法包括确定 是否需要在局部操作系统中添加或替换备用分区单元。如果需要附加备用 分区单元,则启动备用分区单元添加过程。如果由于例如分区单元发生故 障而需要替换备用分区单元,则启动替换备用分区单元过程。替换备用分 区单元过程使该备用分区单元被动地和主动地迁移到发生故障的分区单元 的分区,并且迁移动作被清理。
在一说明性实现中,在备用分区单元添加过程期间,全局管理实体从 全局设备池中选择要添加的备用分区单元;该全局管理实体启动所选备用 分区单元的添加;局部操作系统启动所选备用分区单元到该局部操作系统 中的分区,即到该局部操作系统分区中的添加;全局管理实体将所选备用 分区单元带入该局部操作系统分区;并且在局部操作系统发现该局部操作 系统分区中的该所选备用分区单元时,该局部操作系统将所选备用分区单 元添加到该局部操作系统分区中。
在一说明性实现中,在备用分区单元替换过程期间,在局部操作系统 检测到发生故障的设备时,全局管理实体将该发生故障的设备映射到物理 硬件设备;全局管理实体从全局设备池中选择替换设备;全局管理实体启 动发生故障的设备的替换;局部操作系统启动发生故障的设备到该局部操 作系统中的替换;全局管理实体将备用分区单元带入局部操作系统中的分 区,即局部操作系统分区;并且在局部操作系统发现局部操作系统分区中 的备用分区单元时,该局部操作系统准备将该备用分区单元添加到该局部 操作系统分区中。
在一说明性实现中,在备用分区单元被动迁移到发生故障的分区单元 的分区期间,局部操作系统使用已修改标志来跟踪发生故障的分区的存储 器的改变的部分,来转移发生故障的分区的存储器;并且全局管理实体执 行存储器控制器路由表的原子更新。
在一说明性实现中,在将备用分区单元主动迁移到发生故障的分区单 元的分区期间,全局管理实体使可分区服务器停顿;局部操作系统转移发生故障的分区的存储器的改变的部分;全局管理实体执行存储器控制器路 由表的原子更新;局部操作系统将发生故障的分区单元的处理器的状态转 移到备用分区单元的处理器;局部操作系统改变该局部操作系统的系统中 断状态;并且局部操作系统停止发生故障的分区单元的处理器。
在一说明性实现中,在清理可分区服务器期间,局部操作系统解除该 可分区服务器的停顿;局部操作系统将替换通知给全局管理实体;并且全 局管理实体在逻辑上和物理上都移除发生故障的分区单元的处理器。
全局管理实体和局部操作系统允许添加或替换备用分区单元而不需要 为特定平台重新编译计算机可执行指令。B卩,该方法和装置的实现与操作 系统在多个硬件平台上的可执行代码一起工作,而无需修改和重新编译该 实现的代码或操作系统的代码。
当结合附图参考以下详细描述时,可以更容易领会并更好地理解本发
明的上述方面和许多附加的优点,附图中
图1是能够支持分区单元替换的示例性计算设备的框图2是包含多个分区单元的示例性分区的框图,其中一个分区单元是
不相关联的;
图3是图2中示出的、被重新配置成包括先前不相关联的分区单元的 示例性分区的框图4是示例性分区单元的框图5是示例性的发生故障的存储器块和示例性替换存储器块的框图; 图6是用于动态地替换发生故障的分区单元的示例性方法的功能流程
图7是用于启动分区单元的添加的示例性方法的功能流程图; 图8是用于被动地迁移替换分区单元的示例性方法的功能流程图; 图9是用于主动地迁移替换分区单元的示例性方法的功能流程图; 图10是用于在替换发生故障的分区单元之后进行清理的示例性方法 的功能流程图;图ll是用于使系统停顿的示例性方法的功能流程图;以及 图12是用于解除系统的停顿的示例性方法的功能流程图。
详细描述
服务器是连接到网络的、向例如计算设备等连接到该网络的其它实体 提供服务或一组服务的计算设备。例如,网页服务器提供响应于网页请求 返回网页的服务。其它示例性服务器是为特定用户返回电子邮件消息的电 子邮件服务器、返回来自视频存档的视频剪辑的视频服务器等。示例性服 务器包含微处理器、存储器控制器、和由该存储器控制器控制的存储器块。 存储器控制器和由该存储器控制器控制的存储器块通常被称为单元,即存 储器单元。服务器还可以包含另外的微处理器、存储器控制器、存储器块、 和诸如中断处理器等其它电子设备。因此,只包含微处理器和存储器单元 的服务器应被解释为是示例性的而非限制性的。
如许多类型的计算设备一样,服务器的操作由被称为操作系统的软件 程序所控制。传统计算设备能够只运行操作系统的一个实例。因此,传统 服务器,即基于一个或多个传统计算设备的服务器,执行操作系统的副本 (即操作系统的实例)中所包含的指令。例如,包括32个传统计算设备的 服务器(即32路服务器)可以包括8个微处理器,每一微处理器具有四个 核并运行一个操作系统。减少微处理器的数量降低服务器的成本、对该服 务器供电所需要的电量和服务器所需要的维护的量。
分区使得更好地利用多核微处理器的计算能力成为可能。分区是可以 运行操作系统的独立实例(即局部操作系统)的计算设备内的、可以在电 学上隔离的一组电子设备,例如处理器、存储器等。可分区计算设备是可 被划分为各个分区并且因而能够运行多个局部操作系统的计算设备。可分 区服务器是作为可分区计算设备并且因而能够运行多个局部操作系统的服 务器。可分区服务器的分区还可被称为"逻辑服务器"。因此, 一个可分 区服务器可以包含多个逻辑服务器。多个服务器(逻辑的或其它)可被组 装成相当于提供服务或一组服务的单元的"服务器集群"。
优选地,分区是动态的。即,分区单元被分配给对服务器提供的服务具有很少或没有影响的分区或被从中移除。能够被分区的服务器是可分区 服务器。包括可分区服务器的服务器系统,即系统,是可分区系统。可分 区系统在分区单元的数量和配置以及分配给分区的电子设备上提供灵活 性,并使得支持"服务器合并"更容易并且更具成本效率。
服务器合并是用更少的服务器或甚至可能只用一个服务器来替换多个 服务器的过程。作为服务器合并的结果的示例性服务器通常包含等于或超 过该服务器所替换的多个服务器的能力的计算能力。服务器合并可以增加 服务器故障的影响。例如,想象曾经在多个服务器上运行的多个应用程序 全都在该一个服务器上运行。如果服务器发生故障,则结果可能影响所有 应用程序并甚至使应用程序停机。
传统服务器通过将服务器的计算能力的一部分应用于诸如"故障切换" 能力等可靠性特征来防止这种影响。已经为传统服务器开发了以受控和顺 序的方式执行故障切换的技术,以确保在从发生故障的服务器到替换服务 器的转移期间没有数据丢失并且没有正在进行的进程被中断。由于传统服 务器彼此通过网络连接并且因而未紧密地绑在一起,所以工作被分为小片 并跨各服务器共享,即被分组化。这使得替换发生故障的服务器变得容易, 因为在故障切换期间发生故障的服务器的工作分组可被重新路由。注意, 为实现故障切换,必须有超过一个传统服务器可用。即,发生故障的传统 服务器需要能够接受来自该发生故障的传统服务器的数据的另一类似的传 统服务器。
由于可分区服务器可以包含能够比通过网络绑在一起的传统服务器更 容易地通信的多个逻辑服务器,所以可分区服务器具有比传统服务器组更 容易且更经济地提供可靠性的潜力。使用可分区服务器中的分区来操作的、 用于受控和顺序的故障切换的过程有助于实现可分区服务器所能提供的可 靠性。
通过在需要故障切换时通知每一个高级软件应用程序来使得可分区服 务器更加可靠是不切实际的。使高级软件应用程序能够响应这一通知将需 要修改每一个应用程序的计算机代码以适应故障切换。即使通知应用程序
也将可能不足以不用替换运行中的服务器的机制而提供故障切换。相反,在故障切换中只涉及最底层软件并且允许较上层软件(例如,应用程序) 如同未发生硬件变化那样工作是更加实际且有利的。
有序、低级、可分区服务器故障切换的实现涉及全局管理实体以及一 个或多个局部操作系统。全局管理实体的示例是服务处理器(SP)和主板
管理控制器(BMC) 。 SP是管理诸如存储器控制器和微处理器等附连到电 路板或主板的电子设备的专用微处理器或微控制器。BMC也是嵌在主板上 的专用微控制器。除管理电子设备之外,BMC监视来自内置到计算系统中 的传感器的输入,以报告诸如温度、冷却风扇速度、供电模式、操作系统 状态等参数并对其作出响应。其它电子设备可履行全局管理实体的角色。 因此,使用SP或BMC作为全局管理实体应被解释为是示例性的而非限制 性的。
局部操作系统是在一个分区上运行的操作系统的实例。分区单元被分 配给特定分区以确保该分区单元中的设备不能与其它分区中的设备共享, 从而确保故障将被隔离到单个分区。这种分区单元可指示给定存储器控制 器所服务的物理地址,并由此将该物理存储器地址映射到该存储器控制器 以及包含该存储器控制器的物理分区单元。引导并操作分区可能需要不止 一个分区单元。未使用的或发生故障的分区单元可在电学上进行隔离。在 电学上隔离分区单元类似于从一组传统服务器中移除服务器,并且具有分 区单元可被动态地重新分配给不同分区的优点。
在以上讨论中,除非另外注明,否则分区单元包括单核和单存储器单 元。然而,分区单元可以包括超过一个核、存储器单元、中断处理器和/或 提供计算服务和/或支持的其它设备。因此,包括核和存储器控制器的分区 单元的使用应被解释为示例性的而非限制性的。管理(例如添加或替换) 可分区服务器中的分区单元允许以受控且有序的方式来执行故障切换,以 确保该可分区服务器与传统服务器一样稳健和可靠。
用于实现能够支持分区和分区单元添加和/或替换的可分区服务器的 示例性计算设备100以框图的形式在图1中示出。图1所示的示例性计算 设备100包括服务处理器(SP) 102,其连接到存储SP固件104和路由表 106的存储器。计算设备100还包括连接到存储器块A 110的处理器A 108、连接到存储器块B 114的处理器B 112、连接到存储器块C 118的处理器C 116、和连接到存储器块D 122的处理器D 120。处理器108、 112、 116和 120的每一个都包含指定为0、 1、 2和3的四个核。由SP固件104控制的 SP 102使用路由表106来管理处理器108、 112、 126、 120与存储器块110、 114、 118和122之间的隔离边界。计算设备100还包括I/0 (输入/输出) 电路124、大容量存储电路126、通信电路128、环境电路130和电源132。 计算设备100使用I/O电路124来与I/O设备通信。计算设备100使用大容 量存储电路126来与内部地或外部地连接的大容量存储设备交互。计算设 备100使用通信电路128通常通过网络来与外部设备通信。计算设备100 使用环境电路130来控制环境设备,如冷却风扇、热传感器、湿度传感器 等。电源132为计算设备IOO供电。如果例如SP 102由BMC所替换,则 BMC可以与环境电路130,更确切地说与电源132,通信并对其进行控制。 如图1所示并在以上描述的示例性计算设备IOO等计算设备支持分区 单元的替换。示例性分区单元可以从图1所示的处理器A 108和存储器块 A 110来形成。这样的示例性分区单元类似于包括图2和图3所示的处理器 A 202和连接到处理器A 202的存储器块的分区单元。图2和图3所示的两 个框图包括相同的四个分区单元。分区单元的每一个都包括处理器和存储 器块处理器A 202,连接到存储器块204;处理器B 206,连接到存储器 块208;处理器C210,连接到存储器块212;以及处理器D214,连接到 存储器块216。
分区单元的替换可以通过将图2所示的框图与图3所示的框图进行比 较来理解。尽管图2和图3中的框图示出相同的四个分区单元,但图2所 示的分区200a与图3所示的分区200b相比包括不同的一组分区单元。图2 示出的分区200a包括处理器A 202和存储器块204;处理器B 206和存 储器块208;以及处理器C210和存储器块212。在图2中,包括处理器D 214和存储器块216的分区单元未包括在分区200a中。与图2所示的分区 200a相反,图3所示的分区200b被改变成包括不同的一组分区单元,即不 同的一组处理器和存储器块。图3所示的分区200b包括处理器B 206和存 储器块208;处理器C210和存储器块212;以及处理器D214和存储器块216。在图3中,包括处理器A202和存储器块204的分区单元未包括在分 区200b中,而包括处理器D 214和存储器块216的分区单元被包括在分区 200a中,如图2所示。实际上,包括处理器D 214和存储器块216的分区 单元替换包括处理器A 202和存储器块204的分区单元。SP 102改变路由 表106来进行替换。这种替换在例如处理器A 202和/或存储器块204发生 故障、或需要具有更大存储器的处理器的情况下是合乎需要的。
虽然诸如处理器A 202和存储器块204等单个处理器和单个存储器块 可构成分区单元,但分区单元可具有其它形式。具有一不同形式的示例性 分区单元400的详细视图在图4中示出。在图4中,如同图1一样,示例 性分区单元400包括连接到存储器控制器404的包含四个核0、 1、 2和3 的处理器402,存储器控制器404连接到两个存储器块,即,存储器块A 406 和存储器块B 410。处理器402与控制存储器块A 406和存储器块B 410的 存储器控制器404进行通信。其它分区单元可以包含除处理器、存储器控 制器和存储器块之外的其它设备,或可以只包含单个处理器或单个存储器 控制器。因此,分区单元400应被解释为示例性的而非限制性的。
典型分区单元中的设备(例如处理器)能够向局部操作系统通知设备 的状态。作为替换或除此之外,控制分区单元的局部操作系统可使用预测 分析来评估设备的状态,并确定该设备是否可能发生故障并由此可以是供 替换的候选。虽然诸如系统管理员等人可作为日常维护的一部分来检查设 备状态,但使得硬件自己向局部操作系统通知即将发生的故障是优选的。 在某些情况下,将处理器从一个模型升级到另一个模型或向系统添加处理 器和/或存储器是合乎需要的。虽然系统管理员可执行这些功能,但通过使 用显式编程的指令或由利用分区、分区单元和硬件的能力来报告状态的周 期性定时指令来自动化这样的替换和添加是优选的。
诸如图4所示的分区单元400等分区单元中的任何设备(例如存储器 块)都可能发生故,。如果存储器块发生故障,则用等效存储器块来替换 该存储器块是优选的。示例性的发生故障的存储器块和等效的示例性的替 换存储器块在图5中示出。在图5中,发生故障的存储器块500包括一组 包含例如数字1、 2、 3和4等数据的存储器单元504。存储器单元组504中的存储器单元可以使用局部物理地址502来引用,并且还可以使用全局
物理地址506来引用。局部物理地址502使用地址1000和1001,而全局物 理地址506使用地址5和6。发生故障的存储器块500可由替换存储器块 510来替换。替换存储器块510包括一组能够包含来自发生故障的存储器块 500的数据(即数字l、 2、 3和4)的存储器单元514。如同发生故障的存 储器块一样,替换存储器块510中的存储器单元组514中的存储器单元可 以使用局部物理地址512来引用,并还可以使用全局物理地址516来引用。 局部物理地址512使用地址2000和2001,而全局物理地址516使用地址7 和8。在典型的替换序列中,发生故障的存储器块500的存储器单元组504 中的数据被复制到替换存储器块510的存储器单元组514中。发生故障的 存储器块500的局部物理地址502,即IOOO和IOOI,被重新映射到替换存 储器块510的周部物理地址512,即IOOO和IOOI。该重新映射允许系统的 其余部分在替换操作期间保持不被更改。在替换分区单元时,执行存储器 块的"原子"更新(即替换)是优选的。在存储器块的原子更新期间,如 果正在更新的存储器块被访问,则独占地使用发生故障的存储器块的地址 或者独占地使用替换存储器块的地址。即,从局部物理地址502或从局部 物理地址512来独占地做出对存储器单元504的数据访问。
图5所示的用替换存储器块510对发生故障的存储器块500的替换是 可在一个分区单元被另一分区单元替换时发生的一种类型的替换。分区单 元的替换或添加还可以涉及用另一处理器、 一组核或核来替换一个处理器、 一组核、或核,或添加它们。用于在例如以受控和顺序的方式在可分区服 务器上执行故障切换的过程中执行分区单元的替换和添加的方法涉及通过 全局管理实体来管理局部操作系统的分区中的备用分区单元。这种方法的 示例在图6-12中以功能流程图的形式示出。在图6-12所示的功能流程图中, 除用"(G)"标记的框之外,动作是由局部操作系统(即控制一分区的操作 系统实例)来执行的。用"(G)"标记的框包含由诸如SP或BMC等全局管 理实体所执行的动作。
用于执行分区单元的替换或添加的示例性过程的功能流程图在图6中 示出。图6所示的用于执行分区单元的替换和添加的方法在框600处开始,
其中局部操作系统基于硬件ID使用预测分析来检测发生故障的分区单元。 硬件ID可以是例如处理器的高级可编程中断控制器ID (APICID)。在判 定框602处,进行测试来确定新分区单元是否预期用于替换。如果新分区 单元是预期用于替换的,则控制前进至框604。如果新分区单元不是预期用 于替换的,即是预期用于添加的,则控制前进至子例程606。在框604处, 全局管理实体将发生故障的分区单元映射到物理硬件。控制前进至被用来 启动分区单元的替换的子例程606。启动分区单元的添加或替换的细节在图 7中示出并在以下描述。在判定框608处,再一次确定新分区单元是否是预 期用于替换的。如果新分区单元不是预期用于替换的,即是预期用于添加 的,则控制前进至框612。在框612处,局部操作系统将分区单元添加到该 局部操作系统,并且随后该方法结束。如果在框608处确定新分区是预期 用于替换的,则控制前进至框610。在框610处,局部操作系统准备将新分 区单元添加到该局部操作系统。例如,可以在存储器中设置数据结构来记
录发生故障的处理器的APIC ID、记录发生故障的存储器块的大小和开始 位置、或将发生故障的存储器块重新映射到另一存储器块。在框614处, 局部操作系统通过向全局管理实体发送指示替换分区单元的安装的信号来 在该局部操作系统中启动替换。在框614之后,控制前进至子例程616。子 例程616被用来被动地迁移替换分区单元。被动地迁移替换分区单元的细 节在图8中示出并在以下描述。在执行子例程616之后,控制前进至子例 程618。子例程618被用来主动地迁移替换分区单元。主动地迁移替换分区 单元的细节在图9中示出并在以下描述。在执行子例程618之后,控制前 进至子例程620。子例程620被用来在发生故障的分区单元的替换之后进行 清理。如何执行清理的细节在图10中示出并在以下描述。在执行子例程620 之后,该方法结束。
子例程606,即启动分区单元的添加/替换的细节在图7中示出。该子 例程在框740处开始,其中全局管理实体从全局分区单元池中选择要添加 的分区单元。全局分区单元池是全局管理实体从中选择替换分区单元的一 组分区单元。使用硬件分区,全局管理实体选择对每一局部操作系统有哪些分区单元可用。在替换的情况下,全局管理实体选择至少具有发生故障 的分区单元的能力的替换分区单元。包含存储器的分区单元的示例性能力 是存储器的大小。包含处理器的分区单元的示例性能力是该处理器中的核 的数量。替换分区单元可以是空闲备用的分区单元,或可以是由不同的、 可能不太重要的局部操作系统所使用的分区单元。该不太重要的局部操作 系统可被关闭,且该局部操作系统的资源(即分区单元)随后可被用作备 用。在框744处,局部操作系统在该局部操作系统中启动分区单元。在框
746处,全局管理实体将新分区单元带入局部操作系统分区。具体地,SP 102 将新分区单元重新映射在路由表106中。在框748处,局部操作系统发现 该局部操作系统分区中的新分区单元。在框748后,该子例程结束。
子例程616,即被动地迁移替换分区单元的细节以示例性的形式在图8 所示的流程图中示出。被动和主动迁移的目的是从发生故障的分区单元中 向替换分区单元转移尽可能多的信息,而不关闭或打扰正在进行的高级应 用程序。例如,应用程序可能映射了,即请求和接收了多个存储器块。该 应用程序未在使用(即修改)该多个存储器块中的某些存储器块是可能的。 只要存储器块未被修改,则该存储器块的内容可被转移到替换存储器块而 不打扰该应用程序。另一存储器转移策略是转移尽可能多的状态,并假定 大多数存储器块将不被修改。确定存储器块是否已被修改的一种方式是检 查该存储器块的物理存储器的各个页的每一个的虚拟存储器页表项的修改 标志。如果修改标志未被设置,则该存储器块尚未被修改,并且因此处于 可转移状态。转移存储器内容的一些方法比其它方法更高效。例如,处理 器必须将存储器单元的内容转移到该处理器中的寄存器或单元中,并随后 转移到新的存储器单元中。通常,处理器受限于寄存器的最大数据传输宽 度,例如64位。诸如直接存储器访问(DMA)处理器等专用存储器传输设 备能以更大的"组块(chunk)"并通常更快速地传输存储器块。诸如DMA 处理器等"后台引擎"需要很少或不需要处理器干涉来传输存储器块的内 容。优选地,驱动程序模型使修改标志检查和内容转移能够以可任选的方 式来完成。
用于被动地迁移替换分区单元的子例程的示例性流程图在图8中示出。该子例程在框800处开始,其中使用修改标志来跟踪改变的存储器以
转移存储器。在框802处,局部操作系统通过检査存储器页(即块)的修 改标志来开始跟踪已被修改的这些块。在框804处,目标(即发生故障的) 分区单元存储器的内容被转移到替换分区单元存储器。
注意,尽管在执行图6到图8所示的框中的动作,但甚至在局部操作 系统准备替换发生故障的分区单元时,在该局部操作系统中操作的高级应 用程序仍然能够进行有用的工作。这不是在子例程618中所执行的动作, 即主动地迁移替换分区单元的情况。相反,可以说该过程进入"关键部分", 其中不准许除完成替换所必需的动作之外的任何活动。该过程,即主动迁 移替换分区单元的这一关键部分在图9中的示例性功能流程图中示出。优 选地,最小化该关键部分中所花费的时间来避免到在该局部操作系统上运 行的应用程序的远程连接察觉到该主动迁移。该子例程在子例程900处开 始,其中局部操作系统使该系统"停顿"。使系统停顿的细节在图11中示 出并在以下描述。简言之,在系统被停顿时,停止中断来阻止I/O设备和 其它处理器中断被替换的处理器,并且停止存储器修改。在图9的框902 处继续,局部操作系统转移经修改的存储器,即转移存储器块的内容并设 置已修改标志。在框904处,全局管理实体执行存储器控制器路由的原子 更新。在框906处,局部操作系统保存发生故障的处理器的状态。在框908 处,局部操作系统停止发生故障的处理器。该发生故障的处理器仍然在分 区中,并被关闭来确保尽管仍然在分区中但该发生故障的处理器不会有害。 在框910处,局部操作系统将发生故障的处理器状态应用于替换处理器。 将发生故障的处理器状态应用于替换处理器可以包括向替换处理器转移发 生故障的处理器的可从内部和外部访问的寄存器;原子地将替换处理器的 APIC ID改变为发生故障的处理器的APIC ID;以及改变中断描述符表以使 得将在发生故障的处理器上触发的中断在替换处理器上触发。在框912处, 局部操作系统更新系统中断状态来反映新(即替换)处理器。即,修改全 局中断状态来使外部设备访问中断处理器而非发生故障的处理器。在框912
处,该过程的主动迁移替换分区单元的子例程结束。
图6所示的子例程620,即清理的细节在图IO所示的示例性流程图中示出。清理子例程在子例程1002处开始,在此解除该系统的停顿。解除系
统的停顿的细节在图12中示出并在以下描述。在图10的框1004处,通知 全局管理实体(如图1所示的即SP 102),停顿已经结束。在框1008处, 发生故障的分区单元在物理上被移除。移除发生故障的分区单元可以涉及 在机械上移除各种物理设备,或可以涉及在电学上隔离各种物理设备。如 果例如处理器被插入电学上连接的插槽中,则该处理器可以通过关闭到该 处理器被插入其中的插槽的电源或通过从该插槽移除该处理器而"在物理 上移除"。在框1008后,该子例程结束。
尽管框1008中的活动,即移除发生故障的分区单元的物理设备,可被 看作是可任选的,但它是优选的。发生故障的物理设备仍然被输入到该分 区单元的路由表中。因此,在某些情况下,发生故障的物理设备可能扰乱
系统中的其它组件。
图9所示的子例程900,即使系统停顿的细节在图ll所示的示例性流 程图中示出。术语"停顿"意味着将系统置于不活动的状态。使系统停顿 提供用于原子替换的安全的环境。在图11所示的框1102处,局部操作系 统选择控制处理器,即将控制停顿活动的处理器。控制处理器执行一组实 现系统停顿和活动迁移的指令。存在各种用于选择控制处理器的算法。例 如,具有最低数字的将不被替换的最不忙碌的处理器可被选为控制处理器。 另一控制处理器候选可以是开始该替换过程的处理器。拥有多个控制处理 器也是可能的,但通常不是最优的。因此,单个控制处理器应被解释为示 例性的而非限制性的。
控制处理器执行该停顿子例程中余下的动作。在框1104处,控制处理 器停止所有中断,即使物理设备停止中断需要被替换的处理器。优选地, 使物理设备停顿。控制处理器与控制物理设备的设备驱动程序通信。为防 止物理设备触发中断,控制处理器可以向设备驱动程序发送停止、休眠或 挂起信号。相同的信号可被用来防止存储器访问。优选地,系统能够被停 顿而不必修改和/或重新编译设备驱动程序。在框1106处,控制处理器停止 所有直接存储器访问。设备驱动程序被阻止写入文件和执行DMA。设备驱 动程序可以对中断和DMA请求进行排队。存在边沿触发和电平触发中断。电平触发中断可被排队。如果边沿触发中断未被立即服务,则该中断丢失。
继续参考图11,在框1108处,控制处理器停止所有设备中的活动。 优选地,该设备避免修改正在替换的处理器正在使用的存储器,并避免修 改正被替换的处理器的状态。处理器状态包括该处理器本身中的寄存器和 存储器和该处理器外部的独占地分配来用于存储处理器状态的存储器。概 括而言,停止与将被替换的分区单元的通信。在框1110处,控制处理器通 过向各应用程序发送指示操作暂停正在发生的信号来停止所有应用程序。 在框1112处,控制处理器被用来"会合"系统中的所有其它处理器。在会 合中,控制处理器使其它处理器停止访问正被替换的分区单元,即发生故 障的分区单元。在框1112后,该子例程结束。如果存在需要添加的分区单 元,与替换其它分区单元相比,则该附加分区单元可以在停顿子例程之后 添加。
在会合(还被称为聚集)中,控制处理器通过向其它处理器发送处理 器间中断(IPI)命令,来使其它处理器停止访问正被替换的分区单元。该 IPI向其它处理器指示,其它处理器应在共同屏障上自旋。即,停止进行应 用程序工作并在该屏障上自旋,直到该屏障改变为指示应用程序工作应重 新开始为止。使正在运行应用程序的处理器在屏障上自旋防止应用程序千 扰替换而不必显式地停止应用程序。优选地,以与该应用程序的目的相一 致的方式向应用程序给出对暂停的存在进行响应的机会。即使应用程序不 向暂停的存在作出响应,在会合运行该应用程序的处理器时,也自动地防 止该应用程序干扰替换。
在屏障上自旋的示例性实例中,每一处理器执行相同一组指令来确保 处理器未在执行其它指令。该指令指示处理器读取一地址;如果该地址处 的内容不是0,则再次读取该地址。在控制处理器将该地址的内容设置为O 时,各处理器跨过该指令集,并回到在屏障上自旋之前处理器正在进行的 事务上。尽管各处理器在屏障上自旋,但控制处理器能够转移不能在被动 迁移状态中转移的状态,并能够转移经修改的存储器。
在典型的会合中,可能存在多个阶段,每一个都需要一屏障。例如, 在第一阶段,控制处理器能为其它处理器(即非控制处理器)设置第一屏障。尽管其它处理器在该屏障上自旋,但控制处理器执行代码来设置在其 中保存状态的数据结构。控制处理器随后释放第一屏障并指示其它处理器 保存状态。控制处理器设置用于第二阶段的第二屏障。在其它处理器遵循 指令来保存状态时,其它处理器在第二屏障上自旋。在适当的时间处,例 如在所有其它处理器已保存状态时,控制处理器释放第二屏障并指示其它
处理器离线。
图IO所示的子例程1002,即解除系统停顿的细节在图12所示的示例 性流程图中示出。解除系统停顿基本上是使系统停顿的逆过程。解除停顿
在框1202处开始,其中控制处理器被用来解除会合,即释放系统中的所有 其它处理器。在框1204处,重新开始所有应用程序。更具体地,处理器可 用于调度来自应用程序的活动,因为该过程对应用程序本身是透明的。在 框1206处,重新开始所有设备中的活动。在框1208处,重新开始所有直 接存储器访问。在框1210处,重新开始所有中断。在框1210后,该子例 程结束。
图6-12所示的和以上描述的过程允许局部操作系统能够替换分区单元 而不必为特定设备重新编译。该过程可被实现以在大多数计算机制造商的 设备上运行,如果该设备支持分区和分区单元的话。可以编写具有足够软 件"挂钩(hook)"的固件来允许将特定硬件的细节提炼出来,从而避免 为每一特定设备编写固件的努力和花费。可能需要固件但局部操作系统中 的过程的实现不需要被重新编译、重新封装或重新分发。
尽管示出和描述了各说明性实施例,但是可以认识到,可在其中作出 各种改变而不背离本发明的精神和范围。
权利要求
1.一种通过全局管理实体来管理可分区计算设备中的备用分区单元的方法,所述方法包括确定是否需要在局部操作系统中添加或替换备用分区单元;以及如果需要添加备用分区,则启动备用分区单元的添加,否则(a)启动用备用分区单元对发生故障的分区单元的替换;(b)被动地将所述备用分区单元迁移到所述发生故障的分区单元的分区中;(c)主动地将所述备用分区单元迁移到所述发生故障的分区单元的分区中;以及(d)清理所述可分区计算设备。
2. 如权利要求1所述的方法,其特征在于,启动备用分区单元的添加 包括(a) 所述全局管理实体从全局池中选择要添加的备用分区单元;(b) 所述全局管理实体在所述全局管理实体中启动所选备用分区单元;(c) 所述局部操作系统在所述局部操作系统中的分区("局部操作系 统分区")中启动所选备用分区单元;(d) 所述全局管理实体将所选备用分区单元带入所述局部操作系统 分区中;以及(e)在所述局部操作系统发现所述局部操作系统分区中的所选备用 分区单元时,所述局部操作系统将所选备用分区单元添加到所述局部操作 系统分区中。
3. 如权利要求1所述的方法,其特征在于,启动用备用分区单元对发 生故障的分区单元的替换包括(a) 在检测到发生故障的分区单元时,所述全局管理实体将所述发生 故障的分区单元映射到物理硬件设备;(b) 所述全局管理实体从全局池中选择备用替换分区单元;(c) 所述全局管理实体对所述全局管理实体启动所述备用分区单元;(d) 所述局部操作系统在所述局部操作系统中启动所述备用分区单元;(e)所述全局管理实体将所述备用分区单元带入所述局部操作系统 中的分区("所述局部操作系统分区")中;以及(f)在所述局部操作系统发现所述局部操作系统分区中的所述备用分区 单元时,所述局部操作系统准备将所述备用分区单元添加到所述局部操作 系统分区中。
4. 如权利要求3所述的方法,其特征在于,所述对分区单元发生故障 的检测是基于所述分区单元的硬件ID通过预测分析来确定的。
5. 如权利要求1所述的方法,其特征在于,被动地将所述备用分区单 元迁移到所述发生故障的分区单元的分区中包括(a) 所述局部操作系统使用已修改标志跟踪所述发生故障的分区的 存储器的改变的部分,来转移所述发生故障的分区的存储器;以及(b) 所述全局管理实体执行存储器控制路由表的原子更新。
6. 如权利要求1所述的方法,其特征在于,主动地将所述备用分区单 元迁移到所述发生故障的分区单元的分区中包括(a) 所述全局管理实体使所述可分区计算设备停顿;(b) 所述局部操作系统转移所述发生故障的分区的存储器的改变的 部分;(c) 所述全局管理实体执行存储器控制器路由表的原子更新;(d) 所述局部操作系统将所述发生故障的分区单元的处理器的状态 转移到所述备用分区单元的处理器;(e)所述局部操作系统改变所述局部操作系统的系统中断状态;以及 (f)所述局部操作系统停止所述发生故障的分区单元的处理器。
7. 如权利要求6所述的方法,其特征在于,清理所述可分区服务器包括(a) 所述全局管理实体解除所述可分区服务器的停顿;(b) 所述局部操作系统将所述替换通知给所述全局管理实体;以及(c) 在逻辑上移除所述发生故障的分区单元的处理器。
8. 如权利要求7所述的方法,其特征在于,还包括在物理上移除所述发生故障的分区单元的处理器。
9. 如权利要求8所述的方法,其特征在于,在物理上移除所述发生故 障的分区单元的处理器是通过所述局部操作系统在电学上隔离所述发生故 障的分区单元的处理器来完成的。
10. 如权利要求1所述的方法,其特征在于,所述发生故障的分区单 元被替换而无需重新编译计算机可执行指令。
11. 一种包含用于管理可分区计算设备中的备用分区单元的计算机 可执行指令的计算机可读介质,所述可分区计算设备包括全局管理实体和 多个局部操作系统,所述计算机可执行指令在被执行时使得所述全局管理 实体和所述多个局部操作系统的一些局部操作系统(a) 确定是否需要在局部操作系统中添加或替换备用分区单元;(b) 如果需要添加备用分区单元,则启动备用分区单元的添加;否则(i) 启动用备用分区单元对发生故障的分区单元的替换;(ii) 被动地将所述备用分区单元迁移到所述发生故障的分区单元的 分区中;(iii) 主动地将所述备用分区单元迁移到所述发生故障的分区单元的 分区中;以及(iv) 清理所述可分区计算设备。
12. 如权利要求11所述的计算机可执行指令,其特征在于,启动备 用分区单元的添加包括(a) 从池中选择要添加的备用分区单元;(b) 在所述全局管理实体中启动所选备用分区单元;(C) 在局部操作系统中的分区("所述局部操作系统分区")中启动 所选备用分区单元的添加;(d) 将所选备用分区单元带入所述局部操作系统分区中;以及 (e)将所选备用分区单元添加到所述局部操作系统分区中。
13. 如权利要求11所述的计算机可读介质,其特征在于,启动用备 用分区单元对发生故障的分区单元的替换包括(a) 检测发生故障的分区单元;(b) 从池中选择替换分区单元;(c) 在所述全局管理实体中启动对所述发生故障的设备的替换;(d) 在所述局部操作系统中启动对所述发生故障的设备的替换;(e)将所述备用分区单元带入所述局部操作系统中的分区("所述局 部操作系统分区")中;以及(f)准备将所述备用分区单元添加到所述局部操作系统分区中。
14. 如权利要求13所述的计算机可读介质,其特征在于,检测发生 故障的分区单元是使用预测分析来确定的。
15. 如权利要求11所述的计算机可读介质,其特征在于,被动地将 所述备用分区单元迁移到所述发生故障的分区单元的分区中包括(a) 使用已修改标志跟踪所述发生故障的分区的存储器的改变的部 分,来转移所述发生故障的分区的存储器;以及(b) 执行存储器控制器路由表的原子更新。
16. 如权利要求11所述的计算机可读介质,其特征在于,主动地将 所述备用分区单元迁移到所述发生故障的分区单元的分区中包括(a) 使所述可分区服务器停顿;(b) 转移所述发生故障的部分的存储器的改变的部分; 在存储器控制器路由表上执行原子更新;(d) 将所述发生故障的分区单元的处理器的状态转移到所述备用分 区单元的处理器;(e)改变所述局部操作系统的系统中断状态;以及 (f)停止所述发生故障的分区单元的处理器。
17. 如权利要求16所述的计算机可读介质,其特征在于,清理所述 可分区服务器包括(a) 解除所述可分区服务器的停顿;(b) 将所述替换通知给所述全局管理实体;(c) 在逻辑上移除所述发生故障的分区单元的处理器;以及(d) 在物理上移除所述发生故障的分区单元的处理器。
18. 如权利要求17所述的计算机可读介质,其特征在于,在物理上移除所述发生故障的分区单元的处理器是通过在电学上隔离所述发生故障 的分区单元的处理器来完成的。
19. 如权利要求17所述的计算机可读介质,其特征在于,在物理上 移除所述发生故障的分区单元的处理器是通过从所述发生故障的分区单元 的处理器的插槽上移除所述发生故障的分区单元的处理器来完成的。
20. 如权利要求11所述的计算机可读介质,其特征在于,所述发生 故障的分区单元被替换而无需重新编译计算机可执行指令。
全文摘要
公开了一种用于管理可分区计算设备中的备用分区单元的方法和装置。该方法包括检测是否需要在局部操作系统中添加或替换备用分区单元,并且如果需要添加备用分区单元则启动备用分区单元的添加。如果需要备用分区单元来替换,则启动用备用分区单元对发生故障的分区单元的替换;发生故障的分区单元的存储器的一部分被被动地迁移到备用分区单元的分区的存储器中;发生故障的分区单元的存储器的一部分还被主动地迁移到备用分区单元的分区的存储器中;并且可分区计算设备被清理。分区单元被替换而不需要重新编译计算机可执行指令。
文档编号G06F9/06GK101542432SQ200780042949
公开日2009年9月23日 申请日期2007年11月20日 优先权日2006年11月21日
发明者A·J·瑞茨, E·D·沃克尔, M·G·特里克尔, S·A·韦斯特, S·S·约德 申请人:微软公司