一种Ceph文件系统的数据存储方法及装置与流程

文档序号:11773948阅读:370来源:国知局
一种Ceph文件系统的数据存储方法及装置与流程

本发明涉及文件系统存储领域,特别是涉及一种ceph文件系统的数据存储方法及装置。



背景技术:

ceph文件系统由于其强大的功能成为当下最流行且最优发展前景的文件系统,ceph文件系统的底层采用filestore的存储方式,默认每次都以4mb大小的数据块的形式将数据存储到磁盘中。

目前的写入方式按照速度分为高速写入和低速写入。当高速写入时,数据块中的数据会在极短的时间内达到4mb,从而完成一次刷新,由此可见,在这种方式下,相邻两次的刷新时间间隔较短,能够满足实际的需求。但是,当低速写入时,写入数据块的速度较慢,在短时间内数据块中的数据无法达到4mb,为了不影响磁盘更新的速度,会在规定时间内刷新一次,以此来提高刷新的速度。而在filestore的存储方式下,当数据块中的数据量很少时,会先从磁盘中读取出数据并写入数据块,与数据块中原有数据进行合并,以写满4mb大小的数据块。因此,虽然设置刷新的时间可以提高刷新的速度,但是,当到达刷新时间时,数据块中的数据量还较少,无法达到4mb,甚至只能有很少的数据能被写入数据块中,则只能将磁盘中的数据读出,然后合并之后再写入磁盘。很显然,在该方式下,会导致磁盘中已存的数据会被反复读取,造成写放大现象,即实际写入的数据量是理论数据量的多倍,直接导致磁盘的压力过大,进而影响ceph文件系统在工作时的性能。

可见,如何降低磁盘的工作压力并提高系统的数据存储效率进而提升系统的工作性能,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种ceph文件系统的数据存储方法及装置,降低了磁盘的工作压力并提高系统的数据存储效率。

为解决上述技术问题,本发明提供一种ceph文件系统的数据存储方法,包括:

接收客户端写入的数据,并将数据写入数据块;

判断数据块中的数据的总量是否达到阈值;

如果是,则将数据块中的数据存储至磁盘。

优选的,该方法进一步包括:

判断ceph文件系统的当前运行状态是否满足将数据块中的数据存储至磁盘的触发条件;

如果是,则将数据块中的数据存储至磁盘。

优选的,触发条件具体包括:

相邻两次将数据写入数据块的时间间隔达到规定时间、系统调用fsync接口、另一客户端访问数据和/或数据不连续。

优选的,该方法进一步包括:

在将数据块中的数据存储至磁盘后,将当前时刻清零;

其中,触发条件为相邻两次将数据写入数据块的时间间隔达到规定时间。

优选的,当将当前时刻清零时,该方法进一步包括:

记录每一次将数据块中的数据存储至磁盘的时刻。

优选的,规定时间具体根据数据写入数据块的速率确定。

优选的,阈值具体为数据块可写入数据的总量。

此外,本发明还提供一种ceph文件系统的数据存储装置,包括:

写入模块,用于接收客户端写入的数据,并将数据写入数据块;

总量判断模块,用于判断数据块中的数据的总量是否达到阈值,如果是,则调用存储模块;

存储模块,用于将数据块中的数据存储至磁盘。

优选的,该装置进一步包括:

条件判断模块,用于判断ceph文件系统的当前运行状态是否满足将数据块中的数据存储至磁盘的触发条件,如果是,则调用存储模块。

优选的,阈值具体为数据块可写入数据的总量。

本发明所提供的ceph文件系统的数据存储方法,当数据块中写入数据的总量达到阈值要求后,才会将数据块中的数据存储至磁盘中。因此,该方法可以将阈值设置的较高,则相邻两次的刷新时间就会较长,相当于对现有技术中的刷新时间进行了延迟,因此,能够避免因为数据块中数据过少而从磁盘中读取大量已有数据后再存储回磁盘中的情况,这就能够相应的减轻磁盘的工作压力,进而提升系统的工作性能。由于能保证数据块中有固定的空间会被用于存储新数据,所以每一个数据块所承载的新数据的量均有所增加,这也进一步提高了每一次进行数据存储的效率。此外,本发明还提供一种ceph文件系统的数据存储装置,有益效果如上所述。

附图说明

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

