本发明涉及计算机领域,具体涉及一种集群文件系统及分布式文件系统多客户端文件控制方法。
背景技术:
进入信息化时代后,随着技术的不断发展,在各行各业中,对于存储的需求呈几何趋势递增,这就导致常规的本地文件系统无法满足业务的需求。于是,在应用需求的刺激下,各种不同类型的分布式文件系统应运而生了,如ceph、lustre、gpfs、googlefs等。
对于分布式文件系统而言,由于其客户端分布在不同的物理机器上,因此不同的客户端对于文件系统元数据和数据的操作是相互不可见的。常见的客户端保护nfs、fuse、cifs等。对于有缓存的客户端来说,客户端在创建文件后会持有文件的引用计数,这时候如果其他的客户端去删除该文件,由于文件的引用计数被其他客户端所持有,则文件删除不成功,空间不释放。
因此一种新型的集群文件系统及分布式文件系统多客户端文件控制方法是有必要的。
技术实现要素:
为解决上述技术问题,本发明的技术方案如下:
本发明提供一种集群文件系统,包括分布式文件系统以及挂载到集群文件系统的多个客户端,分布式文件系统中添加有回调注册函数,分别提供对回调函数的处理,多个客户端分别通过接口向文件系统注册自己定义的回调函数,在客户端执行文件操作后,分布式文件系统收到请求,处理后,执行回调删除函数队列中所有的回调函数,对应的客户端执行所注册的函数,更新文件的属性信息到自己的缓存中。
进一步的,分布式文件系统中添加的回调注册函数通过声明函数指针、声明一个包含该函数指针的结构体、定义回调函数的注册接口来实现。
进一步的,多个客户端分别通过接口向文件系统注册自己定义的回调函数通过声明一个函数指针、定义实际执行的回调函数、将函数指针初始化、通过接口函数向文件系统注册自己定义的回调函数来实现。
进一步的,对应的客户端执行所注册的函数为file_op_update。
进一步的,客户端为nfs客户端、cifs客户端、fuse客户端、nfs-ganesha客户端之一。
此外本发明还提供一种分布式文件系统多客户端文件控制的方法,包括以下步骤:
ss1:在分布式文件系统中添加回调注册函数,分别提供对回调函数的处理;
ss2:客户端分别通过接口向文件系统注册自己定义的回调函数;
ss3:客户端执行文件操作,分布式文件系统收到请求,处理后,执行回调删除函数队列中所有的回调函数,对应的客户端执行所注册的函数,更新文件的属性信息到自己的缓存中。
进一步的,步骤ss1具体包括以下步骤:
1)声明函数指针client_ino_callback_t
2)声明函数指针client_dentry_callback_t
3)声明函数指针client_remount_callback_t
4)声明函数指针client_getgroups_callback_t
5)声明一个结构体,包含1)-4)四个函数指针
6)定义回调函数的注册接口。
进一步的,步骤ss2具体包括以下步骤:
1)声明一个函数指针file_op_callback
2)定义实际执行的回调函数file_op_update
3)将函数指针args初始化为file_op_update
4)然后通过接口函数nfs_reg_cb向文件系统注册自己定义的回调函数。
进一步的,步骤ss3中对应的客户端执行所注册的函数为file_op_update。
进一步的,客户端可以为nfs客户端、cifs客户端、fuse客户端、nfs-ganesha客户端之一。
通过本发明的集群文件系统以及分布式文件系统的多客户端的文件控制方法,分布式文件系统提供回调注册函数,客户端想分布式文件系统注册自己的回调函数,当其他客户端执行操作时,会回调执行所有注册回调的客户端函数。这样完成了分布式文件系统对多客户端下文件进行精确的控制。
附图说明
图1示出本发明集群文件系统结构框图。
图2示出本发明实现分布式文件系统多客户端文件控制的方法流程图。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提出了一种新型的集群文件系统及分布式文件系统多客户端文件控制方法,本发明的目的是实现分布式文件系统对多客户端下文件进行精确的控制。
本发明的特征是在分布式文件系统提供回调注册函数,客户端向分布式文件系统注册自己的回调函数,当其他客户端执行操作时,会回调执行所有注册回调的客户端函数。
具体实现过程如下:
图1示出本发明集群文件系统结构框图。
如图1所示,根据本发明实施例的集群文件系统,包括:分布式文件系统以及挂载到集群文件系统的多个客户端,分布式文件系统中添加有回调注册函数,分别提供对inode、dentry、mount、groups回调函数的处理,多个客户端分别通过接口向文件系统注册自己定义的回调函数,在客户端执行文件操作后,分布式文件系统收到请求,处理后,执行回调删除函数队列中所有的回调函数,对应的客户端执行所注册的函数,更新文件的属性信息到自己的缓存中。
在本发明的一个实施例中,客户端可以为nfs客户端、cifs客户端、fuse客户端、nfs-ganesha客户端等。
在本发明的一个实施例中,分布式文件系统中添加的回调注册函数通过声明函数指针、声明一个包含该函数指针的结构体、定义回调函数的注册接口来实现。
在本发明的一个实施例中,多个客户端分别通过接口向文件系统注册自己定义的回调函数通过声明一个函数指针、定义实际执行的回调函数、将函数指针初始化、通过接口函数向文件系统注册自己定义的回调函数来实现。
在本发明的一个实施例中,对应的客户端执行所注册的函数为file_op_update。
图2为本发明一个实施例的用于实现上述集群文件系统中分布式文件系统多客户端文件控制的方法流程图。
如图2所示,根据本发明实施例的实现分布式文件系统多客户端文件控制方法,包括:
ss1:在分布式文件系统中添加回调注册函数,分别提供对回调函数的处理;
ss2:客户端分别通过接口向文件系统注册自己定义的回调函数;
ss3:客户端执行文件操作,分布式文件系统收到请求,处理后,执行回调删除函数队列中所有的回调函数,对应的客户端执行所注册的函数,更新文件的属性信息到自己的缓存中。
在本发明的一个实施例中,客户端可以为nfs客户端、cifs客户端、fuse客户端、nfs-ganesha客户端等。
在本发明的一个实施例中,步骤ss1具体包括以下步骤:
1)声明函数指针client_ino_callback_t
typedefvoid(*client_ino_callback_t)(void*arg1,void*arg2,void*arg3,void*arg4);
//声明了一个指针client_ino_callback_t,该指针指向参数为argl、arg2、arg3、arg4,返回值为void的函数。
2)声明函数指针client_dentry_callback_t
typedefvoid(*client_dentry_callback_t)(void*arg1,void*arg2,void*arg3,void*arg4);
//声明了一个指针client_dentry_callback_t,该指针指向参数为arg1、arg2、arg3、arg4,返回值为void的函数。
3)声明函数指针client_remount_callback_t
typedefvoid(*client_remount_callback_t)(void*arg1,void*arg2,void*arg3,void*arg4);
//声明了一个指针client_remount_callback_t,该指针指向参数为arg1、arg2、arg3、arg4,返回值为void的函数。
4)声明函数指针client_getgroups_callback_t
typedefvoid(*client_getgroups_callback_t)(void*arg1,void*arg2,void*arg3,void*arg4);
//声明了一个指针client_getgroups_callback_t,该指针指向参数为arg1、arg2、arg3、arg4,返回值为void的函数。
5)声明一个结构体,包含1)-4)四个函数指针
6)定义回调函数的注册接口
在本发明的一个实施例中,步骤ss2具体包括以下步骤:
1)声明一个函数指针file_op_callback
typedefvoid(*file_op_callback)(void*argl,void*arg2,void*arg3,void*arg4);
2)定义实际执行的回调函数file_op_update
voidfile_op_update(void*arg1,void*arg2,void*arg3,void*arg4){
update_file_attrs(arg1,arg2,arg3,arg4);
}
//实际执行的操作,即更新文件的操作
3)将函数指针args初始化为file_op_update
file_op_callbackargs=file_op_update;//
4)然后通过接口函数nfs_reg_cb向文件系统注册自己定义的回调函数,执行nfs_reg_cb(cmount,args);
在本发明的一个实施例中,步骤ss3中对应的客户端执行所注册的函数为file_op_update。
本发明通过注册回调函数的方式,当一个客户端操作分布式文件系统的文件时,所有已经向文件系统注册的客户端都会收到该文件的操作,进而执行回调函数,执行对应的操作。从而达到多客户端的控制。
本专利实现简单,能够很好的对文件的操作进行控制。
尽管在装置的上下文中已描述了一些方面,但明显的是这些方面也表示对应方法的描述,其中块或设备与方法步骤或方法步骤的特征相对应。类似地,在方法步骤的上下文中所描述的各方面也表示对应的块或项目或者对应装置的特征的描述。可以通过(或使用)如微处理器、可编程计算机、或电子电路之类的硬件装置来执行方法步骤中的一些或所有。可以通过此类装置来执行最重要的方法步骤中的某一个或多个。
所述实现可以采用硬件或采用软件或可以使用例如软盘、dvd、蓝光、cd、rom、prom、eprom、eeprom、或闪存之类的具有被存储在其上的电子可读控制信号的数字存储介质来执行,所述电子可读控制信号与可编程计算机系统配合(或能够与其配合)以使得执行相应的方法。可以提供具有电子可读控制信号的数据载体,所述电子可读控制信号能够与可编程计算机系统配合以使得执行本文所描述的方法。
所述实现还可以采用具有程序代码的计算机程序产品的形式,当计算机程序产品在计算机上运行时,程序代码进行操作以执行该方法。可以在机器可读载体上存储程序代码。
以上所描述的仅是说明性,并且要理解的是,本文所描述的布置和细节的修改和变化对于本领域技术人员而言将是明显的。因此,意在仅由所附权利要求的范围而不是由通过以上描述和解释的方式所呈现的特定细节来限制。