一种数据存储方法及装置与流程

文档序号:11293029阅读:239来源:国知局
一种数据存储方法及装置与流程

本申请涉及存储领域,尤其涉及一种数据存储技术。



背景技术:

双活存储技术可以是指两台存储设备保存有完全相同的数据,当其中一台存储设备中的数据损坏时,可使用另一台存储设备中的数据。

在双活存储系统中,通常包括主设备和从设备。主、从设备均可提供给业务系统进行访问。然而,主、从设备同时接收到了针对相同位置的写io请求时,会出现写冲突的问题。因此,如何在解决写冲突的同时,保证存储设备的进行io请求处理的性能成为业界亟待解决的问题。



技术实现要素:

有鉴于此,本申请提供一种数据存储方法及装置,用以在解决写冲突的同时,提高存储设备处理io请求的性能。

具体地,本申请是通过如下技术方案实现的:

根据本申请的第一方面,提供一种数据存储方法,所述方法应用于由主设备和从设备组成的双活存储系统中的任一目标存储设备,所述方法包括:

判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突;

如果所述第一写io请求与所述第二写io请求不冲突,将所述第一写io请求下发至所述对端存储设备,以使所述对端存储设备进一步判断所述第一写io请求与其接收到的第三io请求是否冲突,并在所述第一写io请求与所述第三io请求冲突时,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据;

接收所述对端存储设备返回的所述第三写io请求,判断所述第三写io请求与所述第一写io请求是否冲突;

如果所述第一写io请求与所述第三写io请求冲突,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

根据本申请的第二方面,提供一种数据存储装置,所述装置应用于由主设备和从设备组成的双活存储系统中的任一目标存储设备,所述装置包括:

第一判断单元,用于判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突;

下发单元,用于如果所述第一写io请求与所述第二写io请求不冲突,将所述第一写io请求下发至所述对端存储设备,以使所述对端存储设备进一步判断所述第一写io请求与其接收到的第三io请求是否冲突,并在所述第一写io请求与所述第三io请求冲突时,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据;

第二判断单元,用于接收所述对端存储设备返回的所述第三写io请求,判断所述第三写io请求与所述第一写io请求是否冲突;

写入单元,用于如果所述第一写io请求与所述第三写io请求冲突,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

本申请提出一种数据存储的方法,该方法可应用于双活存储系统中的作为主设备或者从设备的目标存储设备,该目标存储设备可判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突。在不冲突时,该目标存储设备可将第一写io请求下发至对端存储设备,由对端存储设备进一步判断该第一写io请求与其接收到的第三io请求是否冲突,并在冲突时,写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据。目标存储上设备可接收对端存储设备返回的该第三写io请求,并可判断该第三写io请求与该第一写io请求是否冲突。如果冲突,该存储设备可写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

一方面,目标存储设备不再采用分布式锁和写重定向机制来解决写冲突问题,而是在接收到业务系统下发的第一写io请求后,可进行第一写io和第二写io的冲突判断及处理,在将第一写io请求下发给对端存储设备后,对端存储设备和本设备还可进一步进行第一写io请求和对端接收到的第三写io请求的冲突判断及处理,由于不再采用分布式锁和写重定向机制,因此可在有效地解决写冲突问题的同时,有效地提高本设备和对端存储设备的写io处理性能。

另一方面,由于目标存储设备在确定写冲突后,将主设备下发的写io携带的数据写入本端存储设备和对端存储设备,因此可有效地保证本端存储设备和对端存储设备的数据一致性。

附图说明

图1是本申请一示例性实施例示出的一种数据存储方法的流程图;

图2是本申请一示例性实施例示出的一种数据存储方法的示意图;

图3是本申请一示例性实施例示出的一种数据存储装置的硬件结构图;

图4是本申请一示例性实施例示出的一种数据存储装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

双活存储技术可以是指两台存储设备保存有完全相同的数据,当其中一台存储设备中的数据损坏时,可使用另一台存储设备中的数据。

在双活存储系统中,通常包括主设备和从设备。主、从设备均可提供给业务系统进行访问。

然而,一方面,主、从设备同时接收到了针对相同位置的写io请求时,会出现写冲突的问题。

