集群节点的文件变动管理方法、装置、设备及存储介质与流程

文档序号:23090467发布日期:2020-11-27 12:42阅读:121来源:国知局
集群节点的文件变动管理方法、装置、设备及存储介质与流程

本发明涉及文件系统技术领域,特别涉及一种集群节点的文件变动管理方法、装置、设备及计算机可读存储介质。



背景技术:

随着现代社会科技的发展,如smb(servermessageblock,一种用于不同网络节点间的共享传输协议)服务的文件系统的应用越来与广泛。smb服务在windows网络层面提供了一种虚拟文件系统,对于上层应用来说,访问该文件系统和其他类型的文件系统无差别,差异部分全部在操作系统内核层实现。由于是跨设备的文件系统实现,当远端文件发生如大小、修改时间等属性变动时,本端的客户端需要捕捉到变动通知,才能刷新资源管理器的文件信息显示。

现有技术中,往往利用samba(servermessagesblock,信息服务块)遵循smb协议规范实现在windows客户端中访问linux服务端的文件系统,如客户端关注某个共享目录变动时,samba会针对该目录新增一个变动通告记录,当该目录下的文件属性变动时,就会将该变动发送给客户端,由客户端进一步发出目录查询请求,并获取被关注目录下的文件属性信息,使得客户端的资源管理器能够正确显示;然而samba是以共享路径名称作为关键字来触发变动通告的,在分布式集群条件下,不同节点之间的非集群目录有可能是相同名称的,使得两个客户端挂载集群下不同节点的相同名称目录时,若该目录是非集群目录,则一个节点上的文件读写就会在另一个节点上触发大量的无效的通告,影响到samba自身性能。

因此,如何能够避免非集群目录的变动通告的跨节点传输,减少跨节点传输的无效变动通告,提高文件系统的性能,是现今亟需解决的问题。



技术实现要素:

本发明的目的是提供一种集群节点的文件变动管理方法、装置、设备及计算机可读存储介质,以避免非集群目录的变动通告的跨节点传输,减少跨节点传输的无效变动通告,提高文件系统的性能。

为解决上述技术问题,本发明提供一种集群节点的文件变动管理方法,包括:

集群节点接收第一客户端发送的文件变动通告请求;

根据所述文件变动通告请求,确定所述第一客户端关注的变动信息;其中,所述变动信息包括关注目录;

判断所述关注目录是否为集群目录;

若否,则根据所述变动信息,生成并保存本地存储信息;其中,所述本地存储信息包括客户端信息、所述关注目录和集群目录标识;

若是,则根据所述变动信息,生成并保存所述本地存储信息,并获取第一远端通知信息;其中,所述第一远端通知信息包括所述关注目录;

将所述第一远端通知信息发送到集群中的目标节点,以使所述目标节点将所述第一远端通知信息对应的文件变动通告发送到所述集群节点。

可选的,所述将所述第一远端通知信息发送到集群中的目标节点,包括:

通过本端ctdb将所述第一远端通知信息广播到所述目标节点的ctdb;其中,所述本端ctdb为所述集群节点的ctdb,所述第一远端通知信息还包括所述本端ctdb的索引编号。

可选的,所述文件变动通告请求为smb2_change_notify请求时,所述判断所述关注目录是否为集群目录之前,包括:

对smb.conf配置文件进行解析,确定全部所述集群目录。

可选的,该方法还包括:

接收所述目标节点发送的第二远端通知信息;

根据所述第二远端通知信息,生成并保存远端存储信息;其中,每个所述远端存储信息包括目标节点通讯信息和远端关注目录,所述远端关注目录为所述第二远端通知信息中的关注目录。

可选的,该方法还包括:

获取第二客户端对应的本端变动通告;其中,所述本端变动通告包括变动目录;

根据所述本地存储信息和所述远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息;其中,所述第一目标本地存储信息为所述本端变动通告对应的所述本地存储信息,所述目标远端存储信息为所述本端变动通告对应的远端存储信息;

