分布式文件系统的覆盖写方法、装置及系统与流程

文档序号:12818938阅读:390来源:国知局
分布式文件系统的覆盖写方法、装置及系统与流程

本发明涉及云存储领域,具体而言,涉及一种分布式文件系统(distributedfilesystem,简称为dfs)的覆盖写方法、装置及系统。



背景技术:

副本模式的分布式文件系统dfs是将文件分为若干副本(chunk)进行存储的,一般由文件访问客户端(fileaccessclient,简称为fac),文件访问服务器(fileaccessserver,简称为fas),元数据服务器,存储媒介等组成,fac和fas都有各自的数据缓存,fac缓存最小单位为页(page),fas缓存最小单位为块(blk),一般情况下,覆盖写要比新写的性能要低,主要是写的时候需要先将数据读上来,对于我们dfs的覆盖写,首先需要将磁盘中需要覆盖写的数据以blk为单位读入到fas缓存,再通过网络从fas缓存读到fac缓存,然后将需要写的数据写入fac缓存,fac通过网络将数据刷到fas缓存,fas缓存再将数据刷入磁盘,兼顾大小文件的考虑,page和blk不会设置太小或太大,一般page和blk都设置为256kb,当频繁随机覆盖写入数据,每次都有可能会到磁盘读取数据,覆盖写的性能受到大大影响,另外这样必然会加大磁盘的访问压力,fac和fas之间也要通过网络传输page大小的数据,这样必然会消耗带宽,使整个系统性能受到影响。

针对相关技术中,dfs覆盖写效率低下,耗费网络带宽大的问题,目前还没有有效解决方案。



技术实现要素:

本发明提供了一种分布式文件系统的覆盖写方法、装置及系统,以至少解决相关技术中dfs覆盖写效率低下,耗费网络带宽大的问题。

根据本发明的一个方面,提供了一种dfs的覆盖写方法,包括:

文件访问客户端fac将页缓存page中当前需要写入的数据打上位图标记,其中,所述位图标记用于指示文件访问服务器fas将标记有所述位图标记的数据写入到所述fas的块blk;

所述fac向所述fas提交所述page中的数据。

进一步地,所述fac将页缓存page中当前需要写入的数据打上位图标记包括:

依据所述当前需要写入的数据的偏移和大小计算与所述当前需要写入的数据对应的所述位图标记所指示的位置,在所述位置打上所述位图标记。

根据本发明的一个方面,还提供了一种dfs的覆盖写方法,包括:

文件访问服务器fas接收文件访问客户端fac提交的页缓存page中的数据;

所述fas检查所述数据是否标记有位图标记,将标记有所述位图标记的数据写入到所述fas的块blk,其中,所述位图标记是所述fac为当前需要写入的数据打上的位图标记。

进一步地,在所述fas检查所述数据是否标记有位图标记之后,所述方法还包括:

将未标记有位图标记的所述数据从磁盘中读入到所述fas的blk中。

进一步地,将标记有所述位图标记的数据写入到所述fas的块blk之后,所述方法还包括:

所述fas将标记有所述位图标记的数据从所述块blk中写入到磁盘的副本chunk中。

根据本发明的另一方面,提供了一种分布式文件系统dfs的覆盖写装置,用于fac,所述装置包括:

标记模块,用于将页缓存page中当前需要写入的数据打上位图标记,其中,所述位图标记用于指示文件访问服务器fas将标记有所述位图标记的数据写入到所述fas的块blk;

提交模块,用于向所述fas提交所述page中的数据。

进一步地,所述标记模块包括:

标记单元,用于依据所述当前需要写入的数据的偏移和大小计算与所述当前需要写入的数据对应的所述位图标记所指示的位置,在所述位置打上所述位图标记。

根据本发明的另一方面,还提供了一种分布式文件系统dfs的覆盖写装置,用于fas,所述装置包括:

接收模块,用于接收文件访问客户端fac提交的页缓存page中的数据;

写入模块,用于检查所述数据是否标记有位图标记,将标记有所述位图标记的数据写入到所述fas的块blk,其中,所述位图标记是所述fac为当前需要写入的数据打上的位图标记。

进一步地,所述写入模块还包括:

磁盘读取单元,用于将未标记有位图标记的所述数据从磁盘中读入到所述fas的blk中。

进一步地,所述装置还包括:

写入副本模块,用于将标记有所述位图标记的数据从所述块blk中写入到磁盘的副本chunk中。

