1.本技术涉及数据存储技术领域,尤其涉及一种数据存储方法、装置、系统、电子设备及存储介质。
背景技术:2.块存储,即将数据拆分成块,并单独存储各个块。块存储是将裸磁盘空间提供给主机使用的一种存储方式。块存储通常会被配置为将数据与用户环境分离,并会将数据分布到可以更好地为其提供服务的多个环境中。它通常与存储区域网络(storage area network,san)和分布式云存储结合起来为用户提供存储。
3.当前主流块存储方式普遍采用块存储网关以通用网络(例如tcp transmission control protocol,传输控制协议))方式提供服务,块存储网关一般采用单机或主备(active/passive)模式部署,它的后端与同一个存储设备或者分布式存储集群相连接以存储数据。然而,目前这种主备模式的存储方式是先将数据在主存储节点进行存储之后,再由主存储节点将数据发送至备用存储节点进行备份,这样会导致数据备份效率较低,并且,一旦有任一存储节点断电或分布式存储集群不可用时,将会导致存储服务是无法使用,这对可用性有较高要求的用户将带来严重的损失。
技术实现要素:4.为了解决现有块存储方式数据备份效率较低与存储服务可靠性不足的问题,本技术实施例提供了一种数据存储方法、装置、系统、电子设备及存储介质。
5.第一方面,本技术实施例提供了一种数据存储系统,包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,其中:
6.所述仲裁节点,用于接收所述存储节点发送的仲裁请求,根据与所述各存储节点的连接状态确定执行写数据操作的目标存储节点,向所述目标存储节点发送写数据指示;
7.所述存储节点,用于接收终端设备发送的数据写请求,若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以使所述存储节点和所述其他存储节点并行执行写数据操作;若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作,并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。
8.在一种可能的实施方式中,所述存储节点包括存储网关节点和存储设备,所述存储网关节点包括输入输出处理模块、数据收发模块、分布式锁模块、数据同步模块和心跳模块;所述待写数据信息包括待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度;
9.所述输入输出处理模块,用于接收所述终端设备发送的所述数据写请求,将所述
待写数据信息发送至所述数据收发模块;若基于所述分布式锁模块获取的锁信息确定待写逻辑块未被加锁,则将所述待写数据内容写入所述待写逻辑块;
10.所述数据收发模块,用于接收所述输入输出处理模块发送的所述待写数据信息;
11.所述分布式锁模块,用于根据所述起始逻辑块地址与所述待写数据长度确定待写逻辑块地址,获取所述存储设备中所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息;并在所述输入输出处理模块在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁;
12.所述心跳模块,用于监测与其他存储节点之间的连接状态。
13.在一种可能的实施方式中,所述分布式锁模块,还用于在所述存储节点与所述其他存储节点之间连接正常的情况下,将所述锁信息同步至所述其他存储节点的分布式锁模块中;
14.所述数据收发模块,还用于在所述存储节点与所述其他存储节点之间连接正常的情况下,将所述待写数据信息发送至所述其他存储节点的数据收发模块,由所述其他存储节点的数据收发模块发送至所述其他存储节点的输入输出处理模块,由所述其他存储节点的输入输出处理模块基于所述锁信息将所述待写数据内容写入所述其他存储节点的存储设备中。
15.在一种可能的实施方式中,所述数据同步模块,用于在所述存储节点与所述其他存储节点之间连接异常的情况下,存储未同步至所述其他存储节点的待写数据内容对应的待写逻辑块地址信息,待所述存储节点与所述其他存储节点之间连接恢复正常时,将所述待写数据内容对应的待写逻辑块地址信息发送至所述其他存储节点的数据同步模块进行同步。
16.在一种可能的实施方式中,所述分布式锁模块,具体用于根据所述起始逻辑块地址和所述磁盘中每个区域的逻辑块数量确定所述起始逻辑块位于所述磁盘的区域和区域偏移量;根据所述区域偏移量、所述数据长度和所述磁盘中每个区域的逻辑块数量,确定所述待写数据内容对应的待写逻辑块的跨区域数量;根据所述起始逻辑块位于所述磁盘的区域和所述跨区域数量,确定所述待写数据内容对应的待写逻辑块位于所述磁盘的目标区域;将所述待写磁盘标识与所述目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的所述目标区域的每一逻辑块地址的标志位信息,将所述待写逻辑块地址的标志位信息确定为所述待写逻辑块对应的锁信息。
17.在一种可能的实施方式中,所述分布式锁模块,具体用于在所述输入输出处理模块在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块地址的标志位进行置位,以对所述待写逻辑块加锁。
18.第二方面,本技术实施例提供了一种数据存储方法,应用于数据存储系统,所述数据存储系统包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,所述方法,包括:
19.所述存储节点接收终端设备发送的数据写请求;
20.若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以和所述其他存储节点并行执行写数据操作;
21.若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;
22.若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作;并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。
23.在一种可能的实施方式中,所述待写数据信息包括待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度;
24.通过以下方式执行写数据操作:
25.根据所述起始逻辑块地址与所述待写数据长度确定待写逻辑块地址;
26.获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息;
27.若基于所述锁信息确定所述待写逻辑块未被加锁,则将所述待写数据内容写入所述待写逻辑块;并当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁。
28.在一种可能的实施方式中,在与其他存储节点之间连接正常的情况下,还包括:
29.将所述锁信息同步至所述其他存储节点,由所述其他存储节点基于所述锁信息和所述待写数据信息执行写数据操作。
30.在一种可能的实施方式中,在与所述其他存储节点之间连接异常的情况下,还包括:
31.存储未同步至所述其他存储节点的待写数据内容对应的待写逻辑块地址信息;
32.待与所述其他存储节点之间连接恢复正常时,将所述待写数据内容对应的待写逻辑块地址信息发送至所述其他存储节点进行同步。
33.在一种可能的实施方式中,获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息,具体包括:
34.根据所述起始逻辑块地址和所述磁盘中每个区域的逻辑块数量确定所述起始逻辑块位于所述磁盘的区域和区域偏移量;
35.根据所述区域偏移量、所述数据长度和所述磁盘中每个区域的逻辑块数量,确定所述待写数据内容对应的待写逻辑块的跨区域数量;
36.根据所述起始逻辑块位于所述磁盘的区域和所述跨区域数量,确定所述待写数据内容对应的待写逻辑块位于所述磁盘的目标区域;
37.将所述待写磁盘标识与所述目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的所述目标区域的每一逻辑块地址的标志位信息,将所述待写逻辑块地址的标志位信息确定为所述待写逻辑块对应的锁信息。
38.在一种可能的实施方式中,当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁,具体包括:
39.当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块地址的标志位进行置位,以对所述待写逻辑块加锁。
40.第三方面,本技术实施例提供了一种数据存储装置,应用于数据存储系统,所述数据存储系统包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,所述装置,包括:
41.接收单元,用于接收终端设备发送的数据写请求;
42.同步单元,用于若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以和所述其他存储节点并行执行写数据操
作;
43.第一发送单元,用于若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;
44.处理单元,用于若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作;并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。
45.在一种可能的实施方式中,所述待写数据信息包括待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度;
46.所述同步单元,具体用于通过以下方式执行写数据操作:根据所述起始逻辑块地址与所述待写数据长度确定待写逻辑块地址;获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息;若基于所述锁信息确定所述待写逻辑块未被加锁,则将所述待写数据内容写入所述待写逻辑块;并当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁。
47.在一种可能的实施方式中,所述同步单元,还用于在与其他存储节点之间连接正常的情况下,将所述锁信息同步至所述其他存储节点,由所述其他存储节点基于所述锁信息和所述待写数据信息执行写数据操作。
48.在一种可能的实施方式中,所述装置,还包括:
49.存储单元,用于在与所述其他存储节点之间连接异常的情况下,存储未同步至所述其他存储节点的待写数据内容对应的待写逻辑块地址信息;
50.第二发送单元,用于待与所述其他存储节点之间连接恢复正常时,将所述待写数据内容对应的待写逻辑块地址信息发送至所述其他存储节点进行同步。
51.在一种可能的实施方式中,所述同步单元,具体用于根据所述起始逻辑块地址和所述磁盘中每个区域的逻辑块数量确定所述起始逻辑块位于所述磁盘的区域和区域偏移量;根据所述区域偏移量、所述数据长度和所述磁盘中每个区域的逻辑块数量,确定所述待写数据内容对应的待写逻辑块的跨区域数量;根据所述起始逻辑块位于所述磁盘的区域和所述跨区域数量,确定所述待写数据内容对应的待写逻辑块位于所述磁盘的目标区域;将所述待写磁盘标识与所述目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的所述目标区域的每一逻辑块地址的标志位信息,将所述待写逻辑块地址的标志位信息确定为所述待写逻辑块对应的锁信息。
52.在一种可能的实施方式中,所述同步单元,具体用于当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块地址的标志位进行置位,以对所述待写逻辑块加锁。
53.第四方面,本技术实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术所述的数据存储系统的数据存储方法。
54.第五方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本技术所述的数据存储系统的数据存储方法中的步骤。
55.本技术实施例的有益效果如下:
56.本技术实施例提供的数据存储方案中,数据存储系统包括仲裁节点和两个存储节
点,仲裁节点分别与各存储节点之间进行连接,各存储节点之间进行连接,存储节点接收终端设备发送的数据写请求,若确定与其他存储节点之间的连接正常,则将数据写请求中携带的待写数据信息同步至其他存储节点,以使该存储节点和其他存储节点并行执行写数据操作,若确定与其他存储节点之间的连接异常,则向仲裁节点发送仲裁请求,仲裁节点接收存储节点发送的仲裁请求,根据与各存储节点的连接状态确定执行写数据操作的目标存储节点,向目标存储节点发送写数据指示,存储节点若确定接收到仲裁节点发送的写数据指示,则根据数据写请求执行写数据操作,并待与其他存储节点之间的连接恢复正常时,将待写数据信息同步至其他存储节点,以使其他存储节点根据待写数据信息执行写数据操作,相比于现有的主备模式的数据存储方式,本技术实施例提供的数据存储系统,不区分主存储节点和备用存储节点,并新增了仲裁节点,只要有任一个存储节点接收到终端设备发送的数据写请求时,只要存储节点之间的连接正常,该接收到数据写请求的存储节点将数据写请求中携带的待写数据信息同步至其他存储节点,这样,所有存储节点可以同时并行执行写数据操作,相比于现有技术中主存储节点与备用存储节点串行执行写数据操作的数据存储方式,提高了数据备份效率,如果存储节点之间的连接异常,则由仲裁节点根据与各存储节点的连接状态确定先执行写数据操作的存储节点,由该存储节点执行写数据操作,并当该存储节点与其他存储节点之间的连接恢复正常时,再将待写数据信息同步至其他存储节点,使得其他存储节点进行数据备份,这样,通过仲裁节点可选择网络性能较好的存储节点先存储数据,待其与其他存储节点之间的连接恢复正常后,再在其他存储节点进行数据备份,从而避免了数据丢失,提高了存储服务的可靠性。
57.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
58.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
59.图1为本技术实施例提供的数据存储系统的结构图之一;
60.图2为本技术实施例提供的数据存储系统的结构图之二;
61.图3为本技术实施例提供的数据存储系统的结构图之三;
62.图4为本技术实施例提供的分布式锁原理图;
63.图5(a)、5(b)为本技术实施例提供的待写磁盘区域结构示例图;
64.图6为本技术实施例提供的数据存储方法的实施流程示意图;
65.图7为本技术实施例提供的存储节点执行写数据操作的实施流程示意图;
66.图8为本技术实施例提供的获取待写磁盘标识对应的磁盘中待写逻辑块对应的锁信息的实施流程示意图;
67.图9为本技术实施例提供的数据存储方法的又一实施流程示意图;
68.图10为本技术实施例提供的数据存储的结构示意图;
69.图11为本技术实施例提供的电子设备的结构示意图。
具体实施方式
70.为了解决背景技术中的问题,本技术实施例提供了一种数据存储方法、装置、系统、电子设备及存储介质。
71.以下结合说明书附图对本技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本技术,并不用于限定本技术,并且在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
72.在本文中,需要理解的是,本技术所涉及的技术术语中:
73.1、lba(logical block address,逻辑块地址):是描述计算机存储设备上数据所在区块的通用机制,一般用在像磁盘这样的辅助记忆设备。lba可以指某个数据区块的地址或是某个地址所指向的数据区块。
74.2、bitmap(位图):使用每个位表示某种状态,本质上是哈希表的一种应用实现,本技术实施例中,bitmap用于记录磁盘区域的逻辑块地址的标志位,当某个逻辑块地址的标志位值为1时,表示该逻辑块当前正在被执行写数据操作,当某个逻辑块地址的标志位值为0时,表示该逻辑块当前未被执行写数据操作。
75.3、偏移量(offset):是指把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为有效地址。
76.如图1所示,其为本技术实施例提供的数据存储系统的结构图之一,数据存储系统可包括仲裁节点11和至少两个存储节点12,仲裁节点11分别与各存储节点12之间通过网络进行连接,各存储节点12之间通过网络进行连接,其中:
77.仲裁节点11,用于接收存储节点12发送的仲裁请求,根据与各存储节点12的连接状态确定执行写数据操作的目标存储节点12,向目标存储节点12发送写数据指示。
78.存储节点12,用于接收终端设备发送的数据写请求,若确定与其他存储节点12之间的连接正常,则将数据写请求中携带的待写数据信息同步至其他存储节点12,以使存储节点12和其他存储节点12并行执行写数据操作;若确定与其他存储节点12之间的连接异常,则向仲裁节点11发送仲裁请求;若确定接收到仲裁节点11发送的写数据指示,则根据数据写请求执行写数据操作,并待与其他存储节点12之间的连接恢复正常时,将待写数据信息同步至其他存储节点12,以使其他存储节点12根据待写数据信息执行写数据操作。
79.具体实施时,本技术实施例仅以两个存储节点12:存储节点1和存储节点2进行说明,存储节点12数量和地理位置的设置可根据需要自行设定,本技术实施例对此不作限定。每一存储节点12可包括存储网关节点121和存储设备122,存储网关节点121和存储设备122之间通过网络进行连接,存储设备可以为服务器,也可以为分布式服务器集群,本技术实施例对此不作限定。
80.本技术实施例中,存储节点12接收终端设备发送的io请求,io请求可以为数据写请求或数据读请求。如图2所示,其为本技术实施例提供的数据存储系统的结构图之二,若接收终端发送的数据写请求(或数据读请求)的存储节点12为存储节点1,则其他存储节点12为存储节点2,若接收终端发送的数据写请求(或数据读请求)的存储节点12为存储节点2,则其他存储节点为存储节点1,其中:
81.仲裁节点11分别与各存储节点12的存储网关节点121通过网络进行连接,各存储节点12的存储网关节点121之间通过网络进行连接。
82.存储网关节点121,用于当接收到终端设备发送的数据写请求时,若确定其所属的存储节点12与其他存储节点12之间的连接正常,则将数据写请求中携带的待写数据信息同步至其他存储节点12,以使存储网关节点121和其他存储节点12的存储网关节点121并行将数据写请求中携带的待写数据内容写入各自连接的存储设备122中;若确定其所属的存储节点12与其他存储节点12之间的连接异常,则向仲裁节点11发送仲裁请求;若确定接收到仲裁节点11发送的写数据指示,则将数据写请求中携带的待写数据内容写入连接的存储设备122中,并待与其他存储节点12之间的连接恢复正常时,将待写数据信息同步至其他存储节点12的存储网关节点121,以使其他存储节点12将待写数据内容写入连接的存储设备122中。
83.其中,待写数据信息可以但不限于包括以下信息:待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度,待写磁盘是存储设备122中的磁盘,存储设备122中可包含多个磁盘,每一磁盘有唯一标识,磁盘可划分为多个区域,每个区域可划分为多个逻辑块,例如,存储设备122中包含5个磁盘,每一磁盘包含10个区域,每个区域包含20个逻辑块,在实施时,可根据实际需求与存储设备122的容量自行设置存储设备122中的磁盘数量、磁盘的区域数量以及区域中逻辑块的数量,本技术实施例对此不作限定。
84.存储设备122,用于存储由存储网关节点121写入的待写数据内容。
85.如图3所示,其为本技术实施例提供的数据存储系统的结构图之三,存储网关节点121可包括输入输出处理模块1211、数据收发模块1212、分布式锁模块1213、数据同步模块1214和心跳模块1215,其中:
86.输入输出处理模块1211,用于接收终端设备发送的数据写请求,将待写数据信息发送至数据收发模块1212;若基于分布式锁模块1213获取的锁信息确定待写逻辑块未被加锁,则将待写数据内容写入待写逻辑块。
87.具体实施时,如果待写逻辑块未被加锁,则说明待写逻辑块当前未被执行写数据操作,可将待写数据内容写入待写逻辑块中,如果待写逻辑块已加锁,则说明待写逻辑块中包含的一个或多个待写逻辑块正在被执行写数据操作,待写逻辑块被执行的写数据操作完成后会被设置为未被加锁,那么,当待写逻辑块当前状态为已加锁时,则需要进行等待,直至分布式锁模块1213获取到的锁信息为待写逻辑块未被加锁。
88.数据收发模块1212,用于接收输入输出处理模块1211发送的待写数据信息。
89.分布式锁模块1213,用于根据起始逻辑块地址与待写数据长度确定待写逻辑块地址,获取存储设备122中待写磁盘标识对应的磁盘中待写逻辑块对应的锁信息;并在输入输出处理模块1211在待写逻辑块写待写数据内容时,对待写逻辑块加锁。
90.心跳模块1215,用于监测与其他存储节点12之间的连接状态。
91.具体实施时,心跳模块1215可通过向其他存储节点12的存储网关节点121中的心跳模块1215按照预设时间周期发送心跳包,若其他存储节点12的心跳模块1215在设定时长内返回响应消息,则存储节点12之间连接正常,否则,存储节点12之间连接异常,其中,预设时间周期和设定时长可根据需要自行设定,本技术实施例对此不作限定。
92.分布式锁模块1213,还用于在其所属存储节点12与其他存储节点12之间连接正常的情况下,将锁信息同步至其他存储节点12的分布式锁模块中。
93.数据收发模块1212,还用于在其所属存储节点12与其他存储节点12之间连接正常
的情况下,将待写数据信息发送至其他存储节点12的数据收发模块1212,由其他存储节点12的数据收发模块1212发送至其输入输出处理模块1211,由其输入输出处理模块1211基于锁信息将待写数据内容写入其存储设备122中。
94.具体实施时,可根据待写磁盘标识和起始逻辑块地址定位到待写磁盘的起始逻辑块,将起始逻辑块地址和待写数据长度求和即可得到结束逻辑块地址,从起始逻辑块地址到结束逻辑块地址之间的各逻辑块即为待写逻辑块。
95.分布式锁模块1213,具体用于根据起始逻辑块地址和磁盘中每个区域的逻辑块数量确定起始逻辑块位于磁盘的区域和区域偏移量;根据区域偏移量、数据长度和磁盘中每个区域的逻辑块数量,确定待写数据内容对应的待写逻辑块的跨区域数量;根据起始逻辑块位于磁盘的区域和跨区域数量,确定待写数据内容对应的待写逻辑块位于磁盘的目标区域;将待写磁盘标识与目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找哈希值对应的目标区域的每一逻辑块地址的标志位信息,将待写逻辑块地址的标志位信息确定为待写逻辑块对应的锁信息。
96.分布式锁模块1213,具体用于在输入输出处理模块1211在待写逻辑块写待写数据内容时,对待写逻辑块地址的标志位进行置位,以对待写逻辑块加锁。
97.具体实施时,可通过以下公式计算起始逻辑块位于磁盘(即待写磁盘标识对应的磁盘,也即待写磁盘)的区域值:
98.zone value=lba0|a+1
99.其中,zone value表示起始逻辑块位于磁盘的区域值;
100.lba0表示起始逻辑块地址;
101.a表示磁盘中每个区域的逻辑块数量;
102.lba0|a表示起始逻辑块地址与磁盘中每个区域的逻辑块数量整除。
103.可通过以下公式计算起始逻辑块对应的区域偏移量:
104.offset=lba0%a
105.其中,offset表示起始逻辑块对应的区域偏移量;
106.lba0%a表示起始逻辑块地址与磁盘中每个区域的逻辑块数量相除取余。可通过以下公式计算待写逻辑块的跨区域数量:
107.b=(offset+length)|a+1
108.其中,b表示待写数据内容对应的待写逻辑块的跨区域数量;
109.length表示待写数据长度;
110.(offset+length)|a表示起始逻辑块对应的区域偏移量和待写数据长度求和后与磁盘中每个区域的逻辑块数量整除。
111.进而,即可根据起始逻辑块位于磁盘的区域和跨区域数量,确定待写数据内容对应的待写逻辑块在待写磁盘中的目标区域。
112.分布式锁模块1213预先存储哈希表,哈希表中包含的哈希值是磁盘标识、磁盘不同区域值(即区域标识)进行哈希计算获得的,并存储哈希值与位图(bitmap)的对应关系,位图用于记录磁盘区域的逻辑块地址的标志位,用于标志逻辑块是否正在被执行写数据操作,如果某个逻辑块地址的标志位值为1,表示该逻辑块当前正在被执行写数据操作,如果某个逻辑块地址的标志位值为0时,表示该逻辑块当前未被执行写数据操作。
113.分布式锁模块1213在确定待写数据内容对应的待写逻辑块在待写磁盘中的目标区域之后,将待写磁盘标识与目标区域值进行哈希计算得到哈希值,从哈希表中查找该哈希值对应的目标区域的每一逻辑块地址的对应的位图,从目标区域的每一逻辑块地址的对应的位图记录的目标区域的每一逻辑块地址的标志位信息中查找待写逻辑块地址的标志位信息,待写逻辑块地址的标志位信息即为待写逻辑块对应的锁信息,如果待写逻辑块地址中每一待写逻辑块地址的标志位均为0,则确定待写逻辑块未被加锁,则在输入输出处理模块1211在待写逻辑块写待写数据内容时,将待写逻辑块地址的标志位进行置位,即:将待写逻辑块地址的标志位的值置位1,以对待写逻辑块加锁,并向其他存储节点12的存储网关节点121中的分布式锁模块1213发送同步消息,将置位后的待写逻辑块地址的标志位信息(即记录置位后的待写逻辑块地址的标志位信息的位图)同步至其他存储节点12的存储网关节点121中的分布式锁模块1213,其他存储节点12的输入输出处理模块1211基于待写逻辑块地址的标志位信息将待写数据内容写入其连接的存储设备122的待写逻辑块中,从而,实现各存储节点12同时并行执行数据写操作,本技术实施例中,可以在内存或缓存中存储锁信息:待写逻辑块地址的标志位信息,可提供访问速度。上述分布式锁的原理图如图4所示。
114.下面举一实例说明获得待写逻辑块地址的标志位信息的具体过程:
115.假设存储设备中待写磁盘包含五个区域:区域1~区域5,磁盘结构如图5(a)所示,假设每个区域均包含20个逻辑块,每一逻辑块可存储1位数据,则区域1可写数据为第1~20位,区域2可写数据为第21~40位,区域3可写数据为第41~60位,区域4可写数据为第61~80位,区域5可写数据为第81~100位,假设待写数据内容对应的起始逻辑块地址为:位于待写磁盘的第30位,待写数据长度为20位,则起始逻辑块位于待写磁盘的区域值为:起始逻辑块地址|每个区域的逻辑块数量+1=30|20+1=1+1=2,也就是说起始逻辑块位于待写磁盘的区域2中,起始逻辑块对应的区域偏移量为:起始逻辑块地址%每个区域的逻辑块数量=30%20=10,由此可知,待写数据内容对应的待写逻辑块在待写磁盘中的目标区域是:区域2和区域3,如图5(b)所示,阴影部分即为待写逻辑块位置,跨了区域2和区域3两个区域,将待写磁盘标识和区域2、区域3进行哈希计算得到哈希值,从哈希表中查找该哈希值对应的位图,即该待写磁盘的区域2和区域3对应的位图,位图是由多个比特位组成的,每个比特位的值为0或者1,区域2和区域3对应的位图的每一个比特位分别依次标识区域2和区域3中每一个逻辑块对应的标志位,区域2和区域3对应的位图则为40位的字符串,每一位的值为0或1。
116.若当前接收到数据写请求的存储节点12与其他存储节点12之间的连接异常,则通过心跳模块1215向仲裁节点11发送仲裁请求,仲裁节点11分别向各存储节点12的心跳模块1215发送心跳包,检测其与各存储节点12之间的连接状态,向网络连接正常的目标存储节点12发送写数据指示,由目标存储节点12先执行写数据操作,如果仲裁节点11与各存储节点12之间的连接状态均正常,则可选择数据完整性高的存储节点12作为目标存储节点,先执行写数据操作。
117.具体地,仲裁节点11可选择未被同步的数据多的存储节点12作为目标存储节点,也即:将数据同步模块1214中存储的未同步的逻辑块地址的标志位较多的存储节点12作为目标存储节点。
118.数据同步模块1214,用于在其所属存储节点12与其他存储节点12之间连接异常的情况下,存储未同步至其他存储节点12的待写数据内容对应的待写逻辑块地址信息,待与其他存储节点12之间连接恢复正常时,将待写数据内容对应的待写逻辑块地址信息发送至其他存储节点12的数据同步模块1214进行同步。
119.具体实施时,若存储节点12与其他存储节点12之间连接异常,数据同步模块1214则存储未同步至其他存储节点12的待写数据内容对应的待写逻辑块地址信息,当与其他存储节点12之间连接恢复正常时,将待写数据内容对应的待写逻辑块地址信息发送至其他存储节点12的数据同步模块1214中,数据收发模块1212将待写数据信息发送至其他存储节点12的数据收发模块1212,再由其数据收发模块1212发送至其输入输出处理模块1211,从而,其他存储节点12的输入输出处理模块基于待写数据内容对应的待写逻辑块地址信息将待写数据内容写入其连接的存储设备122的待写逻辑块中。
120.待存储节点12与其他存储节点12均执行完毕数据写操作,将待写逻辑块地址对应的位图中的各位重新置位为0,以释放锁,并由存储节点12的输入输出处理模块1211向终端设备返回成功存储数据的消息。
121.若存储节点12(即接收到终端设备发送的数据写请求的存储节点12)未接收到仲裁节点11发送的写数据指示,仲裁节点11向其他存储节点12发送了写数据指示,则其他存储节点12根据数据写请求执行写数据操作,并待与其他存储节点12之间的连接恢复正常时,接收其他存储节点12同步的待写数据内容对应的待写逻辑地址信息,基于待写数据内容对应的待写逻辑块地址信息将待写数据内容写入存储设备122的待写逻辑块中。
122.存储节点12,还用于若接收到终端设备发送的数据读请求,则向终端设备返回请求数据。
123.具体实施时,输入输出处理模块1211,用于接收终端设备发送的数据读请求,从存储设备122中读取请求的数据内容,将请求的数据内容返回至终端设备。
124.本技术实施例提供的数据存储系统,实现了实时业务数据的在位于不同地域的存储节点的网关双写备份,充分利用存储节点资源,提供系统的可用性。使用高速分布式锁机制,保证各存储节点的存储网关节点写数据不冲突,且将锁信息存储于内存或缓存中以提高访问速度。仲裁节点保证在存储节点之间的网络联机出现故障的情况下,选择最优存储节点提供无中断存储服务,提升了数据存储系统存储服务的可靠性,并且,在某个存储节点或存储节点之间的网络恢复正常后,能够自动同步待备份数据,保证了各存储设备的数据一致。存储网关节点不要求存储设备节点的计算能力,成本较低且能够适用于各种存储设备,如传统的存储介质(磁盘等)或者分布式存储集群服务器。
125.基于同一发明构思,本技术实施例还提供了一种数据存储方法,由于上述数据存储方法解决问题的原理与数据存储系统相似,因此上述方法的实施可以参见系统的实施,重复之处不再赘述。
126.如图6所示,其为本发明实施例提供的数据存储方法的实施流程示意图,该数据存储方法应用于本技术实施例提供的数据存储系统,数据存储系统包括仲裁节点和至少两个存储节点,仲裁节点分别与各存储节点之间通过网络进行连接,各存储节点之间通过网络进行连接,每一存储节点包括存储网关节点和存储设备,存储网关节点包括输入输出处理模块、数据收发模块、分布式锁模块、数据同步模块和心跳模块,所述数据存储方法具体可
以包括以下步骤:
127.s21、存储节点接收终端设备发送的数据写请求。
128.具体实施时,终端设备可向存储节点发送io请求,io请求可以为数据写请求或数据读请求。存储节点的存储网关节点的输入输出模块接收终端设备发送的数据写请求,其中,数据写请求中携带有待写数据信息,待写数据信息至少可包括:待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度。
129.s22、存储节点若确定与其他存储节点之间的连接正常,则将数据写请求中携带的待写数据信息同步至其他存储节点,以和其他存储节点并行执行写数据操作。
130.具体实施时,存储节点可通过存储网关节点的心跳模块监测与其他存储节点之间的连接状态,具体实现过程可参见数据存储系统中的实施,此处不作赘述。
131.存储节点若确定与其他存储节点之间的连接正常,可通过其输入输出处理模块将待写数据信息发送至其数据收发模块,由数据收发模块发送至其他存储节点的存储网关节点的数据收发模块,由其他存储节点的数据收发模块发送至该其他存储节点的输入输出处理模块。
132.具体地,存储节点可通过如图7所示的流程执行写数据操作:
133.s221、根据起始逻辑块地址与待写数据长度确定待写逻辑块地址。
134.具体实施时,存储节点中的输入输出模块从分布式锁模块中获取待写磁盘标识对应的磁盘的待写逻辑块对应的锁信息,并基于锁信息将待写数据内容写入存储设备的待写逻辑块中。
135.分布式锁模块根据起始逻辑块地址与待写数据长度确定待写逻辑块地址。
136.s222、获取待写磁盘标识对应的磁盘中待写逻辑块对应的锁信息。
137.具体实施时,分布式锁模块可通过如图8所示的流程获取待写磁盘标识对应的磁盘中待写逻辑块对应的锁信息:
138.s2221、根据起始逻辑块地址和磁盘中每个区域的逻辑块数量确定起始逻辑块位于所述磁盘的区域和区域偏移量。
139.s2222、根据区域偏移量、数据长度和磁盘中每个区域的逻辑块数量,确定待写数据内容对应的待写逻辑块的跨区域数量。
140.s2223、根据起始逻辑块位于磁盘的区域和所述跨区域数量,确定待写数据内容对应的待写逻辑块位于磁盘的目标区域。
141.s2224、将待写磁盘标识与目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的目标区域的每一逻辑块地址的标志位信息,将待写逻辑块地址的标志位信息确定为待写逻辑块对应的锁信息。
142.s223、若基于锁信息确定待写逻辑块未被加锁,则将待写数据内容写入待写逻辑块;并当在待写逻辑块写待写数据内容时,对待写逻辑块加锁。
143.具体实施时,分布式锁模块将待写逻辑块对应的锁信息返回至输入输出处理模块,输入输出处理模块若基于锁信息确定待写逻辑块未被加锁,则将待写数据内容写入待写逻辑块,并当在待写逻辑块写待写数据内容时,对待写逻辑块加锁。
144.可通过以下方式对待写逻辑块加锁:当在待写逻辑块写待写数据内容时,对待写逻辑块地址的标志位进行置位,以对待写逻辑块加锁。
145.上述各步骤的具体实施方式参见数据存储系统中相应部分的实施,此处不作赘述。
146.存储节点在与其他存储节点之间连接正常的情况下,还包括:
147.将待写逻辑块的锁信息同步至其他存储节点,由其他存储节点基于锁信息和待写数据信息执行写数据操作。
148.具体实施时,存储节点在与其他存储节点之间连接正常的情况下,存储节点的分布式锁模块将待写逻辑块的锁信息同步至其他存储节点的分布式锁模块中进行存储,由其他存储节点的输入输出处理模块基于锁信息和待写数据信息执行写数据操作。
149.s23、存储节点若确定与其他存储节点之间的连接异常,则向仲裁节点发送仲裁请求。
150.具体实施时,若当前接收到数据写请求的存储节点与其他存储节点之间的连接异常,则通过心跳模块向仲裁节点发送仲裁请求,仲裁节点分别向各存储节点的心跳模块发送心跳包,检测其与各存储节点之间的连接状态,向网络连接正常的目标存储节点发送写数据指示,由目标存储节点先执行写数据操作,如果仲裁节点与各存储节点之间的连接状态均正常,则可选择数据完整性高的存储节点作为目标存储节点,先执行写数据操作,即:可选择未被同步的数据多的存储节点作为目标存储节点,也即:将数据同步模块中存储的未同步的逻辑块地址的标志位较多的存储节点作为目标存储节点。
151.s24、存储节点若确定接收到仲裁节点发送的写数据指示,则根据数据写请求执行写数据操作;并待与其他存储节点之间的连接恢复正常时,将待写数据信息同步至其他存储节点,以使其他存储节点根据待写数据信息执行写数据操作。
152.其中,写数据指示是仲裁节点根据与各存储节点的连接状态确定执行写数据操作的目标存储节点,向目标存储节点发送的。
153.存储节点在与其他存储节点之间连接异常的情况下,还包括:
154.存储未同步至其他存储节点的待写数据内容对应的待写逻辑块地址信息;待与其他存储节点之间连接恢复正常时,将待写数据内容对应的待写逻辑块地址信息发送至其他存储节点进行同步。
155.具体实施时,在存储节点与其他存储节点之间连接异常的情况下,存储节点的数据同步模块存储未同步至其他存储节点的待写数据内容对应的待写逻辑块地址信息,待存储节点与其他存储节点之间连接恢复正常时,将待写数据内容对应的待写逻辑块地址信息发送至其他存储节点的数据同步模块进行同步,存储节点的输入输出处理模块将待写数据信息发送至其数据收发模块,由数据收发模块发送至其他存储节点的数据收发模块,由其他存储节点的数据收发模块发送至该其他存储节点的输入输出处理模块,其他存储节点的输入输出处理模块基于待写数据信息和待写数据内容对应的待写逻辑块地址信息将待写数据内容写入该其他存储节点的存储设备的待写逻辑快中。
156.下面结合图2的数据存储系统结构介绍本技术实施例提供的数据存储方法的整体流程,如图9所示,数据存储方法包括以下步骤:
157.假设存储节点1接收到终端设备发送的io请求。
158.s31、存储节点1的存储网关节点接收终端设备发送的io请求。
159.s32、判断io请求的类型是否为数据写请求,若是数据写请求,则执行步骤s33,若
是数据读请求,则执行步骤s315。
160.s33、存储节点1的存储网关节点判断与存储节点2的存储网关节点之间的网络连接是否正常,若正常,则执行步骤s34,否则,执行步骤s311。
161.s34、存储节点1的存储网关节点获取分布式锁判断是否成功获取分布式锁,若成功获取分布式锁,则执行步骤s36~s310,否则,执行步骤s35。
162.存储节点1的存储网关节点获取分布式锁,判断是否成功获取分布式锁,若成功获取分布式锁,则执行步骤s36~s310,否则,执行步骤s35。
163.s35、存储节点1继续尝试获取分布式锁,直至获取到分布式锁后执行步骤s36~s310。
164.s36、存储节点1的存储网关节点将数据写请求中携带的待写数据内容写入存储设备。
165.s37、存储节点1的存储网关节点将数据写请求中的待写数据信息发送至存储节点2的存储网关节点。
166.s38、存储节点2的存储网关节点将待写数据内容写入存储设备。
167.s39、判断存储节点1和存储节点2是否写数据成功,若均写数据成功,则执行步骤s310。
168.s310、存储节点1向终端设备返回成功存储数据的消息。
169.s311、存储节点1向仲裁节点发送仲裁请求,判断仲裁节点是否仲裁由存储节点1执行写数据操作,如果是,则执行步骤s312,否则,执行步骤s39。
170.s312、存储节点1的存储网关节点将数据写请求中携带的待写数据内容写入存储设备。
171.s313、存储节点1若写数据成功,其存储网关节点则更新待写逻辑地址的位图,以记录未同步数据信息。
172.s314、存储节点1的存储网关节点向终端设备返回数据写操作的执行结果。
173.s315、存储节点1的存储网关节点从存储设备读取请求的待读取数据内容。
174.s316、存储节点1的存储网关节点将读取的数据内容返回至终端设备。
175.上述各步骤的具体实施参照本技术实施例上述数据存储设备的实施,此处不再赘述。
176.基于同一发明构思,本发明实施例还提供了一种数据存储装置,由于上述数据存储装置解决问题的原理与上述数据存储系统相似,因此上述装置的实施可以参见系统的实施,重复之处不再赘述。
177.如图10所示,其为本发明实施例提供的数据存储装置的结构示意图,该数据存储装置应用于本技术实施例上述的数据存储系统,数据存储系统包括仲裁节点和两个存储节点,仲裁节点分别与各存储节点之间进行连接,各存储节点之间进行连接,所述装置,包括:
178.接收单元41,用于接收终端设备发送的数据写请求;
179.同步单元42,用于若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以和所述其他存储节点并行执行写数据操作;
180.第一发送单元43,用于若确定与其他存储节点之间的连接异常,则向所述仲裁节
点发送仲裁请求;
181.处理单元44,用于若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作;并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。
182.在一种可能的实施方式中,所述待写数据信息包括待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度;
183.所述同步单元42,具体用于通过以下方式执行写数据操作:根据所述起始逻辑块地址与所述待写数据长度确定待写逻辑块地址;获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息;若基于所述锁信息确定所述待写逻辑块未被加锁,则将所述待写数据内容写入所述待写逻辑块;并当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁。
184.在一种可能的实施方式中,所述同步单元42,还用于在与其他存储节点之间连接正常的情况下,将所述锁信息同步至所述其他存储节点,由所述其他存储节点基于所述锁信息和所述待写数据信息执行写数据操作。
185.在一种可能的实施方式中,所述装置,还包括:
186.存储单元,用于在与所述其他存储节点之间连接异常的情况下,存储未同步至所述其他存储节点的待写数据内容对应的待写逻辑块地址信息;
187.第二发送单元,用于待与所述其他存储节点之间连接恢复正常时,将所述待写数据内容对应的待写逻辑块地址信息发送至所述其他存储节点进行同步。
188.在一种可能的实施方式中,所述同步单元42,具体用于根据所述起始逻辑块地址和所述磁盘中每个区域的逻辑块数量确定所述起始逻辑块位于所述磁盘的区域和区域偏移量;根据所述区域偏移量、所述数据长度和所述磁盘中每个区域的逻辑块数量,确定所述待写数据内容对应的待写逻辑块的跨区域数量;根据所述起始逻辑块位于所述磁盘的区域和所述跨区域数量,确定所述待写数据内容对应的待写逻辑块位于所述磁盘的目标区域;将所述待写磁盘标识与所述目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的所述目标区域的每一逻辑块地址的标志位信息,将所述待写逻辑块地址的标志位信息确定为所述待写逻辑块对应的锁信息。
189.在一种可能的实施方式中,所述同步单元42,具体用于当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块地址的标志位进行置位,以对所述待写逻辑块加锁。
190.基于同一技术构思,本发明实施例还提供了一种电子设备500,参照图11所示,电子设备500用于实施上述方法实施例记载的数据存储方法或者数据存储装置,该实施例的电子设备500可以包括:存储器501、处理器502以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如数据存储程序或者数据报文传输程序。所述处理器执行所述计算机程序时实现上述各个数据存储方法实施例中的步骤,例如图6所示的步骤s21。
191.本发明实施例中不限定上述存储器501、处理器502之间的具体连接介质。本技术实施例在图11中以存储器501、处理器502之间通过总线503连接,总线503在图11中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅
有一根总线或一种类型的总线。
192.存储器501可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);存储器501也可以是非易失性存储器(non-volatile memory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)、或者存储器501是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器501可以是上述存储器的组合。
193.处理器502,用于实现如图6所示的一种数据存储方法。
194.本技术实施例还提供了一种计算机可读存储介质,存储为执行上述处理器所需执行的计算机可执行指令,其包含用于执行上述处理器所需执行的程序。
195.在一些可能的实施方式中,本发明提供的数据存储方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的数据存储方法中的步骤。
196.本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
197.本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
198.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
199.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
200.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
201.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
技术特征:1.一种数据存储方法,其特征在于,应用于数据存储系统,所述数据存储系统包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,所述方法,包括:所述存储节点接收终端设备发送的数据写请求;若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以和所述其他存储节点并行执行写数据操作;若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作;并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。2.如权利要求1所述的方法,其特征在于,所述待写数据信息包括待写磁盘标识、起始逻辑块地址、待写数据内容以及待写数据长度;通过以下方式执行写数据操作:根据所述起始逻辑块地址与所述待写数据长度确定待写逻辑块地址;获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息;若基于所述锁信息确定所述待写逻辑块未被加锁,则将所述待写数据内容写入所述待写逻辑块;并当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁。3.如权利要求2所述的方法,其特征在于,在与其他存储节点之间连接正常的情况下,还包括:将所述锁信息同步至所述其他存储节点,由所述其他存储节点基于所述锁信息和所述待写数据信息执行写数据操作。4.如权利要求3所述的方法,其特征在于,在与所述其他存储节点之间连接异常的情况下,还包括:存储未同步至所述其他存储节点的待写数据内容对应的待写逻辑块地址信息;待与所述其他存储节点之间连接恢复正常时,将所述待写数据内容对应的待写逻辑块地址信息发送至所述其他存储节点进行同步。5.如权利要求3所述的方法,其特征在于,获取所述待写磁盘标识对应的磁盘中所述待写逻辑块对应的锁信息,具体包括:根据所述起始逻辑块地址和所述磁盘中每个区域的逻辑块数量确定所述起始逻辑块位于所述磁盘的区域和区域偏移量;根据所述区域偏移量、所述数据长度和所述磁盘中每个区域的逻辑块数量,确定所述待写数据内容对应的待写逻辑块的跨区域数量;根据所述起始逻辑块位于所述磁盘的区域和所述跨区域数量,确定所述待写数据内容对应的待写逻辑块位于所述磁盘的目标区域;将所述待写磁盘标识与所述目标区域标识进行哈希计算获得哈希值,从预设哈希表中查找所述哈希值对应的所述目标区域的每一逻辑块地址的标志位信息,将所述待写逻辑块地址的标志位信息确定为所述待写逻辑块对应的锁信息。6.如权利要求5所述的方法,其特征在于,当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块加锁,具体包括:
当在所述待写逻辑块写所述待写数据内容时,对所述待写逻辑块地址的标志位进行置位,以对所述待写逻辑块加锁。7.一种数据存储装置,其特征在于,应用于数据存储系统,所述数据存储系统包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,所述装置,包括:接收单元,用于接收终端设备发送的数据写请求;同步单元,用于若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以和所述其他存储节点并行执行写数据操作;第一发送单元,用于若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;处理单元,用于若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作;并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。8.一种数据存储系统,其特征在于,包括仲裁节点和两个存储节点,所述仲裁节点分别与各存储节点之间进行连接,所述各存储节点之间进行连接,其中:所述仲裁节点,用于接收所述存储节点发送的仲裁请求,根据与所述各存储节点的连接状态确定执行写数据操作的目标存储节点,向所述目标存储节点发送写数据指示;所述存储节点,用于接收终端设备发送的数据写请求,若确定与其他存储节点之间的连接正常,则将所述数据写请求中携带的待写数据信息同步至所述其他存储节点,以使所述存储节点和所述其他存储节点并行执行写数据操作;若确定与其他存储节点之间的连接异常,则向所述仲裁节点发送仲裁请求;若确定接收到所述仲裁节点发送的写数据指示,则根据所述数据写请求执行写数据操作,并待与所述其他存储节点之间的连接恢复正常时,将所述待写数据信息同步至所述其他存储节点,以使所述其他存储节点根据所述待写数据信息执行写数据操作。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~6任一项所述的数据存储方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~6任一项所述的数据存储方法中的步骤。
技术总结本申请公开了数据存储方法、装置、系统、电子设备及存储介质,数据存储方法应用于数据存储系统,数据存储系统包括仲裁节点和两个存储节点,仲裁节点分别与各存储节点之间进行连接,各存储节点之间进行连接,包括:存储节点接收终端设备发送的数据写请求;若确定与其他存储节点之间的连接正常,则将数据写请求中携带的待写数据信息同步至其他存储节点,以和其他存储节点并行执行写数据操作;确定与其他存储节点之间的连接异常,则向仲裁节点发送仲裁请求;若确定接收到仲裁节点发送的写数据指示,则根据数据写请求执行写数据操作;并待与其他存储节点之间的连接恢复正常时,将待写数据信息同步至其他存储节点,以使其他存储节点执行写数据操作。写数据操作。写数据操作。
技术研发人员:陈杰 肖露 黄鹄 林洁琬
受保护的技术使用者:天翼云科技有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1