另一方面,在同时接收到针对相同位置的写io请求时,由于主、从设备可分别选择任意一个写io请求中的数据进行写入,所以很容易出现主、从设备针对同一逻辑地址的写入数据不一致的现象,大大影响主、从设备的数据一致性。

为了解决上述问题,在相关的基于双活存储系统的数据存储技术中,通常采用分布式锁机制和写重定向机制。

下面分别对分布式锁机制和写重定向机制进行介绍。

1)分布式锁机制

分布式锁机制原理可以理解为:存储设备在写入写io请求携带的数据前,可先获得分布式锁,获得数据写入的权限。只有获取分布式锁,才可正常写入写io携带的数据。

下面以主设备为例,对分布式锁机制进行说明,从设备的分布式锁机制与主设备相同。

在实现时,在主设备接收到业务系统下发的写io请求后,可获取分布式锁。在获取到分布式锁后,主从设备可向从设备发送针对分布式锁已获取的消息。然后,主设备可将接收到的写io请求下发给从设备,并且主设备可写入该io请求携带的数据。从设备在接收到该写io请求后,可写入该写io请求携带的数据,然后向主设备返回写io请求处理完成的消息。最后,主设备可向上述业务系统返回写io请求处理完成的消息。

由于使用上述分布式锁机制,使得上述主、从设备在同时接收到针对相同逻辑地址的两个写io请求时,也可以通过分布式锁处理一个写io请求,保证了同一逻辑地址只对应一个写io请求,从而保证了主、从设备的数据一致性。

但是,在分布式锁机制中,由于在写入写io请求前需要获取分布式锁,并且主、从设备之间要进行分布式锁的交互,因此大大增加了系统负荷,降低了双活存储设备处理写io请求的效率,大大增加写io处理的时延。

2)写重定向机制

写重定向机制的核心思想就是在主、从设备同时接收到业务系统下发的写io请求时,将一端的写io请求转发到另一端进行写冲突处理。在实际应用中,通常可将从设备接收到的写io请求转发到主设备进行写冲突处理。

下面以将写io请求转发到主设备进行写冲突处理为例,对写重定向机制进行介绍。

在实现时,当从设备接收到业务系统下发的写io请求后,可将该写io请求转发至主设备,由主设备对该写io请求与本地接收的写io请求进行写冲突判断。如果判定冲突,主设备可将从从设备接收到的写io请求转发至从设备,并写入该从从设备接收到的写io请求携带的数据。从设备在接收到该写io请求后,可写入该写io请求携带的数据。在接收到主设备发送的针对从设备从业务系统接收到的写io请求的处理完成消息后,从设备可向业务系统返回处理完成消息。

由于从设备可将接收到的写io请求转发至主设备,由主设备完成写io请求的冲突判断,并向主、从设备下发同一个写io请求进行写入,因此可保证主、从设备的数据一致性。

但是,由于从设备需要将接收的写io请求转发至主设备,由主设备进行处理,所以使得主、从设备写io处理性能不一致,主设备写io处理性能要明显优于从设备。

基于此,本申请提出一种数据存储的方法,该方法可应用于双活存储系统中的作为主设备或者从设备的目标存储设备,该目标存储设备可判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突。在不冲突时,该目标存储设备可将第一写io请求下发至对端存储设备,由对端存储设备进一步判断该第一写io请求与其接收到的第三io请求是否冲突,并在冲突时,写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据。目标存储上设备可接收对端存储设备返回的该第三写io请求,并可判断该第三写io请求与该第一写io请求是否冲突。如果冲突,该存储设备可写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

一方面,目标存储设备不再采用分布式锁和写重定向机制来解决写冲突问题,而是在接收到业务系统下发的第一写io请求后,可进行第一写io和第二写io的冲突判断及处理,在将写io请求下发给对端存储设备后,对端存储设备和本设备还可进行进一步第一写io请求和对端接收到的第三写io请求的冲突判断及处理。因此可有效地提高本设备和对端存储设备的写io处理性能。

另一方面,由于目标存储设备在确定写冲突后,将主设备下发的写io携带的数据写入本端存储设备和对端存储设备,因此可有效地保证本端存储设备和对端存储设备的数据一致性。

此外,相较于分布式锁机制,本申请提出的数据存储方法可减少获取分布式锁以及分布式锁的交互过程,因此在解决写冲突的同时,可大大提高双活存储系统处理写io请求的性能。

相较于写重定向机制,由于从设备无需再将本地接收到的写io请求转发主设备,由主设备进行处理,而是主、从设备同时对接收到的io请求进行相同步骤的处理,使得主、从设备的io处理性能相同,从而大大提高了双活存储系统的写io请求的性能。

参见图1,图1是本申请一示例性实施例示出的一种数据存储方法的流程图。该数据存储方法可应用于由主、从设备组成的双活存储系统中的任一目标存储设备。

步骤101:目标存储设备判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突;

步骤102:目标存储设备如果所述第一写io请求与所述第二写io请求不冲突,将所述第一写io请求下发至所述对端存储设备,以使所述对端存储设备进一步判断所述第一写io请求与其接收到的第三io请求是否冲突,并在所述第一写io请求与所述第三io请求冲突时,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据;

步骤103:目标存储设备接收所述对端存储设备返回的所述第三写io请求,判断所述第三写io请求与所述第一写io请求是否冲突;

步骤104:如果所述第一写io请求与所述第三写io请求冲突,目标存储设备写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

其中,上述目标存储设备可为由主、从设备组成的双活存储系统中的任一存储设备。换句话说,上述目标存储设备可为双活存储系统中的主设备,也可为双活存储系统中的从设备。

上述第一写io请求,可为业务系统下发给上述目标存储设备的写io请求。

上述第二写io请求,可为业务系统下发给上述对端存储设备的写io请求。

上述第三写io请求,可为业务系统下发给上述对端存储设备的写io请求。由于目标存储设备在进行写冲突判断和对端存储设备接收到业务系统下发的写io请求是异步的,所以在目标存储设备进行第一、第二写io请求冲突判断时,对端存储设备可接收的写io请求,该接收到的写io请求未能与第一写io请求进行冲突判断,该写io请求可为第三写io请求。进一步来说,第三写io请求可理解为未与第一写io进行冲突判断的写io请求等。这里不对第三写io请求进行具体地限定。

需要说明的是,上述第一写io请求、第二写io请求与第三写io请求均不相同。

在本申请实施例中,目标存储设备在接收到业务系统下发的第一写io请求后,可进行第一写io和第二写io的冲突判断及处理,在将写io请求下发给对端存储设备后,对端存储设备和本设备还可进行进一步第一写io请求和对端存储设备接收到的第三写io请求的冲突判断及处理。由于不再采用分布式锁和写重定向机制,因此可在有效地解决写冲突问题的同时,有效地提高本设备和对端存储设备的写io处理性能。

下面以目标存储设备为双活存储系统中的主设备,对端存储设备为双活存储系统中的从设备为例,对上述数据存储的方法进行详细地说明。

参见图1所述流程,并结合图2所示的本申请提出的数据存储方法的示意图。

在实现时,主设备可接收业务系统下发的第一写io请求。对端存储设备还可接收业务系统发送的第二写io请求,并可将第二写io请求转发至主设备。主设备可接收从设备转发的第二写io请求。

需要说明的是,与主设备对接的业务系统和与从设备对接的业务系统可为同一个业务系统,也可为不同的业务系统,在这里不对与主、从设备对接的业务系统进行具体地限定。

此外,还需要说明的是,主设备接收第一写io请求以及第二写io请求没有必然的时序限制。

主设备在接收到第一写io请求和第二写io请求后,可基于第一写io请求和第二写io请求携带的待存入数据对应的逻辑地址,判断第一写io请求和第二写io请求携带的逻辑地址是否重叠。

如果上述第一写io请求和第二写io请求携带的逻辑地址重叠,则主设备可确定该第一写io请求和第二写io请求冲突。此时,主设备可向与该主设备对接的业务系统返回写入繁忙的提示消息,以触发该业务系统重新下发该第一写io请求。从设备可继续写入第二写io请求。

如果上述第一写io请求和第二写io请求携带的逻辑地址不重叠,主设备可确定该第一写io请求和第二写io请求不冲突。此时,主设备可写入第一写io请求,并将该第一写io请求下发至从设备

从设备在接收到主设备下发的第一写io请求后,可写入该第一写io请求携带的数据。

然而,由于主设备在进行写冲突判断和对端存储设备接收到业务系统下发的写io请求是异步的,所以在主设备进行第一、第二写io请求冲突判断时,对端存储设备可能接收的未与第一写io请求进行冲突判断的第三写io请求,所以为了解决写冲突问题以及满足主、从设备针对相同逻辑地址写入数据的一致性要求,主、从设备还需要进行第一写io请求和第三写io请求的冲突判断。

在实现时,从设备可判断该第一写io请求和该从业务系统接收到的第三写io请求携带的逻辑地址是否重叠。如果该第一写io请求和该第三写io请求携带的逻辑地址重叠,从设备可确定第一写io请求和第三写io请求冲突。

此时,从设备可写入第一写io请求携带的数据,使得从设备最终保留的是第一写io请求携带的数据。

需要说明的是,由于从设备在判断第一写io请求和第三写io请求冲突时,可能出现从设备将第三写io请求的数据覆盖上述写入的第一写io请求对应的数据。为了保证主、从设备数据的一致性,在本申请中,从设备可保留主设备对应的第一写io携带的数据。

在一种可选的实现方式中,从设备在确定第一写io请求和第三写io请求冲突后,可重新写入第一写io携带的数据,以实现从设备写入第一写io请求携带的数据,使得从设备最终保留的是第一写io请求携带的数据的要求。

当然,从设备还可判断当前逻辑地址对应的存储空间中的数据是否为主设备对应的第一写io中的数据,如果是,则无需写入第一写io携带的数据。如果否,则重新写入第一写io携带的数据,以实现从设备写入第一写io请求携带的数据,使得从设备最终保留的是第一写io请求携带的数据的要求。

这里不对从设备写入第一写io请求携带的数据,使得从设备最终保留的是第一写io请求携带的数据的方式进行具体地限定。

在本申请实施例中,如果该第一写io请求和该第三写io请求携带的逻辑地址重叠,从设备可确定第一写io请求和第三写io请求不冲突。此时,从设备可写入第三写io携带的数据。

不论第一写io请求和第三写io请求是否冲突,从设备均可将第三写io请求发送至主设备。

主设备在接收到第三写io请求后,可判断该第一写io请求和该第三写io请求携带的逻辑地址是否重叠。如果该第一写io请求和该第三写io请求携带的逻辑地址重叠,主设备可确定第一写io请求和第三写io请求冲突。

此时,主设备可写入第一写io请求携带的数据,使得主设备最终保留的是第一写io请求携带的数据。

需要说明的是,由于主设备在判断第一写io请求和第三写io请求冲突时,可能出现主设备将第三写io请求的数据覆盖上述写入的第一写io请求对应的数据。为了保证主、从设备数据的一致性,在本申请中,主设备可保留主设备对应的第一写io携带的数据。

在一种可选的实现方式中,主设备在确定第一写io请求和第三写io请求冲突后,可重新写入第一写io携带的数据,以实现主设备写入第一写io请求携带的数据,使得主设备最终保留的是第一写io请求携带的数据的要求。

当然,主设备还可判断当前逻辑地址对应的存储空间中的数据是否为主设备对应的第一写io中的数据,如果是,则无需写入第一写io携带的数据。如果否,则重新写入第一写io携带的数据,以实现主设备写入第一写io请求携带的数据,使得主设备最终保留的是第一写io请求携带的数据的要求。

这里不对主设备写入第一写io请求携带的数据,使得主设备最终保留的是第一写io请求携带的数据的方式进行具体地限定。

在主、从设备均完成写入第一写io请求携带的数据后,主设备可向与该主设备对接的业务系统返回写入成功的提示消息。从设备可向与该从设备对接的业务系统返回写入繁忙的提示消息,以触发与该从设备对接的业务系统重新下发该第三写io请求。

需要说明的是,主设备接收到第三写io请求和从设备进行第一和第三写io请求的冲突判断,没有必然的时序限制。