根据本发明的另一方面,提供了一种分布式文件系统dfs的覆盖写系统,包括:文件访 问客户端fac,文件访问服务器fas;

所述fac将页缓存page中当前需要写入的数据打上位图标记,其中,所述位图标记用于指示文件访问服务器fas将标记有所述位图标记的数据写入到所述fas的块blk;

所述fac向所述fas提交所述page中的数据;

所述fas接收所述fac提交的页缓存page中的数据;

所述fas检查所述数据是否标记有位图标记,将标记有所述位图标记的数据写入到所述fas的块blk,其中,所述位图标记是所述fac为当前需要写入的数据打上的位图标记。

通过本发明,文件访问服务器fas接收文件访问客户端fac提交的页缓存page中的数据,该fas检查该数据是否标记有位图标记,将标记有该位图标记的数据写入到该fas的块blk,其中,该位图标记是该fac为当前需要写入的数据打上的位图标记,解决了dfs覆盖写效率低下,耗费网络带宽大的问题,提高了整个系统性能。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种分布式文件系统dfs的覆盖写的流程图一;

图2是根据本发明实施例的一种分布式文件系统dfs的覆盖写的流程图二;

图3是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图一;

图4是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图二;

图5是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图三;

图6是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图四;

图7是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图五;

图8是根据本发明优选实施例的一种dfs覆盖写示意图;

图9是根据本发明优选实施例的一种位图示意图;

图10是根据本发明优选实施例的第一次dfs覆盖写流程示意图;

图11是根据本发明优选实施例的第二次dfs覆盖写流程示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种分布式文件系统dfs的覆盖写方法。

图1是根据本发明实施例的一种分布式文件系统dfs的覆盖写的流程图一,如图1所示,该流程包括如下步骤:

步骤s102,文件访问客户端fac将页缓存page中当前需要写入的数据打上位图标记,其中,该位图标记用于指示文件访问服务器fas将标记有该位图标记的数据写入到该fas的块blk;

步骤s104,该fac向该fas提交该page中的数据。

通过上述步骤,文件访问客户端fac将页缓存page中当前需要写入的数据打上位图标记,其中,该位图标记用于指示文件访问服务器fas将标记有该位图标记的数据写入到该fas的块blk,该fac向该fas提交该page中的数据,fac向fas提交数据的时候,fas不需要到磁盘上进行读取数据,解决了dfs覆盖写效率低下,耗费网络带宽大的问题,提高了整个系统性能。

在本实施例中,该fac将页缓存page中当前需要写入的数据打上位图标记包括:依据该当前需要写入的数据的偏移和大小计算与该当前需要写入的数据对应的该位图标记所指示的位置,在该位置打上该位图标记。

图2是根据本发明实施例的一种分布式文件系统dfs的覆盖写的流程图二,如图2所示,该流程包括如下步骤:

步骤s202,文件访问服务器fas接收文件访问客户端fac提交的页缓存page中的数据;

步骤s204,该fas检查该数据是否标记有位图标记,将标记有该位图标记的数据写入到该fas的块blk,其中,该位图标记是该fac为当前需要写入的数据打上的位图标记。

通过上述步骤,文件访问服务器fas接收文件访问客户端fac提交的页缓存page中的数据,该fas检查该数据是否标记有位图标记,将标记有该位图标记的数据写入到该fas的块blk,其中,该位图标记是该fac为当前需要写入的数据打上的位图标记,解决了dfs覆盖写效率低下,耗费网络带宽大的问题,提高了整个系统性能。

在本实施例中,在该fas检查该数据是否标记有位图标记之后,该方法还包括:

将未标记有位图标记的该数据从磁盘中读入到该fas的blk中,fas直接从磁盘读取没有位图标记的数据节省了网络流量,降低了网络带宽消耗。

在本实施例中,将标记有该位图标记的数据写入到该fas的块blk之后,该方法还包括:该fas将标记有该位图标记的数据从该块blk中写入到磁盘的副本chunk中。

在本实施例中还提供了一种分布式文件系统dfs的覆盖写装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图一,如图3所示,该装置位于fac中,该装置包括:

标记模块32,用于将页缓存page中当前需要写入的数据打上位图标记,其中,该位图标记用于指示文件访问服务器fas将标记有该位图标记的数据写入到该fas的块blk;

提交模块34与标记模块32连接,用于向该fas提交该page中的数据。