图1为本发明提供的一种ceph文件系统的数据存储方法的流程图;

图2为本发明提供的另一种ceph文件系统的数据存储方法的流程图;

图3为本发明实施例提供的一种ceph文件系统的数据存储装置结构图。

具体实施方式

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

本发明的核心是提供一种ceph文件系统的数据存储方法,能够相应的减轻磁盘的工作压力,进而提升系统的工作性能,也进一步提高了每一次进行数据存储的效率。此外,本发明还提供一种ceph文件系统的数据存储装置。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

实施例一

图1为本发明提供的一种ceph文件系统的数据存储方法的流程图。请参考图1,ceph文件系统的数据存储方法的具体步骤包括:

步骤s10:接收客户端写入的数据,并将数据写入数据块。

在本步骤中,客户端是建立在ceph文件系统之上用来实现用户与系统进行交互的媒介,用户通过客户端进行数据的写入,而由于ceph文件系统的固有机制,数据最先被写入到数据块中,系统每次刷新都是将数据块中已被写入的数据存储到磁盘中。

步骤s11:判断数据块中的数据的总量是否达到阈值,若是,则执行步骤s12,否则,继续执行步骤s10。

可以理解的是,设定阈值的意义在于,能够保证数据块中的数据达到要求的数量才可以继续执行后续的系统刷新操作。这样做的好处在于,在写入数据块的数据量很少或是数据写入数据块的速度很慢的情况下,可以起到延长系统刷新时间的作用。进而每一次系统在刷新时,由数据块存储至磁盘中的数据的量都是固定,这样可以确保磁盘不会过多读取出自身的数据与数据块中数据合并再存储至自身中,这相应的减少了磁盘的压力,也提升了磁盘的存储效率。需要强调的是,阈值可以根据对于系统刷新时间的要求而进行具体设定,在此不做限定。当数据写入数据块的速率一定时,阈值在可设定范围内设定的越高,系统刷新的时间就越长,相应的,磁盘的压力就越小。

步骤s12:将数据块中的数据存储至磁盘。

需要说明的是,在ceph文件系统的存储机制下,数据块为每次数据存储至磁盘的数据单位,数据需要通过数据块才可存储到磁盘中。

本实施例提供的ceph文件系统的数据存储方法,当数据块中写入数据的总量达到阈值要求后,才会将数据块中的数据存储至磁盘中。因此,该方法中可以将阈值设置的较高,则相邻两次的刷新时间就会较长,相当于对现有技术中的刷新时间进行了延迟,因此,能够避免因为数据块中数据过少而从磁盘中读取大量已有数据后再存储回磁盘中的情况,这就能够相应的减轻磁盘的工作压力,进而提升系统的工作性能。由于能保证数据块中有固定的空间会被用于存储新数据,所以每一个数据块所承载的新数据的量均有所增加,也进一步提高了每一次进行数据存储的效率。

实施例二

图2为本发明提供的另一种ceph文件系统的数据存储方法的流程图。图2中步骤s10-s12与图1相同,此处不再赘述。

如图2所示,作为一种优选的实施方式的,还包括:

步骤s20:判断ceph文件系统的当前运行状态是否满足将数据块中的数据存储至磁盘的触发条件,若是,则执行步骤s12,否则,继续执行步骤s10。

在具体的实施中,可以设置标记变量来标记是否满足触发条件,并根据标记变量的值的变化以控制是否将数据块中的数据存储至磁盘。例如在ceph文件系统的源文件中新增flush_now变量,在初始化状态下flush_now变量的值为false,当需要立即刷新时,则系统设置flush_now变量的值变为true,此时系统当前到运行状态就满足触发条件。在数据存储结束后flush_now变量的值变为false以进入下一轮数据的存储。

由于系统中往往存在一些客观的情况,例如系统需要立即使用待存储到磁盘中的数据或是立即确保数据安全等,考虑到在这种情况下,为了保证在上述情况下系统的正常工作,就需要将数据块中已有数据立即存储至磁盘中。需要说明的是,步骤s20与步骤s11的执行顺序可以不固定,但最好为同时进行。因为理想的情况应该是,系统在判断数据块中数据是否达到阈值的同时监听是否有需要立刻将数据存储到磁盘的突发情况,上述两个判断条件满足任何一种系统都会将数据块中已有数据立即存储至磁盘中。

