CN113342263A - 全快闪存储器阵列伺服器的节点信息交换管理方法与设备 - Google Patents

全快闪存储器阵列伺服器的节点信息交换管理方法与设备 Download PDF

Info

Publication number
CN113342263A
CN113342263A CN202110230844.5A CN202110230844A CN113342263A CN 113342263 A CN113342263 A CN 113342263A CN 202110230844 A CN202110230844 A CN 202110230844A CN 113342263 A CN113342263 A CN 113342263A
Authority
CN
China
Prior art keywords
node
path
remote
information
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110230844.5A
Other languages
English (en)
Other versions
CN113342263B (zh
Inventor
苏政嘉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN113342263A publication Critical patent/CN113342263A/zh
Application granted granted Critical
Publication of CN113342263B publication Critical patent/CN113342263B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Hardware Redundancy (AREA)
  • Computer Hardware Design (AREA)

Abstract

本发明提供一种用以进行全快闪存储器阵列(简称AFA)伺服器的节点信息交换管理的方法及AFA伺服器,该方法包含:利用运行在该AFA伺服器的多个节点中的任一节点上的多个程序模块中的一硬件管理器模块来控制该任一节点的一硬件层中的多个硬件组件,以建立该任一节点和该多个节点中的一远端节点之间的一主机板管理控制器路径;利用至少二通信路径来交换该任一节点和该远端节点的各自的节点信息,以依据节点信息控制该AFA伺服器的高可用性架构,来持续地提供服务给该AFA伺服器的用户;以及因应任一通信路径的故障,利用剩余的通信路径来交换节点信息。

Description

全快闪存储器阵列伺服器的节点信息交换管理方法与设备
技术领域
本发明有关于存储器控制,尤指一种用以进行全快闪存储器阵列(All FlashArray,简称AFA)伺服器的节点信息交换(node information exchange)管理的方法以及相关设备(apparatus)诸如AFA伺服器及其控制电路等。
背景技术
数据储存伺服器可以被设置为储存一个或多个用户的用户数据,并且在现有技术中已经提出了针对数据储存伺服器的各种控制方法,以便给用户带来良好的用户体验。由于快闪存储器(Flash memory)已经被广泛应用于各种数据储存装置诸如固态硬碟(solidstate drive,SSD)等,现有技术中提出将数据储存伺服器用快闪存储器作为其储存介质的快闪存储器类型数据储存伺服器来实现,例如其中安装有多个SSD的AFA伺服器。但是,可能会出现某些问题。例如,存取该多个SSD中的任一SSD的快闪存储器的管理会很复杂。为了确保这个SSD中的快闪存储器的存取控制符合相关规范,这个SSD中的快闪存储器的控制器通常配备有某些管理机制以妥善地管理其内部操作。虽然SSD制造商可能试着使SSD看起来像是替代硬式磁碟机(HDD)的不错的解决方案,但是SSD的某些特性与HDD完全不同。如此一来,上述控制方法对于安装有多个SSD的AFA伺服器可能变得不适合或无效,进而导致AFA伺服器的整体效能下降。因此,需要以在没有副作用或较不会带来副作用的情况下提供一种新颖的方法和相关的架构来解决这些问题。
发明内容
本发明之一目的在于提供一种用以进行一全快闪存储器阵列(All Flash Array,简称AFA)伺服器的节点信息交换管理的方法与相关设备(例如AFA伺服器及其控制电路等),以解决上述的问题。
本发明之另一目的在于提供一种用以进行AFA伺服器的节点信息交换管理的方法与相关设备(例如AFA伺服器及其控制电路等),以保护AFA伺服器中的数据并且确保其正确的高可用性(high availability,HA)控制。
本发明的至少一实施例揭示了一种用以进行一全快闪存储器阵列(All FlashArray,AFA)伺服器的节点信息交换管理的方法,该方法包含:利用运行在该全快闪存储器阵列伺服器的多个节点中的任一节点上的多个程序模块中的一硬件管理器模块来控制该任一节点的一硬件层中的多个硬件组件,以建立该任一节点和该多个节点中的一远端节点之间的一主机板管理控制器(Board Management Controller,BMC)路径,其中该任一节点的该硬件层中的该多个硬件组件包含一主机板管理控制器,以及该主机板管理控制器路径是建立于该任一节点的该主机板管理控制器以及该远端节点的一对应的主机板管理控制器之间;利用至少二通信路径来交换该任一节点和该远端节点的各自的节点信息,以依据该任一节点和该远端节点的所述各自的节点信息控制该全快闪存储器阵列伺服器的高可用性(high availability,HA)架构,来持续地提供服务给该全快闪存储器阵列伺服器的用户,其中该至少二通信路径包含一非透明网桥(Non-Transparent Bridge,NTB)路径以及该主机板管理控制器路径,以及该非透明网桥路径是建立于该任一节点的一非透明网桥通信电路以及该远端节点的一对应的非透明网桥通信电路之间;以及因应该至少二通信路径中的任一通信路径的故障,利用该至少二通信路径中的至少一剩余的通信路径来交换该任一节点和该远端节点的所述各自的节点信息,以依据该任一节点和该远端节点的所述各自的节点信息控制该全快闪存储器阵列伺服器的该高可用性架构,来持续地提供该服务给该用户。
本发明的至少一实施例揭示了一种全快闪存储器阵列(All Flash Array,AFA)伺服器,其包含多个节点以及多个储存装置。该多个节点的任一节点包含至少一处理器以及多个硬件组件,其中该至少一处理器用以在多个程序模块的控制下控制该任一节点的操作,而该多个硬件组件在该任一节点的一硬件层中,以及该任一节点的该硬件层中的该多个硬件组件包含一主机板管理控制器以及一非透明网桥通信电路。该多个储存装置包含多组储存装置,以供为该全快闪存储器阵列伺服器储存数据。举例来说:该任一节点利用运行在该任一节点上的该多个程序模块中的一硬件管理器模块来控制该任一节点的该硬件层中的该多个硬件组件,以建立该任一节点和该多个节点中的一远端节点之间的一主机板管理控制器路径,其中该主机板管理控制器路径是建立于该任一节点的该主机板管理控制器以及该远端节点的一对应的主机板管理控制器之间;该任一节点和该远端节点利用至少二通信路径来交换该任一节点和该远端节点的各自的节点信息,以依据该任一节点和该远端节点之所述各自的节点信息控制该全快闪存储器阵列伺服器的高可用性架构,来持续地提供服务给该全快闪存储器阵列伺服器的用户,其中该至少二通信路径包含一非透明网桥路径以及该主机板管理控制器路径,以及该非透明网桥路径是建立于该任一节点的该非透明网桥通信电路以及该远端节点的一对应的非透明网桥通信电路之间;以及因应该至少二通信路径中的任一通信路径的故障,该任一节点和该远端节点利用该至少二通信路径中的至少一剩余的通信路径来交换该任一节点和该远端节点的所述各自的节点信息,以依据该任一节点和该远端节点的所述各自的节点信息控制该全快闪存储器阵列伺服器的该高可用性架构,来持续地提供该服务给该用户。
本发明的方法和相关设备(例如AFA伺服器及其控制电路等)可以提高整体效能,并依据该方法的多种控制方案保护数据,尤其是要保证该AFA伺服器的正确的高可用性控制。另外,本发明的方法和相关设备可以在没有副作用或较不会带来副作用的情况下解决现有技术所产生的问题。
附图说明
图1是依据本发明一实施例的一全快闪存储器阵列(All Flash Array,简称AFA)伺服器的示意图。
图2是依据本发明一实施例中如图1所示的该AFA伺服器的某些实施细节的示意图。
图3是依据本发明一实施例所绘示的如图1所示的该AFA伺服器的一双节点架构的示意图。
图4是依据本发明一实施例所绘示的如图1所示的多个节点的任一节点中的某些程序模块的示意图。
图5是依据本发明一实施例所绘示的一种用以进行一AFA伺服器诸如图1所示的AFA伺服器的节点信息交换(node information exchange)管理的方法的一写入控制方案的示意图。
图6是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一碟交换(disk switching)控制方案的示意图。
图7是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一角色信息交换(role information exchange)控制方案的示意图。
图8是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一角色及状态转变控制方案的示意图。
图9是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一节点信息交换控制方案的示意图。
图10是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一基于锁定的(lock-based)节点信息交换控制方案的示意图。
图11是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的流程图。
【符号说明】
10A,10B:机架顶(TOR)交换机
12A,12B:固态硬碟(SSD)群组
100:全快闪存储器阵列(AFA)伺服器
100A,100B:节点
100S:固态硬碟(SSD)
100R:背板电路
110A,110B:处理器
112:程序模块
112A,112B:程序模块
120A,120B:动态随机存取存储器(DRAM)
122A,122B:复制到快闪存储器(C2F)固态硬碟(SSD)
130A,130B:网络接口(IF)模块
132A,132B,134A,134B:网络接口(IF)电路
140A,140B:非透明网桥(NTB)通信电路
150A,150B:主机板管理控制器(BMC)
152A,152B:暂存器电路
160A,160B:储存接口(IF)模块
162A,162B,164A,164B:储存接口(IF)电路
170A,170B:备用电源单元
S01~S11,S40,S41A~S45A,S41B~S45B,S46,S50~S53:步骤
具体实施方式
图1是依据本发明一实施例的一全快闪存储器阵列(All Flash Array,简称AFA)伺服器100的示意图。AFA伺服器100可以包含多个节点,诸如二节点,分别为节点100A和节点100B,其中该多个节点中的任一个(例如节点100A和节点100B的其中一个)可以具有与该多个节点中的另一个(例如节点100A和节点100B中的另一个)相同或相似的架构。例如,节点100A可包含可以被统称为处理器110A的至少一处理器(例如,一个或多个处理器诸如一个或多个中央处理单元(Central Processing Units.CPU)),并包含一动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)120A、一复制到快闪存储器(Copy-to-Flash,简称C2F)固态硬碟(Solid State Drive,简称SSD)122A、包含有一个或多个网络接口(interface,IF)电路诸如网络接口电路132A和134A的一网络接口(IF)模块130A、一非透明网桥(Non-Transparent Bridge,简称NTB)模块(或NTB)诸如一NTB通信电路140A、一主机板管理控制器(Board Management Controller,简称BMC)150A、一暂存器(register)电路152A其耦接至BMC 150A、一储存接口(IF)模块160A其包含一个或多个储存接口电路诸如储存接口电路162A和164A以及一备用电源诸如一备用电源单元170A(例如,电池),其中这些组件的至少一部分(例如,一部分或全部)可以藉由节点100A的总线彼此耦接,但本发明不限于此。依据某些实施例,节点100A的架构可以作不同变化。
相似地,节点100B可包含可以统称为处理器110B的至少一处理器(例如,一个或多个处理器诸如一个或多个CPU),并包含一DRAM 120B、一C2F SSD 122B、包含有一个或多个网络接口(IF)电路诸如网络接口电路132B和134B的一网络接口(IF)模块130B、一NTB模块(或NTB)诸如一NTB通信电路140B、一BMC 150B、一暂存器电路152B其耦接至BMC 150B、一储存接口(IF)模块160B其包含一个或多个储存接口电路诸如储存接口电路162B和164B以及一备用电源诸如一备用电源单元170B(例如,电池),其中这些组件的至少一部分(例如,一部分或全部)可以藉由节点100B的总线彼此耦接,但本发明不限于此。依据某些实施例,节点100B的架构可以作不同变化。
如图1所示,AFA伺服器100可以还包含耦接到节点100A和100B的多个SSD,诸如一SSD群组12A和一SSD群组12B,SSD群组12A和12B可以耦接到节点100A和100B,且可以预设分别连接/连线(link)到节点100A和100B,其中节点100A和100B与SSD群组12B和12A之间的虚线可指出多个可选的(optional)连线。举例来说,节点100A可以利用储存接口模块160A以启动储存接口电路164A和SSD群组12A之间的连线,以存取SSD群组12A中的数据,且节点100B可以利用储存接口模块160B启动储存接口电路164B和SSD群组12B之间的连线,以进一步存取SSD群组12B中的数据。当需要时,节点100A和100B与SSD群组12A和12B之间的连线关系可以改变。例如节点100A可以利用储存接口模块160A来启动储存接口电路162A和SSD群组12B之间的连线,以存取SSD群组12B中的数据,且节点100B可以利用储存接口模块160B来启动储存接口电路162B和SSD群组12A之间的连线,以存取SSD群组12A中的数据。
运行着程序模块112A的处理器110A可用以控制节点100A的操作。DRAM 120A可用以缓冲数据(例如待写入SSD群组12A的数据),并且C2F SSD 122A可用以将DRAM 120A中的缓冲后数据(简称“缓冲数据”)复制到C2F SSD 122A中的快闪存储器中,以在需要时避免缓冲数据的数据遗失(data loss)。举例来说,C2F SSD 122A可以藉由安装在节点100A内的主电路板(例如主机板或母板)上的一扩充卡诸如一M.2模块(例如具有符合M.2规范的连接器的电路板)来实现,其中C2F SSD 122A可以包含一储存控制器、一个或多个快闪存储器晶片等,但本发明不限于此。另外,包含有网络接口电路132A和134A的网络接口模块130A可用以将节点100A(例如该主电路板上的处理器110A、DRAM 120A等)藉由至少一网络交换机(switch)诸如机架顶(top-of-rack,可简称TOR)交换机10A和10B耦接到至少一网络(例如区域网络(Local Area Network,LAN)、广域网络(Wide Area Network,WAN)、网际网络(Internet)等)。另外,包含储存接口电路162A和164A的储存接口模块160A可用以将节点100A(例如该主电路板上的处理器110A、DRAM 120A等)耦接到多个快闪储存装置(例如节点100A和100B共享的SSD群组12A和12B),用以存取(例如读取或写入)该多个快闪储存装置中的数据。如此一来,AFA伺服器100可用以藉由节点100A提供用户储存服务。
相似地,运行着程序模块112B的处理器110B可用以控制节点100B的操作。DRAM120B可用以缓冲数据(例如待写入SSD群组12B的数据),并且C2F SSD 122B可用以将DRAM120B中的缓冲后数据(简称“缓冲数据”)复制到C2F SSD 122B中的快闪存储器中,以在需要时避免缓冲数据的数据遗失。举例来说,C2F SSD 122B可以藉由安装在节点100B内的主电路板(例如主机板或母板)上的一扩充卡诸如一M.2模块(例如具有符合M.2规范的连接器的电路板)来实现,其中C2F SSD 122B可以包含一储存控制器、一个或多个快闪存储器晶片等,但本发明不限于此。另外,包含有网络电路132B和134B的网络接口模块130B可用以将节点100B(例如该主电路板上的处理器110B、DRAM 120B等)藉由至少一网络交换机诸如TOR交换机10A和10B耦接到至少一网络(例如LAN、WAN、网际网络等)。另外,包含储存接口电路162B和164B的储存接口模块160B可用以将节点100B(例如该主电路板上的处理器110B、DRAM 120B等)耦接到多个快闪储存装置(例如节点100A和100B共享的SSD群组12A和12B),用以存取(例如读取或写入)该多个快闪储存装置中的数据。如此一来,AFA伺服器100可用以藉由节点100B提供用户储存服务。
关于节点100A及其对等(peer)节点(例如节点100B)之间的通信,该NTB模块(例如NTB通信电路140A)可用以藉由在节点100A和100B之间的一NTB路径(标示为“NTB”以求简明)与对应的NTB模块(例如NTB通信电路140B)通信,使节点100A和100B的数据和储存状态同步,并进一步使它们相同。相似地,关于节点100B及其对等节点(例如节点100A)之间的通信,该NTB模块(例如NTB通信电路140B)可用以藉由在节点100A和100B之间的该NTB路径(标示为“NTB”以求简明)与对应的NTB模块(例如NTB通信电路140A)通信,使节点100A和100B的数据和储存状态同步,并进一步使它们相同。尤其,诸如NTB通信电路140A和140B的NTB模块可以提供节点100A和100B之间一传输桥的功能以及分离节点100A和100B的各自的地址域以使节点100A和100B分别有彼此独立的地址域,以在没有任何地址冲突的情况下提供/加强节点100A和100B之间的通信。例如,节点100A和100B的各个总线可以符合快捷外设组件互联(Peripheral Component Interconnect Express,PCIe)标准,并且节点100A和100B中的每一节点的NTB模块可以被认为是该节点的一端点(endpoint),其中节点100A和100B可以透过该传输桥彼此通信和共享装置,但本发明不限于此。依据某些实施例,诸如NTB通信电路140A和140B的NTB模块可以透过客制化的网络接口电路来实现,以控制节点100A和100B彼此通信,使得它们就像正在透过网络接口电路进行通信一样。
在运行着程序模块112A的处理器110A和运行着程序模块112B的处理器110B的控制下,节点100A和100B可维持和监控NTB上的脉搏,以判断对等节点的可用性,以进行高可用性(High Availability,HA)控制。举例来说,节点100B可用以向节点100A发送脉搏信号,且节点100A可用以检测并监控来自节点100B的脉搏信号以判断节点100B的可用性,其中来自节点100B的脉搏信号是否存在可以指出节点100B是否可用(或健康程度)。对于另一个例子来说,节点100A可用以向节点100B发送脉搏信号,并且节点100B可用以检测并监控来自节点100A的脉搏信号以判断节点100A的可用性,其中来自节点100A的脉搏信号是否存在可以指出节点100A是否可用(或健康程度)。依据图1所示的架构,如图1所示,当节点100A和100B其中一个不可使用时,节点100A和100B其中的另一个可以继续为用户提供AFA伺服器100的储存服务。
需注意的是,AFA伺服器100配备了超过一个的节点间(inter-node)通信路径(例如节点之间的超过一个的相互通信路径)。除NTB路径外,AFA伺服器100还可配置为具有一个或多个其他通信路径,例如BMC 150A和150B之间的一BMC路径,其中BMC 150A可用以管理节点100A的硬件层的至少一部分(例如一部分或全部),而BMC150B可用以管理节点100B的硬件层的至少一部分(例如一部分或全部)。关于节点100A及其对等节点(例如节点100B)之间的通信,BMC 150A可用以透过该BMC路径与BMC 150B通信以存取(例如读取或写入)暂存器电路152B中的一个或多个暂存器的一个或多个暂存器值,以在节点100B上进行状态检查操作等。相似地,关于节点100B及其对等节点(例如节点100A)之间的通信,BMC 150B可用以透过该BMC路径与BMC150A通信以存取(例如读取或写入)暂存器电路152A中一个或多个暂存器的一个或多个暂存器值,以在节点100A上进行状态检查操作等。尤其,BMC 150A与BMC150B可独立地管理节点100A与100B的各自的硬件层,而不需要仰赖处理器110A与110B。举例来说,当处理器110A发生故障时,BMC 150A可以处理节点100A的未完成的工作,而当处理器110B发生故障时,BMC 150B可以处理节点100B的未完成的工作,但本发明不限于此。依据某些实施例,BMC 150A和150B可用以分别接管(take over)节点100A和100B,以进行紧急处理操作来减少数据遗失的机率。
依据本实施例,AFA伺服器100可以被配置为由多个类型的电源供电。节点100A和100B的每一节点可以包含至少一主电源(例如至少一电源供应器),用以于主电源处于正常电源状况下提供电力给该节点的其他组件。举例来说,节点100A的主电源可以供电给节点100A的主电路板,并且节点100B的主电源可以供电给节点100B的主电路板。当检测到一个或多个节点(例如节点100A及/或节点100B)的异常电源状况时,AFA伺服器100中的一个或多个相关的备用电源(例如备用电源单元170A及/或备用电源单元170B)可用以提供备用电力。举例来说,当节点100A的主电源发生电源故障时,备用电源单元170A可以供电给节点100A的主电路板(例如处理器110A、DRAM 120A、C2F SSD 122A、NTB通信电路140A、BMC150A、暂存器电路152A等),当节点100B的主电源发生电源故障时,备用电源单元170B可以供电给节点100B的主电路板(例如处理器110B、DRAM 120B、C2F SSD 122B、NTB通信电路140B、BMC 150B、暂存器电路152B等)。
依据某些实施例,节点100A和100B的每一节点(例如节点100A和100B的各自的主电路板中的每一节点)可以还包含多个感测器(sensor)/检测器(detector)用以至少对该节点的组件进行检测以产生检测结果(例如从这些传感器/检测器中的任一个所取得的状态信息)。举例来说,这些检测结果中的一功率检测结果可以表示该节点的主电源的功率状态,尤其,可以指出该节点是否发生异常电源状况,以供触发该节点启动备用电源(例如备用电源单元170A或备用电源单元170B)以提供备用电力。
图2依据本发明一实施例绘示图1所示的AFA伺服器100的某些实施细节,其中,可以将SSD 100S作为图1所示实施例中提到的多个SSD的例子。除了节点100A和100B以及SSD100S,AFA伺服器100可还包含一背板(backplane)电路100R。背板电路100R可用以将诸如SSD群组12A和12B的SSD 100S电气连接到节点100A和100B。举例来说,背板电路100R可以藉由具有相关连接器等的背板电路板来实现。另外,可以在背板电路100R内实现NTB通信电路140A和140B之间的该NTB路径的局部(partial)路径,以及BMC 150A和150B之间的该BMC路径的局部路径。由于该BMC路径和该NTB路径中的每一路径都不通过可能易于损坏的任何电缆,所以节点100A和100B之间的通信路径很稳健,且因此节点100A和100B可以保持有效的通信以及相关的控制,以确保AFA伺服器100的整体效能及正常运行。
依据某些实施例,SSD 100S中的每一SSD可以是一单埠(single port)SSD,尤其,可以是一单埠的基于装置的(device-based)SSD。另外,藉助于背板电路100R,AFA伺服器100可以支援SSD 100S中的每一SSD的热插拔。
依据某些实施例,两个节点100A和100B中的一个可以在AFA伺服器100的高可用性(High Availability简称HA)架构中用来作为一现用节点(active node),也就是扮演该现用节点的角色,并且两个节点100A和100B中的另一个可在AFA伺服器100的该HA架构中用来作为一待命节点(standby node),也就是扮演该待命节点的角色。诸如现用节点和待命节点的两个节点100A和100B可以彼此互动,尤其,可以藉由至少二(至少两条)通信路径(诸如NTB通信电路140A和140B之间的NTB路径以及BMC 150A和150B之间的BMC路径)来交换节点信息,并且可以藉由NTB路径来同步数据,但本发明不限于此。依据某些实施例,AFA伺服器100可以配备有超过两个的节点间(inter-node)通信路径(例如节点之间的超过两个的相互通信路径)。
图3是依据本发明一实施例所绘示的如图1所示的AFA伺服器100的一双节点架构的示意图。依据本实施例,节点100A和100B可以被分别配置为该现用节点和该待命节点,但本发明不限于此。举例来说,节点100A和100B可以在需要时交换它们所扮演的角色。如图3所示,除了某些硬件(hardware,HW)组件诸如图1或图2所示的架构中的部分组件外,还可绘示某些软件(software,SW)程序/程序,例如HA框架程序、网络(Web)伺服器程序、数据库(database)程序、操作于一服务模式的储存控制模块程序以及操作于一待机模式的储存控制模块程序(分别标示为“HA框架”、“Web伺服器”、“数据库”、“于服务模式下的储存控制模块”以及“于待机模式下的储存控制模块”以求简明)以指出AFA伺服器100中的关联互动,其中,上述程序的名称分别代表其相关功能。
运行于节点100A上的软件程序(例如,HA框架程序,Web伺服器程序,数据库程序和操作于该服务模式的储存控制模块程序)可作为程序模块112A的例子,并且运行于节点100B上的软件程序(例如,HA框架程序,Web伺服器程序,数据库程序和操作于该待机模式的储存控制模块程序)可作为程序模块112B的例子,但本发明不限于此。另外,网络接口模块130A的该一个或多个网络接口电路可还包含网络接口电路136A,并且网络接口模块130B的该一个或多个网络接口电路可还包含网络接口电路136B。因此,AFA伺服器100可以配备有至少三个节点间(inter-node)通信路径(例如节点之间的至少三个相互通信路径),诸如NTB路径、BMC路径以及网络接口电路136A和136B之间的网络路径。举例来说,节点100A和100B可用以藉由NTB路径进行快取镜像(cache mirroring)操作,并透过BMC路径检查本地/远端控制器状态,以及藉由网络接口电路136A和136B之间的网络路径进行额外的通信操作。
图4是依据本发明一实施例所绘示的如图1所示的多个节点100A与100B的任一(例如每一)节点中的程序模块112的示意图。例如,程序模块112可以代表运行在节点100A的处理器110A上的程序模块112A或运行在节点100B的处理器110B上的程序模块112B。如图4所示,程序模块112可以包含某些主程序模块,例如储存协定及区块输入/输出(IO)接口模块、储存快取模块、储存池模块、储存服务连续HA模块、储存功能模块以及储存管理模块(分别标示为“储存协定及区块输入/输出(IO)接口”、“储存快取”、“储存池”、“储存服务连续HA”、“储存功能”以及“储存管理”以求简明),其中这些主程序模块中的任一程序模块可以包含一个或多个子模块。另外,程序模块112中的某些程序模块之间的箭头指出这些程序模块可以彼此在各自所属的多个层的程序模块之间互动。举例来说,储存协定及区块IO接口模块可以被视为储存快取模块上方的一上层(例如一上层程序模块),储存池模块可以被视为储存快取模块下方一下层(例如一下层程序模块),储存功能模块和储存快取模块可被安排在一中间层以作为中间层程序模块,其中储存协定及区块IO接口模块以及储存池模块可用以与客户端装置和SSD群组互动,但本发明不限于此。当需要时,该节点可以触发其他程序模块与这些程序模块中的一个或多个进行互动。
储存协定及区块IO接口模块可以包含某些子模块诸如小型计算机系统接口(Small Computer System Interface,简称SCSI)模块、网际网络SCSI(Internet SCSI,简称iSCSI)模块和区块装置(Block Device)模块(分别标示为“SCSI”、“iSCSI”和“区块装置”以求简明)。储存快取模块可以包含某些子模块诸如使用软件实现的永久存储器(Persistent Memory using SW implementation)模块和写入缓冲模块(Write Buffermodule;也可称为“写入缓冲器模块”),于图中分别标示为“软件实现的永久存储器”和“写入缓冲器”以求简明。储存池模块可以包含一子模块诸如快闪存储器阵列(Flash Array)模块(为简便起见标示为“快闪存储器阵列”)。储存服务连续HA模块可以包含一子模块诸如HA框架模块(标示为“HA框架”以求简明)。储存功能模块可以包含某些子模块诸如卷管理器(Volume Manager)模块和数据减少模块(分别标示为“卷管理器”和“数据减少”以求简明),其中数据减少模块可以包含某些子模块诸如压缩引擎(Compression Engine)模块和重复数据删除引擎(Deduplication Engine)模块,可以分别称为“压缩引擎”和“重复数据删除引擎”。储存管理模块可以包含某些子模块诸如网络(Web)用户接口(User Interface,UI)模块、应用程序编程接口(Application Programming Interface,API)伺服器模块、请求代理(Request Broker)模块和数据库模块(分别标示为“网络UI”、“API伺服器”、“请求代理”和“数据库”以求简明)。上列模块的名称分别指出其相关功能。为了便于理解,对某一模块诸如卷管理器模块、压缩引擎模块、重复数据删除引擎模块等而言,某些实施例中所提到的咨询(consult)该模块的操作可包含对这个模块进行呼叫、查询等操作以从它取得对应的处理结果,但本发明不限于此。
依据某些实施例,AFA伺服器100(例如,该现用节点,诸如节点100A和100B的其中之一)可用以从AFA伺服器100外部的客户端装置接收请求诸如写入请求、读取请求等,并分别因应这些请求来操作。
图5是依据本发明一实施例所绘示的一种用以进行一AFA伺服器诸如图1所示的AFA伺服器100的节点信息交换(node information exchange)管理的方法的一写入控制方案的示意图。该方法可以应用于图1所示的AFA伺服器100。为了更好地理解,节点100A和100B可以分别用来作为该现用节点和该待命节点,尤其分别扮演该现用节点和该待命节点的角色,但本发明不限于此。因应写入请求,现用节点(例如节点100A和100B的其中之一,诸如在本实施例中的节点100A)可以利用写入缓冲模块来接收对应于写入请求的数据(例如4千位元组(kilobytes,KB)数据,可称为“4KB数据”以求简明),并在步骤S01中将该数据写入(例如缓冲)至其写入缓冲器(例如该节点的DRAM)中,且于步骤S02中藉由NTB路径将该数据诸如4KB数据镜像到待命节点(例如节点100A和100B中的另一个,诸如在本实施例中的节点100B),并且于步骤S03中对用户的客户端装置发送与写入请求相对应的一确认(acknowledgement,Ack)。由于数据已被镜像到远端侧(例如在本实施例中的DRAM 120B),所以镜像的数据由待命节点(例如其写入缓冲模块)所保护。
针对现用节点的后续操作,在步骤S04中,对于每一4KB数据查询(query),写入缓冲模块可以使用卷管理器模块来为该数据获取或分配(allocate)一储存池逻辑区块地址(storage pool logical block address,SLBA)。在步骤S05中,写入缓冲模块可以咨询重复数据删除引擎以对该数据进行重复数据删除功能。在步骤S06中,写入缓冲模块可以咨询压缩引擎以对数据进行压缩功能。在步骤S07中,当该DRAM(例如本实施例中的DRAM 120A)中的缓冲数据(例如待写入的数据)的数据量达到预定临界值时,例如,现用节点已经收集了N组压缩数据,并且该N组压缩数据的总数据量适合被储存为一全条带(full stripe),现用节点可以利用快闪记体阵列模块将该N组压缩数据(可以称为N个压缩数据以求简明)聚合(aggregate)成该全条带。举例来说,该全条带可以表示包含预定数量的组块(chunk)(例如十二个组块)的一条带,其中这些组块可以包含一第一预定数量的数据组块(例如十个数据组块)和一第二预定数量的奇偶校验组块(例如两个奇偶校验组块)。在步骤S08中,在收集一个或多个条带诸如一预定数量的条带(例如:一个条带、两个条带、三个条带、四个条带等例子中的任一者,可依据于该方法中的各种控制方案来决定)之后,现用节点可以利用写入缓冲模块将阵列信息诸如一SLBA阵列(SLBA所组成的阵列)、一压缩数据阵列(压缩数据所组成的阵列)等(例如该SLBA阵列与该压缩数据阵列所组成的一阵列:{SLBA阵列,压缩数据阵列})提交给快闪存储器阵列模块(或储存池模块),以供编写(尤其,写入)该一个或多个条带。在步骤S09中,快闪存储器阵列模块可以对各个碟(例如,现用节点的SSD群组,诸如本实施例中的SSD群组12A)进行条带写入操作。举例来说,由于该压缩引擎已在步骤S06中进行了压缩功能,因此4KB空间包含多个SLBA的各自的压缩数据。
在进行如图5所示的步骤S01至S09的操作之后,现用节点可以将相关的管理信息发送到待命节点以更新待命节点中的管理信息,以使待命节点在需要时能够替换现用节点以继续为用户提供AFA伺服器100的储存服务。举例来说,在步骤S10中,现用节点的卷管理器模块可以将卷管理器模块的重映射表同步(例如更新和发送)到待命节点存储器(例如待命节点的存储器),以控制(例如产生、更新等)由卷管理器模块所管理的某些映射关系。在步骤S11中,现用节点的快闪存储器阵列模块可以向待命节点快闪存储器阵列(例如待命节点的快闪存储器阵列模块)发出重映射表更新指令,以将快闪存储器阵列模块的重映射表更新至待命节点存储器(例如待命节点的存储器),以控制(例如产生、更新等)由快闪存储器阵列模块所管理的某些映射关系。如上所述,现用节点能够因应写入请求来进行这些操作;现用节点还能够因应读取请求来进行相关操作以复原(recover)该数据,举例来说,依据分别由卷管理器模块和快闪存储器阵列模块所管理的映射关系,其中,在后续的某些实施例中将描述针对管理这些映射关系的某些实施细节。
如图5的上半部所示,藉助于软件模拟,节点100A和100B中的任一节点(例如,每一节点)可以包含基于该多个节点中的另一个节点的一模拟永久存储器(emulatedpersistent memory;也可以称为PMem以求简明),其中PMem可以操作在NTB路径上,且因此可被视为基于NTB的PMem。举例来说,该任一节点诸如节点100A可以扮演现用节点的角色,而另一节点诸如节点100B可以扮演待命节点的角色。当现用节点的主电源的电源故障发生(例如节点100A和100B各自的主电源这两者的电源故障都发生)时,现用节点可以将其DRAM中的现有信息(例如:缓冲数据、管理表等)刷新到内部非挥发性存储器(Non-VolatileMemory简称NVM)储存装置(例如:现用节点的C2F SSD,诸如本实施例中的C2F SSD 122A)和PMem这两者。尤其,由于这些节点中的每一节点都配备有自己的内部NVM储存装置和PMem,待命节点可以将其DRAM中的刷新自现用节点的现有信息(例如,刷新自现用节点的缓冲数据、管理表等)刷新到内部NVM储存装置(例如:待命节点的C2F SSD,诸如本实施例中的C2FSSD 122B)中。
对于现用节点,虽然基于NTB的PMem中的DRAM 120A和120B是挥发性存储器,AFA伺服器100可以藉助于软件模拟将基于NTB的PMem利用作为永久存储器,这是因为在其写入缓冲模块控制下操作的待命节点可以保护刷新自现用节点的任何现有信息。当发生电源故障时,现用节点可以将其DRAM中的现有信息刷新到内部NVM储存装置诸如符合M.2规范的多个NVM储存装置的其中之一当中,且藉由将现有信息通过NTB路径发送到待命节点的DRAM,可以将其DRAM(现用节点本身的DRAM)中的现有信息刷新到PMem中。如此一来,待命节点可以将其DRAM中的现有信息刷新到其内部NVM储存装置(例如,符合M.2规范的多个NVM储存装置的其中之一)当中。
依据某些实施例,节点100A和100B可以从现用节点和待命节点的角色互相交换,并且可以进行如上所述的关于节点100B和100A的相对应的操作。为了简明起见,于这些实施例中类似的内容在此不重复赘述。
依据某些实施例,在用AFA伺服器100来实现的高可用性(HA)架构中,两个节点100A和100B诸如现用节点和待命节点可以彼此互动以藉由BMC路径和NTB路径交换节点信息。尤其,两个节点100A和100B中的任一节点(例如,每一节点)可以包含安装在主电路(例如,主电路板,具有某些硬件(HW)组件于其上,如图1所示的实施例和某些相关实施例中所述)上的一或多个储存装置,诸如包含NVM(例如快闪存储器)的一或多个非挥发性存储器(NVM)储存装置。在该一或多个NVM储存装置的NVM储存装置数量大于一的情况下,该一或多个NVM储存装置可以包含多个如上所述的NVM储存装置。例如,该一或多个NVM储存装置可以符合M.2规范,且可以被实现为这个节点的一或多个内部安装的扩充卡,但本发明不限于此。另外,当发生电源故障时,该节点的AFA中的一或多个下层诸如SSD可能无法使用,该节点的主电路以及这个主电路的硬件组件(例如,处理器、DRAM、BMC、暂存器等)可以使用该主电路的备用电源(例如电池)作为其电源,且该节点(例如,在处理器上运行的软件模块,例如程序模块112A或112B)可以进行一C2F操作以保存任何待保护的信息(或任何要保护的信息),诸如暂时储存在该节点中的DRAM的缓冲数据等以及暂时储存在该节点的暂存器电路的暂存器中的节点信息等,尤其将该任何待保护的信息存入该一或多个NVM储存装置中以避免数据丢失。例如,该节点的C2F SSD可以包含符合M.2规范的该一或多个NVM储存装置。
图6是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一碟交换(disk switching)控制方案的示意图。根据本实施例,两个节点100A和100B可以分别被视为一主节点(master node)或一从属节点(slave node),其中,主节点可以代表两个节点100A和100B中较靠近AFA伺服器100的电源的节点,而从属节点可以代表两个节点100A和100B中的另一个。例如,在预设情况下,主节点和从属节点可以分别扮演现用节点和待命节点的角色。如图6所示,节点100A的储存接口电路162A和164A以及节点100B的储存接口电路162B和164B可以藉由名为PEX 9765的PCIe交换电路(PCIe switch circuit)来实现(标示为“PCIe交换机PEX 9765”以求简明),且在本实施例中,背板电路100R可以由SSD背板来实现。这些PCIe交换电路中的任一PCIe交换电路也可以称为9765以求简明。
在两个节点100A和100B中的任一节点(例如每一节点)中,运行着程序模块的处理器(例如,于图6中分别标示为“主节点(A)现用”及“从属节点(B)待命”的这两个区块的其中之一)可以透过一或多个交换电路(例如这些PCIe交换电路中的一或多个)和一连接电路(例如SSD背板)以控制该AFA,而BMC可以透过该一或多个交换电路和该连接电路来自行控制该AFA。为了更好地理解,该AFA可以代表在AFA系统(例如,AFA软件/程序模块诸如图3所示两个节点100A和100B的对应节点的储存控制模块)的控制下的SSD群组12A和12B中的某个SSD群组的SSD阵列。例如,在节点100A中,运行着程序模块112A的处理器110A(例如“主节点(A)现用”)可以透过其一或多个PCIe交换电路和该SSD背板来控制该AFA。对于另一例子来说,在节点100B中,运行着程序模块112B的处理器110B(例如“从属节点(B)待命”)可以透过其一或多个PCIe交换电路和该SSD背板来控制该AFA。
依据某些实施例,两个节点100A和100B中的任一节点(例如,每一节点)的BMC可以在软件层(例如,软件模块诸如连接器、HW/主机板管理器等)的控制下操作,以在需要时存取上述暂存器中的任何暂存器(例如,读取或写入一节点信息)。
举例来说,可以用一变迁图来说明角色和状态的转变,其中状态可以藉由该BMC路径同步,且数据及状态可以藉由NTB路径同步。该节点信息可以包含监控信息(例如状态),且该节点可以将该监控信息分类为多个类型,以分别进行对应于该多个类型的操作(例如,针对类型A进行输出警告、针对类型B进行C2F操作、针对类型C进行触发故障转移、针对类型D进行设定独立运转等)。举例来说,该监控信息(例如状态)可以包含经由该节点中(例如主电路中)的感测器/检测器所检测到的状态。为了更好地理解,某些用语诸如UI、DB、SMIStor、PSU、Pmem、FA以及SDR可以分别代表用户界面(例如,UI软件/程序模块诸如图4右上方所示的Web UI模块)、数据库(Database,可简称DB)(例如DB软件/程序模块诸如图4右上方所示的数据库模块)、AFA系统(例如AFA软件/程序模块诸如图3所示节点100A和100B中的对应节点的储存控制模块),电源供应单元(Power Supply Unit)(例如图1所示实施例的上述至少一个主电源)、永久存储器(Persistent memory,可简称Pmem)(例如Pmem软件/程序模块诸如图4左侧的中间所示的永久存储器、图5的上半部所示的基于NTB的PMem等)、快闪存储器阵列(Flash Array,可简称FA)(例如,FA软件/程序模块诸如在图4的左下方所示的快闪存储器阵列模块)以及感测器数据记录(SensorData Record)(例如,从节点中的感测器/检测器所取得的感测器数据的一或多个记录)。举例来说,该DB可以记录可供该UI使用的用户动作信息(例如用户动作的历史信息)。另外,某些软件组件(诸如资源)可包含硬件(HW)管理器等。在这些资源的动作中,动作“降级”(demote)可释放或放弃现用节点的角色,而动作“升级”(promote)可将节点的角色从待命(例如待命节点)更改为现用(例如现用节点)。
图7是依据本发明一实施例所绘示的用于进行该AFA伺服器的节点信息交换管理的方法的一角色信息交换(role information exchange)控制方案的示意图。在软件层(例如软件模块诸如HA框架模块等)的控制下,两个节点100A和100B中的任一节点(例如每一节点)可以被配置为依据该角色信息交换控制方案来交换角色信息。举例来说,两个节点100A和100B可以藉由上述至少两个通信路径诸如在图1中所示的NTB通信电路140A和140B之间的NTB路径(在图1和图7中标示为“NTB”以求简明)以及在图1中所示的BMC 150A和150B之间的BMC路径来交换角色信息。在图7中未绘示某些硬件组件(诸如NTB通信电路140A和140B以及BMC 150A和150B)以求简明。
如图7所示,在节点100A的处理器110A上运行的程序模块112A可以包含一连接器模块(标示为“连接器”以求简明)用以控制针对两个节点100A和100B之间的连接的一部分操作,且在节点100B的处理器110B上运行的程序模块112B可以包含一连接器模块(标示为“连接器”以求简明)用以控制针对两个节点100A和100B之间的连接的另一部分操作,其中两个节点100A和100B的各自的连接器模块中的每一连接器模块可以包含多个子模块,例如一NTB通道模块、一BMC伺服器模块以及一BMC客户端模块(标示为“NTB通道”、“BMC伺服器”以及“BMC客户端”以求简明)。举例来说,节点100A的连接器模块可以控制NTB通信电路140A藉由NTB路径与NTB通信电路140B通信,且节点100B的连接器模块可以控制NTB通信电路140B藉由NTB路径与NTB通信电路140A进行通信,就如对应于该NTB路径的某些角色信息交换路径(例如,节点100A的NTB通道模块和NTB路径之间的角色信息交换路径以及节点100B的NTB通道模块和NTB路径之间的角色信息交换路径)所展示。如此一来,两个节点100A和100B可用以藉由NTB路径交换角色信息(例如,指出节点100A角色的信息和指出节点100B角色的信息)。
在节点100A的处理器110A上运行的程序模块112A可以进一步包含另一个程序模块,诸如其HW管理器模块(在图7中所示的节点100A中标示为“HW管理器”以求简明)用以控制某些HW组件诸如节点100A的BMC 150A、暂存器电路152A等,而在节点100B的处理器110B上运行的程序模块112B可以进一步包含另一个程序模块,诸如其HW管理器模块(在图7中所示的节点100B中标示为“HW管理器”以求简明)用以控制某些HW组件诸如节点100B的BMC150B、暂存器电路152B等。举例来说,节点100A的BMC伺服器模块可以藉由节点100A的HW管理器模块控制BMC 150A,以写入节点100B的暂存器电路152B的至少一暂存器(例如8位元暂存器),就如针对暂存器写入的某些角色信息交换路径(例如,节点100A的BMC伺服器模块和HW管理器模块之间的角色信息交换路径以及节点100A的HW管理器模块和节点100B的8位元暂存器之间的角色信息交换路径)所展示。相似地,节点100B的BMC伺服器模块可以藉由节点100B的HW管理器模块控制BMC 150B,以写入节点100A的暂存器电路152A的至少一暂存器(例如8位元暂存器),就如针对暂存器写入的某些角色信息交换路径(例如,节点100B的BMC伺服器模块和HW管理器模块之间的角色信息交换路径以及节点100B的HW管理器模块和节点100A的8位元暂存器之间的角色信息交换路径)所展示。另外,节点100A的BMC客户端模块可以藉由节点100A的HW管理器模块控制BMC 150A,以读取节点100A的暂存器电路152A的上述至少一暂存器(例如8位元暂存器),尤其是当需要时对其进行清除,就如针对暂存器读取和清除的某些角色信息交换路径(例如,节点100A的BMC客户端模块与HW管理器模块之间的角色信息交换路径以及节点100A的HW管理器模块与8位元暂存器之间的角色信息交换路径)所展示。相似地,节点100B的BMC客户端模块可以藉由节点100B的HW管理器模块控制BMC150B,以读取节点100B的暂存器电路152B的上述至少一暂存器(例如8位元暂存器),尤其是当需要时对其进行清除,就如针对暂存器读取和清除的某些角色信息交换路径(例如,节点100B的BMC客户端模块与HW管理器模块之间的角色信息交换路径以及节点100B的HW管理器模块与8位元暂存器之间的角色信息交换路径)所展示。
当决定了节点100A的角色时,节点100A可以藉由上述至少二通信路径(例如,NTB路径和BMC路径)中的任一条路径将指出节点100A的角色的信息发送到节点100B,例如使用对应于NTB路径的角色信息交换路径及/或使用针对暂存器写入的对应的角色信息交换路径以及针对暂存器读取和清除的对应的角色信息交换路径,以将节点100A的角色通知节点100B。相似地,当决定了节点100B的角色时,节点100B可以藉由上述至少二通信路径(例如,NTB路径和BMC路径)中的任一条路径将指出节点100B的角色的信息发送到节点100A,例如使用对应于NTB路径的角色信息交换路径及/或使用针对暂存器写入的对应的角色信息交换路径以及针对暂存器读取和清除的对应的角色信息交换路径,以将节点100B的角色通知节点100A。如此一来,两个节点100A和100B可以被配置成藉由BMC路径交换角色信息(例如,指出节点100A角色的信息和指出节点100B角色的信息)。
依据某些实施例,两个节点100A和100B的其中之一可用以决定两个节点100A和100B中的另一个节点的角色。在这种情况下,当决定节点100B的角色时,节点100A可以藉由上述至少二通信路径(例如,NTB路径和BMC路径)中的任何一条路径将指出节点100B角色的信息发送给节点100B,例如使用对应于NTB路径的角色信息交换路径及/或使用针对暂存器写入的对应的角色信息交换路径以及针对暂存器读取和清除的对应的角色信息交换路径,以将节点100B的角色通知节点100B。相似地,当决定节点100A的角色时,节点100B可以藉由上述至少二通信路径(例如,NTB路径和BMC路径)中的任何一条路径将指出节点100A角色的信息发送给节点100A,例如使用对应于NTB路径的角色信息交换路径及/或使用针对暂存器写入的对应的角色信息交换路径以及针对暂存器读取和清除的对应的角色信息交换路径,以将节点100A的角色通知节点100A。如此一来,两个节点100A和100B可被配置成藉由BMC路径交换角色信息(例如,指出节点100A角色的信息和指出节点100B角色的信息)。
依据某些实施例,如果发生角色冲突,则两个节点100A和100B中的至少一节点可以利用该UI来输出一或多个提示以引导用户手动设定两个节点100A和100B的各自的角色。
表1
Figure BDA0002957868500000181
表1展示针对两个节点100A和100B中的任一节点的角色和状态的某些例子以及有关的描述,其中现用和待命可以分别表示现用节点的角色和待命节点的角色。当该节点正在扮演现用节点的角色时,该节点的状态的例子可以包含(但不限于):运行状态,其中现用节点的系统正常且正确地运行;独立运转状态,其中仅现用节点服务(就是现用节点的服务)可用;停止状态,其中现用节点的服务正停止;降级状态,其中当现用节点发生故障时,现用节点开始进行故障转移以释放现用节点的角色;以及C2F状态,其中于现用节点正在进行一C2F操作诸如上述的C2F操作,以将存储器数据(例如现用节点的DRAM中的数据)复制到现用节点中的符合M.2规范的该一或多个NVM储存装置(例如快闪存储器)(标示为“快闪(M.2)”以更好理解)。当该节点正在扮演待命节点的角色时,该节点的状态的例子可以包含(但不限于):运行状态,其中待命节点的系统正常且正确地运行;不同步(Out of Sync)状态,其中待命节点仅保留现用节点的旧数据,并且需要从现用节点同步现用节点的最新数据(例如,最新版本的数据)以使储存在待命节点中的数据等于现用节点中储存的最新数据;异常状态,其中当待命节点发生故障时,该待命节点无法提供任何服务(例如,将最新数据从现用节点同步到待命节点的服务);升级状态,其中待命节点接管服务以改变其角色;以及C2F状态,其中于待命节点正在进行一C2F操作诸如上述的C2F操作,以将存储器数据(例如待命节点的DRAM中的数据)复制到待命节点中的符合M.2规范的该一或多个NVM储存装置(例如快闪存储器)(标示为“快闪(M.2)”以更好理解)。
图8是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一角色及状态转变控制方案的示意图。在软件层(例如,软件模块诸如HA框架模块等)的控制下,两个节点100A和100B的任一节点(例如每一节点)可用以依据该角色及状态转变控制方案进行角色及状态转变控制。
在步骤S40中,该节点可以进行初始化(例如该节点的系统的初始化)。
在步骤S41A中,在该节点的角色已被定义为现用节点之后,该节点可以进行现用初始化(例如与现用节点的角色有关的初始化)。
在步骤S41B中,在该节点的角色已被定义为待命节点之后,该节点可以进行待命初始化(例如与待命节点的角色有关的初始化)。
在步骤S42A中,在该节点诸如现用节点已被初始化之后,该节点可以在现用节点的角色的独立运转(standalone)状态中来操作(标示为“现用独立运转”以求简明)。
在步骤S42B中,在该节点诸如待命节点已被初始化之后,该节点可以在待命节点的角色的不同步(Out of Sync)状态下进行操作(标示为“待命不同步”以求简明),这是由于此时待命节点可能与现用节点不同步(标示为“待命已不同步”以求简明)。
在步骤S43A中,当该节点诸如现用节点已将储存在现用节点中的最新数据同步到待命节点时,该节点诸如现用节点可以在现用节点的角色的运行状态下进行操作(标示为“现用运行”以求简明)。例如,当该节点诸如现用节点不能将储存在现用节点中的最新数据同步到待命节点时,进入步骤S42A。
在步骤S43B中,当该节点诸如待命节点已同步来自现用节点的最新数据以使储存在待命节点中的数据等于储存在现用节点中的最新数据时,该节点可以在待命节点的角色的运行状态下进行操作(标示为“待命运行”以求简明)。例如,当待命节点变得相对于现用节点不同步时(标示为“待命已不同步”以求简明),进入步骤S42B。
在步骤S44A中,当该节点诸如现用节点检测到其故障时,该节点可以在现用节点的角色的降级状态进行操作(标示为“现用降级”以求简明)。
在步骤S44B中,当检测到现用节点发生故障(标示为“现用故障”以求简明)时,该节点诸如待命节点可以在待命节点的角色的升级状态(标示为“待命升级”以求简明)进行操作。如图8所示,从步骤S44B指向步骤S43A的箭头指出,当该节点诸如待命节点将其角色更改为现用节点的角色时(标示为“角色更改为现用”以求简明),这个节点变为两个节点100A和100B中最新的现用节点。
在步骤S45A中,当该节点诸如现用节点停止工作时(例如,该节点可以停止其HA框架模块),该节点可以进入现用节点的角色的停止状态(标示为“现用停止”以求简明),其中该节点停止其服务。然后该节点可以自动重新启动。
在步骤S45B中,当该节点诸如待命节点停止工作时(例如,该节点可以停止其HA框架模块),该节点可以进入待命节点的角色的停止状态(标示为“待命停止”以求简明),其中该节点停止其服务。然后该节点可以自动重新启动。
在步骤S46中,当该节点诸如待命节点检测到其故障时,该节点可以在待命节点的角色的异常状态下进行操作(标示为“待命异常”以求简明)。举例来说,如果该节点诸如待命节点停止工作(例如,该节点可以停止其HA框架模块),进入步骤S45B;否则,进入步骤S42B。
依据某些实施例,两个节点100A和100B中的任一节点(例如每一节点)可被配置成依据图8所示的工作流程来监控该节点的状态,尤其,对该节点的多个类型的资源进行资源管理。为了便于理解,HA框架模块所管理的任何组件(例如软件组件)可被称为资源。可应用于资源的动作的例子包含(但不限于):开始(例如启用(enable))、停止(例如禁用(disable))、降级(例如使资源变为非现用状态;尤其,对于该节点的整体来说,释放或放弃现用节点的角色)、升级(例如使资源变为现用;尤其,对于该节点的整体来说,将其角色从待命更改为现用)、C2F(例如进行C2F操作)、设定独立运转(例如将该节点诸如现用节点设定为向用户提供服务,而不将储存在现用节点中的最新数据同步/复制到待命节点)以及取消独立运转(例如,将该节点诸如现用节点设定为向用户提供服务,且同时能够将现用节点中储存的最新数据同步/复制到待命节点)。
依据某些实施例,在用AFA伺服器100实现的HA架构中,两个节点100A和100B(诸如现用节点和待命节点)可以透过上述至少二通信路径的至少一部分(例如一部分或全部)诸如该BMC路径和该NTB路径,来彼此互动以交换节点信息(例如,角色信息、所监视的信息等)。例如,该BMC路径可以用两个节点100A和100B的各自的BMC 150A和150B之间的集成电路间(Inter-Integrated Circuit,简称I2C)连接(例如,I2C总线)来实现。两个节点100A和100B的任一节点(例如每一节点)的BMC可以自己操作,并且还可以在该节点的软件层(例如,软件模块诸如连接器(connector)等)的控制下操作,尤其,可以存取(例如读取或写入)这个节点的该暂存器电路的该至少一暂存器(例如8位元暂存器),并且透过该BMC路径和该另一个节点的BMC来存取该另一个节点的该暂存器电路的该至少一暂存器(例如8位元暂存器)。两个节点100A和100B的各自的暂存器可以储存节点信息(例如,角色信息、所监视的信息等),以供两个节点100A和100B中的一个或多个进一步使用。
由于两个节点100A和100B的任一节点(例如每一节点)的BMC能够独立运行,因此当在该节点上运行的程序模块中的操作系统(operating system,简称OS)变得异常(例如,故障)时,两个节点100A和100B可以藉由使用两个BMC 150A和150B来透过该BMC路径交换节点信息。例如,在由于OS崩溃(crash)而导致该NTB路径变得不可用的情况下,两个BMC 150A和150B可以分别继续为两个节点100A和100B工作,以解决这个问题(例如,藉由进行一系列预定操作),其中,在两个节点100A和100B的各自的硬件层中的两个BMC 150A和150B之间的该BMC路径仍然有效。另外,该BMC路径和该NTB路径都在AFA伺服器100内实现,且因此是稳健的(robust)。针对两个节点100A和100B之间的通信,不需要使用任何外部电缆诸如在AFA伺服器100外部的网络电缆将两个节点100A和100B彼此耦接。
图9是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一节点信息交换控制方案的示意图。与图7所示的架构相比,在本实施例中还进一步绘示了某些实施细节诸如两个BMC 150A和150B、以该I2C连接诸如该I2C总线的方式来实现的该BMC路径、两个BMC 150A和150B与8位元暂存器之间的连接、以及在该NTB路径上实现的两个额外的储存单元,其中,角色信息交换路径、针对暂存器写入的角色信息交换路径、以及针对暂存器读取与清除的角色信息交换路径也可以称为节点信息交换路径、针对暂存器写入的节点信息交换路径、以及针对暂存器读取与清除的节点信息交换路径,这是因为角色信息可以是节点信息的多个例子的其中之一。为了简明起见,于本实施例中类似的内容在此不重复赘述。
如图9所示,用于透过该BMC路径在两个节点100A和100B之间交换节点信息的两个暂存器(例如,BMC 150A和150B所使用的两个暂存器)可以是8位元暂存器(例如1位元组暂存器),并且,用于透过该NTB路径在两个节点100A和100B之间交换节点信息的两个额外的储存单元(例如,两个节点100A和100B的各自的处理器110A和110B所使用的两个额外的储存单元)可以是8位元组存储器,但是本发明不限于此。例如,两个节点100A和100B的各自的8位元组存储器可以用两个节点100A和100B的各自的DRAM 120A和120B的各自的局部储存区(partial storage region)来实现。在某些例子中,这两个暂存器的各自的大小及/或这两个额外的储存单元的各自的大小可予以变化。
表2
Figure BDA0002957868500000221
Figure BDA0002957868500000231
表2展示了针对两个节点100A和100B中的任一节点的与角色和状态有关的编码的某些例子以及相关的描述,其中栏位“角色”中所示的“现用”和“待命”可以分别代表现用节点的角色和待命节点的角色。该节点可对节点信息进行编码以产生编码结果诸如二进制代码(binary code),并将该编码结果诸如该二进制代码储存在两个节点100A和100B中的一个或多个节点的一个或多个储存单元中以供进一步参考,尤其,将节点信息储存在用于透过该BMC路径在两个节点100A和100B之间交换节点信息的那两个暂存器中的一个或多个暂存器中,并且将节点信息储存在用于透过该NTB路径在两个节点100A和100B之间交换节点信息的那两个额外的储存单元中的一个或多个额外的储存单元中。例如,两个节点100A和100B中的每一节点的节点信息可以用具有四个位元的该二进制代码来表示(例如,表2的栏位“二进制”中所示的多个候选二进制代码{0000,0001,…,1111},其分别具有表2的栏位“十进制”中所示的等效的十进制值{0,1,…,15})。
该二进制代码可以等于表2中列出的多个候选二进制代码{0000,0001,…,1111}的其中之一。为了更好地理解,候选二进制代码0000可以指出在该AFA系统运行之前的状态(例如,在开始图8所示的工作流程之前),其中栏位“角色”和“状态”中的符号“-”可以表示“不用在意”(Don’t Care);候选二进制代码{0001,0010,…,0101}可以分别指出现用节点的角色的初始化状态、运行状态、停止状态、独立运转状态和降级状态,如步骤S41A、S43A、S45A、S42A和S44A中所述;候选二进制代码{0110,0111,…,1010}可以分别指出待命节点的角色的初始化状态、运行状态、停止状态、升级状态和异常状态,如步骤S41B、S43B、S45B、S44B和S46中所述;候选二进制代码1011可以指出该AFA系统的初始化状态,其中该AFA系统尚未确定该节点的角色(于表2中标示为“无”);候选二进制代码1100可以指出待命节点的角色的不同步状态,如步骤S42B中所述;候选二进制代码{1101,1110}可以分别指出现用节点的角色的停止OK状态和停止失败状态,其中,停止OK状态可以表示现用节点已经在步骤S45A中成功地停止(例如,节点已准备好重新启动而不会引起任何问题),而停止失败状态可以表示现用节点已经在步骤S45A中不成功地停止(例如,虽然该节点可以自动地重新启动,但该节点可以因应该二进制代码等于候选二进制代码1110来触发一个或多个错误处置程序);以及候选二进制代码1111可被视为一预留的(reserved)候选二进制代码。
例如,上述两个暂存器(例如8位元暂存器)中的每一暂存器可以被配置为储存两个节点100A和100B的各自的节点信息,并且上述两个额外的储存单元(例如8位元组存储器)中的每一额外的储存单元可以被配置为储存两个节点100A和100B的各自的节点信息以及缓冲数据,这是因为这两个额外的储存单元典型地具有比这两个暂存器的储存容量更大的储存容量,但是本发明不限于此。在典型的情况下,并不需要使这两个暂存器中的每一暂存器以及这两个额外的储存单元中的每一额外的储存单元都储存两个节点100A和100B的各自的节点信息。例如,两个节点100A和100B的任一节点(例如每一节点)可以透过该BMC路径将该任一节点的节点信息写入至一远端节点(例如,两个节点100A和100B中的另一个节点)的暂存器(例如8位元暂存器),以供该远端节点读取;以及该远端节点可以透过该BMC路径将该远端节点的节点信息写入至该任一节点的暂存器(例如8位元暂存器),以供该任一节点读取。又例如,两个节点100A和100B的该任一节点(例如每一节点)可以将该任一节点的节点信息写入至该任一节点的暂存器(例如8位元暂存器),以供该远端节点透过该BMC路径读取;以及该远端节点可以将该远端节点的节点信息写入至该远端节点的暂存器(例如8位元暂存器),以供该任一节点透过该BMC路径读取。依据某些实施例,该二进制代码的位元数(bit count)可予以变化,并且这两个暂存器的各自的大小可以相应地变化,以支持针对节点信息的储存需求。
该AFA伺服器100可以交换节点信息(例如,用该二进制代码来表示的节点信息)以维护该HA架构并且保证其正确的HA控制,其中两个节点100A和100B的任一节点(例如每一节点)可以产生并更新其节点信息以指出其角色以及其状态诸如该节点是否健康、该节点是否还活着、是否发生任何故障等,尤其,产生节点信息的最新版本以供指出该节点的最新角色和最新状态,以容许该远端节点根据节点信息适应性地操作。尤其,AFA伺服器100配备有前述的至少二通信路径,诸如该BMC路径和该NTB路径,并且它们全部藉由使用在AFA伺服器100的外壳内的内部连接来实现,而不是藉由使用在AFA伺服器100的外壳以外的任何外部电缆来实现。此外,当两个节点100A和100B的其中之一的任何OS崩溃发生时,伺服器100能够透过该BMC路径交换节点信息,这是因为两个BMC 150A和150B可以继续为两个节点100A和100B工作,而不受该OS崩溃的影响。为了简明起见,于本实施例中类似的内容在此不重复赘述。
为了更好地理解,假设P1、P2和P3分别代表该NTB路径发生故障的机率、该BMC路径发生故障的机率以及两个节点100A和100B中的一个节点发生故障的机率,其中P1、P2和P3为正值并且典型地远小于1。由于两个BMC 150A和150B以及该BMC路径不受该OS崩溃的影响,所以在典型的情况下,P2<P1,并且该NTB路径、该BMC路径以及两个节点100A和100B中的这个节点都发生故障的总机率(P1*P2*P3)典型地远小于P1、P2和P3中的任何一个,且因此可以被视为几乎达到零。例如,当该NTB路径发生故障(例如由于该OS崩溃)时,AFA伺服器100(例如两个节点100A和100B)可以通过该BMC路径交换节点信息,以根据该节点信息正确地控制该HA架构,来持续地提供服务给AFA伺服器100的用户。当该NTB路径和该BMC路径均发生故障时,两个节点100A和100B中的每一节点可以决定它自己的角色和状态(例如,对应于表2所示的表内容中的某一列(row)之角色和状态)并且对应地操作,举例来说,根据图8所示的工作流程来相应地操作,所以AFA伺服器100仍可以继续向用户提供服务。当该NTB路径、该BMC路径以及两个节点100A和100B中的这个节点都发生故障时,两个节点100A和100B当中的还活着的剩余的节点可以决定它自己的角色和状态(例如,对应于表2所示的表内容中的某一列之角色和状态)并且对应地操作,举例来说,根据图8所示的工作流程来相应地操作,所以AFA伺服器100仍可以继续向用户提供服务。因此,AFA伺服器100可以在各种情况下正确地控制该HA架构,以维持AFA伺服器100的真实HA(例如,非常高的可用性)。
依据某些实施例,在两个节点100A和100B依据默认设定分别扮演现用节点的角色和待命节点的角色、并且这些节点的其中之一诸如节点100A发生故障且因此节点100B变为最新的现用节点的情况下,当AFA伺服器100的制造商的现场应用工程师(fieldapplication engineer,FAE)成功地修复节点100A时(例如,藉由用新的节点替换节点100A、或用新的可拆卸组件替换节点100A中的一可拆卸组件),节点100A可以透过节点信息交换来取得节点100B的节点信息,以确定节点100B正在扮演现用节点的角色,且因此在这个时刻将节点100A的角色确定为最新的待命节点。在两个节点100A和100B依据默认设定分别扮演现用节点的角色和待命节点的角色、并且这些节点的其中之一诸如节点100B发生故障且因此节点100A是处于现用节点的角色的独立运转状态中的情况下,当该现场应用工程师成功地修复节点100B时(例如,藉由用新的节点替换节点100B、或用新的可拆卸组件替换节点100B中的一可拆卸组件),节点100B可以透过节点信息交换来取得节点100A的节点信息,以确定节点100A正在扮演现用节点的角色,且因此在这个时刻将节点100B的角色确定为最新的待命节点。为了简明起见,于这些实施例中类似的内容在此不重复赘述。
图10是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的一基于锁定的(lock-based)节点信息交换控制方案的示意图。在两个节点100A和100B的各自的8位元暂存器的任一8位元暂存器(例如每一8位元暂存器)的八个位元{bit(7),bit(6),…,bit(0)}中,AFA伺服器100可以利用某一个位元(例如最高位元bit(7))作为一锁定位元(lock bit),并可以利用一组位元(例如较低的四个位元{bit(3),bit(2),bit(1),bit(0)}作为该二进制代码的二进制代码位元,其中最高位元bit(7)和最低位元bit(0)可以分别被视为最高有效位元(Most Significant Bit,MSB)和最低有效位元(Least Significant Bit,LSB),但是本发明不限于此。针对该锁定位元诸如最高位元bit(7),如果bit(7)=0,则只有远端侧(例如,异于该任一8位元暂存器所属的节点的某一节点)可以存取该任一8位元暂存器,其中bit(7)=0始终为真(true)表示发生了该远端侧的远端崩溃(例如OS崩溃);否则,如果bit(7)=1,则只有本地侧(例如,该任一8位元暂存器所属的节点)可以存取该任一8位元暂存器,其中bit(7)=1始终为真表示发生了该本地侧的本地崩溃(例如OS崩溃)。举例来说,当该任一8位元暂存器是该任一节点的8位元暂存器时,该本地侧和该远端侧分别代表该任一节点和该远端节点。又例如,当该任一8位元暂存器是该远端节点的8位元暂存器时,该本地侧和该远端侧分别代表该远端节点和该任一节点。
为了更好地理解,假设在两个节点100A和100B之间的节点信息交换的期间,节点100B正在尝试透过该BMC路径获取节点100A的节点信息。例如,节点100B(例如,在其上运行的BMC客户端模块)可以使用一默认值诸如00000000来初始化(例如,重置或清除)节点100B的8位元暂存器,以使得{bit(7),bit(6),…,bit(0)}=00000000。之后,AFA伺服器100可以进行一系列操作,如以下所示:
(1)节点100A(例如,在其上运行的BMC伺服器模块)可以读取节点100B的8位元暂存器来检查锁定位元,例如最高位元bit(7),并且确定bit(7)=0,这指出可以进行写入操作;
(2)节点100B(例如,在其上运行的BMC客户端模块)可以读取节点100B的8位元暂存器以检查锁定位元,例如最高位元bit(7),并且确定bit(7)=0,且因此确定发生了这个读取的失败,其中锁定位元诸如最高位元bit(7)的没有改变指出节点100A尚未写入节点100B的8位元暂存器,所以节点100B(例如,在其上运行的BMC客户端模块)还没有获取节点100A的该节点信息,诸如该节点信息的一第一版本;
(3)节点100A(例如,在其上运行的BMC伺服器模块)可以写入节点100B的8位元暂存器,尤其,将节点100A的该节点信息(例如,该节点信息的该第一版本)保存(save)到节点100B的8位元暂存器,并且设定bit(7)=1;
(4)节点100A(例如,在其上运行的BMC伺服器模块)可以读取节点100B的8位元暂存器以检查锁定位元,例如最高位元bit(7),并且确定bit(7)=1,且因此确定发生了尝试进行下一次写入的失败,其中锁定位元诸如最高位元bit(7)的没有改变指出节点100B尚未读取该节点信息,诸如该节点信息的该第一版本;
(5)节点100B(例如,在其上运行的BMC客户端模块)可以读取节点100B的8位元暂存器以检查锁定位元,例如最高位元bit(7),并且确定bit(7)=1,且因此取得该节点信息,诸如该节点信息的该第一版本;
(6)节点100B(例如,在其上运行的BMC客户端模块)可以使用该默认值诸如00000000来清除节点100B的8位元暂存器,以使得{bit(7),bit(6),…,bit(0)}=00000000;
但是本发明不限于此。举例来说,两个节点100A和100B可以在上列操作中被交换,并且如图10所示的关联的节点信息交换路径可以相对于两个节点100A和100B之间的假想的垂直线而被镜像(例如,从左侧到右侧、或从右侧到左侧)。在两个节点100A和100B之间的节点信息交换的期间,节点100A可以尝试以类似的方式透过该BMC路径取得节点100B的节点信息。
依据某些实施例,两个节点100A和100B的任一节点(例如每一节点)可以检测到:该远端节点的分别从不同路径取得的状态,诸如从该NTB路径取得的节点信息所指出的(该远端节点的)状态、以及从该BMC路径取得的节点信息所指出的(该远端节点的)状态,彼此不一致。在这种情况下,该节点可以根据针对该NTB路径和该BMC路径的某些监控结果,判断该NTB路径是正常还是异常、以及该BMC路径是正常还是异常,以根据至少一预定规则从多个预定操作选择至少一对应的操作以作为要进行的后续操作。例如,如果这些监控结果指出该NTB路径和该BMC路径均正常,则该节点可以再次交换节点信息;如果这些监控结果指出该NTB路径异常且该BMC路径正常,则该节点可以信任并且使用从该BMC路径取得的节点信息所指出的(该远端节点的)状态;如果这些监控结果指出该NTB路径正常且该BMC路径异常,则该节点可以信任并且使用从该NTB路径取得的节点信息所指出的(该远端节点的)状态;以及如果这些监控结果指出该NTB路径和该BMC路径均异常,这可以被视为一裂脑状况(Split-Brain condition),则该节点可以进行裂脑处理。针对该裂脑处理,当该节点正在扮演待命节点的角色时,该节点可以自行关闭;以及当该节点正在扮演现用节点的角色时,该节点可以进入现用节点的角色的独立运转状态。
针对该裂脑状况和一单节点OS崩溃状况(One-Node-OS-Crash condition)(其中发生了两个节点100A和100B的其中之一的OS崩溃)的某些讨论可以描述如下:
(1)在针对该裂脑状况的情况(Case)#1中,发生NTB断开连接(例如,由于物理损坏、OS问题等,该NTB路径是不可使用的),并且,以图10所示的架构为例,节点100B不能读取本地暂存器(例如,节点100B的8位元暂存器)并且不能写入(或读取)远端暂存器(例如,节点100A的8位元暂存器);
(2)在针对该裂脑状况的情况#2中,发生NTB断开连接(例如,由于物理损坏、OS问题等,该NTB路径是不可使用的),并且,以图10所示的架构为例,节点100B可以读取本地暂存器(例如,节点100B的8位元暂存器),但是本地暂存器的锁定位元始终为0,并且节点100B不能写入(或读取)远端暂存器(例如,节点100A的8位元暂存器);
(3)在针对该单节点OS崩溃状况的情况#3中,发生NTB断开连接(例如,由于物理损坏、OS问题等,该NTB路径是不可使用的),并且,以图10所示的架构为例,节点100B可以读取本地暂存器(例如,节点100B的8位元暂存器),但是本地暂存器的锁定位元始终为0,并且节点100B可以写入远端暂存器(例如,节点100A的8位元暂存器),但是远端暂存器的锁定位元始终为1;
其中,AFA伺服器100很难遇到该裂脑状况(例如,情况#1和#2),这是因为该BMC路径相当稳健。根据针对AFA伺服器100的某些实验,该裂脑状况永远不会发生。
图11是依据本发明一实施例所绘示的用以进行该AFA伺服器的节点信息交换管理的方法的流程图。两个节点100A和100B的任一节点(例如每一节点)可以透过该至少二通信路径的至少一部分(例如一部分或全部)进行节点信息交换,其中该至少二通信路径中的任何一个可以被视为该至少二通信路径中的另一个的备用通信路径。例如,该任一节点的节点信息指出该任一节点在该HA架构中的角色及状态,以及该远端节点的节点信息指出该远端节点在该HA架构中的角色及状态。
在步骤S50中,该任一节点可以利用运行在该任一节点上的多个程序模块中的该硬件(HW)管理器模块来控制该任一节点的该硬件层中的多个硬件(HW)组件,以建立该任一节点和两个节点100A和100B中的该远端节点之间的该BMC路径,其中该BMC路径是建立于该任一节点的该BMC以及该远端节点的一对应的BMC(例如,BMC 150A和150B)之间。
在步骤S51中,该任一节点和该远端节点可以利用该至少二通信路径来交换两个节点100A和100B之各自的节点信息,以依据两个节点100A和100B之所述各自的节点信息控制AFA伺服器100的该HA架构,来持续地提供服务给AFA伺服器100的用户,其中该至少二通信路径包含该NTB路径以及该BMC路径,并且该NTB路径是建立于该任一节点的该NTB通信电路以及该远端节点的一对应的NTB通信电路(例如,NTB通信电路140A和140B)之间。例如,两个节点100A和100B之所述各自的节点信息的每一者是可以被编码为该二进制代码,以供在两个节点100A和100B之间交换。
在步骤S52中,该任一节点可以检查是否发生该至少二通信路径中的任一通信路径的故障。如果是,则进入步骤S53。如果否,则进入步骤S51。
在步骤S53中,因应该至少二通信路径中的该任一通信路径(例如,该NTB路径或该BMC路径)的故障,该任一节点和该远端节点可以利用该至少二通信路径中的至少一剩余的通信路径(例如,该BMC路径或该NTB路径)来交换两个节点100A和100B之所述各自的节点信息,以依据两个节点100A和100B之所述各自的节点信息控制AFA伺服器100的该HA架构,来持续地提供该服务给该用户。
根据本实施例,该任一节点可以利用该任一节点的该硬件层中的多个硬件组件中的该暂存器电路(例如,暂存器电路152A和152B的其中之一,尤其,其内的该至少一暂存器,诸如这个节点中的8位元暂存器)储存两个节点100A和100B之所述各自的节点信息的其中一者或多者。例如,该远端节点可以透过该BMC路径将该远端节点的节点信息写入至该任一节点的该暂存器电路,以供该任一节点读取,并且该任一节点可以透过该BMC路径将该任一节点的节点信息写入至该远端节点的一对应的暂存器电路(例如,暂存器电路152A和152B中的另一个,尤其,其内的该至少一暂存器,诸如这个节点中的8位元暂存器),以供该远端节点读取。又例如,该任一节点可以将该任一节点的节点信息写入至该任一节点的该暂存器电路,以供该远端节点透过该BMC路径读取,并且该远端节点可以将该远端节点的节点信息写入至该远端节点的该对应的暂存器电路,以供该任一节点透过该BMC路径读取。为了简明起见,于本实施例中类似的内容在此不重复赘述。
为了更好的理解,该方法可以用图11所示的工作流程来说明,但是本发明不限于此。依据某些实施例,可以在图11所示的工作流程中增加、删除或修改一个或多个步骤。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (11)

1.一种用以进行一全快闪存储器阵列(All Flash Array,AFA)伺服器的节点信息交换管理的方法,该方法包含:
利用运行在该全快闪存储器阵列伺服器的多个节点中的任一节点上的多个程序模块中的一硬件管理器模块来控制该任一节点的一硬件层中的多个硬件组件,以建立该任一节点和该多个节点中的一远端节点之间的一主机板管理控制器(Board ManagementController,BMC)路径,其中该任一节点的该硬件层中的该多个硬件组件包含一主机板管理控制器,以及该主机板管理控制器路径是建立于该任一节点的该主机板管理控制器以及该远端节点的一对应的主机板管理控制器之间;
利用至少二通信路径来交换该任一节点和该远端节点之各自的节点信息,以依据该任一节点和该远端节点之所述各自的节点信息控制该全快闪存储器阵列伺服器的高可用性(high availability,HA)架构,来持续地提供服务给该全快闪存储器阵列伺服器的用户,其中该至少二通信路径包含一非透明网桥(Non-Transparent Bridge,NTB)路径以及该主机板管理控制器路径,以及该非透明网桥路径是建立于该任一节点的一非透明网桥通信电路以及该远端节点的一对应的非透明网桥通信电路之间;以及
因应该至少二通信路径中的任一通信路径的故障,利用该至少二通信路径中的至少一剩余的通信路径来交换该任一节点和该远端节点之所述各自的节点信息,以依据该任一节点和该远端节点之所述各自的节点信息控制该全快闪存储器阵列伺服器的该高可用性架构,来持续地提供该服务给该用户。
2.如权利要求1所述的方法,其特征在于,该任一节点的该硬件层中的该多个硬件组件另包含一暂存器电路;以及该任一节点利用该暂存器电路储存该任一节点的节点信息以及该远端节点的节点信息的其中一者或多者。
3.如权利要求1所述的方法,其特征在于,该任一节点的该硬件层中的该多个硬件组件另包含一暂存器电路;以及该远端节点透过该主机板管理控制器路径将该远端节点的节点信息写入至该任一节点的该暂存器电路,以供该任一节点读取。
4.如权利要求3所述的方法,其特征在于,该任一节点透过该主机板管理控制器路径将该任一节点的节点信息写入至该远端节点的一对应的暂存器电路,以供该远端节点读取。
5.如权利要求1所述的方法,其特征在于,该任一节点的该硬件层中的该多个硬件组件另包含一暂存器电路;以及该任一节点透过该主机板管理控制器路径将该任一节点的节点信息写入至该远端节点的一对应的暂存器电路,以供该远端节点读取。
6.如权利要求1所述的方法,其特征在于,该任一节点的该硬件层中的该多个硬件组件另包含一暂存器电路;以及该任一节点将该任一节点的节点信息写入至该任一节点的该暂存器电路,以供该远端节点透过该主机板管理控制器路径读取。
7.如权利要求6所述的方法,其特征在于,该远端节点将该远端节点的节点信息写入至该远端节点的一对应的暂存器电路,以供该任一节点透过该主机板管理控制器路径读取。
8.如权利要求1所述的方法,其特征在于,该任一节点的该硬件层中的该多个硬件组件另包含一暂存器电路;以及该远端节点将该远端节点的节点信息写入至该远端节点的一对应的暂存器电路,以供该任一节点透过该主机板管理控制器路径读取。
9.如权利要求1所述的方法,其特征在于,该任一节点的节点信息指出该任一节点在该高可用性架构中的角色及状态,以及该远端节点的节点信息指出该远端节点在该高可用性架构中的角色及状态。
10.如权利要求1所述的方法,其特征在于,该任一节点和该远端节点之所述各自的节点信息的每一者是被编码为二进制代码(binary code),以供在该任一节点和该远端节点之间交换。
11.一种全快闪存储器阵列(All Flash Array,AFA)伺服器,包含:
多个节点,其中该多个节点的任一节点包含:
至少一处理器,用以在多个程序模块的控制下控制该任一节点的操作;以及
多个硬件组件,在该任一节点的一硬件层中,其中该任一节点的该硬件层中的该多个硬件组件包含一主机板管理控制器(Board Management Controller,BMC)以及一非透明网桥(Non-Transparent Bridge,NTB)通信电路;以及
多个储存装置,包含多组储存装置,以供为该全快闪存储器阵列伺服器储存数据;
其中:
该任一节点利用运行在该任一节点上的该多个程序模块中的一硬件管理器模块来控制该任一节点的该硬件层中的该多个硬件组件,以建立该任一节点和该多个节点中的一远端节点之间的一主机板管理控制器路径,其中该主机板管理控制器路径是建立于该任一节点的该主机板管理控制器以及该远端节点的一对应的主机板管理控制器之间;
该任一节点和该远端节点利用至少二通信路径来交换该任一节点和该远端节点之各自的节点信息,以依据该任一节点和该远端节点之所述各自的节点信息控制该全快闪存储器阵列伺服器的高可用性(high availability,HA)架构,来持续地提供服务给该全快闪存储器阵列伺服器的用户,其中该至少二通信路径包含一非透明网桥路径以及该主机板管理控制器路径,以及该非透明网桥路径是建立于该任一节点的该非透明网桥通信电路以及该远端节点的一对应的非透明网桥通信电路之间;以及
因应该至少二通信路径中的任一通信路径的故障,该任一节点和该远端节点利用该至少二通信路径中的至少一剩余的通信路径来交换该任一节点和该远端节点之所述各自的节点信息,以依据该任一节点和该远端节点之所述各自的节点信息控制该全快闪存储器阵列伺服器的该高可用性架构,来持续地提供该服务给该用户。
CN202110230844.5A 2020-03-02 2021-03-02 全快闪存储器阵列伺服器的节点信息交换管理方法与设备 Active CN113342263B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062983769P 2020-03-02 2020-03-02
US62/983,769 2020-03-02
US17/151,220 2021-01-18
US17/151,220 US11194678B2 (en) 2020-03-02 2021-01-18 Method and apparatus for performing node information exchange management of all flash array server

Publications (2)

Publication Number Publication Date
CN113342263A true CN113342263A (zh) 2021-09-03
CN113342263B CN113342263B (zh) 2024-07-26

Family

ID=77463118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110230844.5A Active CN113342263B (zh) 2020-03-02 2021-03-02 全快闪存储器阵列伺服器的节点信息交换管理方法与设备

Country Status (3)

Country Link
US (2) US11194678B2 (zh)
CN (1) CN113342263B (zh)
TW (1) TWI766593B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194678B2 (en) * 2020-03-02 2021-12-07 Silicon Motion, Inc. Method and apparatus for performing node information exchange management of all flash array server
US12079154B2 (en) * 2023-01-10 2024-09-03 Dell Products, L.P. Non-transparent bridge selection

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100074264A1 (en) * 2008-09-25 2010-03-25 Kimberly Davis Method and apparatus to facilitate system to system protocol exchange in back to back non-transparent bridges
CN102081561A (zh) * 2009-11-30 2011-06-01 英特尔公司 在存储系统的冗余存储控制器之间镜像数据
US20110238909A1 (en) * 2010-03-29 2011-09-29 Pankaj Kumar Multicasting Write Requests To Multiple Storage Controllers
US8725923B1 (en) * 2011-03-31 2014-05-13 Emc Corporation BMC-based communication system
US20150304423A1 (en) * 2014-04-21 2015-10-22 Hitachi, Ltd. Computer system
US20170177225A1 (en) * 2015-12-21 2017-06-22 Nimble Storage, Inc. Mid-level controllers for performing flash management on solid state drives
US20180232142A1 (en) * 2017-02-13 2018-08-16 Hewlett Packard Enterprise Development Lp Hyperconverged infrastructure supporting storage and compute capabilities
CN110232039A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 可安装在机架上的数据存储系统和可编程逻辑装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004095304A1 (en) * 2003-04-23 2004-11-04 Dot Hill Systems Corporation Network storage appliance with integrated redundant servers and storage controllers
CN102629225B (zh) * 2011-12-31 2014-05-07 华为技术有限公司 双控制器磁盘阵列、存储系统以及数据存储路径切换方法
CN104102559B (zh) * 2014-07-16 2016-07-06 浪潮电子信息产业股份有限公司 一种基于冗余心跳链路和对端重启链路的双控制器存储系统
CN105334920B (zh) * 2015-10-29 2019-03-12 上海飞斯信息科技有限公司 一种pcie通用信号交换板
CN106936616B (zh) * 2015-12-31 2020-01-03 伊姆西公司 备份通信方法和装置
US10346041B2 (en) * 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US10418121B2 (en) * 2017-03-27 2019-09-17 Sk Hynix Memory Solutions Inc. Memory system with diagnose command and operating method thereof
US10877858B2 (en) * 2018-10-19 2020-12-29 Oracle International Corporation Method and system for a speed-up cluster reconfiguration time via a generic fast self node death detection
US10983930B1 (en) * 2020-01-14 2021-04-20 EMC IP Holding Company LLC Efficient non-transparent bridge (NTB) based data transport
US11194678B2 (en) * 2020-03-02 2021-12-07 Silicon Motion, Inc. Method and apparatus for performing node information exchange management of all flash array server

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100074264A1 (en) * 2008-09-25 2010-03-25 Kimberly Davis Method and apparatus to facilitate system to system protocol exchange in back to back non-transparent bridges
CN101814060A (zh) * 2008-09-25 2010-08-25 英特尔公司 在背靠背非透明桥中进行系统间协议交换的方法和装置
CN102081561A (zh) * 2009-11-30 2011-06-01 英特尔公司 在存储系统的冗余存储控制器之间镜像数据
US20110238909A1 (en) * 2010-03-29 2011-09-29 Pankaj Kumar Multicasting Write Requests To Multiple Storage Controllers
US8725923B1 (en) * 2011-03-31 2014-05-13 Emc Corporation BMC-based communication system
US20150304423A1 (en) * 2014-04-21 2015-10-22 Hitachi, Ltd. Computer system
US20170177225A1 (en) * 2015-12-21 2017-06-22 Nimble Storage, Inc. Mid-level controllers for performing flash management on solid state drives
US20180232142A1 (en) * 2017-02-13 2018-08-16 Hewlett Packard Enterprise Development Lp Hyperconverged infrastructure supporting storage and compute capabilities
CN110232039A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 可安装在机架上的数据存储系统和可编程逻辑装置
TW201939292A (zh) * 2018-03-05 2019-10-01 南韓商三星電子股份有限公司 可安裝在機架上的資料儲存系統和可程式化邏輯裝置

Also Published As

Publication number Publication date
TWI766593B (zh) 2022-06-01
TW202134891A (zh) 2021-09-16
US11194678B2 (en) 2021-12-07
US20220066889A1 (en) 2022-03-03
CN113342263B (zh) 2024-07-26
US11636012B2 (en) 2023-04-25
US20210271576A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
TWI773155B (zh) 用以進行全快閃記憶體陣列伺服器的碟管理的方法與設備
TWI773152B (zh) 伺服器與應用於伺服器的控制方法
US11636012B2 (en) Method and apparatus for performing node information exchange management of all flash array server
CN113342258B (zh) 用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备
TWI756007B (zh) 用以進行全快閃記憶體陣列伺服器的高可用性管理的方法與設備
CN113342261B (zh) 伺服器与应用于伺服器的控制方法
CN113342260B (zh) 伺服器与应用于伺服器的控制方法
US11809293B2 (en) Storage node failure detection based on register values for an all flash array server
CN113345495B (zh) 伺服器及相关的控制方法
TWM592626U (zh) 用於儲存區域網路的節點裝置
CN113342257B (zh) 伺服器及相关的控制方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant