首页 / 存储盘的预留方法、电子设备、存储介质和程序产品

存储盘的预留方法、电子设备、存储介质和程序产品有效专利 发明

技术领域

[0001] 本公开涉及存储技术领域,具体涉及一种存储盘的预留方法、电子设备、存储介质和程序产品。

相关背景技术

[0002] 在实际的业务场景中,可能会存在多个主机需要访问同一个共享存储盘的情况。为了避免数据冲突,每个主机在访问共享存储盘之前,可以先针对共享存储盘执行预留操作。若一个主机预留共享存储盘成功,该主机可以独占共享存储盘,并在共享存储盘中读写、删除、修改数据等。在一个主机独占共享存储盘的期间,其它主机可以没有访问共享存储盘的权限。如此,有效避免了数据冲突的问题。
[0003] 但是,目前的一些技术中,在基于以太网的存储扩展架构中,受限于该架构所采用协议的预留实现机制,主机无法实现针对存储盘的预留,从而不能解决数据冲突的问题。
[0004] 鉴于此,亟需一种方法来实现这种架构下的存储盘预留。

具体实施方式

[0030] 为使本公开实施方法的目的、技术方案和优点更加清楚,下面将结合本公开实施方法中的附图,对本公开实施方法中的技术方案进行清楚、完整地描述,显然,所描述的实施方法是本公开一部分实施方法,而不是全部的实施方法。基于本公开中的实施方法,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施方法,都属于本公开保护的范围。
[0031] 在实际的业务场景中,多个主机需要访问同一个共享存储盘的其中一种情况,是集群系统出现脑裂的情况。具体的,在集群系统中,各个节点可以作为主机。节点之间由于通信故障等原因被分割成多个无法相互通信的子集,称为脑裂。在脑裂情况下,集群系统中不同子集的节点都可能认为自己是主节点或唯一活跃的节点,从而开始独立的提供服务或执行操作。为了避免数据冲突,不同子集的节点会通过仲裁盘来达成共识。所谓仲裁盘,就是在不同子集节点之间共享的存储盘。在集群系统出现脑裂情况后,不同子集中的节点通过往仲裁盘中写入集群状态事件,来确定哪些子集中的节点该继续提供服务,哪些子集中的节点该退出服务。仲裁盘每次只允许一个节点访问,不同的节点访问仲裁盘时,需要先针对仲裁盘执行预留操作。在预留成功的情况下,节点才享有访问仲裁盘的权限。
[0032] 目前一些技术中,在基于以太网的存储扩展架构中,集群系统中的节点无法针对存储盘执行预留操作,这就意味着,在基于以太网的存储扩展架构中,不能实现仲裁盘功能。为便于理解,结合参阅图1,为本公开的一个实施例提供的基于以太网的存储扩展架构的示意图。图1中,存储扩展架构包括控制器集群11、至少一个以太网电路板12、存储盘扩展卡14以及若干存储盘13。 其中:控制器集群11包括多个存储控制器111。比如,图1中,示例性的包括2个存储控制器111。每个存储控制器111可以分别作为控制器集群11中的其中一个节点(即主机)。存储控制器111主要用于连接业务服务器,并基于业务服务器下发数据操作请求,在存储盘13中进行数据操作管理。比如,在业务服务器需要往存储盘13中写数据时,可以将数据下发给存储控制器111,由存储控制器111确定数据在存储盘13中的存储位置。在确定数据的存储位置后,存储控制器111可以通过以太网电路板12将数据写入存储盘13中。
[0033] 以太网电路板12又可称为EBOF(Ethernet‑attached Bunch of Flash),包括以太网口121和PCIe端口122。其中,每个以太网电路板12中的以太网口121可用于连接控制器集群11的至少部分存储控制器111。比如,图1中,每个以太网口121示例性的与控制器集群11的所有存储控制器111连接。基于以太网口121,存储控制器111与以太网电路板12之间可以通过以太网连接。PCIe端口122可用于连接存储盘扩展卡14。每个存储盘扩展卡14可以分别连接若干存储盘13,以及每个存储盘13通过存储盘扩展卡14,分别连接至其中一个太网电路板12。如此,基于以太网结构,实现了存储盘13的扩展。
[0034] 在一些实施例中,在图1所示的存储扩展架构中,在控制器集群11与以太网电路板12之间还包括交换机。存储控制器111与以太网电路板12之间通过基于Fabric的NVMe(Non‑Volatile Memory Express,非易失性内存主机控制器接口规范)协议进行通信,存储盘13与以太网电路板12之间通过基于PCIe的NVMe协议进行通信。简单来说,就是以太网电路板
12可以完成通信协议的转换,即将基于Fabric的NVMe协议与基于PCIe的NVMe协议进行相互转换。
[0035] 基于以上描述,在控制器集群11未出现脑裂情况时,不同存储控制器111之间可以相互通信并协调工作。比如,基于存储控制器111之间的相互通信和协调工作,可以决定业务服务器下发的数据是由存储控制器A写入存储盘13,还是由存储控制器B写入存储盘13,或者是由存储控制器A和存储控制器B各自完成一部分数据写的工作。但是,在控制器集群11出现脑裂情况时,不同的存储控制器111之间相互独立的执行数据读写等操作,就有可能造成数据冲突的风险,比如存储控制器A和存储控制器B可以会将同一数据重复写入存储盘
13。
[0036] 鉴于此,可以将部分存储盘13作为仲裁盘。在控制器集群11出现脑裂情况时,不同的存储控制器111可以通过往仲裁盘中写入集群状态事件,来确定哪些控制器集群11可以继续提供服务,以及哪些控制器集群11需要退出服务。具体的,针对任一存储控制器111,该存储控制器111在往仲裁盘写数据之前,可以下发预留指令以请求预留仲裁盘,在预留成功的情况下,才可以往仲裁盘中写数据。
[0037] 但是,在图1所示的存储扩展架构中,存储控制器111与以太网电路板12是基于NVMe协议的多对一的映射关系,因此,以太网电路板12可以基于与各个存储控制器111之间的链路,来区分不同存储控制器111下发的预留指令。然而,在以太网电路板12将预留指令下发给存储盘13(即仲裁盘)时,存储盘13则不能区分下发预留指令的存储控制器111。比如图1中,假设存储盘m1是仲裁盘。因为以太网电路板a分别与存储控制器A和存储控制器B连接,故以太网电路板a可以区分存储控制器A和存储控制器B下发的预留指令,但是,在以太网电路板a将预留指令下发给存储盘13时,对于存储盘m1来说,存储盘m1只知道是通过以太网电路板a接收到的预留指令,并不知道是存储控制器A还是存储控制器B下发的预留指令,进而不知道是该为存储控制器A赋予数据写权限,还是为存储控制器B赋予数据写权限。如此,便无法完成存储盘m1的预留操作。
[0038] 鉴于此,本公开提供一种存储盘的预留方法,可以在基于以太网的存储扩展架构中,实现存储盘的预留,减少数据冲突。预留方法可应用于图1中的以太网电路板12。结合参阅图2,为本公开的一个实施例提供的预留方法的流程示意图。图2中,预留方法包括如下步骤:步骤S201,接收控制器集群11中的第一存储控制器发送的预留指令,预留指令用于请求针对目标存储盘执行预留操作。
[0039] 具体的,第一存储控制器可以是控制器集群11中的其中一个存储控制器111。第一存储控制器可以将预留指令下发给与目标存储盘连接的以太网电路板12。比如图1中,在存储控制器A需要针对存储盘m1执行预留操作时,可以将预留指令下发给以太网电路板a。以太网电路板a在接收到预留指令后,可以执行本公开的预留方法。
[0040] 目标存储盘可以是需要执行预留操作的存储盘13,比如图1中的存储盘m1。预留指令可以包括表征预留操作的预留字段和目标存储盘的存储盘标识,比如acquire m1。其中,acquire为预留字段,m1为目标存储盘的存储盘标识。在以太网电路板12接收到第一存储控制器发送的指令acquire m1时,由于指令中包括acquire,可以确定该指令是预留指令。同时,基于预留指令中的存储盘标识,可以确定需执行预留操作的目标存储盘为存储盘m1。
[0041] 在本实施例中,在接收到预留指令后,以太网电路板12可以根据接收到预留指令的链路,确定下发预留指令的第一存储控制器。比如图1中,若以太网电路板a通过链路L1接收到预留指令,可以确定存储控制器A是第一存储控制器;若以太网电路板a通过链路L2接收到预留指令,可以确定存储控制器B是第一存储控制器。
[0042] 步骤S202,若在本地保存的存储盘预留记录中,目标存储盘的命名空间处于未被预留状态,则将预留指令发送给目标存储盘,以指示目标存储盘预留命名空间。
[0043] 具体的,命名空间,可以理解为目标存储盘中可访问的介质,即目标存储盘提供的储存空间。通常情况下,目标存储盘作为一个盘对象,除包括命名空间外,还可以包括端口等其它部分。但是,针对目标存储盘的预留操作,实质是预留目标存储盘对应的命名空间。
[0044] 在目标存储盘与以太网电路板12连通的情况下,以太网电路板12可以获取得到目标存储盘的命名空间,并将命名空间写入本地保存的存储盘预留记录中。在存储盘预留记录中,可以维护命名空间是否处于被预留状态。具体的,在命名空间未被预留的情况下,若以太网电路板12接收针对目标存储盘的第一预留指令,可以在存储盘预留记录中,将命名空间的状态修改被预留状态。在命名空间的状态修改被预留状态后,若以太网电路板12接收针对目标存储盘的第二预留指令,这个时候,通过查看本地维护的存储盘预留记录,便可以得知命名空间处于被预留状态,因此,可以给发起第二预留指令的存储控制器111返回表征预留失败的响应。
[0045] 当然,可以理解的是,在发送第一预留指令的存储控制器111访问完目标存储盘之后,可以给以太网电路板12发送释放指令。释放指令可以包括表征释放操作的释放字段和目标存储盘的存储盘标识,比如,release m1。其中,release为释放字段,m1为目标存储盘的存储盘标识。在以太网电路板12接收到存储控制器111发送的指令release m1时,由于指令中包括release,可以确定该指令是释放指令。同时,基于释放指令中的存储盘标识,可以确定需执行释放操作的目标存储盘为存储盘m1。这样,便可以在存储盘预留记录中,将命名空间的状态修改为未被预留状态。
[0046] 基于以上针对存储盘预留记录的相关描述,在以太网电路板12接收到第一存储控制器发送的预留指令后,若本地的存储盘预留记录中,目标存储盘的命名空间处于未被预留状态,则可以将预留指令发送给目标存储盘,以指示目标存储盘预留命名空间。在本公开所示的实施例中,发送预留指令的第一存储控制器可以在以太网电路板12中保存并维护。目标存储盘在预留命名空间时,可以无需知道发送预留指令的第一存储控制器具体是哪个控制器,直接执行命名空间的预留操作即可。
[0047] 步骤S203,若目标存储盘预留命名空间成功,则在存储盘预留记录中,将第一存储控制器与目标存储盘相关联,以表征目标存储盘的命名空间被第一存储控制器预留,并给第一存储控制器返回预留成功响应。
[0048] 具体的,在目标存储盘预留命名空间成功的情况下,目标存储盘可以给以太网电路板12返回成功响应。在接收到成功响应的情况下,以太网电路板12可以在存储盘预留记录中,将第一存储控制器与目标存储盘相关联,以表征目标存储盘的命名空间被第一存储控制器预留。
[0049] 在本公开所示实施例中,在目标存储盘存在关联的存储控制器时,可以表征目标存储盘处于被预留状态;在目标存储盘不存在关联的存储控制器时,可以表征目标存储处于未被预留状态。即通过判断目标存储盘是否有关联的存储控制器,可以判断目标存储盘的命名空间是否处于被预留状态。
[0050] 进一步的,以太网电路板12接收到一个存储控制器发起的针对目标存储盘的访问请求时,可以判断发起访问请求的存储控制器是否为存储盘预留记录中与目标存储盘关联的存储控制器,若是,则放行;若不是,则拒绝存储控制器发起的针对目标存储盘的访问请求。
[0051] 综上,在本公开一些实施例的技术方案中,通过在以太网电路板12中设置存储盘预留记录,并通过存储盘预留记录来记录以太网电路板12连接的存储盘13是否处于被预留状态。这样,在以太网电路板12接收到控制器集群中的第一存储控制器发送针对目标存储盘的预留指令时,便可以在存储盘预留记录中,判断目标存储盘的命名空间是否处于被预留状态,并在命名空间处于未被预留状态时,将预留指令发送目标存储盘,以指示目标存储盘预留命名空间。以及,在目标存储盘预留命名空间成功的情况下,通过在存储盘预留记录中,将目标存储盘的命名空间设置为被第一存储控制器预留。这样,以太网电路板12便可以基于存储盘预留记录,拒绝第一存储控制器之外的其它存储控制器针对目标存储盘发起预留操作。即在本公开的方案中,通过在以太网电路板12中设置预留方法对应的控制逻辑,便可以在目标存储盘不能区分各个存储控制器111的情况下,实现各个存储控制器发起的针对目标存储盘的预留操作,从而大大减少了数据冲突。
[0052] 在一些实施例中,图1所示的方法还可以包括:若在本地保存的存储盘预留记录中,命名空间处于被预留状态,则中止将预留指令发送给目标存储盘的流程,并给第一存储控制器返回表征预留失败的第一响应。
[0053] 如此,避免多个存储控制器同时对目标存储盘发起预留操作所造成的预留失败。
[0054] 在一些实施例中,在给第一存储控制器返回表征预留失败的第一响应后,还可以接收第一存储控制器重新发送的预留指令,并重新基于存储盘预留记录,判断目标存储盘的命名空间是否处于未被预留状态。若这个时候,命名空间已经处于未被预留状态,则可以为第一存储控制器预留命名空间;若这个时候,命名空间还处于被预留状态,则可以继续给第一存储控制器返回表征预留失败的第一响应。
[0055] 进一步的,考虑到每个存储控制器111每次访问目标存储盘的时长可以有个大致时长范围,比如最多访问3毫秒。若存储控制器111预留目标存储盘的时长超过的时长阈值(比如3毫秒)后,还未发起针对目标存储盘的释放指令,可以认为该存储控制器111异常,这种情况下,可以强制释放目标存储盘,以方便其它存储控制器111可以预留目标存储盘。
[0056] 基于以上描述,在一些实施例中,在给第一存储控制器返回表征预留失败的第一响应后,若存储盘预留记录中第一存储控制器与目标存储盘的关联时长超过时长阈值,可以将第一存储控制器与目标存储盘取消关联,以强制释放目标存储盘。如此,以避免因第一存储控制器异常,导致其它存储控制器111无法预留目标存储盘的问题。
[0057] 进一步的,结合参阅图3,为本公开的一个实施例提供的目标存储盘与以太网电路板12之间的连接示意图。图3中,目标存储盘可以与多个以太网电路板12连接。即各个存储控制器111既可以通过以太网电路板a下发针对目标存储盘的预留指令,也可以通过以太网电路板b下发针对目标存储盘的预留指令。本公开的预留方法可应用于目标存储盘连接的且接收到预留指令的第一以太网电路板。比如,若以太网电路板a接收到预留指令,则以太网电路板a可以作为第一以太网电路板并执行预留方法;若以太网电路板b接收到预留指令,则太网电路板b可以作为第一以太网电路板并执行预留方法。
[0058] 在与目标存储盘连接的多个以太网电路板12中,每个以太网电路板12本地均可以维护有存储盘预留记录。针对任一以太网电路板12,在该以太网电路板12执行预留方法时,是依据该以太网电路板12本地维护的存储盘预留记录,判断目标存储盘是否处于预留状态,以及在为目标存储盘预留命名空间成功的情况下,是对该以太网电路板12本地维护的存储盘预留记录进行更新。换句话说,就是不同的以太网电路板12相互独立的维护各自的存储盘预留记录。这样存在的问题就是,在一个以太网电路板12依据本地维护的存储盘预留记录,确定目标存储盘的命名空间处于未被预留状态时,在另一个以太网电路板12本地维护的存储盘预留记录中,命名空间有可能是处于被预留状态。比如,存储控制器B先通过以太网电路板b下发针对目标存储盘的预留指令,并预留命名空间成功,这时,在以太网电路板b本地维护的存储盘预留记录中,目标存储盘的命名空间是处于被预留状态的。在存储控制器B预留命名空间成功的情况下,若存储控制器A通过以太网电路板a下发针对目标存储盘的预留指令,这时,在以太网电路板a本地维护的存储盘预留记录中,由于目标存储盘的命名空间处于未被预留状态,因此,以太网电路板a会将存储控制器A下发的预留指令发送给目标存储盘,以指示目标存储盘预留命名空间。但是,由于目标存储盘的命名空间实际处于被预留状态,因此,目标存储盘可以给以太网电路板a返回预留命名空间失败的响应。
[0059] 基于图3,以下的方案阐述中,将以太网电路板a作为第一以太网电路板进行阐述。
[0060] 具体的,基于图3,若目标存储盘预留命名空间失败,以太网电路板a可以确定命名空间被控制器集群11中的第二存储控制器通过目标存储盘连接的第二以太网电路板a所预留。这种情况下,以太网电路板a可以给第一存储控制器返回表征预留失败的第二响应。
[0061] 如此,可以避免不同存储控制器通过不同的以太网电路板12预留目标存储盘所造成的预留失败问题。
[0062] 在一些实施例中,以太网电路板a在将第二响应返回给第一存储控制器后,本公开的方法还可以包括:以太网电路板a接收第一存储控制器重新发送的预留指令,并将预留指令发送给目标存储盘,以重新指示目标存储盘预留命名空间。
[0063] 具体的,第一存储控制器可以每隔预设时长(比如1毫秒),重新给之前的以太网电路板12发送一次预留指令,以尝试预留目标存储盘的命名空间。其中,上述之前的以太网电路板12,是指给第一存储控制器返回第二响应的以太网电路板12 。比如,第一存储控制器给以太网电路板a发送预留指令,以太网电路板a给第一存储控制器返回第二响应,那么第一存储控制器可以在接收到第二响应之后,每隔预设时长重新给以太网电路板a发送预留指令。
[0064] 如此,通过尝试重发指令,可以在目标存储盘的命名空间被释放后,及时为第一存储控制器预留命名空间。
[0065] 在一些实施例中,以太网电路板a在重新给目标存储盘发送预留指令后,本公开的方法还可以包括:若基于重新发送的预留指令,目标存储盘预留命名空间成功,以太网电路板a可以在本地的存储盘预留记录中,将第一存储控制器与目标存储盘相关联,并给第一存储控制器返回预留成功响应。
[0066] 如此,及时为第一存储控制器预留命名空间。
[0067] 在一些实施例中,在第一存储控制器重新发送预留指令预设次数后,若还未预留命名空间成功,本公开的方法还可以包括:以太网电路板a接收第一存储控制器发送的抢占指令,并将抢占指令发送给目标存储盘,以指示目标存储盘为第一存储控制器抢占命名空间;
若抢占命名空间成功,以太网电路板a可以在本地的存储盘预留记录中,将第一存储控制器与目标存储盘相关联,并给第一存储控制器返回抢占成功响应。
[0068] 具体的,在第一存储控制器重新发送预留指令预设次数后,若还未预留命名空间成功,可以表示上述第二存储控制器出现异常,无法及时释放目标存储盘的命名空间。这种情况下,第一存储控制器可以给以太网电路板a发送抢占指令来抢占命名空间。强制指令可以包括表征抢占操作的抢占字段和目标存储盘的存储盘标识,比如,preempt m1。其中,preempt为抢占字段,m1为目标存储盘的存储盘标识。在以太网电路板12接收到第一存储控制器发送的指令preempt m1时,由于指令中包括preempt,可以确定该指令是抢占指令。同时,基于预留指令中的存储盘标识,可以确定需执行抢占操作的目标存储盘为存储盘m1。这样,以太网电路板a便可以将抢占指令发送给目标存储盘。
[0069] 正常情况下,目标存储盘接收到抢占指令后,可以将命名空间与以太网电路板a绑定,并释放与以太网电路板b的绑定关系。同时,目标存储盘可以给以太网电路板b上报表征命名空间被第一存储控制器抢占的事件,以触发以太网电路板b在本地维护的存储盘预留记录中,将命名空间的状态设置为未被预留状态。
[0070] 类似的,在一些实施例中,以太网电路板a在成功为第一存储控制器预留命名空间后,本公开的方法还可以包括:以太网电路板a若接收到目标存储盘上报的表征命名空间被第一存储控制器之外的其它存储控制器抢占的事件,在本地的存储盘预留记录中将第一存储控制器与目标存储盘取消关联,以表征命名空间被第一存储控制器释放。这种场景便是在第一存储控制器出现异常的情况下,第一存储控制器预留命名空间的时长超过时长阈值,因此,其所预留的命名空间被别的存储控制器通过以太网电路板b抢占的情况。通过这种抢占机制,可以避免第一存储控制器异常的情况下,影响其它存储控制器预留命名空间,可靠性高。
[0071] 在一些实施例中,在第一存储控制器对命名空间访问完成后,本公开的方法还可以包括:接收第一存储控制器发送的释放指令,在存储盘预留记录中,将第一存储控制器与目标存储盘取消关联,以表征命名空间被第一存储控制器释放。
[0072] 如此,以在第一存储控制器使用完目标存储盘后,及时释放命名空间。
[0073] 在一些实施例中,在接收预留指令之前,本公开的方法还可以包括:接收第一存储控制器发送的注册指令,注册指令用于指定第一存储控制器待注册至的指定存储盘;
将注册指令发送至指定存储盘,以将第一存储控制器注册至指定存储。
[0074] 具体的,注册指令可以包括表征注册操作的注册字段和目标存储盘的存储盘标识,比如,register m1。其中,register为注册字段,m1为目标存储盘的存储盘标识。在以太网电路板12接收到第一存储控制器发送的指令register m1时,由于指令中包括register,可以确定该指令是注册指令。同时,基于预留指令中的存储盘标识,可以确定需执行注册操作的目标存储盘为存储盘m1。这样,以太网电路板a便可以将注册指令发送给目标存储盘。
[0075] 这种注册机制,可以提高系统安全性。
[0076] 在一些实施例中,在接收到的预留指令后,本公开的方法还可以包括:判断第一存储控制器是否在目标存储盘注册;
若否,给第一存储控制器返回表征预留失败的第三响应;
若是,执行针对目标存储盘的预留操作。
[0077] 如此,防止未注册的存储控制器使用目标存储盘。
[0078] 在一些实施例中,在用于将第一存储控制器注册至目标存储盘的注册指令中,还包括用于对第一存储控制器进行鉴权的第一鉴权信息,以及在第一存储控制器发送的预留指令,还包括用于对第一存储控制器进行鉴权的第二鉴权信息。在注册成功后,以太网电路板12可以保存第一鉴权信息。在接收到第一存储控制器发送的预留指令后,本公开的方法还可以包括:判断第一鉴权信息和第二鉴权信息是否相同,若相同,执行针对目标存储盘的预留操作,若不相同,给第一存储控制器返回表征预留失败的第四响应。
[0079] 如此,保证系统安全性。
[0080] 在一些实施例中,考虑到基于NVMe协议的系统中,只有鉴权信息相同的存储控制器111之间才能相互进行命名空间的抢占,即鉴权信息不同,可能抢占会失败。因此,在控制器集群中,用于对至少部分存储控制器进行鉴权的鉴权信息可以相同,如此,以保证位于同一集群中的不同存储控制器111之间可以相互进行命名空间的抢占。
[0081] 到此,完成本公开方法的相关描述。
[0082] 结合参阅图4,为本公开的一个实施例提供的电子设备的示意图。电子设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。
[0083] 其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
[0084] 存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
[0085] 存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0086] 本公开一个实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的方法。
[0087] 本公开一个实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的方法。
[0088] 本公开一个实施方式还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的方法。
[0089] 虽然结合附图描述了本公开的实施方法,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页 第1页 第2页 第3页