节点检测方法及共享存储装置与流程

文档序号:16528779发布日期:2019-01-05 10:34阅读:272来源:国知局
节点检测方法及共享存储装置与流程

本申请涉及共享存储技术领域,具体而言,涉及一种节点检测方法及共享存储装置。



背景技术:

共享文件系统是指由多个节点组成的集群,多个节点可以访问同一存储空间,在任一节点上读写文件,在其他节点上可以访问该文件,节点之间通过分布式锁协商读写权限。

在一些应用场景中,共享文件系统的节点通过读写心跳机制来判定其他节点是否在线,每个节点按照自身的节点号在对应的固定地址写数据,并读取其他节点写的数据来判断其他节点是否在线。如此,每个节点需要频繁地进行大量读写(i/o)操作,占用大量i/o资源。随着集群中节点数量的增加,共享文件系统的负载将成倍增加,当共享文件系统的存储繁忙时,可能产生心跳i/o不响应的问题,从而导致得到错误的检测结果。



技术实现要素:

有鉴于此,本申请的目的在于提供一种节点检测方法及共享存储装置,以至少部分地改善上述问题。

为了达到上述目的,本申请实施例采用如下方案:

第一方面,本申请实施例提供一种节点检测方法,应用于与目标节点通信连接的共享存储装置,所述目标节点能够对所述共享存储装置进行数据读写,所述方法包括:

按照预设检测周期对所述目标节点和所述共享存储装置的连通性进行检测;

若检测到所述目标节点和所述共享存储装置不连通,则确定所述目标节点不能读写所述共享存储装置;

若检测到所述目标节点和所述共享存储装置连通,则对所述共享存储装置中的预设地址执行模拟读写操作,并根据执行所述模拟读写操作的结果判断所述目标节点是否能够读写所述共享存储装置。

第二方面,本申请实施例提供一种共享存储装置,与目标节点通信连接,所述目标节点能够对所述共享存储装置进行数据读写,所述装置包括:

连通性检测模块,用于按照预设检测周期对所述目标节点和所述共享存储装置的连通性进行检测,当检测到所述目标节点和所述共享存储装置不连通时,确定所述目标节点不能读写所述共享存储装置;

第一判断模块,用于当检测到所述目标节点和所述共享存储装置连通时,对所述共享存储装置中的预设地址执行模拟读写操作,并根据执行所述模拟读写操作的结果判断所述目标节点是否能够读写所述共享存储装置。

相对于现有技术而言,本申请实施例具有以下有益效果:

本申请实施例提供的一种节点检测方法及共享存储装置,共享存储装置与目标节点通信连接,且能够被目标节点进行数据读写。共享存储装置按照预设检测周期对目标节点和本装置的连通性进行检测,若检测到目标节点和共享存储装置不连通,则确定目标节点不能读写共享存储装置;若检测到目标节点和共享存储装置连通,则对共享存储装置中的预设地址执行模拟读写操作,并根据执行该模拟读写操作的结果判断目标节点是否能读写共享存储装置。如此,可以避免目标节点频繁地进行读写操作,节约目标节点的i/o资源,从而避免在共享存储装置的存储业务繁忙时,因心跳i/o不响应而导致的对节点在线情况进行误判。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种共享存储系统的连接示意图;

图2为本申请实施例提供的一种节点检测方法的流程示意图;

图3为本申请实施例提供的一种具体示例中的应用场景示意图;

图4为本申请实施例提供的一种共享存储装置的功能模块框图。

图标:10-共享存储系统;100-共享存储装置;110-连通性检测模块;120-第一判断模块;130-第二判断模块;140-读写模块;150-地址更新模块;200、300、400-节点;20-ceph分布式存储系统;21、22、23-rbd卷;30-集群;31、32、33-节点。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

请参照图1,图1是本申请实施例提供的一种共享存储系统10的连接示意图,该共享存储系统10包括共享存储装置100及通过网络与共享存储装置100通信连接的至少一个节点,例如,图1所示的节点200、节点300和节点400,所述至少一个节点可以对所述共享存储装置100进行数据读写。