若存在所述第一目标本地存储信息,则生成所述本端变动通告对应的响应报文,并将所述响应报文发送到所述第一目标本地存储信息对应的第一客户端;

若存在所述目标远端存储信息,则将所述本端变动通告发送到所述目标远端存储信息对应的目标节点。

可选的,该方法还包括:

接收所述目标节点发送的远端变动通告;

根据所述本地存储信息,确定第二目标本地存储信息;其中,所述第二目标本地存储信息为所述远端变动通告对应的所述本地存储信息;

生成并向第二目标本地存储信息对应的第一客户端发送所述远端变动通告对应的响应报文。

可选的,所述根据所述本地存储信息和所述远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息,包括:

若所述变动目录为linux原生目录,则根据所述本地存储信息,确定是否存在第一目标本地存储信息;

若所述变动目录为不为所述linux原生目录,则根据所述本地存储信息和所述远端存储信息,确定是否存在所述第一目标本地存储信息和/或所述目标远端存储信息。

本发明还提供了一种集群节点的文件变动管理装置,包括:

接收模块,用于集群节点接收第一客户端发送的文件变动通告请求;

确定模块,用于根据所述文件变动通告请求,确定所述第一客户端关注的变动信息;其中,所述变动信息包括关注目录;

判断模块,用于判断所述关注目录是否为集群目录;

第一生成模块,用于若不为所述集群目录,则根据所述变动信息,生成并保存本地存储信息;其中,所述本地存储信息包括客户端信息、所述关注目录和集群目录标识;

第二生成模块,用于若为所述集群目录,则根据所述变动信息,生成并保存所述本地存储信息,并获取第一远端通知信息;其中,所述第一远端通知信息包括所述关注目录;

发送模块,用于将所述第一远端通知信息发送到集群中的目标节点,以使所述目标节点将所述第一远端通知信息对应的文件变动通告发送到所述集群节点。

本发明还提供了一种集群节点的文件变动管理设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述集群节点的文件变动管理方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述集群节点的文件变动管理方法的步骤。

本发明所提供的一种集群节点的文件变动管理方法,包括:集群节点接收第一客户端发送的文件变动通告请求;根据文件变动通告请求,确定第一客户端关注的变动信息;其中,变动信息包括关注目录;判断关注目录是否为集群目录;若否,则根据变动信息,生成并保存本地存储信息;其中,本地存储信息包括客户端信息、关注目录和集群目录标识;若是,则根据变动信息,生成并保存本地存储信息,并获取第一远端通知信息;其中,第一远端通知信息包括关注目录;将第一远端通知信息发送到集群中的目标节点,以使目标节点将第一远端通知信息对应的文件变动通告发送到集群节点;

可见,本发明通过集群节点判断关注目录是否为集群目录,并在本地存储信息中加入集群目录标识,可以避免该集群节点对客户端触发的非集群目录的文件变动通告的跨节点传输,从而减少了跨节点传输的无效变动通告,提高了文件系统的文件读写处理速度。此外,本发明还提供了一种集群节点的文件变动管理装置、设备及计算机可读存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种集群节点的文件变动管理方法的流程图;

图2为本发明实施例所提供的另一种集群节点的文件变动管理方法的流程示意图;

图3为本发明实施例所提供的另一种集群节点的文件变动管理方法的节点间的通知响应过程的示意图;

图4为本发明实施例所提供的另一种集群节点的文件变动管理方法的流程图;

图5为本发明实施例所提供的一种集群节点的文件变动管理装置的结构框图;

图6为本发明实施例所提供的一种集群节点的文件变动管理设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种集群节点的文件变动管理方法的流程图。该方法可以包括:

步骤101:集群节点接收第一客户端发送的文件变动通告请求。