通过上述步骤,标记模块32将页缓存page中当前需要写入的数据打上位图标记,其中,该位图标记用于指示文件访问服务器fas将标记有该位图标记的数据写入到该fas的块blk,提交模块34向该fas提交该page中的数据,解决了dfs覆盖写效率低下,耗费网络带宽大的问题,提高了整个系统性能。

图4是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图二,如图4所示,该标记模块32包括:

标记单元42,用于依据该当前需要写入的数据的偏移和大小计算与该当前需要写入的数据对应的该位图标记所指示的位置,在该位置打上该位图标记。

图5是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图三,如图5所示,该装置位于fas中,该装置包括:

接收模块52,用于接收文件访问客户端fac提交的页缓存page中的数据;

写入模块54,与接收模块52连接,用于检查该数据是否标记有位图标记,将标记有该位图标记的数据写入到该fas的块blk,其中,该位图标记是该fac为当前需要写入的数据打上的位图标记。

通过上述步骤,接收模块52接收文件访问客户端fac提交的页缓存page中的数据,写入模块54检查该数据是否标记有位图标记,将标记有该位图标记的数据写入到该fas的块blk,其中,该位图标记是该fac为当前需要写入的数据打上的位图标记,解决了dfs覆盖写效率低下,耗费网络带宽大的问题,提高了整个系统性能。

图6是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图四,该写入模块54包括:

磁盘读取单元62,用于将未标记有位图标记的该数据从磁盘中读入到该fas的blk中,fas直接从磁盘读取没有位图标记的数据节省了网络流量,降低了网络带宽消耗。

图7是根据本发明实施例的一种分布式文件系统dfs的覆盖写装置的结构框图五,如图 7所示,该装置还包括:

写入副本模块72,与写入模块54连接,用于将标记有该位图标记的数据从该块blk中写入到磁盘的副本chunk中。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

下面结合优选实施例和实施方式对本发明进行详细说明。

本发明优选实施例提供了一种分布式文件系统dfs的覆盖写系统,包括的内容如下:

文件访问客户端fac:负责dfs面向的应用程序提供类似于标准文件系统的接口调用服务;对于应用层的读写数据是以页(page)大小进行管理的。

文件访问服务器fas:负责dfs内的存储介质进行交互,数据是以块(blk)大小进行管理的,实际数据块的读写操作;响应文件访问客户端的数据读写请求,从存储媒介上读取数据并返回给文件访问客户端;从文件访问客户端读取数据并写入存储媒介;

存储媒介:一般为普通的scic磁盘或sata磁盘,chunk实际存储的地方,每个fas下面都会挂载若干磁盘。

在fac中为每个页缓存增加写入标记的位图,以512b大小为写入的最小单位,位图的位数为page_size/512b,在页大小设置为256kb的时候,位图的位数为512,在覆盖写的时候,无需再向fas发送read_for_write的请求,需要写入的数据根据偏移和大小计算对应位图上位置,将其打上标记。当轮到这个页向fas刷入的时候,fas首先检查位图是否全部被打上标记,如果全部打上标记的话,直接将数据刷到fas的blk中,blk也直接将数据刷到磁盘上的chunk中,如果有部分位图没有打上标记,这种情况在刷到fas的过程中,fas首先需要到磁盘上读取该blk的数据上来,然后再将fac的有位图标记的数据刷到blk中,fas将blk再刷到磁盘上的chunk中。

本发明优选实施例,在覆盖写的时候,应用程序无需等待读取数据上来,就可以将数据提交给fac,这样对于用户来说,覆盖写的速度得到了显著提高。还可以在覆盖写的时候,应用程序向fac提交数据的时候,无需将数据先读到fac的缓存,降低了fac和fas之间的网络传输的数据量,减少网络带宽消耗,提高分布式系统的网络性能,同时在覆盖写的时候,覆盖的范围覆盖整个页的时候,fac向fas提交数据的时候,不需要到磁盘上进行读取数据,这也将大大减少磁盘的压力,提高磁盘使用寿命,降低成本,使整个分布式系统的容灾机制更可靠。