在本申请实施例中,所述节点可以是任意具有数据处理功能和通信功能的电子设备,例如主机、服务器等。

所述共享存储装置100可以是任意能够被多个节点访问和读写的存储装置,在一种具体实施方式中,所述共享存储装置100可以是共享文件系统,如ocfs2系统。在又一种具体实施方式中,所述共享存储装置可以是分布式存储系统中能够被多个节点访问的逻辑卷,比如,ceph系统中的rbd(radosblockdevice)卷。

请参阅图2,是本申请实施例提供的一种节点检测方法的流程示意图,该节点检测方法应用于图1所示的共享存储装置100,下面结合图2对该方法的步骤进行详细阐述。

步骤s21,按照预设检测周期对所述目标节点和所述共享存储装置100的连通性进行检测。若不连通,则执行步骤s22;若连通,则执行步骤s23。

在本实施例中,与所述共享存储装置100通信连接、且能够读写所述共享存储装置100的任意节点均可以是所述目标节点,例如,图1中示出的节点200、节点300和节点400均可以是所述目标节点。

其中,所述预设检测周期可以根据实际情况进行灵活设定,例如可以设置为1秒、2秒、2.5秒等,本实施例对此不做限制。在实施时,所述共享存储装置100可以进行计时,并对计时时长进行检测,每检测到计时满一个所述预设检测周期,即可对所述目标节点和所述共享存储装置100的连通性进行检测。可选地,可以通过对所述目标节点的ip地址和所述共享存储装置100的ip地址执行ping命令来实现对所述目标节点和所述共享存储装置100的连通性的检测。

在实施时,所述共享存储装置100可以根据所述目标节点发送的请求或指令获得所述目标节点的ip地址。例如,可以从所述目标节点发送的挂载请求中解析得到所述目标节点的ip地址;又如,可以从所述目标节点发送的实际读写指令中解析得到所述目标节点的ip地址。其中,在本实施例中,所述实际读写指令是指所述目标节点用于进行正常读写业务的读写指令。

步骤s22,确定所述目标节点不能读写所述共享存储装置100。

在本申请实施例中,如果检测到所述目标节点和所述共享存储装置100不连通,在此情况下,所述共享存储装置100无法接收到所述目标节点发送的任何指令,因而无法根据所述目标节点发送的指令进行相应的读写操作。基于此,可以直接确定所述目标节点不能读写所述共享存储装置100,而不必再进行后续的检测。如此,可以提高检测效率。

考虑到即便所述目标节点和所述共享存储装置100连通,所述目标节点也可能无法读写所述共享存储装置100,在本申请实施例中,在检测到所述目标节点和所述共享存储装置100连通的情况下,本实施例通过对预设地址进行模拟读写操作,进而根据模拟读写操作返回的结果来做进一步的检测,具体可通过下述的步骤s23实现。

步骤s23,对所述共享存储装置100中的预设地址执行模拟读写操作,并根据执行所述模拟读写操作的结果判断所述目标节点是否能读写所述共享存储装置100。

其中,对所述共享存储装置100中的预设地址执行模拟读写操作,是指:所述共享存储装置100生成用于读写所述预设地址的模拟读写指令,并执行该模拟读写指令。其中,所述模拟读写指令包括用于读所述预设地址的读指令和用于写所述预设地址的写指令。

在现有的一些实施方式中,每个节点会按照一定的检测周期写固定地址及读取其他各节点对应的地址,并根据读取结果判断其他节点是否在线。采用这种方式,每个节点在每个检测周期需要进行多次读操作,并且随着集群中节点数量的增加,每个检测周期内进行读操作的次数也会增加,这将会极大地占用节点的i/o资源,当共享存储装置100的存储业务繁忙时,可能会出现无法响应节点的读操作的情况,从而导致节点误判其他节点的在线情况。而通过本申请实施例的上述设计,在每个预设检测周期内,目标节点可以不必执行额外的读写操作,节约了i/o资源,能够在一定程度上避免出现上述误判的情况。