其中,本步骤中的集群节点可以为分布式文件系统集群中的任一节点,如icfs(inspurclusterfilesystem,浪潮分布式文件系统)集群中的一个节点。本步骤中的第一客户端可以为与集群节点直接连接的向集群节点发送文件变动通告请求的客户端,即在集群节点挂载集群目录和/或非集群目录的向集群节点发送文件变动通告请求的客户端。本步骤中的文件变动通告请求可以为用于在网络文件系统之间触发文件变动通告的请求,如smb服务中的smb2_change_notify(smb协议中的一种类型)请求。

具体的,本实施例并不限定集群节点中的处理器接收第一客户端发送的文件变动通告请求的具体方式,如集群节点为samba集群中的一个节点时,集群节点的处理器可以通过samba进程接收第一客户端发送的smb2_change_notify请求(即文件变动通告请求),如图3所示,在windows客户端(即第一客户端)上对节点a(即集群节点)分别挂载一个icfs共享目录和一个linux原生目录,挂载完成后在该windows客户端用资源管理器可以打开该共享目录触发smb2_change_notify操作,使节点a读取到该windows客户端的smb2_change_notify请求。

对应的,对于本步骤中的文件变动通告请求的具体内容,可以由设计人员根据使用场景和用户需求自行设置,如可以采用与现有技术中的文件变动通告请求(如smb2_change_notify请求)相同或相似的方式对应进行设置,本实施例对此不做任何限制。

步骤102:根据文件变动通告请求,确定第一客户端关注的变动信息;其中,变动信息包括关注目录。

可以理解的是,本步骤的目的可以为处理器利用文件变动通告请求,确定第一客户端所关注目录的信息(即变动信息),即文件变动通告请求的基本信息,从而使集群节点利用变动信息确定第一客户端需要关注的目录的具体情况。

对应的,对于变动信息的具体内容,可以由设计人员根据使用场景和用户需求自行设置,如变动信息可以包括关注目录,即第一客户端所关注目录,如目录名称或目录名称和目录文件id;变动信息还可以包括第一客户端所关注目录的变动类型(如过滤列表),用于标识具体的过滤类型,如关注文件读写,文件添删等动作。

具体的,如图2所示,本实施例中集群节点可以将第一客户端关注的变动信息作为变动事件记录保存,例如集群节点的处理器可以运行samba进程维护一个全局链表(open.file.changenotifylist),在确定收到的smb2_change_notify请求对应的变动信息后,利用变动信息构建一个表单(changenotifyentry),包含的元素有目录名称、目录文件id和过滤列表,并插入到全局链表中保存;为运行samba进程向第一客户端返回响应报文时提供smb参数。

需要说明的,由于变动通告的时间多数情况下是随机的,因此整个变动通告是一个异步过程,客户端发出文件变动通告请求后,该请求在集群节点中可以处于一个挂起状态,如该请求可以在samba进程内部处于一个挂起状态,从而通过保存变动信息可以响应文件变动通告请求的撤销操作,如samba进程中保存该变动信息可以响应smb2_cancel操作;例如,本实施例还可以包括根据接收的第一客户端发送的文件变动通告请求的撤销请求,利用保存的撤销请求对应的变动信息,删除该变动信息对应的本地存储信息。对应的,还可以生成该变动信息对应的远端存储信息删除指令,并发送给目标节点,以避免目标节点向集群节点发送该远端存储信息对应的文件变动通告。

对应的,本步骤之后处理器还可以向第一客户端返回待解决信息,用于指示该操作是异步的,使第一客户端可以继续响应真正的文件变动。例如处理器可以运行samba进程在将文件变动通告请求对应的表单插入到全局链表中保存后,向第一客户端回应一个pending结果(即待解决信息)。

步骤103:判断关注目录是否为集群目录;若否,则进入步骤104;若是,则进入步骤105。

可以理解的是,本步骤的目的可以为集群节点的处理器通过判断第一客户端所关注的目录(即关注目录)是否为集群目录,以在关注目录为集群目录时,告知目标节点使目标节点能够将关注目录对应的文件变动通告返回到集群节点,从而响应给第一客户端,更新第一客户端的资源管理器的显示。