图8是根据本发明优选实施例的一种dfs覆盖写示意图,如图8所示,应用程序(app)向fac提交覆盖写的数据的时候,正常流程是需要去fas读取所在数据所在页的数据上来,fas需要去磁盘中读取相应的blk数据上来,然后将数据传给fac,app等待数据读到了fac 的页缓存中后,将写入的数据覆盖到相应的页缓存中,本发明中,将不需要从fac向fas读数据的步骤,如图中fac和fas之间虚线所标的读操作,直接将数据写到对应的页中去,并将对应的位图打上标记,在fac向fas提交数据的时候,检查位图,如果位图中所有位置都打上了标记,表示所有的数据都被覆盖了,那么直接将数据刷到fas的blk中,如果没有都打上标记的话,还需要从磁盘中将数据先读到fas的blk中,如图中磁盘和fas之间的虚线所标的读操作。最后将数据刷入到磁盘中,覆盖写的流程结束。

以256kb的页大小为例来说明页的位图,当一个页写入128kb的时候,图9是根据本发明优选实施例的一种位图示意图,如图9所示,前面256个位图位置是为打上1的标记,后面256个位图位置打上0的标记。

下面根据具体的实施例来说明dfs覆盖写的具体流程:

假设有文件a,长度为500kb,dfs中fac的缓存page大小为256kb,fas的缓存blk的大小为256kb,通过计算得到每个page的位图长度为512,文件a存储在磁盘上的chunk长度为500kb.分两次覆盖写第一次从0到400kb的地方,第二次从100kb到500kb的地方,下面分别来进行说明:

图10是根据本发明优选实施例的第一次dfs覆盖写流程示意图,如图10所示,其步骤包括:

步骤s1001,覆盖写入从文件开头到400kb的位置,首先通过计算得到这部分数据在第一个页page1和第二个页page2中,分别计算得到相应页的偏移和大小,page1的偏移为0,大小为256kb,page2的偏移为0,大小为144kb。

步骤s1002,找到两个page缓存,将对应的数据写入,并根据偏移和大小算出对应的位图位置打上写入数据的标记。page1的位图被全部打上,page2的位图从开头到288的位置打上写入数据的标记。

步骤s1003,应用程序返回。

步骤s1004,page1向fas刷数据,检查位图发现所有数据都是写入状态的,直接将数据刷到fas的blk中,清掉page1的位图,然后等待fas的blk数据刷到磁盘上对应的chunk中。

步骤s1005,page2向fas刷数据,检查位图发现没有完全都是写入标记,同时根据chunk长度和页的索引计算得到page2是chunk中的最后一个页,这个时候位图只需检查到最后一个页的长度244kb即可,即只要检查0-488的位置,检查发现还是未完全都是写入状态,此时需要fas向磁盘chunk读取这个blk的数据上来,数据读上来后,再将对应的数据覆盖到这个blk中,清掉page2的位图,然后等待fas的blk数据刷到磁盘上对应的chunk中。

图11是根据本发明优选实施例的第二次dfs覆盖写流程示意图,如图11所示,其步骤 包括:

步骤s1101,覆盖写入从文件100kb到500kb的位置,首先通过计算得到这部分数据在第一个页page1和第二个页page2中,分别计算得到相应页的偏移和大小,page1的偏移为100kb,大小为156kb,page2的偏移为0,大小为244kb。

步骤s1102,找到两个page缓存,将对应的数据写入,并根据偏移和大小算出对应的位图位置打上写入数据的标记。page1的位图从200到512倍打上写入标记,page2的位图从开头到488的位置打上写入数据的标记。

步骤s1103,app程序返回成功。

步骤s1104,page1向fas刷数据,检查位图发现只有部分是写入状态的,并且非chunk最后一个页,此时需要fas向磁盘chunk读取这个blk的数据上来,数据读上来后,再将对应的数据覆盖到这个blk中,清掉page1的位图,然后等待fas的blk数据刷到磁盘上对应的chunk中。

步骤s1105,page2向fas刷数据,检查位图发现没有完全都是写入标记,同时根据chunk长度和页的索引计算得到page2是chunk中的最后一个页,这个时候位图只需检查到最后一个页的长度244kb即可,即只要检查0-488的位置,检查发现位图全部是写入状态,直接将数据刷到fas的blk中,清掉page2的位图,然后等待fas的blk数据刷到磁盘上对应的chunk中。

本发明优选实施例的目的是提出一种副本模式分布式文件系统的覆盖写方法,在进行大量随机覆盖写的时候,不需要频繁到磁盘上读取数据,从而能提高覆盖写的速度,降低磁盘的压力,同时也降低了网络传输的数据量,减少网络带宽消耗,提高整个系统的性能。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行上述实施例的方法步骤的程序代码:

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例的方法步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步 骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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