对于当目标存储设备为从设备,对端存储设备为主设备的情形,所执行的数据存储方法与上述目标存储设备为主设备,对端存储设备为从设备的数据存储方法相同。这里不再赘述。

需要强调的是,无论目标存储设备为主设备还是从设备,在进行上述第一写io请求和第三写io请求判断后,目标存储设备和对端存储设备均需要写入主设备对应的写io请求携带的数据。当目标存储设备为主设备时,目标存储设备和对端存储设备可写入第一写io请求携带的数据。当目标存储设备为从设备时,目标存储设备和对端存储设备可写入第三写io请求携带的数据。

当然,在进行上述第一写io请求和第三写io请求判断后,目标存储设备和对端存储设备也可以写入从设备携带的数据,只要保证目标存储设备和对端存储设备的数据一致即可。

本申请提出一种数据存储的方法,该方法可应用于双活存储系统中的作为主设备或者从设备的目标存储设备,该目标存储设备可判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突。在不冲突时,该目标存储设备可将第一写io请求下发至对端存储设备,由对端存储设备进一步判断该第一写io请求与其接收到的第三io请求是否冲突,并在冲突时,写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据。目标存储上设备可接收对端存储设备返回的该第三写io请求,并可判断该第三写io请求与该第一写io请求是否冲突。如果冲突,该存储设备可写入该第一写io请求和该第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

一方面,目标存储设备不再采用分布式锁和写重定向机制来解决写冲突问题,而是在接收到业务系统下发的第一写io请求后,可进行第一写io和第二写io的冲突判断及处理,在将第一写io请求下发给对端存储设备后,对端存储设备和本设备还可进一步进行第一写io请求和对端接收到的第三写io请求的冲突判断及处理,由于不再采用分布式锁和写重定向机制,因此可在有效地解决写冲突问题的同时,有效地提高本设备和对端存储设备的写io处理性能。

另一方面,由于目标存储设备在确定写冲突后,将主设备下发的写io携带的数据写入本端存储设备和对端存储设备,因此可有效地保证本端存储设备和对端存储设备的数据一致性。

与前述数据存储方法的实施例相对应,本申请还提供了数据存储装置的实施例。

本申请数据存储装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请数据存储装置所在存储设备的一种硬件结构图,除了图3所示的处理器、内存、网络出接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该存储设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图4,图4是本申请一示例性实施例示出的一种数据存储装置的框图。该装置应用于由主设备和从设备组成的双活存储系统中的任一目标存储设备,所述装置可包括:第一判断单元410、下发单元420、第二判断单元430和写入单元440。

第一判断单元410,用于判断业务系统下发的第一写io请求,与对端存储设备下发的第二写io请求是否冲突;

下发单元420,用于如果所述第一写io请求与所述第二写io请求不冲突,将所述第一写io请求下发至所述对端存储设备,以使所述对端存储设备进一步判断所述第一写io请求与其接收到的第三io请求是否冲突,并在所述第一写io请求与所述第三io请求冲突时,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据;

第二判断单元430,用于接收所述对端存储设备返回的所述第三写io请求,判断所述第三写io请求与所述第一写io请求是否冲突;

写入单元440,用于如果所述第一写io请求与所述第三写io请求冲突,写入所述第一写io请求和所述第三写io请求中携带的由主设备下发的数据,并向所述业务系统返回对应的提示消息。

在一种可选的实现方式中,如果所述目标存储设备为主设备,所述写入单元440,具体用于写入所述第一写io请求携带的数据,并向所述业务系统返回写入成功的提示消息。

在另一种可选的实现方式中,如果所述目标存储设备为从设备,所述写入单元440,具体用于写入第三写io请求携带的数据,并向所述业务系统返回写入繁忙的提示消息,以触发所述业务系统重新下发所述第一写io请求。

在另一种可选的实现方式中,所述装置还包括450:丢弃单元,用于如果所述第一写io请求和所述第二写io请求冲突,则丢弃所述第一写io请求,并向所述业务系统返回写入繁忙的提示消息,以触发所述业务系统重新下发所述第一写io请求。

在另一种可选的实现方式中,如果所述第一写io请求和所述第二写io请求冲突,所述对端存储设备写入所述第二写io请求中携带的数据。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1