为了节约共享存储装置100的资源,在本申请实施例中,可以进一步将步骤s23的检测过程分为两种情况进行,其中一种是在目标节点有存储业务时,即目标节点会发送读写指令给共享存储装置100时,直接根据共享存储装置100执行读写指令的结果进行检测;另一种是在目标节点没有存储业务时,再按照前述方式,通过模拟读写进行检测。

基于上述描述,所述步骤s21可以包括以下子步骤:

检测是否接收到所述目标节点发送的实际读写指令;

在未接收到所述目标节点发送的实际读写指令达到预设时长时,再按照预设检测周期对目标节点和所述共享存储装置100的连通性进行检测。

对应地,所述节点检测方法还可以包括以下步骤:

接收所述目标节点发送的实际读写指令,根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。

在一种实施方式中,可以是每次接收到目标节点发送的实际读写指令时,均根据执行该实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。在又一种实施方式中,可以是在每次接收到目标节点发送的实际读写指令时,判断当前是否到达所述预设检测周期,如果到达,再根据执行该实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。其中,判断当前是否到达所述预设检测周期即为判断是否重新计时满一个预设检测周期。

可选地,在本实施例中,接收所述目标节点发送的实际读写指令的步骤,可以包括以下子步骤:

在接收到所述实际读写指令时,记录所述实际读写指令的实际读写地址及实际读写长度。

其中,所述实际读写指令可以包括读指令和/或写指令,所述读指令携带有读地址和读长度,所述写指令携带有写地址和写长度。所述实际读写地址包括所述读地址和/或所述写地址,所述实际读写长度包括所述读长度和/或所述写长度。

在实施时,如果所述实际读写指令仅包括读指令,则记录该读指令中的读地址和读长度;如果所述实际读写指令仅包括写指令,则记录该写指令中的写地址和写长度;如果所述实际读写指令同时包括读指令和写指令,则记录所述实际读写指令中的读地址、读长度、写地址和写长度。

通过上述步骤,只要所述共享存储装置100有接收到所述目标节点发送的实际读写指令,记录的实际读写地址和实际读写长度就会发生改变。基于此,所述检测是否接收到所述目标节点发送的实际读写指令的步骤,可以包括以下子步骤:

检测记录的实际读写地址和实际读写长度是否发生变化,若记录的实际读写地址和实际读写长度在所述预设时长内未发生变化,则确定未接收到所述目标节点发送的实际读写指令达到所述预设时长。

在一种具体实施方式中,可以在预设的变量中记录所述实际读写地址和所述实际读写长度,并在根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100之后,将所述预设的变量重置为初始值,比如0。如此,可以对所述预设的变量的值进行检测,如果检测到所述预设的变量的值所述预设时长维持所述初始值,则可以确定在所述预设时长内所述目标节点都没有发送实际读写指令给所述共享存储装置100。

可选地,为了避免出现误检的情况,在本实施例中,步骤s23可以包括以下子步骤,以根据执行所述模拟读写操作的结果或执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100:

若得到的结果为读写失败,则记录读写失败的次数;

当记录的读写失败的持续次数达到预设阈值时,确定所述目标节点不能读写所述共享存储装置100。

在实施时,所述共享存储装置100中可以预存有读写失败次数,在执行所述实际读写指令失败或是执行所述模拟读写操作失败时,更新所述读写失败次数的当前值,例如累加1;在执行所述实际读写指令成功或执行所述模拟读写操作成功时,将所述读写失败次数重置为初始值。如此,当检测到所述读写失败次数的值达到所述预设阈值时,即可确定所述目标节点不能读写所述共享存储装置100。

在本申请实施例中,为了降低功能模块之间的耦合程度,根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100的步骤,可以通过如下子步骤实现:

获取所述实际读写指令的实际读写地址,所述实际读写地址包括读地址和/或写地址;

生成包括该读地址和/或该写地址的虚检查指令,并执行所述实际读写指令,以及从执行所述实际读写指令的结果中获取与所述虚检查指令对应的结果,并根据该结果判断所述目标节点是否能读取所述共享存储装置100。