具体的,本实施例并不限定处理器判断关注目录是否为集群目录的具体方式,如处理器可以通过解析集群的文件系统的配置文件,确定关注目录是否为集群目录;例如文件变动通告请求为smb2_change_notify请求时,处理器可以运行samba进程对smb.conf配置文件进行解析,确定全部的集群目录,从而通过确定关注目录是否为集群目录。如图3所示,节点a可以在samba进程初始化时首先读取smb.conf配置文件的各个section参数;获取每个section参数对应的vfsobject参数,用于指定具体的vfs文件系统服务类型,如vfs(vfs:virtualfilesystem,unix系统对文件系统的一个抽象,使得不同物理介质上的不同文件系统都有相同的读写接口)文件系统服务类型为icfs集群的,则此参数可以设置为icfs;获取vfsobject参数可以将section参数对应的目录的flag标记为smb2_change_notify_icfs,从而将该目录标记为icfs集群目录。也就是说,samba进程可以将各种目录管理都抽象为一个公共的vfs文件系统接口层,不同的文件系统对应上层不同的共享目录配置,因此通过解析配置可以区分该共享目录是否是一个分布式集群目录。

步骤104:根据变动信息,生成并保存本地存储信息;其中,本地存储信息包括客户端信息、关注目录和集群目录标识。

可以理解的是,本步骤的目的可以处理器生成并保存变动信息对应的本地存储信息,可以利用保存的本地存储信息查找到所获取的文件变动通告中需要返回给第一客户端的文件变动通告。

具体的,对于本步骤中的本地存储信息的具体内容,可以由设计人员根据使用场景和用户需求自行设置,如本地存储信息可以包括变动信息对应的第一客户端的通讯信息(即客户端信息)、变动信息中的关注目录(如目录名称)以及集群目录标识(即关注目录是否为集群目录的标识);本地存储信息还可以变动信息中的变动类型(如过滤列表),以使集群节点可以仅将关注目录的变动类型对应的文件变动通告返回给第一客户端。

需要说明的是,本实施例并不限定处理器根据变动信息,生成并保存本地存储信息的具体方式,如图2所示,本步骤中处理器运行samba进程构建smb2_change_notify请求对应的包括关注目录(即变动路径)、变动类型的msg(windows程序中的结构体)变动通告注册信息,并发送给samba-notify进程去统一维护变动的触发和全局响应;处理器运行samba-notify进程可以对收到的msg变通通告注册信息进行实例化,在本端存储真正的instance实例(即本地存储信息),例如将smb2_change_notify请求抽象为不同客户端、不同关注目录、不同变动类型和集群目录标识共4个信息,并以关注目录作为关键字将整个请求信息实例化保存。

步骤105:根据变动信息,生成并保存本地存储信息,并获取第一远端通知信息;其中,第一远端通知信息包括关注目录。

其中,本步骤中的第一远端通知信息可以为集群节点需要向目标节点发送的远端通知信息,即关注目录为集群目录时,用于向目标节点发送的集群节点所需要的文件变动通告的信息。

具体的,本实施例并不限定处理器根据变动信息,获取第一远端通知信息的具体方式,以及第一远端通知信息的具体内容,如第一远端通知信息可以为上述处理器运行samba进程构建的msg变动通告注册信息,如处理器可以运行samba-notify进程,在接收的msg变动通告注册信息对应的集群目录标识为非集群目录,即msg变动通告注册信息中的关注目录不为集群目录时,将msg变动通告注册信息发送到目标节点的samba-notify进程;第一远端通知信息也可以包括msg变动通告注册信息和集群节点的通讯信息,如处理器可以运行samba-notify进程,在接收的msg变动通告注册信息对应的集群目录标识为非集群目录是,将msg变动通告注册信息和集群节点的通讯信息(如pnn号)打包发送到目标节点的samba-notify进程。

步骤106:将第一远端通知信息发送到集群中的目标节点,以使目标节点将第一远端通知信息对应的文件变动通告发送到集群节点。

