CN106527961B - 用于保证数据一致性的方法和装置 - Google Patents
用于保证数据一致性的方法和装置 Download PDFInfo
- Publication number
- CN106527961B CN106527961B CN201510587474.5A CN201510587474A CN106527961B CN 106527961 B CN106527961 B CN 106527961B CN 201510587474 A CN201510587474 A CN 201510587474A CN 106527961 B CN106527961 B CN 106527961B
- Authority
- CN
- China
- Prior art keywords
- configuration information
- storage processor
- request
- storage
- affairs
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了一种用于保证数据一致性的方法和装置。该方法包括:当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;响应于接收到该请求,将第一存储处理器的状态设置为更新对端状态,并且向第二存储处理器发送该配置信息,以使得第一存储处理器和第二存储处理器中的配置信息保持一致;以及响应于成功发送该配置信息,将状态再次设置为就绪状态。本公开的实施例能够被实现在具有一个或多个存储处理器以及共享存储设备的架构中,以保证配置数据在该一个或多个存储处理器以及该共享存储设备中的一致性。
Description
技术领域
本公开的实施例总体涉及保证数据的一致性,更具体地,涉及用于保证数据一致性的方法和装置。
背景技术
在流行的存储产品中,通常会利用多个存储处理器(SP,又称为处理节点)附接共享磁盘阵列的架构,以提高存储产品的计算能力和输入输出(IO)吞吐率。例如,图1图示了具有共享磁盘阵列的两个存储处理器的存储系统100的架构图。如图1所示,在该存储系统架构中,定义和实现了拓扑服务以管理独立磁盘冗余阵列组(RAID Group,简称为RG)对象、逻辑单元号(LUN)对象以及供应虚拟磁盘(Provision Visual Disk,简称为PVD)对象。其中,RG对象被用于实现RAID算法,LUN对象被用于向上层输出RG的区域,而PVD对象被用于从由供应商提供的不同磁盘中抽象出一些公共的磁盘属性。如图1所示,为了管理RG/LUN/PVD的配置,引入了数据库服务(Database Service),数据库服务需要将用于RG/LUN/PVD配置的数据条目缓存在SP 101和SP 102上,同时还需要将配置写入共享磁盘阵列103中。利用共享磁盘阵列103中的永久配置,在系统启动时,SP 101和SP 102可以从共享磁盘阵列103加载RG/LUN/PVD的配置。
然而,由于在图1的存储系统架构中采用了两个SP(即,图1中所示的SP 101和SP102),即RG/LUN/PVD的配置会被缓存在这两个SP中,同时配置还被存储在共享磁盘阵列103中,针对如何保证配置在这三处中的拷贝之间的一致性将存在挑战。
因此,本领域中需要一种有效的保证数据一致性的方法来解决上述问题。
发明内容
本公开的实施例旨在提供一种用于保证数据一致性的方法和装置,以解决上述问题。
根据本公开的第一方面,提供了一种用于保证数据一致性的方法,包括:当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;响应于接收到所述请求,将所述第一存储处理器的状态设置为更新对端状态,并且向所述第二存储处理器发送所述配置信息,以使得所述第一存储处理器和所述第二存储处理器中的所述配置信息保持一致;以及响应于成功发送所述配置信息,将所述状态再次设置为所述就绪状态。
在一些实施例中,所述方法还包括:由所述第一存储处理器从共享存储设备读取所述配置信息;创建与所述配置信息相对应的存储对象的拓扑结构;以及响应于成功创建所述拓扑结构,将所述第一存储处理器的所述状态设置为所述就绪状态。
在一些实施例中,所述方法还包括:当所述状态再次被设置为所述就绪状态时,响应于接收到更改所述配置信息的请求,由所述第一存储处理器发起用于更改所述配置信息的事务;以及向所述第二存储处理器发送加入所述事务的请求。
在一些实施例中,所述方法还包括:更改所述配置信息在所述第一存储处理器的存储器内的拷贝,并且将所述更改加入所述事务;以及向所述第二存储处理器发送请求,所述请求用于更改所述配置信息在所述第二存储处理器的存储器内的拷贝。
在一些实施例中,所述方法还包括:由所述第一存储处理器向所述共享存储设备请求用于更改后的所述配置信息的标识符,所述标识符指示所述配置信息在所述共享存储设备中存储的位置;以及向所述第二存储处理器通知所述标识符。
在一些实施例中,所述方法还包括:通过提交所述事务向所述共享存储设备写入更改后的所述配置信息,以使得所述第一存储处理器、所述第二存储处理器以及所述共享存储设备中的所述配置信息保持一致。
在一些实施例中,所述方法还包括:响应于完成所述事务的提交,由所述第一存储处理器将所述事务无效;以及向所述第二存储处理器发送将所述事务无效的请求。
根据本公开的第二方面,提供了一种用于保证数据一致性的方法,包括:当第二存储处理器处于等待配置状态时,向第一存储处理器发送针对配置信息的请求;以及从所述第一存储处理器接收所述配置信息,其中所述第二存储处理器和所述第一存储处理器中的所述配置信息保持一致。
在一些实施例中,所述方法还包括:响应于接收到所述配置信息,创建与所述配置信息相对应的存储对象的拓扑结构;以及响应于成功创建所述拓扑结构,将所述第二存储处理器的状态设置为就绪状态。
在一些实施例中,所述方法还包括:当所述状态为所述就绪状态时,从所述第一存储处理器接收加入事务的请求,并且加入所述事务,其中所述事务用于更改所述配置信息。
在一些实施例中,所述方法还包括:从所述第一存储处理器接收请求,所述请求用于更改所述配置信息在所述第二存储处理器的存储器内的拷贝;以及响应于接收到所述请求,更改所述拷贝。
在一些实施例中,所述方法还包括:从所述第一存储处理器接收标识符,所述标识符指示更改后的配置信息在所述共享存储设备中存储的位置。
在一些实施例中,所述方法还包括:从所述第一存储处理器接收将所述事务无效的请求;以及响应于接收到所述请求,将所述事务无效。
在一些实施例中,所述方法还包括:响应于确定所述第一存储处理器无响应,由所述第二存储处理器充当所述第一存储处理器。
根据本公开的第三方面,提供了一种用于保证数据一致性的装置,包括:请求接收模块,被配置为当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;请求响应模块,被配置为响应于接收到所述请求,将所述第一存储处理器的状态设置为更新对端状态,并且向所述第二存储处理器发送所述配置信息,以使得所述第一存储处理器和所述第二存储处理器中的所述配置信息保持一致;以及第一状态设置模块,被配置为响应于成功发送所述配置信息,将所述状态再次设置为所述就绪状态。
在一些实施例中,所述装置还包括:配置读取模块,被配置为由所述第一存储处理器从共享存储设备读取所述配置信息;拓扑创建模块,被配置为创建与所述配置信息相对应的存储对象的拓扑结构;以及第二状态设置模块,被配置为响应于成功创建所述拓扑结构,将所述第一存储处理器的所述状态设置为所述就绪状态。
在一些实施例中,所述装置还包括:事务发起模块,被配置为当所述状态被再次设置为所述就绪状态时,响应于接收到更改所述配置信息的请求,由所述第一存储处理器发起用于更改所述配置信息的事务;以及第一请求发送模块,被配置为向所述第二存储处理器发送加入所述事务的请求。
在一些实施例中,所述装置还包括:配置更改模块,被配置为更改所述配置信息在所述第一存储处理器的存储器内的拷贝,并且将所述更改加入所述事务;以及第二请求发送模块,被配置为向所述第二存储处理器发送请求,所述请求用于更改所述配置信息在所述第二存储处理器的存储器内的拷贝。
在一些实施例中,所述装置还包括:标识符请求模块,被配置为由所述第一存储处理器向所述共享存储设备请求用于更改后的所述配置信息的标识符,所述标识符指示更改后的所述配置信息在所述共享存储设备中存储的位置;以及标识符通知模块,被配置为向所述第二存储处理器通知所述标识符。
在一些实施例中,所述装置还包括:事务提交模块,被配置为通过提交所述事务向所述共享存储设备写入所述配置信息,以使得所述第一存储处理器、所述第二存储处理器以及所述共享存储设备中的所述配置信息保持一致。
在一些实施例中,所述装置还包括:事务无效模块,被配置为响应于完成所述事务的提交,由所述第一存储处理器将所述事务无效;以及第三请求发送模块,被配置为向所述第二存储处理器发送将所述事务无效的请求。
根据本公开的第四方面,提供了一种用于保证数据一致性的装置,包括:第四请求发送模块,被配置当第二存储处理器处于等待配置状态时,向第一存储处理器发送针对配置信息的请求;以及配置接收模块,被配置为从所述第一存储处理器接收所述配置信息,其中所述第二存储处理器和所述第一存储处理器中的所述配置信息保持一致。
根据本公开的第五方面,提供了一种用于保证数据一致性的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行一种方法的任意步骤。
根据本公开的第六方面,提供了一种用于保证数据一致性的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行另一种方法的任意步骤。
本公开的实施例能够被实现在具有一个或多个存储处理器以及共享存储设备的架构中,以保证配置数据在一个或多个存储处理器以及共享存储设备中的拷贝之间的一致性。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:
图1图示了具有共享磁盘阵列的两个存储处理器的存储系统100的架构图;
图2图示了根据本公开的实施例的两个存储处理器之间的状态转换的示意图;
图3图示了根据本公开的实施例的用于保持数据一致性的方法300的流程图;
图4图示了根据本公开的实施例的用于保持数据一致性的方法400的流程图;
图5图示了根据本公开的实施例的用于保持数据一致性的方法500的流程图;
图6图示了根据本公开的实施例在存储处理器发生故障转移的情况下如何确定关于进行中事务的动作的方法600的流程图。
图7图示了根据本公开的实施例的用于保持数据一致性的装置700的框图;
图8图示了根据本公开的实施例的用于保持数据一致性的装置800的框图;以及
图9图示了适于实现本公开的示例实施例的计算机系统900的框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。应当理解,描述这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
如上所述,图1图示了具有共享磁盘阵列的两个存储处理器的存储系统100。在存储系统100中,存在具有共享磁盘阵列103的两个SP,即SP 101和SP 102。两个SP之间可以通过消息接口104进行交互。在SP的自举(bootstrapping,也称为引导)期间,两个SP通过握手来确定各自的角色。通常,最先启动的SP被用作主动SP(也称为第一SP),而另一SP被用作被动SP(也称为第二SP)。为了便于描述,以下将SP 101作为主动SP,即第一SP;而将SP 102作为被动SP,即第二SP。根据本公开的实施例,为了保证配置信息在SP101和SP 102以及共享磁盘阵列103中的拷贝之间的一致性,仅主动SP可以从共享磁盘阵列103读取配置信息,被动SP需要从主动SP请求配置信息。SP(例如,其中的拓扑服务)可以利用该配置信息来创建存储对象(例如,RG/LUN/PVD)的拓扑结构。
此外,根据本公开的实施例,定义了SP的数据库服务状态来跟踪数据库服务的生命周期。数据库服务状态被主要用于控制和管理SP101和SP 102之间的配置信息的同步。数据库服务状态包括:初始化状态、就绪状态、更新对端状态、等待配置状态和失败状态。例如,数据库服务使用就绪状态来告知其他部件其准备好为配置改变请求提供服务。在向被动SP(即,SP 102)更新配置期间,主动SP(即,SP 101)的数据库服务状态变为更新对端状态。当数据库服务状态不为就绪状态时,不允许改变配置。换言之,在SP 101向SP 102发送配置信息期间,不允许改变配置,从而不会引起配置信息在SP101、SP102和共享磁盘阵列103中的拷贝之间的数据不一致。
图2图示了根据本公开的实施例的两个存储处理器之间的状态转换的示意图。下面结合图1来描述图2中的主动SP(例如,图1中的SP 101)和被动SP(例如,图2中的SP 102)之间的状态转换。当主动SP的数据库服务开始初始化时,其状态为初始化状态。然后,主动SP的数据库服务将从共享磁盘阵列(例如,图1中的共享磁盘阵列103)上加载配置信息。如果加载失败,则主动SP的数据库服务状态变为失败状态;如果加载成功,并且主动SP的拓扑服务利用该配置信息创建存储对象的拓扑结构成功,则主动SP的数据库服务状态变为就绪状态。如果被动SP在主动SP之后启动成功,则主动SP的数据库服务将在其进入就绪状态后接收用于向对端发送配置的请求。主动SP的数据库服务状态将变为更新对端状态并且向被动SP发送从共享磁盘阵列加载的配置信息。在成功发送该配置信息之后,主动SP将变回就绪状态。对于被动SP而言,被动SP初始地将其自身设置为初始化状态并且进行一些资源初始化的工作。然后,被动SP将其自身设置为等待配置状态,并且通过消息接口(例如,图1中的消息接口)向主动SP发送配置请求并且等待来自主动SP的配置信息直到主动SP向其发送配置信息或者发现主动SP无响应。如果没有接收到配置信息或者得到不完整的配置信息,则被动SP将其自身状态设置为失败状态。如果接收到来自主动SP的所有配置信息,则被动SP根据该配置信息创建存储对象的拓扑结构并且将其数据库服务状态设置为就绪状态。
图3图示了根据本公开的实施例的用于保持数据一致性的方法300的流程图。下面结合图1和图2来描述图3中的步骤。方法300可以由图1中的SP 101(即,主动SP)来执行。
根据本公开的实施例,在步骤S301执行之前,由SP 101从共享磁盘阵列103读取配置信息,然后创建与该配置信息相对应的存储对象的拓扑结构,并且响应于成功创建该拓扑结构,将SP 101的状态设置为就绪状态。
在步骤S301,当SP 101处于就绪状态时,从SP 102接收针对配置信息的请求。然后,方法300进行至步骤S302。在步骤S302,响应于接收到该请求,将SP 101的状态(即,数据库服务状态)设置为更新对端状态,并且向SP 102发送配置信息,以使得SP 101和SP102中的该配置信息保持一致。然后,方法300进行至步骤S303。在步骤S303,响应于成功发送该配置信息,将SP101的状态再次设置为就绪状态。
至此,方法300结束。
图4图示了根据本公开的实施例的用于保持数据一致性的方法400的流程图。下面结合图1和图2来描述图3中的步骤。方法400可以由图1中的SP 102(即,被动SP)来执行。
在步骤S401,当SP 102处于等待配置状态时,向SP 101发送针对配置信息的请求。然后,方法400进行至步骤S402。在步骤S402,从SP 101接收该配置信息,其中SP 102和SP101中的该配置信息保持一致。
根据本公开的实施例,方法400还可以包括:响应于接收到配置信息,创建与该配置信息相对应的存储对象的拓扑结构;以及响应于成功创建该拓扑结构,将SP 102的状态设置为就绪状态。
至此,方法400结束。
以上描述了在两个SP的启动阶段,从共享存储设备读取配置信息的过程。通过上述方法,可以保证配置信息在两个SP及共享存储设备中的数据一致性。在存储系统正常工作期间,可能需要对配置信息进行更改或者重新创建(例如,创建RG)。为了简化描述,以下将参考图5来描述在对配置信息进行更改时,如何保证配置信息在两个SP及共享存储设备中的数据一致性。根据本公开的实施例,重新创建配置信息的过程与更改配置信息的过程类似,在此不作进一步的详细描述。
图5图示了根据本公开的实施例的用于保持数据一致性的方法500的流程图。以下结合图1来描述方法500的各个步骤。以下为了方便讨论,同时描述两个SP,即,SP 101和SP102。将要注意,在图5中,左侧的各个步骤由SP 101执行,而右侧的各个步骤由SP 102执行。
在步骤S501,当SP 101的状态为就绪状态时,响应于接收到更改配置信息的请求,由SP 101发起用于更改配置信息的事务。然后,在步骤S502,向SP 102发送加入该事务的请求。
相应地,在步骤S511,当SP 102的状态为就绪状态时,从SP 101接收到加入事务的请求,并且加入该事务。
然后,方法进行至步骤S503。在步骤S503,SP 101更改配置信息在其存储器内的拷贝,并且将该更改加入事务。例如,SP 101可以更改其存储器内的数据库条目中的配置信息。然后,在步骤S504,向SP 102发送请求,该请求用于更改配置信息在SP 102的存储器内的拷贝。
相应地,在步骤S512,SP 102从SP 101接收用于更改配置信息在SP 102的存储器内的拷贝的请求。然后,在步骤S513,响应于接收到该请求,更改配置信息的拷贝。例如,SP102可以更改其存储器内的对应数据库条目中的配置信息。
然后,方法进行至步骤S505。在步骤S505,由SP 101向共享存储设备请求用于更改后的配置信息的标识符(ID),该标识符指示配置信息在共享存储设备中存储的位置。例如,SP 101可以从共享磁盘阵列103请求用于更改后的配置信息的数据库条目ID。然后,在步骤S506,向SP 102通知该标识符。
相应地,在步骤S514,SP 102从SP 101接收标识符,该标识符指示更改后的配置信息在共享存储设备中存储的位置。对于SP 102而言,知道SP 101试图在共享存储设备中存储更改后的配置信息的位置是有必要的。如以下将进一步详细描述的,当SP 101无响应时,SP 102必须知道该信息以继续事务,或者将事务回滚(rollback,即回到事务执行前的状态)。
然后,方法进行至步骤S507。在步骤S507,SP 101通过提交事务向共享存储设备写入更改后的配置信息,以使得SP 101、SP 102以及共享磁盘阵列103中的配置信息保持一致。根据本公开的实施例,在提交事务之前,可以针对想要保存到磁盘的数据库条目写日志(journal)。在写完日志体(journal body,即条目中的数据)后,将日志头(journal head)设置为有效(诸如,某个特定值),以保证磁盘上的IO是事务性的;而在提交事务之后将日志头设置为无效的。如此,当掉电或者系统失措(panic)时,将不会导致不完整的数据被留在磁盘上。
然后,方法进行至步骤S508。在步骤S508,响应于完成事务的提交,由SP 101将该事务无效。然后,在步骤S509,向SP 102发送将事务无效的请求。
相应地,在步骤S515,SP 102从SP 101接收将事务无效的请求。然后,在步骤S516,响应于接收到该请求,将该事务无效。
至此,方法500结束。
根据本公开的实施例,定义事务状态来同步两个SP之间的行为。事务状态包括:活动状态、准备提交状态、无效状态和回滚状态。主动SP(即图1中的SP 101)发起事务并且向被动SP(即图1中的SP102)同步操作。事务状态变为活动状态,指示可以接收对于配置信息(例如,数据库条目)的更改。在所有操作完成并且被加入到事务中以后,主动SP需要为每个数据库条目分配标识符并且向被动SP同步该标识符。被动SP将事务状态设置为准备提交状态。最后,在主动SP向磁盘写入数据后,主动SP将事务无效并且向被动SP同步该动作,使得被动SP将事务状态设置为无效。
返回图1,根据本公开的实施例,假设两个SP(即,SP 101和SP 102)正在启动时SP101(即,主动SP)在其数据库服务状态变为就绪状态前发生失措(即,无响应),则SP 102将充当主动SP。此时如果SP 102的数据库服务状态尚未到达就绪状态,则SP 102将从共享磁盘阵列103直接加载配置信息,并且利用该配置信息创建存储对象的拓扑结构,然后将其数据库服务状态设置为就绪状态。
根据本公开的实施例,假设两个SP(即,SP 101和SP 102)的数据库服务状态处于就绪状态时SP 101(即,主动SP)发生失措,则SP 102将充当主动SP。此时,如果事务正在修改数据库条目,则该事务将受到SP故障转移的影响。SP 102需要检查事务状态和数据库日志。如果必要,SP 102需要继续该事务或者将该事务回滚。
图6图示了根据本公开的实施例在存储处理器发生故障转移的情况下如何确定关于进行中事务的动作的方法600的流程图。
如图6所示,当主动SP发生失措使得被动SP充当主动SP时,被动SP(出于清楚的目的,下面称为当前SP)将检查事务状态(步骤S601)。如果事务不存在(例如,事务处于无效状态),则不进行任何动作(步骤S602)。如果事务为活动状态,意味着对端SP(即,已经发生失措的主动SP)已经发起了事务,但是事务尚未完成。在此情况下,当前SP将事务回滚(步骤S603),此时不需要处理磁盘上的数据,因为在故障注意之前对磁盘的操作尚未发生。如果事务为准备提交状态,意味着对端SP已经完成所有操作并且获得所有的条目标识符。此外,当前SP已经与所有要求的数据进行了同步。在此情况下,当前SP需要检查数据库日志,如果日志有效,则重放日志并且完成该事务(步骤S604);如果日志无效,则再次提交该事务(步骤S605),因为原主动SP已经完成数据对磁盘的写入并且将该日志无效。
图7图示了根据本公开的实施例的用于保证数据一致性的装置700的框图。装置700包括:请求接收模块701,被配置为当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;请求响应模块702,被配置为响应于接收到该请求,将第一存储处理器的状态设置为更新对端状态,并且向第二存储处理器发送该配置信息,以使得第一存储处理器和第二存储处理器中的该配置信息保持一致;以及第一状态设置模块703,被配置为响应于成功发送该配置信息,将状态再次设置为就绪状态。
根据本公开的实施例,装置700还包括:配置读取模块,被配置为由第一存储处理器从共享存储设备读取配置信息;拓扑创建模块,被配置为创建与该配置信息相对应的存储对象的拓扑结构;以及第二状态设置模块,被配置为响应于成功创建该拓扑结构,将第一存储处理器的状态设置为就绪状态。
根据本公开的实施例,装置700还包括:事务发起模块,被配置为当状态为就绪状态时,响应于接收到更改配置信息的请求,由第一存储处理器发起用于更改配置信息的事务;以及第一请求发送模块,被配置为向第二存储处理器发送加入该事务的请求。
根据本公开的实施例,装置700还包括:配置更改模块,被配置为更改配置信息在第一存储处理器的存储器内的拷贝,并且将该更改加入事务;以及第二请求发送模块,被配置为向第二存储处理器发送请求,该请求用于更改配置信息在第二存储处理器的存储器内的拷贝。
根据本公开的实施例,装置700还包括:标识符请求模块,被配置为由第一存储处理器向共享存储设备请求用于更改后的配置信息的标识符,该标识符指示更改后的配置信息在共享存储设备中存储的位置;以及标识符通知模块,被配置为向第二存储处理器通知该标识符。
根据本公开的实施例,装置700还包括:事务提交模块,被配置为通过提交事务向共享存储设备写入配置信息,以使得第一存储处理器、第二存储处理器以及共享存储设备中的配置信息保持一致。
根据本公开的实施例,装置700还包括:事务无效模块,被配置为响应于完成事务的提交,由第一存储处理器将事务无效;以及第三请求发送模块,被配置为向第二存储处理器发送将该事务无效的请求。
图8图示了根据本公开的实施例的用于保证数据一致性的装置800的框图。装置800包括:第四请求发送模块801,被配置当第二存储处理器处于等待配置状态时,向第一存储处理器发送针对配置信息的请求;以及配置接收模块802,被配置为从第一存储处理器接收配置信息,其中第二存储处理器和第一存储处理器中的配置信息保持一致。
出于清楚的目的,在图7和图8中没有示出装置700和800的某些可选模块。然而,应当理解,上文参考本公开的方法所描述的各个特征同样适用于装置700和800。而且,装置700和800中的各个模块可以是硬件模块,也可以是软件模块。例如,在某些实施例中,装置700和800可以部分或者全部利用软件和/或固件来实现,例如被实现为包含在计算机可读介质上的计算机程序产品。备选地或附加地,装置700和800可以部分或者全部基于硬件来实现,例如被实现为集成电路(IC)、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA)等。本公开的范围在此方面不受限制。
下面参考图9,其图示了适于实现本公开的示例实施例的计算机系统900的框图。如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有装置700和/或装置800操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本公开的实施例,参考图3描述的方法300、参考图4描述的方法400、参考图5描述的方法500和/或参考图6描述的方法600可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,所述计算机可执行指令在被执行时使得计算机执行方法300、400、500和/或600中的任意步骤。
综上所述,根据上述本公开的实施例,提供了一种用于保证数据一致性的方法和装置。本公开的实施例能够被实现在具有一个或多个存储处理器以及共享存储设备的架构中,以保证配置数据在一个或多个存储处理器以及共享存储设备中的拷贝之间的一致性。
本公开的实施例可以是方法、装置和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开的实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言——诸如Smalltalk、C++等,以及常规的过程式编程语言——诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的实施例的各个方面。
这里参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能够理解本文公开的各实施例。
Claims (12)
1.一种用于保证数据一致性的方法,包括:
当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;
响应于接收到所述请求,
将所述第一存储处理器设置为更新对端状态,并且
向所述第二存储处理器发送所述配置信息,以使得所述第一存储处理器和所述第二存储处理器中的所述配置信息保持一致;
响应于所述配置信息被发送,将所述第一存储处理器设置回到所述就绪状态;
由所述第一存储处理器从共享存储设备读取所述配置信息;
创建与所述配置信息相对应的存储对象的拓扑结构;
响应于所述拓扑结构被创建,将所述第一存储处理器设置为所述就绪状态;
响应于在所述第一存储处理器被设置回到所述就绪状态之后接收到更改所述配置信息的请求,由所述第一存储处理器发起用于更改所述配置信息的事务;
向所述第二存储处理器发送加入所述事务的请求;
更改所述配置信息在所述第一存储处理器的存储器内的第一拷贝;
将更改后的所述配置信息添加到所述事务;
向所述第二存储处理器发送更改所述配置信息在所述第二存储处理器的存储器内的第二拷贝的请求;
由所述第一存储处理器从所述共享存储设备请求用于更改后的所述配置信息的标识符,所述标识符指示所述配置信息在所述共享存储设备中存储的位置;以及
向所述第二存储处理器提供所述标识符。
2.根据权利要求1所述的方法,还包括:
通过提交所述事务向所述共享存储设备写入更改后的所述配置信息,以使得所述第一存储处理器、所述第二存储处理器以及所述共享存储设备中的所述配置信息保持一致。
3.根据权利要求2所述的方法,还包括:
响应于完成所述事务的提交,由所述第一存储处理器将所述事务无效;以及
向所述第二存储处理器发送将所述事务无效的请求。
4.一种用于保证数据一致性的方法,包括:
当第二存储处理器处于等待配置状态时,向第一存储处理器发送针对配置信息的请求;
从所述第一存储处理器接收所述配置信息,所述第二存储处理器中的所述配置信息和所述第一存储处理器中的所述配置信息保持一致;
响应于接收到所述配置信息,创建与所述配置信息相对应的存储对象的拓扑结构;
响应于所述拓扑结构被创建,将所述第二存储处理器设置为就绪状态;
当所述第二存储处理器处于所述就绪状态时,从所述第一存储处理器接收加入事务的请求,所述事务用于更改所述配置信息;
响应于接收到加入所述事务的所述请求,加入所述事务;
从所述第一存储处理器接收更改所述配置信息在所述第二存储处理器的存储器内的拷贝的请求;
响应于接收到更改所述拷贝的所述请求,更改所述配置信息在所述第二存储处理器的存储器内的所述拷贝;以及
从所述第一存储处理器接收用于更改后的所述配置信息的标识符,所述标识符指示更改后的所述配置信息在共享存储设备中存储的位置。
5.根据权利要求4所述的方法,还包括:
从所述第一存储处理器接收将所述事务无效的请求;以及
响应于接收到将所述事务无效的所述请求,将所述事务无效。
6.根据权利要求4所述的方法,还包括:
响应于确定所述第一存储处理器无响应,由所述第二存储处理器充当所述第一存储处理器。
7.一种用于保证数据一致性的装置,包括:
第一请求接收模块,被配置为当第一存储处理器处于就绪状态时,从第二存储处理器接收针对配置信息的请求;
请求响应模块,被配置为响应于接收到所述请求,
将所述第一存储处理器的状态设置为更新对端状态,并且
向所述第二存储处理器发送所述配置信息,以使得所述第一存储处理器和所述第二存储处理器中的所述配置信息保持一致;
第一状态设置模块,被配置为响应于所述配置信息被发送,将所述第一存储处理器设置回到所述就绪状态;
配置读取模块,被配置为从共享存储设备读取所述配置信息;
拓扑创建模块,被配置为创建与所述配置信息相对应的存储对象的拓扑结构;
第二状态设置模块,被配置为响应于所述拓扑结构被创建,将所述第一存储处理器设置为所述就绪状态;
事务发起模块,被配置为响应于在所述第一存储处理器被设置回到所述就绪状态之后接收到更改所述配置信息的请求,发起用于更改所述配置信息的事务;
第一请求发送模块,被配置为向所述第二存储处理器发送加入所述事务的请求;
配置更改模块,被配置为更改所述配置信息在所述第一存储处理器的存储器内的第一拷贝;
事务添加模块,被配置为将更改的所述配置信息添加到所述事务;
第二请求发送模块,被配置为向所述第二存储处理器发送更改所述配置信息在所述第二存储处理器的存储器内的第二拷贝的请求;
标识符请求模块,被配置为从所述共享存储设备请求用于更改后的所述配置信息的标识符,所述标识符指示更改后的所述配置信息在所述共享存储设备中存储的位置;以及
标识符提供模块,被配置为向所述第二存储处理器提供所述标识符。
8.根据权利要求7所述的装置,还包括:
事务提交模块,被配置为通过提交所述事务向所述共享存储设备写入更改后的所述配置信息,以使得所述第一存储处理器、所述第二存储处理器以及所述共享存储设备中的所述配置信息保持一致。
9.根据权利要求8所述的装置,还包括:
事务无效模块,被配置为响应于完成所述事务的提交,将所述事务无效;以及
第三请求发送模块,被配置为向所述第二存储处理器发送将所述事务无效的请求。
10.一种用于保证数据一致性的装置,包括:
第四请求发送模块,被配置为当第二存储处理器处于等待配置状态时,向第一存储处理器发送针对配置信息的请求;
配置接收模块,被配置为从所述第一存储处理器接收所述配置信息,所述第二存储处理器中的所述配置信息和所述第一存储处理器中的所述配置信息保持一致;
拓扑结构创建模块,被配置为响应于接收到所述配置信息,创建与所述配置信息相对应的存储对象的拓扑结构;
处理器设置模块,被配置为响应于所述拓扑结构被创建,将所述第二存储处理器设置为就绪状态;
第二请求接收模块,被配置为当所述第二存储处理器处于所述就绪状态时,从所述第一存储处理器接收加入事务的请求,所述事务用于更改所述配置信息;
事务加入模块,被配置为响应于接收到加入所述事务的所述请求,加入所述事务;
第三请求接收模块,被配置为从所述第一存储处理器接收更改所述配置信息在所述第二存储处理器的存储器内的拷贝的请求;
拷贝更改模块,被配置为响应于接收到更改所述拷贝的所述请求,更改所述配置信息在所述第二存储处理器的存储器内的所述拷贝;以及
标识符接收模块,被配置为从所述第一存储处理器接收用于更改后的所述配置信息的标识符,所述标识符指示更改后的所述配置信息在共享存储设备中存储的位置。
11.一种非瞬态计算机可读介质,包括机器可执行指令,所述机器可执行指令在被执行时,使得机器执行根据权利要求1-3中的任一项所述的方法中的步骤。
12.一种非瞬态计算机可读介质,包括机器可执行指令,所述机器可执行指令在被执行时,使得机器执行根据权利要求4-6中的任一项所述的方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587474.5A CN106527961B (zh) | 2015-09-15 | 2015-09-15 | 用于保证数据一致性的方法和装置 |
US15/263,763 US10101929B2 (en) | 2015-09-15 | 2016-09-13 | Maintaining data consistency |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587474.5A CN106527961B (zh) | 2015-09-15 | 2015-09-15 | 用于保证数据一致性的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106527961A CN106527961A (zh) | 2017-03-22 |
CN106527961B true CN106527961B (zh) | 2019-06-21 |
Family
ID=58260058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510587474.5A Active CN106527961B (zh) | 2015-09-15 | 2015-09-15 | 用于保证数据一致性的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10101929B2 (zh) |
CN (1) | CN106527961B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112350843B (zh) * | 2019-08-09 | 2022-02-08 | 烽火通信科技股份有限公司 | 一种基于虚拟组件的场景式割接方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101309299A (zh) * | 2007-03-27 | 2008-11-19 | 捷讯研究有限公司 | 允许多个sip应用的方法及系统 |
CN103038742A (zh) * | 2010-02-09 | 2013-04-10 | 谷歌公司 | 用于在分布式存储系统内动态复制数据的方法和系统 |
CN103049406A (zh) * | 2011-09-07 | 2013-04-17 | 苹果公司 | 用于i/o流量的一致性开关 |
CN103257933A (zh) * | 2006-03-30 | 2013-08-21 | 英特尔公司 | 无序处理器中的事务存储器执行的方法、设备和系统 |
CN104769555A (zh) * | 2012-06-18 | 2015-07-08 | 艾克特菲欧有限公司 | 增强型数据管理虚拟化系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011048630A1 (en) * | 2009-10-22 | 2011-04-28 | Hitachi,Ltd. | Storage apparatus having multiple storage controllers connected with multiple paths and method for verifying its connections |
US9027098B2 (en) * | 2013-03-14 | 2015-05-05 | Genband Us Llc | Systems, methods, and computer program products for recording service status of applications |
-
2015
- 2015-09-15 CN CN201510587474.5A patent/CN106527961B/zh active Active
-
2016
- 2016-09-13 US US15/263,763 patent/US10101929B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257933A (zh) * | 2006-03-30 | 2013-08-21 | 英特尔公司 | 无序处理器中的事务存储器执行的方法、设备和系统 |
CN101309299A (zh) * | 2007-03-27 | 2008-11-19 | 捷讯研究有限公司 | 允许多个sip应用的方法及系统 |
CN103038742A (zh) * | 2010-02-09 | 2013-04-10 | 谷歌公司 | 用于在分布式存储系统内动态复制数据的方法和系统 |
CN103049406A (zh) * | 2011-09-07 | 2013-04-17 | 苹果公司 | 用于i/o流量的一致性开关 |
CN104769555A (zh) * | 2012-06-18 | 2015-07-08 | 艾克特菲欧有限公司 | 增强型数据管理虚拟化系统 |
Also Published As
Publication number | Publication date |
---|---|
US20170075602A1 (en) | 2017-03-16 |
US10101929B2 (en) | 2018-10-16 |
CN106527961A (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170070598A1 (en) | Client-initiated leader election in distributed client-server systems | |
CN109345259A (zh) | 基于区块链的虚拟资源转移方法、装置、介质及电子设备 | |
CN112104723B (zh) | 一种多集群的数据处理系统及方法 | |
CN104660489B (zh) | 用于控制消息递送系统中的消息传递的方法和系统 | |
JP2021515293A (ja) | ブロックチェーン・ネットワークのインフラストラクチャのサービス・マネジメントのコンピュータ実装方法、システム、コンピュータ・プログラム、およびブロックチェーン・ネットワーク | |
US9483330B2 (en) | Trusted client-centric application architecture | |
CN107924293A (zh) | 写时拷贝重定向 | |
US10620928B2 (en) | Global cloud applications management | |
CN106899648A (zh) | 一种数据处理方法和设备 | |
US11297102B2 (en) | Systems and methods for situational localization of AIDA | |
US20200374292A1 (en) | Intelligent device security | |
US9342388B1 (en) | Dynamic queue alias | |
CN105808374B (zh) | 一种快照处理方法及相关设备 | |
US20210365939A1 (en) | Method and apparatus for processing account of blockchain network, and storage medium | |
US11354150B1 (en) | Utilizing maintenance event windows to determine placement of instances | |
CN109802934A (zh) | 一种基于容器云平台的mec系统 | |
CN109993528B (zh) | 一种用于管理委托任务的方法与设备 | |
JP2023036774A (ja) | 共有メモリのアクセス制御方法、共有メモリのアクセス制御装置、電子機器および自動運転車両 | |
CN108833140A (zh) | 交互式语音应答配置系统、方法、电子设备和存储介质 | |
CN110413200A (zh) | 数据同步的方法、设备和计算机程序产品 | |
CN103294556A (zh) | 用于主机系统准入控制的方法和系统 | |
CN106921721A (zh) | 一种服务器、会话管理方法和系统 | |
CN108513145A (zh) | 一种连麦直播的控制方法及装置 | |
CN108388524A (zh) | 用于缓存数据的方法和设备 | |
CN107153495B (zh) | 一种建立网元间业务链路的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200414 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Patentee before: EMC Corp. |