在本申请实施例中,所述共享存储装置100可以包括用于执行实际读写指令的读写模块。在实施时,可以将接收到的实际读写指令和生成的虚检查指令一并发送给所述读写模块,当所述读写模块接收到所述实际读写指令时,会进行对应的读写操作。所述虚检查指令用于通知所述读写模块在执行完所述实际读写指令时,根据得到的结果判断所述目标节点是否能读写所述共享存储装置100。

详细地,当所述读写模块接收到所述虚检查指令时,会保存所述虚检查指令,并在得到所述实际读写指令执行的结果时,从该结果中获得与所述虚检查指令对应的结果,以根据该对应的结果进行后续的判断。

其中,关于与所述虚检查指令对应的结果可以作如下理解:

在本实施例中,如果所述实际读写指令只包括读指令和写指令两者中的一个指令,则所述实际读写地址也只包括该指令中的操作地址(读地址或写地址),所述实际读写长度也只包括该指令中的操作长度(读长度或写长度)。在此情况下,可以直接以所述实际读写地址为目标地址,生成包括该目标地址的虚检查指令,对应地,执行所述实际读写指令的结果即为与所述虚检查指令对应的结果。

在另一种情况中,如果所述实际读写指令同时包括读指令和写指令,则所述实际读写指令同时包括读地址和写地址,所述实际读写长度同时包括读长度和写长度。在此情况下,可以从读地址和写地址中选择一个,例如可以选较大的一个地址作为目标地址,从而生成包括该目标地址的虚检查指令。

例如,假设实际读写地址中读地址比写地址大,则可以以读地址为目标地址生成包括读地址的虚检查指令,如此,读写模块在执行所述实际读写指令后,可以根据读取读地址的结果来判断所述目标节点是否能读写所述共享存储装置100,其中,读取读地址的结果即为与所述虚检查指令对应的结果。如此,可以减少判断的结果数量,提高检测效率。

对应地,所述步骤s23可以包括如下子步骤:

生成包括所述预设地址的实检查指令和用于读写所述预设地址的模拟读写指令;

执行所述模拟读写指令,并在检测到所述实检查指令时根据执行所述模拟读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。

其中,所述模拟读写指令包括用于读所述预设地址的读指令和用于写所述预设地址的写指令,所述读指令中的读长度和所述写指令中的写长度均可以根据需要进行灵活设定,例如可以为1字节。

在本实施例中,生成的所述实检查指令和所述模拟读写指令可以一并发送给所述读写模块,当所述读写模块接收到所述模拟读写指令时会执行所述模拟读写指令,并返回相应的执行结果,具体为执行失败或执行成功。所述实检查指令用于通知所述读写模块在执行完所述模拟读写指令时,根据得到的执行结果判断所述目标节点是否能读写所述共享存储装置100。

在本实施例中,所述预设地址可以是预先设置的固定地址,也可以是按照预设规则实时更新的地址,比如,可以通过如下方式进行更新:

在根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100之后,将所述预设地址更新为所述实际读写地址中的读地址和/或写地址。

在实施时,如果所述实际读写地址包括读地址和写地址中的一个,则所述共享存储装置100可以直接将所述预设地址更新为该地址。如果所述实际读写地址包括读地址和写地址两者,则可以在每次根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100之后,获取所述实际读写指令的读地址和写地址中较大的地址,将所述预设地址更新为该较大的地址。

在前述的生成虚检查指令的步骤中,会在实际读写地址中确定一目标地址,再生成包括该目标地址的虚检查指令。可选地,可以在所述共享存储装置100中设置一用于特定变量lastaddr,可以在每次确定目标地址后,将所述特定变量lastaddr的值更新为当前所确定的目标地址。如此,在需要更新预设地址时,可以将所述预设地址的值直接更新为所述特定变量lastaddr的当前值。

应当理解,lastaddr仅为示例,该特定变量也可以为其他名称,本实施例对此不做限制。

可选地,在本实施例中,所述节点检测方法还可以包括如下步骤:

在执行步骤s23之前,禁止所述目标节点读写所述共享存储装置100;

在执行步骤s23之后,允许所述目标节点读写所述共享存储装置100。

如此,可以避免在进行模拟读写操作期间受到目标节点的读写操作的影响。在此值得说明的是,由于当前基本上目标节点没有存储业务,因而禁止所述目标节点对所述共享存储装置100的读写操作不会对所述目标节点造成影响。