其中,本步骤中的目标节点可以为关注目录对应的集群目录所在的文件系统的集群中除集群节点外的节点,如关注目录为icfs集群目录时,目标节点可以为icfs集群中集群节点以外的其它的节点。

可以理解的是,本步骤的目的可以为处理器通过将第一远端通知信息发送到集群中的目标节点,可以使目标节点可以将各自的客户端触发的文件变动通告请求对应的文件变动通告(即远端通知信息对应的文件变动通告)返回到集群节点,从而使集群节点能够响应给第一客户端,更新第一客户端的资源管理器的显示。

具体的,对于本实施例中集群节点的处理器将第一远端通知信息发送到集群中的目标节点的具体方式,可以由设计人员根据使用场景和用户需求自行设置,如为了提高第一远端通知信息的发送效率,集群节点的处理器可以利用集群中各节点均设置的ctdb(clustertrivialdatabase,一个轻量级的集群数据库)将第一远端通知信息发送到集群中的目标节点,从而利用ctdb为samba在集群模式的跨节点交互提供必要的封装接口,借助这些封装接口,samba-notify进程无需再过多地关注tcp(transmissioncontrolprotocol,传输控制协议)连接过程,提高第一远端通知信息的传输效率;如图3所示集群节点(节点a)的处理器可以运行samba-notify进程利用目标节点(节点b和节点c)的ctdb的pnn(集群中各个节点的ctdb的索引编号)号,通过集群节点的ctdb(即本端ctdb)将第一远端通知信息广播到目标节点的ctdb,从而发送到目标节点的samba-notify进程,实现集群目录的smb2_change_notify请求的分发。

对应的,目标节点可以根据接收的第一远端通知信息,生成并保存对应的远端存储信息,以在客户端触发该远端存储信息对应的文件变动通告时,将该文件变动通告返回给集群节点。也就是说,本实施例中还可以包括集群节点接收目标节点发送的第二远端通知信息;根据第二远端通知信息,生成并保存远端存储信息;其中,每个远端存储信息包括目标节点通讯信息和远端关注目录,远端关注目录为第二远端通知信息中的关注目录。例如集群节点的处理器运行samba-notify进程可以通过本端ctdb接收目标节点通过自身ctdb发送的远端通知信息(即第二远端通知信息,如msg变动通告注册信息),生成并存储该远端通知信息对应的远端存储信息,如由于远端通知信息中的关注目录为集群目录,远端存储信息可以为instance-peer实例(即instance实例的peer结构体)中保存msg变动通告注册信息和发送msg变动通告注册信息的目标节点的通讯信息(即目标节点通讯信息,如pnn号)。

具体的,上述第二远端通知信息可以为目标节点向集群节点发送的远端通知信息。第二远端通知信息的具体内容可以采用与第一远端通知信息相同或相似的方式对应设置,本实施例对此不作任何限制。

需要说明的是,本实施例是以集群中的一个节点(即集群节点)对文件变动通告请求的存储和分发为例进行展示,相应的,集群中的其它节点(即目标节点)可以通过与本实施例所提供的方法相同或相似的方式实现对各自的客户端发送的文件变动通告请求的存储和分发,本实施例对此不作任何限制。

对应的,本实施例所提供的方法还可以包括集群节点对文件变动通告的处理过程,以保证第一客户端可以通过集群节点获取文件变动通告请求对应的相应报文。具体的,集群节点对文件变动通告的处理过程可以如图4所示,包括:

步骤201:获取第二客户端对应的本端变动通告;其中,本端变动通告包括变动目录。

可以理解的是,本步骤中的第二客户端可以为与集群节点直接连接的触发本端变动通告的客户端,即在集群节点挂载集群目录和/或非集群目录的进行文件写或文件删除等改变目录操作的客户端。本步骤中的本端变动通告可以为与集群节点直接连接的客户端(即第二客户端)触发的文件变动通告。

