本发明专利技术提供了一种分布式文件系统中多客户端缓存同步的方法,将元数据服务器作为客户端缓存信息的控制节点,对该元数据服务器上维护的索引节点,记录各个客户端在该元数据服务器上的存储状态;将元数据信息按照客户端缓存属性分为只读缓存和可写缓存;对于元数据只读缓存,当客户端第一次读取元数据时,元数据服务器授予客户端只读权限或者可写缓存权限,并且在操作完毕后一直持有该权限;对于元数据可写缓存,客户端的修改暂时保存到本地,当满足写回触发条件时进行写回。本发明专利技术该严格保证了不同客户端之间缓存的一致性,并且其实现与Lustre和GPFS的分布式锁相比较而言,开发成本相对较小。
【技术实现步骤摘要】
本专利技术涉及分布式文件系统中客户端缓存同步问题,具体来说,涉及。
技术介绍
进入信息化时代后,随着技术的不断发展,在各行各业中,对于存储的需求呈几何趋势递增,这就导致常规的本地文件系统无法满足业务的需求。于是,在应用需求的刺激下,各种不同类型的分布式文件系统应运而生了,如NFS、Lustre、GPFS、Google FS等。对于分布式文件系统而言,由于其客户端分布在不同的物理机器上,因此不同的客户端对于文件系统元数据和数据的操作是相互不可见的。于是就存在一个客户端对于文件系统的修改对另一个客户端不可见的问题,也就是多客户端之间存在缓存一致性的问题。为了解决这一问题,不同的分布式文件系统采用了不同的机制NFS采用缓存定时更新的策略,即客户端为元数据或数据缓存设定版本号和超时时间,当客户端访问缓存内的数据时,如果发现超时,则去服务器上再次读回相应数据,并更新本地缓存。这种方式的优点在于相对简单,但是缺点在于,如果数据没有修改,则会浪费很多网络10,对服务器施加了不必要的压力。另外,该种方法不能保证客户端之间的缓存时严格一致的,因为在超时时间以内,客户端是无法察觉其他客户端对于数据的修改的。Lustre和GPFS采用了较为复杂的分布式锁的方式来保证客户端之间缓存的一致性。当客户端上保存有某中数据的缓存时,需要同时持有相应的锁,其他客户端想要访问该数据时,需要根据访问属性与已持有该数据锁的客户端进行互斥。分布式锁的设计相对比较复杂,开发的成本比较高,并且在实际的使用当中,其效率相对较低。Google FS是专为大文件设计的文件系统,在客户端上不存有缓存,因此客户端访问任何数据都是直接去服务器上读取,因而不存在客户端之间缓存一致性的问题。
技术实现思路
本专利技术旨在公开一种分布式文件系统中多客户的之间缓存一致性的方案,该方案能够严格保证不同客户端之间缓存的一致性,并且其实现与Lustre和GPFS的分布式锁相比较而言,开发成本相对较小。,将元数据服务器作为客户端缓存信息的控制节点,对该元数据服务器上维护的索引节点,记录各个客户端在该元数据服务器上的存储状态;将元数据信息按照客户端缓存属性分为只读缓存和可写缓存;对于元数据只读缓存,当客户端第一次读取元数据时,元数据服务器授予客户端只读权限或者可写缓存权限,并且在操作完毕后一直持有该权限;对于元数据可写缓存,客户端的修改暂时保存到本地,当满足写回触发条件时进行写回。优选的,所述索引节点如果是文件,需要记录客户端对于文件内容的缓冲状态。优选的,所述客户端如果需要修改所述元数据只读缓存,则先清空本地缓存,然后向元数据服务器发送修改请求,由元数据服务器完成修改并重新授予客户端对于该元数据的只读缓存权限。优选的,所述元数据服务器在处理来自客户端的修改请求时,先检查其他客户端是否缓存了该元数据的相应信息,如果有客户端缓存,则需先请求其他客户端清空缓存,然后由元数据服务器进行修改。优选的,所述触发条件包括操作系统定时回写;以及收到来自元数据服务的释放可写缓存权限的请求。优选的,所述元数据被划分为定长区间,按照区间授予客户端缓存权限。本专利技术该严格保证了不同客户端之间缓存的一致性,并且其实现与Lustre和 GPFS的分布式锁相比较而言,开发成本相对较小。具体实施方式本专利技术选择元数据服务器作为控制点,将客户端缓存分为两种类型只读缓存和可写缓存。对于只读缓存,客户端只能读,而不能修改;而对于可写缓存,客户端既可以读, 也可以修改。当一个客户端需要缓存元数据或数据时,需要到相应的元数据服务器上申请许可,元数据服务器会作相应的记录。当多个客户端访问元数据或数据存在竞争时,元数据服务器负责协调,让各个客户端能够及时清理缓存,获得对数据或元数据公平的访问机会。对于元数据信息的修改,除了文件的大小信息以外,其他的信息均直接由元数据服务器修改,即客户端上只保留只读缓存;对于文件的内容和大小信息,为了保证效率,客户端上保留有可写缓存,当其他客户端需要访问时,元数据服务器需要通知该客户端,该客户端需要回写本地的修改,这样其他客户端就可以访问到最新的信息了。专利技术中的技术方案具体描述如下(1)以元数据服务器作为客户端缓存信息的控制节点,对于该元数据服务器上维护的索引节点,记录各个客户端对其的缓存状态。如果索引节点是文件,还需要记录客户端对于文件内容的缓冲状态。(2)对于元数据信息,按照客户端缓存属性,将其分为只读和可写两类。本专利技术中, 客户端上保留有可写缓存的信息仅有文件的大小,对于其他元数据信息,客户端只会保留只读缓存。对于文件内容,即数据信息,客户端可能持有只读或可写缓存。(3)对于元数据只读缓存,正常模式下,当客户端第一次读取元数据时,元数据服务器授予其只读缓存或可写缓存的权限。当客户端使用完毕后,并不会立即释放缓存权限,而是一直持有该权限,以提高缓存的使用率。如果客户端需要修改这类元数据信息,需要首先清空本地缓存,然后向元数据服务器发送修改请求,由元数据服务器来完成修改,并重新授予客户端对于该元数据这些信息的只读缓存权限。元数据服务器在处理来至客户端的修改请求时,需要先检查其他客户端是否缓存了改元数据的相应信息,如果有客户端缓存,则需要先请求这些客户端清空缓存,然后元数据服务器才进行修改。4(4)对于元数据可写缓存,客户端的修改会暂时保留在本地。写回元数据服务器的触发条件有两个一个是操作系统的定时回写;另一个是收到来自元数据服务的释放可写缓存权限的请求,一般是由于其他客户端需要访问该元数据信息,从而产生可冲突。(5)对于文件内容的缓存,本专利技术首先将文件分成定长的区间,按照区间授予客户端缓存权限。之所以选择这样的算法,主要是为了减小客户端访问文件内容时产生的冲突, 提高不同客户端对于同一个文件访问的并发度。当客户端需要访问文件内容时,需要首先根据自己的访问区间,向元数据服务器申请对于文件区间缓存权限,得到权限授予后,方可以操作数据。客户端对文件内容缓存的操作方式类似元数据缓存对于只读缓存,客户端会保留尽可能长的时间,直到收到来自元数据服务器的缓冲清空请求;而对于可写缓存,客户端的修改在本地暂时缓存,直到操作系统或元数据服务器来触发回写。权利要求1.,其特征在于将元数据服务器作为客户端缓存信息的控制节点,对该元数据服务器上维护的索引节点,记录各个客户端在该元数据服务器上的存储状态;将元数据信息按照客户端缓存属性分为只读缓存和可写缓存; 对于元数据只读缓存,当客户端第一次读取元数据时,元数据服务器授予客户端只读权限或者可写缓存权限,并且在操作完毕后一直持有该权限;对于元数据可写缓存,客户端的修改暂时保存到本地,当满足写回触发条件时进行写回。2.如权利要求1所述的方法,其特征在于所述索引节点如果是文件,需要记录客户端对于文件内容的缓冲状态。3.如权利要求1所述的方法,其特征在于所述客户端如果需要修改所述元数据只读缓存,则先清空本地缓存,然后向元数据服务器发送修改请求,由元数据服务器完成修改并重新授予客户端对于该元数据的只读缓存权限。4.如权利要求3所述的方法,其特征在于所述元数据服务器在处理来自客户端的修改请求时,先检查其他客户端是否缓存了该元数据的相应信息,如果有客户端缓存,则需先请求其他客本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:杨浩,常涛,吕明强,邵宗有,刘新春,苗艳超,王勇,
申请(专利权)人:无锡城市云计算中心有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。