控制由于分布式计算系统的计算节点中的故障而导致的错误传播的制作方法
【专利说明】
【背景技术】
[0001]计算机系统传统上既包含易失性存储器设备,也包含非易失性存储器设备。以这种方式,由于易失性存储器设备的相对更快的存取时间,诸如动态随机存取存储器(DRAM)设备的易失性存储器设备通常被用于形成计算机系统的工作存储器。为了在系统断电时保存计算机系统数据,数据可以被存储在与较慢存取时间关联的非易失性大容量存储设备中,例如基于大容量存储设备的磁介质或光介质中。
[0002]相对高密度的固态持久性存储器技术的发展正在缩小两种技术之间的差距,且正因为如此,充当传统的“记忆”和“存储”二者功能的持久性、可按字节寻址的“存储器”使用的量正在不断增加。由于越来越多的使用这种存储器,分布式计算系统有望变得越来越普遍。在分布式计算系统下,典型地,计算节点为了共享或共用节点的记忆和存储资源而以集群结构(例如网络结构)联接在一起。
【附图说明】
[0003]图1是根据示例实施方式的分布式计算系统的示意图。
[0004]图2是根据示例实施方式描绘用于控制由于计算节点故障而导致的分布式计算系统中的错误传播的技术的流程图。
[0005]图3和图4是根据示例实施方式描绘用于控制由于计算节点故障而导致的分布式计算系统中的错误传播的技术的流程图。
[0006]图5是根据示例实施方式的分布式计算系统的更详细的示意图。
[0007]图6是根据示例实施方式描绘用于使用内部节点通信来控制由于计算节点故障而导致的分布式计算系统中的错误传播的技术的流程图。
[0008]图7是根据示例实现方式描绘用于控制由于计算节点故障而导致的分布式计算系统中的错误传播、同时允许对该节点进行故障分析的技术的流程图。
【具体实施方式】
[0009]参见图1,示例性分布式计算系统100包括N个计算节点110 (作为示例在图1中描绘了计算节点110-1、110-2、...110-Ν)。通常,计算节点110包括可以形成该节点110的本地资源的资源,以及在多个计算节点110间共享或共用的资源。以这种方式,分布式计算系统100可以包括在计算节点110的不同组间共享的内存池和输入/输出(I/O)资源。
[0010]作为一个更具体的例子,计算节点110-1可以包括可以由计算节点110-1使用、也可以由其它计算节点110访问的I/O适配器112。以这种方式,I/O适配器112可以是可被用于访问一个或多个大容量存储设备140(可以是计算节点110-1的一部分或与计算机节点110-1分离)的基于小型计算机系统接口(SCSI)的适配器、光纤通道适配器或其他I/O适配器。计算节点110-1可以进一步包括存储器设备(例如,动态随机存取存储器(DRAM)设备和/或固态存储器设备),该存储器设备可以形成计算节点110-1的本地存储器114,以及由其它计算节点110共享的共用存储器120。分布式计算系统100的其它计算节点110可以具有相似的本地和/或共用的资源。
[0011]为了访问共用资源,计算节点110可以在本文中被称为“集群互连结构130”的系统结构上进行通信。作为示例,如本领域技术人员可以理解地,集群互连结构130可以包括基于互联网的连接结构、基于局域网(LAN)连接的结构、基于广域网(WAN)连接的结构等等。
[0012]在其正常操作过程中,诸如计算节点110-1的给定计算节点110可能会经历硬件或软件错误,这导致计算节点110-1的域中发生故障。故障可能由于硬件故障(I/O适配器112故障、网络接口故障、存储器设备故障等等)以及由于系统固件中的编程错误、操作系统错误等等的软件故障而发生。不管故障的来源,当发生这样的故障时,计算节点110-1可能具有可能被损坏了的或因计算节点110-1的进一步操作而被损坏了的资源(例如,存储器内容)。
[0013]一种处理发生在给定计算节点中的故障的方法是,将该计算节点完全隔离,使得错误不传播到节点的外部并且不影响其它计算实体。例如,一种方法可以是关掉经历故障的计算节点,使得该节点为了纠正故障的原因和防止其它计算实体被损坏而脱机。尽管传统上,特定计算实体的故障域驻留在实体自身内,使得由于此故障导致的错误不传播到实体的外部,但是与传统不同,分布式计算系统100具有在其计算节点I1间共享的共用I/O和存储资源。
[0014]因此,例如当计算节点110-1经历故障时,一个或多个其它计算节点110可能由于位于节点110-1上的共用的资源而被直接影响。此外,计算节点110-1从分布式计算系统100的其它计算节点110访问诸如I/O适配器112、共用存储器120之类的计算节点110-1外部的共用的资源。因此,有效故障域延伸到发生故障的计算节点110-1的外部并进入分布式计算系统100的其它区域。
[0015]本文公开的技术和系统的目的在于,控制由于发生在分布式计算系统100的计算节点110中的故障而导致的错误的传播。继续用计算节点110-1作为示例,假定发生与计算节点110-1有关的故障,那么根据示例实施方式,计算节点110-1产生警报指示符124。随后,为了限制计算节点110-1中的错误(由于计算节点110-1发生的故障而出现),此警报指示符124被用于触发分布式计算系统100的一个或多个部件的动作的目的。
[0016]更具体地,根据示例实施方式,警报指示符124被分布式计算系统100的其余部分150接收,使得其余部分150可以采取合适的动作来抑制计算节点110-1中的错误。需要注意的是,如本领域技术人员可以理解地,由计算节点110-1使用的、用于检测故障的具体技术可以是若干故障检测技术中的一个技术。
[0017]结合图1参见图2,作为更具体的示例,根据一些实施方式,可以为了抑制其中共享资源的分布式计算系统中的错误传播而使用技术200。根据技术200,警报指示符被接收(框202),这表示分布式计算系统的计算节点检测到了故障。响应于此警报指示符,根据框204,与该计算节点的通信受到调节,以控制由于故障而导致的错误传播。
[0018]作为更具体的示例,结合图1参见图3,根据一些实施方式,为了控制由于发生在给定计算节点中的故障而导致的错误的传播,技术300可以被分布式计算系统100的集群互连结构130使用。根据技术300,警报指示符被接收(框302),这表示计算节点(本文被称为“受影响的计算节点”)检测到了故障。响应于警报指示符,集群互连结构130被用于(框304)选择性地限制其它计算节点可能与受影响的计算节点进行的操作。
[0019]以这种方式,根据示例实现方式,当特定计算节点110遭受故障时,从受影响的计算节点110向外的I/O通信被暂停,以防止进入节点110的I/O通信或节点110正在进行的I/o通信读取受影响的节点110的损坏的存储内容和将该损坏的存储内容传送给不知道该损坏的、节点110外部的另一设备。因此,根据一些实施方式,集群互连结构130将结构130上的交易制约或限制为针对停止或暂停与受影响的计算节点110交易的当前I/O的交易O
[0020]根据示例实施方式,经历故障的、受影响的计算节点110可以向被提供给受影响的节点110的所有远程I/O适配器传送这种命令以停止或暂停I/O交易,并且因此,集群互连结构130允许这些命令被传送。在进一步的示例实施方式中,在收到警报指示符124时,集群互连结构130可代表经历故障的、受影响的计算节点110而向被提供给受影响的节点110的所有远程I/O适配器立即传送这种命令以停止或暂停I/O交易。因此,考虑了许多变体,这些变体在所附权利要求的范围之内。
[0021]如本文进一步公开的,除了允许受影响的计算节点110传送命令以停止或暂停I/O交易之外,根据下面描述的进一步的实施方式,为了允许利用缓存的数据执行故障分析,集群互连结构进一步许可经历故障的计算节点110将缓存数据传送给一个或多个其它计算节点110。
[0022]在计算节点已经指示它已经遭受了故障后,结构130可以随之否认该计算节点可能试图进行的一些类型的访问。例如,计算节点可能不会被允许在其缓存中将远程存储器的新的部分放入缓存(encache),或仅可以将执行数据收集序列所必需的位置放入缓存。计算节点可能不会被允许将额外的存储器和/或I/O资源提供给自己。此外,计算节点可能不会被允许将除了停止命令之外的命令发送给远程I/O适配器。
[0023]结合图1参见图4,根据进一步的实施方式,为了控制来自于经历故障的、受影响的计算节点110的错误传播,集群互连结构130可以被用来采取另外和/或附加的步骤。以这种方式,根据技术400,从经历故障的计算节点110接收(框402)警报指示符,该警报指示符指示该节点经历了故障。响应于此警报指示符,技术400包括利用(框404)诸如集群互连结构130的系统结构来将标签添加到由受影响的计算节点发起的每个包中,以表示来自该节点的数据的“可疑状态”。换句话说,受故障影响的节点以外的给定计算节点110接收包,此包包含指示可能的“可疑状态”的指示符(或“标签”),然后,由于源节点已经被识别为经历了故障的一个节点,因此接收计算节点谨慎地处理该包。根据示例实施方式,标签被添加到包的头部中以由给定的字段(例如,给定的比特字段)指示。
[0024]图5根据进一步的实施方式描绘了分布式计算系统499的更详细的表示。对于此实施方式,分布式计算系统499包括形成N个相应计算节点110-1到110-N的物理机500(图5中描绘了 N个物理机500-1、500-2、500-3…500-N作为示例)。物理机500是由真实硬件和软件组成的真实机器。
[0025]在这方面,如物理机5