具体的,本实施例并不限定本端变动通告的具体内容和获取方式,例如第二客户端上分别挂载相同名称的集群目录和linux原生目录时,若第二客户端打开该linux原生目录进行如文件写的改变目录操作,则集群节点的处理器可以运行samba进程在收到该linux原生目录的文件写操作时,会直接触发集群节点的原生linuxinotify监控,从而获取对应的原生linuxinotify通告(即本端变动通告),如集群节点在收到第一客户端的smb2_change_notify请求后其关注目录支持linux原生inotify通告时,可以直接将关注目录通过inotify接口加入到linux内核通知管理中;若第二客户端打开该集群目录进行如文件写的改变目录操作,则集群节点的处理器可以运行samba进程构建msg变动消息和用于区分msg变动消息中的目录(即变动目录)是否为集群目录的目录标识(如change_notify_flag标识)作为本端变动通告。从而将原生linuxinotify通告对应的变动目录直接确定为非集群目录,减少后续的性能损耗。

步骤202:根据本地存储信息和远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息;其中,第一目标本地存储信息为本端变动通告对应的本地存储信息,目标远端存储信息为本端变动通告对应的远端存储信息。

可以理解的是,本步骤中的第一目标本端变动通告可以为集群节点的处理器识别到的其关注目录与本端变动通告的关注目录的名称和类型相同的本地存储信息,或其关注目录与本端变动通告的关注目录的名称和类型相同且变动类型相同的本地存储信息;例如第一目标本端变动通告的关注目录与本端变动通告的关注目录的名称可以相同,且均为集群目录,并且本端变动通告的变动类型符合第一本端变动通告的变动类型,如均为写操作。本步骤中的目标远端存储信息可以为本端变动通告的关注目录为集群目录时,集群节点的处理器识别到的其关注目录与本端变动通告的关注目录的名称相同的远端存储信息,或其关注目录与本端变动通告的关注目录的名称且变动类型相同的远端存储信息。

具体的,对于本步骤中集群节点的处理器根据本地存储信息和远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息的具体方式,可以由设计人员根据使用场景和用户需求自行设置,如本端变动通告为原生linuxinotify通告(即linux原生目录)时,处理器运行samba-notify进程接收到原生linuxinotify通告后,可以仅遍历集群节点中存储的本地存储信息(如instance实例),确定符合条件的本地存储信息(即第一目标本地存储信息),避免了遍历远端存储信息(如instance-peer实例)的情况。本端变动通告不为linux原生目录时,可以遍历集群节点中存储的本地存储信息和远端存储信息,确定符合条件的本地存储信息和/或远端存储信息(即目标远端存储信息)。也就是说,本步骤可以包括若变动目录为linux原生目录,则根据本地存储信息,确定是否存在第一目标本地存储信息;若变动目录为不为linux原生目录,则根据本地存储信息和远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息。

对应的,对于本步骤中确定不存在第一目标本地存储信息或目标远端存储信息的情况,可以直接结束本流程,等待下一个第二客户端触发对应的本端变动通告。

步骤203:若存在第一目标本地存储信息,则生成本端变动通告对应的响应报文,并将响应报文发送到第一目标本地存储信息对应的第一客户端。

可以理解的是,本步骤的目的可以为集群节点的处理器通过将本端变动通告对应的响应报文发送到第一目标本地存储信息对应的第一客户端,使该第一客户端可以得到其发送的生成该第一目标本地存储信息的文件变动通告请求所对应的响应(即响应报文),从而可以发送文件属性查询请求(如smb2_query_directory请求),获取关注的发生变动的目录当前的文件属性信息,更新资源管理器的显示;其中,mb2_query_directory为smb协议中的一种类型,用于在网络文件系统之间查询目录中包含的文件属性数据。