更进一步的,作为一种优选的实施方式,触发条件具体包括:

相邻两次将数据写入数据块的时间间隔达到规定时间、系统调用fsync接口、另一客户端访问数据和/或数据不连续。

规定时间就相当于可以等待数据写入数据块的最长时间。可以理解的是,由于写入速度不稳定等原因,可能会造成长时间无法将数据块中的数据存储至磁盘中的情况,数据也会因长时间驻留在内存而存在安全上的隐患,设定规定时间的目的正是为了避免上述情况可能造成的数据丢失或损坏。另一方面,当系统调用fsync接口或另一客户端访问数据时都需要进行数据的同步,以保证系统的正常运行。此外,当数据被采用随机写的方式存储到内存的page中时,数据是零散存储在内存中的,因此在内存中查找有数据的page需要花费很长的时间,增加了系统的负担与资源开销,因此当写入数据块中的数据不连续时直接将当前数据块中的数据存储到磁盘,可以相应的减少系统的工作压力。

此外,作为一种优选的实施方式,规定时间具体根据数据写入数据块的速率确定。

可以理解的是,当阈值为确定值时,即写入的数据量是确定值时,写入的速率越大,完成写入所需的时间就越短,反之,则完成写入所需的时间就越长。因此,数据写入数据块的时间长短在阈值确定的情况下是由数据写入的速率而定的,所以应该在阈值确定的情况下根据速率而具体确定规定时间。更进一步也可以考虑到是否会出现一段时间内无数据可写入数据块的情况,进而使对规定时间的设定更加准确。

此外,作为一种优选的实施方式,阈值具体为数据块可写入数据的总量。

可以理解的是,阈值设置的越高,在数据块中数据存储到磁盘时,磁盘的工作压力越小。当不考虑时间开销等因素的情况下,可以将阈值设置为数据块可写入数据的总量。例如在filestore机制下数据块的大小为4mb,如果将阈值设置为4mb,可以最大程度的减轻磁盘的工作压力,并且可以保证4mb数据全部为新数据,进而进一步增加数据存储效率。

此外,作为一种优选的实施方式的,在将数据块中的数据存储至磁盘后,将当前时刻清零。

其中,触发条件为相邻两次将数据写入数据块的时间间隔达到规定时间。

将当前时刻清零的意义在于,重新计算数据块中数据存储至磁盘所用的时间,进入新一轮的数据存储。

在上述实施方式的基础上,作为一种优选的实施方式,当将当前时刻清零时,该方法进一步包括:

记录每一次将数据块中的数据存储至磁盘的时刻。

每一次数据存储到磁盘中的时刻可以记录下来作为系统的工作文件,当出现故障时或其他情况时可以作为参考。

实施例三

在上文中对于ceph文件系统的数据存储方法的实施例进行了详细的描述,本发明还提供一种与该方法对应的ceph文件系统的数据存储装置,由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图3为本发明实施例提供的一种ceph文件系统的数据存储装置结构图。本发明实施例提供的一种ceph文件系统的数据存储装置,具体包括:

写入模块10,用于接收客户端写入的数据,并将数据写入数据块。

总量判断模块11,用于判断数据块中的数据的总量是否达到阈值,如果是,则调用存储模块12。

存储模块12,用于将数据块中的数据存储至磁盘。

本发明所提供的一种ceph文件系统的数据存储装置,当数据块中写入数据的总量达到阈值要求后,才会将数据块中的数据存储至磁盘中。因此,该方法中可以将阈值设置的较高,则相邻两次的刷新时间就会较长,相当于对现有技术中的刷新时间进行了延迟,因此,能够避免因为数据块中数据过少而从磁盘中读取大量已有数据后再存储回磁盘中的情况,这就能够相应的减轻磁盘的工作压力,进而提升系统的工作性能。由于能保证数据块中有固定的空间会被用于存储新数据,所以每一个数据块所承载的新数据的量均有所增加,这也进一步提高了每一次进行数据存储的效率。

在实施例三的基础上,该装置还包括:

条件判断模块,用于判断ceph文件系统的当前运行状态是否满足将数据块中的数据存储至磁盘的触发条件,如果是,则调用存储模块12。

此外,在上述实施例的基础上,作为一种优选的实施方式,阈值具体为数据块可写入数据的总量。

以上对本发明所提供的一种ceph文件系统的数据存储方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

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