下面结合图3所示场景给出一个具体示例,以对本申请实施例提供的节点检测方法做进一步的阐述。

请参照图3,图3是本申请实施例提供的一种ceph分布式存储系统20中的rbd卷21与集群30中的多个主机之间的连接示意图。其中,ceph分布式存储系统20提供有rbd卷21、rbd卷22、rbd卷23,所述集群30包括主机31、主机32和主机33,ceph分布式存储系统20中的每个rbd卷均能被所述集群30中的各主机访问和读写。在此情况下,每个rbd卷均可充当本申请实施例中的共享存储装置100。

以主机31和rbd卷21为例,本申请实施例提供的节点检测方法可以包括以下步骤。其中,主机31充当本申请实施例中的目标节点,rbd卷21充当本申请实施例中的共享存储装置100。假设主机31的ip地址为192.168.1.1,ceph分布式存储系统20的ip地址为192.168.1.10。

第一,rbd卷21接收主机31发送的实际读写指令instrcut1,从实际读写指令instrcut1中解析并记录主机31的ip地址192.168.1.1,获取ceph分布式存储系统20的ip地址192.168.1.10,对192.168.1.1和192.168.1.10运行ping命令,以检测所述主机31和rbd卷21的连通性。

第二,如果不连通,则确定所述主机31不能读写所述rbd卷21。

在此假设所述实际读写指令instruct1中包括读指令和写指令,则所述实际读写指令instruct1的实际读写地址同时包括读地址和写地址,且写地址较大。

第三,如果连通,则获取所述实际读写指令instrcut1中的实际读写地址,将该实际读写地址中的读地址记录到addr1中,将该实际读写地址中的写地址记录到addr2中,在addr1和addr2中确定较大者为addr2,将写地址对应的写长度记录到len中。

在本示例中,addr1、addr2和len为初始值为0的变量。在实施时,可以通过指令addr=max(addr1,addr2)实现对addr1和addr2中较大者的选取。

第四,检测是否到达新的预设检测周期,如果否,则直接执行实际读写指令instruct1;如果是,则生成包括addr(即写地址addr2)的虚检查指令instruct2,并将该虚检查指令instruct2和实际读写指令instruct1发送给rbd卷21中的读写模块211。

其中,rbd卷22中可以包括读写模块221,rbd卷23中可以包括读写模块231。

第五,读写模块211执行实际读写指令instruct1,并在接收到虚检查指令instruct2的情况下,对执行实际读写指令instruct1的结果进行判断,如果该结果为执行失败,则更新预设变量num的值,以用于记录执行失败的次数;如果该结果为执行成功,则确定主机31可以读写rbd卷21,并将变量num的值置为0。

第六,将addr的值记录到lastaddr中,并将addr1、addr2和len重置为初始值。

第七,对预设变量num的值进行检测,当检测到num的值达到预设阈值(比如,5)时,确定主机31不能读写rbd卷21。

第八,对addr1、addr2和len的值进行实时检测,如果检测到addr1、addr2和len三者的值在预设时长(比如,2分钟、5分钟等)内均为0,则确定rbd卷所述预设时长没有接收到主机31发送的实际读写指令。

在此情况下,可以认为主机21当前没有存储业务。

第九,在确定主机31当前没有存储业务时,按照所述预设检测周期对主机31和rbd卷21的连通性进行检测。

在本步骤中,进行连通性检测的方式与前述的第一步相同,其中,主机31的ip地址可以使用rbd卷31中当前保存的主机31的ip地址。

第十,如果检测到主机31和rbd卷21不连通,则直接确定主机31不能读写rbd卷21。

第十一,如果检测到主机31和rbd卷21连通,则生成包括lastaddr的实检查指令instruct3,以及用于读写lastaddr的模拟读写指令instruct4。

第十二,禁止主机31读写rbd卷21。

第十三,将实检查指令instruct3和模拟读写指令instruct4一并发送给读写模块211。