具体的,对于本步骤中处理器生成本端变动通告对应的响应报文,并将响应报文发送到第一目标本地存储信息对应的第一客户端的具体方式,可以由设计人员自行设置,如处理器运行samba进程获取samba-notify进程发送的第一目标本地存储信息的通告信息后,可以根据自身维护的全局链表(open.file.changenotifylist)中第一目标本地存储信息对应的表单(changenotifyentry)构造出对应的smb2_change_notify响应报文,返回给发送第一目标本地存储信息对应的客户端。本实施例对此不作任何限制。

对应的,向第一目标本地存储信息对应的第一客户端发送响应报文之后,一次完整的文件变动通告响应交互结束,由处理器可以运行samba进程触发删除进程中的第一目标本地存储信息以及对应的变动信息(如全局链表中的表单)。相应的,第一客户端收到响应报文后,可以进一步发送文件属性查询请求,用于获取关注的发生变动的目录(如集群目录或linux原生目录)当前的文件属性信息,更新资源管理器的显示;第一客户端获取文件属性信息后,可以再次发送关注目录的文件变动通告请求,用于接收下一次的文件变动通告的响应报文。

步骤204:若存在目标远端存储信息,则将本端变动通告发送到目标远端存储信息对应的目标节点。

可以理解的是,本步骤的目的可以为集群节点的处理器通过将本端变动通告发送到目标远端存储信息对应的目标节点,使集群节点的客户端(即第二客户端)触发的变动通告(即本端变动通告)可以发送到有客户端关注该变动通告的目标节点,使在集群节点上对挂载的集群目录的文件进行文件添加或删除等改变目录操作时,目标节点得客户端上的资源管理器最终也能够及时的显示文件被添加或删除等变化。

具体的,本步骤中处理器可以运行samba-notify进程确定目标远端存储信息后,根据目标远端存储信息中的目标节点通讯信息(如pnn号),将本端变动通告发送到该目标节点通讯信息的目标节点。

需要说明的是,图4所示的集群节点对文件变动通告的处理过程,可以为集群节点对自身的客户端触发的文件变动通告的处理过程;相应的,如图3所示,目标节点(节点b或节点c)可以采用上述处理过程相同或相似的方式实现对自身的客户端触发的文件变动通告的处理,从而向集群节点(节点a)发送集群节点的第一客户端所关注的文件变动通告(change_notify变动通告)。

具体的,本实施例所提供的方法还可以包括集群节点对目标节点发送的文件变动通告的处理过程,如集群节点的处理器可以接收目标节点发送的远端变动通告;根据本地存储信息,确定第二目标本地存储信息;其中,第二目标本地存储信息为远端变动通告对应的本地存储信息;生成并向第二目标本地存储信息对应的第一客户端发送远端变动通告对应的响应报文。例如处理器运行samba-notify进程收到目标节点的文件变动通告(即远端变动通告)后,可以遍历集群节点中存储的本地存储信息(如instance实例),确定符合条件的本地存储信息(即第二目标本地存储信息);处理器运行samba进程获取samba-notify进程发送的第二目标本地存储信息的通告信息后,可以根据自身维护的全局链表(open.file.changenotifylist)中第二目标本地存储信息对应的表单(changenotifyentry)构造出对应的smb2_change_notify响应报文,返回给发送第二目标本地存储信息对应的客户端(即第一客户端)。

本实施例中,本发明实施例通过集群节点判断关注目录是否为集群目录,并在本地存储信息中加入集群目录标识,可以避免该集群节点对客户端触发的非集群目录的文件变动通告的跨节点传输,从而减少了跨节点传输的无效变动通告,提高了文件系统的文件读写处理速度。

请参考图5,图5为本发明实施例所提供的一种集群节点的文件变动管理装置的结构框图。该装置可以包括:

接收模块10,用于集群节点接收第一客户端发送的文件变动通告请求;

确定模块20,用于根据文件变动通告请求,确定第一客户端关注的变动信息;其中,变动信息包括关注目录;

判断模块30,用于判断关注目录是否为集群目录;

第一生成模块40,用于若不为集群目录,则根据变动信息,生成并保存本地存储信息;其中,本地存储信息包括客户端信息、关注目录和集群目录标识;

第二生成模块50,用于若为集群目录,则根据变动信息,生成并保存本地存储信息,并获取第一远端通知信息;其中,第一远端通知信息包括关注目录;

发送模块60,用于将第一远端通知信息发送到集群中的目标节点,以使目标节点将第一远端通知信息对应的文件变动通告发送到集群节点。

可选的,发送模块60,可以具体用于通过本端ctdb将第一远端通知信息广播到目标节点的ctdb;其中,本端ctdb为集群节点的ctdb,远端通知信息还包括本端ctdb的索引编号。

可选的,文件变动通告请求为smb2_change_notify请求时,该装置还可以包括,包括:

配置解析模块,用于对smb.conf配置文件进行解析,确定全部集群目录。

可选的,该装置还可以包括:

远端接收模块,用于接收目标节点发送的第二远端通知信息;

远端存储模块,用于根据第二远端通知信息,生成并保存远端存储信息;其中,每个远端存储信息包括目标节点通讯信息和远端关注目录,远端关注目录为第二远端通知信息中的关注目录。

可选的,该装置还可以包括:

通告获取模块,用于获取第二客户端对应的本端变动通告;其中,本端变动通告包括变动目录;

第一通告确定模块,用于根据本地存储信息和远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息;其中,第一目标本地存储信息为本端变动通告对应的本地存储信息,目标远端存储信息为本端变动通告对应的远端存储信息;

第一响应模块,用于若存在第一目标本地存储信息,则生成本端变动通告对应的响应报文,并将响应报文发送到第一目标本地存储信息对应的第一客户端;

通告发送模块,用于若存在目标远端存储信息,则将本端变动通告发送到目标远端存储信息对应的目标节点。

可选的,该装置还可以包括:

通告接收模块,用于接收目标节点发送的远端变动通告;

第二通告确定模块,用于根据本地存储信息,确定第二目标本地存储信息;其中,第二目标本地存储信息为远端变动通告对应的本地存储信息;

第二响应模块,用于生成并向第二目标本地存储信息对应的第一客户端发送远端变动通告对应的响应报文。

可选的,第一通告确定模块可以具体用于若变动目录为linux原生目录,则根据本地存储信息,确定是否存在第一目标本地存储信息;若变动目录为不为linux原生目录,则根据本地存储信息和远端存储信息,确定是否存在第一目标本地存储信息和/或目标远端存储信息。

本实施例中,本发明实施例通过集群节点判断关注目录是否为集群目录,并在本地存储信息中加入集群目录标识,可以避免该集群节点对客户端触发的非集群目录的文件变动通告的跨节点传输,从而减少了跨节点传输的无效变动通告,提高了文件系统的文件读写处理速度。

请参考图6,图6为本发明实施例所提供的一种集群节点的文件变动管理设备的结构示意图。该设备1可以包括:

存储器11,用于存储计算机程序;处理器12,用于执行该计算机程序时实现如上述实施例所提供的集群节点的文件变动管理方法的步骤。

设备1(如服务器)可以包括存储器11、处理器12和总线13。

其中,存储器11至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是设备1的内部存储单元,例如服务器的硬盘。存储器11在另一些实施例中也可以是设备1的外部存储设备,例如服务器上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于设备1的应用软件及各类数据,例如:执行集群节点的文件变动管理方法的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行集群节点的文件变动管理方法的程序的代码等。

该总线13可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

进一步地,设备还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该设备1与其他电子设备之间建立通信连接。

可选地,该设备1还可以包括用户接口15,用户接口15可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口15还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备1中处理的信息以及用于显示可视化的用户界面。

图6仅示出了具有组件11-15的设备1,本领域技术人员可以理解的是,图6示出的结构并不构成对设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

此外,本发明实施例还公开了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如上述实施例所提供的集群节点的文件变动管理方法的步骤。

其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

以上对本发明所提供的一种集群节点的文件变动管理方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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