其中,模拟读写指令instruct4包括读指令readlastaddrv和写指令writelastaddrv,其中,v表示用于存储返回结果的变量。

第十四,读写模块211执行模拟读写指令instruct4,并在接收到实检查指令instruct3的情况下,对执行模拟读写指令instruct4的结果进行判断,如果该结果为执行失败,则更新所述预设变量num的值,以用于记录执行失败的次数;如果该结果为执行成功,则确定主机31可以读写rbd卷21,并将变量num的值置为0。

第十五,允许主机31读写rbd卷21。

应当理解,图3中的主机32、主机33也可以充当本申请实施例中的目标节点,rbd卷22、rbd卷23也可以充当本申请实施例中的共享存储装置100,其具体执行步骤与上述步骤类似,在此不再赘述。

请参照图4,是本申请实施例提供的一种共享存储装置100的功能模块框图,共享存储装置100包括连通性检测模块110和第一判断模块120。

连通性检测模块110用于按照预设检测周期对所述目标节点和所述共享存储装置100的连通性进行检测,当检测到所述目标节点和所述共享存储装置100不连通时,确定所述目标节点不能读写所述共享存储装置100。

在本实施例中,关于连通性检测模块110的描述具体可以参考对图2所示的步骤s21和步骤s22的详细描述。

第一判断模块120用于当检测到所述目标节点和所述共享存储装置100连通时,对所述共享存储装置100中的预设地址执行模拟读写操作,并根据执行所述模拟读写操作的结果判断所述目标节点是否能读写所述共享存储装置100。

在本实施例中,关于第一判断模块120的描述具体可参考对图2所示步骤s23的详细描述。

可选地,所述连通性检测模块110具体可以用于检测是否接收到所述目标节点发送的实际读写指令,并在未接收到所述目标节点发送的实际读写指令达到预设时长时,再按照预设检测周期对目标节点和所述共享存储装置100的连通性进行检测。

对应地,所述共享存储装置100还可以包括第二判断模块130。

其中,第二判断模块130用于接收所述目标节点发送的实际读写指令,根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。

可选地,在本实施例中,所述共享存储装置100还可以包括用于执行读写指令的读写模块140。

在此情况下,所述第二判断模块130具体可以用于获取所述实际读写指令的实际读写地址,所述实际读写地址包括读地址和/或写地址;生成包括该读地址和/或该写地址的虚检查指令,并将所述虚检查指令和所述实际读写指令发送给所述读写模块140,使所述读写模块140执行所述实际读写指令,以及从执行所述实际读写指令的结果中获取与所述虚检查指令对应的结果,并根据该结果判断所述目标节点是否能读取所述共享存储装置100。

可选地,所述共享存储装置100还可以包括地址更新模块150。

所述地址更新模块150用于在所述第二判断模块130根据执行所述实际读写指令的结果判断所述目标节点是否能读写所述共享存储装置100之后,将所述预设地址更新为所述实际读写地址中的读地址和/或写地址。

可选地,所述第一判断模块120具体可以用于生成包括所述预设地址的实检查指令和用于读写所述预设地址的模拟读写指令,并将所述实检查指令和所述模拟读写指令发送给所述读写模块140,使所述读写模块140执行所述模拟读写指令,以及在接收到所述实检查指令时根据执行所述模拟读写指令的结果判断所述目标节点是否能读写所述共享存储装置100。

关于上述模块的描述,具体可参考对上述内容中相关步骤的详细描述。

综上所述,本申请实施例提供的一种节点检测方法及共享存储装置,共享存储装置与目标节点通信连接,且能够被目标节点进行数据读写。共享存储装置按照预设检测周期对目标节点和本装置的连通性进行检测,若检测到目标节点和共享存储装置不连通,则确定目标节点不能读写共享存储装置;若检测到目标节点和共享存储装置连通,则对共享存储装置中的预设地址执行模拟读写操作,并根据执行该模拟读写操作的结果判断目标节点是否能读写共享存储装置。如此,可以避免目标节点频繁地进行读写操作,节约目标节点的i/o资源,从而避免在共享存储装置的存储业务繁忙时,因心跳i/o不响应而导致的对节点在线情况进行误判。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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