G06F16/182 G06F16/18 G06F16/172
1.一种基于分布式存储的日志文件存储方法,其特征在于,包括:
获取申请总存储空间和BlueStore最小分配单元;
确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数;
遍历BlueStore中的剩余空间,并判断所述剩余空间是否存在目标连续存储空间;其中,所述目标连续存储空间包含所述BlueStore最小分配单元的个数不小于所述目标个数;
若存在,则申请所述目标连续存储空间。
2.根据权利要求1所述的基于分布式存储的日志文件存储方法,其特征在于,所述确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数包括:
将所述申请总存储空间除以所述BlueStore最小分配单元得到对应的比值;
将所述比值向上取整得到的值作为所述目标个数。
3.根据权利要求1所述的基于分布式存储的日志文件存储方法,其特征在于,若不存在所述目标连续存储空间,则还包括:
获取所述剩余空间中的不连续存储空间;其中,所述不连续存储空间大于等于所述BlueStore最小分配单元的空间且小于所述目标连续存储空间;
在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间。
4.根据权利要求3所述的基于分布式存储的日志文件存储方法,其特征在于,所述在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间包括:
从所述目标连续存储空间中选取预设存储空间除以所述BlueStore最小分配单元得到对应的比值,其中,所述预设存储空间不小于所述BlueStore最小分配单元;
将所述比值向上取整得到的值作为所述不连续存储空间的最小个数。
5.根据权利要求3所述的基于分布式存储的日志文件存储方法,其特征在于,在所述在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间之后还包括:
判断所述剩余空间中满足所述不连续存储空间的所述最小个数的组合是否小于二;
若不小于二,则将各组合中所述不连续存储空间的空间之和最小的组合作为所述申请总存储空间。
6.根据权利要求1所述的基于分布式存储的日志文件存储方法,其特征在于,在所述确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数之前还包括:
判断所述剩余空间是否小于所述申请总存储空间,若是,则发出提示信息。
7.根据权利要求6所述的基于分布式存储的日志文件存储方法,其特征在于,在所述判断所述剩余空间是否小于所述申请总存储空间之前还包括:
统计所述BlueStore的所述剩余空间之和。
8.一种基于分布式存储的日志文件存储装置,其特征在于,包括:
获取模块,用于获取申请总存储空间和BlueStore最小分配单元;
确定模块,用于确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数;
遍历模块,用于遍历BlueStore中的剩余空间;
判断模块,用于判断所述剩余空间是否存在目标连续存储空间;其中,所述目标连续存储空间包含所述BlueStore最小分配单元的个数不小于所述目标个数;若存在,则调用申请模块;
所述申请模块,用于申请所述目标连续存储空间。
9.一种基于分布式存储的日志文件存储装置,其特征在于,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的基于分布式存储的日志文件存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于分布式存储的日志文件存储方法的步骤。
本申请涉及云存储技术领域,特别是涉及一种基于分布式存储的日志文件存储方法、装置及介质。
随着互联网的不断发展,云存储技术领域中的分布式存储系统应用越来越广泛,分布式存储系统在存储引擎BlueStore中实现,存储数据时,除了存储数据本身还需要存储元数据,由于元数据采用RocksDB(RocksDB是一个嵌入式键值存储器,其中,键和值是任意的字节流)进行读写,而RocksDB需要文件进行操作,因此存储引擎BlueStore实现了BlueFS(BlueStore之上的一层文件系统,用于完成上层数据库的读写操作)文件系统。
BlueFS 将文件分配和释放空间的操作记录在日志文件(Log)中,当BlueFS空间不够时向BlueStore剩余空间进行“借用”,向BlueStore剩余空间借用存储空间时,分配器以BlueStore存储空间的最小分配单元为基础,依次遍历BlueStore的剩余存储空间,直至获取到需要借用的存储空间大小为止。依据这样的方式向BlueStore剩余空间借用存储空间,例如,需要借用的存储空间为10千字节(Kilobyte,简称Kb),BlueStore的最小分配单元为4Kb,则向BlueStore借用存储空间时,分配器依次遍历BlueStore的剩余存储空间,只要满足最小分配单元就可以借用当前存储空间,则可能出现借用了3个不连续的4Kb存储空间,然而当BlueFS向BlueStore 借用的空间比较碎,即借用空间不连续时,会导致BlueFS的Log通过“借用”的空间进行存储时,Log分布在非常多的存储空间上,进而导致Log的元数据非常大,容易引起无法存储Log的元数据问题。
由此可见,如何减小Log的元数据量,降低无法存储Log的元数据的概率,是本领域技术人员亟待解决的问题。
本申请的目的是提供一种基于分布式存储的日志文件存储方法、装置及介质,确定申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,并判断剩余空间中是否存在目标连续存储空间,其中,目标连续存储空间所包含的BlueStore最小分配单元的个数不小于确定的目标个数,若存在目标连续存储空间,则向BlueStore申请该目标连续存储空间,避免获取不连续存储空间导致Log的元数据量过大无法存储Log的元数据的现象。
为解决上述技术问题,本申请提供一种基于分布式存储的日志文件存储方法,包括:
获取申请总存储空间和BlueStore最小分配单元;
确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数;
遍历BlueStore中的剩余空间,并判断所述剩余空间是否存在目标连续存储空间;其中,所述目标连续存储空间包含所述BlueStore最小分配单元的个数不小于所述目标个数;
若存在,则申请所述目标连续存储空间。
优选地,所述确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数包括:
将所述申请总存储空间除以所述BlueStore最小分配单元得到对应的比值;
将所述比值向上取整得到的值作为所述目标个数。
优选地,若不存在所述目标连续存储空间,则还包括:
获取所述剩余空间中的不连续存储空间;其中,所述不连续存储空间大于等于所述BlueStore最小分配单元的空间且小于所述目标连续存储空间;
在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间。
优选地,所述在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间包括:
从所述目标连续存储空间中选取预设存储空间除以所述BlueStore最小分配单元得到对应的比值,其中,所述预设存储空间不小于所述BlueStore最小分配单元;
将所述比值向上取整得到的值作为所述不连续存储空间的最小个数。
优选地,在所述在所述剩余空间中选取满足所述申请总存储空间对应的最小个数的所述不连续存储空间之后还包括:
判断所述剩余空间中满足所述不连续存储空间的所述最小个数的组合是否小于二;
若不小于二,则将各组合中所述不连续存储空间的空间之和最小的组合作为所述申请总存储空间。
优选地,在所述确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数之前还包括:
判断所述剩余空间是否小于所述申请总存储空间,若是,则发出提示信息。
优选地,在所述判断所述剩余空间是否小于所述申请总存储空间之前还包括:
统计所述BlueStore的所述剩余空间之和。
为了解决上述技术问题,本申请还提供了一种基于分布式存储的日志文件存储装置,包括:
获取模块,用于获取申请总存储空间和BlueStore最小分配单元;
确定模块,用于确定满足所述申请总存储空间对应的所述BlueStore最小分配单元的目标个数;
遍历模块,用于遍历BlueStore中的剩余空间;
判断模块,用于判断所述剩余空间是否存在目标连续存储空间;其中,所述目标连续存储空间包含所述BlueStore最小分配单元的个数不小于所述目标个数;若存在,则调用申请模块;
所述申请模块,用于申请所述目标连续存储空间。
为了解决上述技术问题,本申请还提供了一种基于分布式存储的日志文件存储装置,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如所述的基于分布式存储的日志文件存储方法的步骤。
为了解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的基于分布式存储的日志文件存储方法的步骤。
本发明所提供的基于分布式存储的日志文件存储方法,包括:获取申请总存储空间和BlueStore最小分配单元,然后确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,并判断剩余空间是否存在目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数,若剩余空间中存在该目标连续存储空间,则向BlueStore申请目标连续存储空间。由此可见,本发明提供的技术方案,按照BlueStore最小分配单元确定满足申请总存储空间所需要的BlueStore最小分配单元个数,遍历BlueStore中的剩余空间以申请与申请总存储空间对应的目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。避免按照最小分配单元遍历BlueStore的剩余空间以获取申请总空间时获取到不连续的存储空间,进而导致Log的元数据量过大无法存储Log的元数据的现象。
此外,本申请还提供一种基于分布式存储的日志文件存储装置及介质,与上述的基于分布式存储的日志文件存储方法相对应,效果同上。
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的基于分布式存储的日志文件存储方法的流程图;
图2为本发明实施例所提供的一种基于分布式存储的日志文件存储装置的结构图;
图3为本发明另一实施例提供的基于分布式存储的日志文件存储装置的结构图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种基于分布式存储的日志文件存储方法、装置及介质,依据BlueStore最小分配单元确定申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,判断剩余空间中是否存在目标连续存储空间,其中,目标连续存储空间所包含的BlueStore最小分配单元的个数不小于目标个数,若存在,则向BlueStore申请该目标连续存储空间,避免BlueFS空间不足向BlueStore“借用”空间时,申请的空间不连续时导致Log的元数据量过大,进而导致无法存储Log的元数据。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
分布式存储系统在存储引擎BlueStore中实现,存储数据时,除了存储数据本身还需要存储元数据,由于元数据采用RocksDB进行读写,而RocksDB需要文件进行操作,因此存储引擎BlueStore实现了BlueFS文件系统。
BlueFS 将文件分配和释放空间的操作记录在日志文件(Log)中,当BlueFS空间不够时向BlueStore剩余空间进行“借用”,向BlueStore剩余空间借用存储空间时,分配器以BlueStore存储空间的最小分配单元为基础,依次遍历BlueStore的剩余存储空间,直至获取到需要借用的存储空间大小为止。依据这样的方式向BlueStore的剩余空间借用存储空间,例如,需要借用的存储空间为10Kb,BlueStore的最小分配单元为4Kb,则向BlueStore借用存储空间时,依次遍历BlueStore的剩余存储空间,只要满足最小分配单元就可以借用当前存储空间,则可能出现借用了3个不连续的4Kb存储空间,然而当BlueFS向BlueStore 借用的空间比较碎,即借用空间不连续时,会导致BlueFS的Log通过“借用”的空间进行存储时,Log分布在非常多的存储空间上,进而导致Log的元数据非常大,容易引起无法存储Log的元数据问题。
为了避免BlueFS通过向BlueStore借用的空间进行数据和元数据存储时,导致Log的元数据量过大,进而导致无法存储Log的元数据的现象,本发明提供了一种基于分布式存储的日志文件存储方法,获取申请总存储空间和BlueStore最小分配单元,然后确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,并判断剩余空间是否存在目标连续存储空间,若存在,则向BlueStore申请该目标连续存储空间。其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。由此,BlueFS可以向BlueStore“借用”一段连续的存储空间,减小Log的元数据量。
图1为本发明实施例所提供的基于分布式存储的日志文件存储方法的流程图,如图1所示,该方法包括:
S10:获取申请总存储空间和BlueStore最小分配单元。
S11:确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数。
S12:遍历BlueStore中的剩余空间。
S13:判断剩余空间是否存在目标连续存储空间,若存在,则进入步骤S13;其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。
S14:申请目标连续存储空间。
在具体实施例中,为了保证申请空间不出现错误,因此在步骤S10中,获取BlueStore的最小分配单元,并在步骤S11中,确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数。其中,通过将申请总存储空间除以BlueStore最小分配单元得到对应的比值,在将比值向上取整得到的值作为目标个数。由此,可以获取到申请总存储空间需要获取的BlueStore最小分配单元的个数。
确定申请总存储空间对应的BlueStore最小分配单元目标个数之后,通过遍历BlueStore中的剩余空间,并判断BlueStore的剩余空间中是否存在包含BlueStore最小分配单元的个数不小于目标个数的一个目标连续存储空间,若存在,则向BlueStore申请借用该目标连续存储空间。为了便于理解,下面将举例说明。
例如,BlueFS需要申请的申请总存储空间为10Kb,BlueStore最小分配单元为4Kb,则满足申请总存储空间10Kb对应的BlueStore最小分配单元4Kb的目标个数为3个,进而确定需要申请的目标连续存储空间为12Kb,因此在遍历BlueStore中的剩余空间时,需要判断BlueStore中的剩余空间中是否存在12Kb的目标连续存储空间,若存在,则向BlueStore申请“借用”该12Kb连续存储空间,当然,可以理解的是申请总存储空间为包含BlueStore最小分配单元的个数不小于目标个数,因此,目标个数最小为3个,当然也可以是4个,5个等大于3的个数,也就是说,在遍历BlueStore中的剩余空间时,只要存储空间大于申请总存储空间时,即可借用给BlueFS使用,从不浪费资源的角度考虑,优选目标个数最小组成的目标连续空间作为申请总存储空间。
可以理解的是,当BlueStore的剩余空间中存在BlueFS需要申请的一段目标连续存储空间时,即可申请到该连续存储空间进行借用,但是BlueStore的剩余空间中在会不存在该目标连续存储空间的情况,此时,需要可以获取BlueStore的剩余空间中的不连续存储空间,其中,不连续存储空间大于等于BlueStore最小分配单元的空间且小于目标连续存储空间,在剩余空间中选取满足申请总存储空间对应的最小个数的不连续存储空间作为申请总存储空间。
需要说明的是,最小个数的不连续存储空间是从目标连续存储空间中选取预设存储空间除以BlueStore最小分配单元得到对应的比值,再将比值向上取整得到不连续存储空间的最小个数,其中,预设存储空间不小于BlueStore最小分配单元
此外,还需要说明的是,当满足不连续存储空间的最小个数的组合不小于2时,则选取各组合中不连续存储空间之和最小的组合最为申请总存储空间。
在具体实施中,可以先统计BlueStore中的剩余空间之和,然后判断该剩余空间之和是否小于BlueFS的需要申请的申请总存储空间,若小于,则给出提示信息。
本发明实施例所提供的基于分布式存储的日志文件存储方法,包括:获取申请总存储空间和BlueStore最小分配单元,然后确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,并判断剩余空间是否存在目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数,若剩余空间中存在该目标连续存储空间,则向BlueStore申请目标连续存储空间。由此可见,本发明提供的技术方案,按照BlueStore最小分配单元确定满足申请总存储空间所需要的BlueStore最小分配单元个数,遍历BlueStore中的剩余空间以申请与申请总存储空间对应的目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。避免按照最小分配单元遍历BlueStore的剩余空间以获取申请总空间时获取到不连续的存储空间,进而导致Log的元数据量过大无法存储Log的元数据的现象。
在具体实施例中,在确定满足BlueFS的申请总存储空间对应的BlueStore最小分配单元的目标个数时,用申请总存储空间除以BlueStore最小分配单元,并对比值的结果向上取整,由此得到申请总存储空间对应的BlueStore最小分配单元的目标个数。得到目标个数后,将该目标个数乘以BlueStore最小分配单元得到BlueFS需要申请的目标连续申请空间,即,目标连续申请空间=目标个数*BlueStore最小分配单元。为了便于理解,下面将举例说明。
例如,BlueFS需要申请的申请总存储空间为10Kb,BlueStore最小分配单元为4Kb,则10除以4得到比值2.5,将该比值2.5向上取整得到3,则3作为申请总存储空间对应的BlueStore最小分配单元的目标个数,即10Kb对应的BlueStore最小分配单元的目标个数为3,则10Kb对应的目标连续存储空间为:3*4=12Kb。
本发明实施例所提供的基于分布式存储的日志文件存储方法,通过将申请总存储空间除以BlueStore最小分配单元得到一个比值,并对该比值向上取整得到申请总存储空间对应的BlueStore最小分配单元的目标个数,最后依据该目标个数确定BlueFS需要向BlueStore申请的目标连续存储空间,由此,BlueFS可以借用到BlueStore剩余空间中的一段连续存储空间,避免获取到不连续的存储空间导致Log的元数据量过大无法存储Log的元数据的现象。
在具体实施例中,当BlueStore中的剩余空间中不存在申请总存储空间对应的目标连续存储空间时,即BlueFS无法在BlueStore中申请到申请总存储空间对应的一个目标连续存储空间时,为了尽可能减小Log的元数据量,则在BlueStore的中剩余空间中选取满足申请总存储空间对应的最小个数的不连续存储空间,其中,该不连续存储空间大于BlueStore最小分配单元的空间且小于目标连续存储空间。为了便于理解,下面将举例说明。
例如,BlueFS需要申请的申请总存储空间为10Kb,BlueStore最小分配单元为4Kb,则对应的目标连续存储空间为12Kb,当BlueStore的剩余空间中不存在12Kb的连续存储空间,且BlueStore的剩余空间中的不连续存储空间分别为4Kb和8Kb时,显然,不连续存储空间大于或等于BlueStore最小分配单元4Kb且小于目标连续存储空间12Kb,则在BlueStore的剩余空间中选取满足申请总存储空间对应的最小个数的不连续存储空间,即10Kb的申请总存储空间可以对应两个8Kb不连续存储空间,或者对应一个8Kb不连续存储空间和一个4Kb不连续存储空间。
本发明实施例所提供的基于分布式存储的日志文件存储方法,当BlueStore中的剩余空间中不存在申请总存储空间对应的目标连续存储空间时,可以选取当前BlueStore的剩余空间申请总存储空间对应的最小个数的不连续存储空间最为申请总存储空间,其中,该不连续存储空间大于BlueStore最小分配单元的空间且小于目标连续存储空间,由此,尽可能减小Log的元数据量,进而降低无法存储Log的元数据的概率。
在上述实施例的基础上,当BlueStore中的剩余空间中不存在申请总存储空间对应的目标连续存储空间时,从确定的目标连续存储空间中选取预设存储空间除以BlueStore最小分配单元得到对应的比值,其中,预设存储空间不小于BlueStore最小分配单元,然后将得到的比值向上取整得到不连续存储空间的最小个数。
需要说明的是,从目标连续存储空间中选取预设存储空间时,可以选取目标连续存储空间的二分之一,也可以选取三分之二,当然,也可以选取其他存储空间,对此本发明不作限定。为了便于理解,下面将举例说明。
例如,BlueFS需要申请的申请总存储空间为10Kb,BlueStore最小分配单元为4Kb,预设存储空间为目标连续存储空间的二分之一,当BlueStore的剩余空间中不存在12Kb的目标连续存储空间时间,则确定预设存储空间为6Kb,6÷4=1.5,则对比值1.5向上取整得到2,将2作为不连续存储空间的最小个数,最后将该最小个数乘以BlueStore最小分配单元得到处理目标连续存储空间12Kb的最大连续存储空间8Kb,即在BlueStore的剩余空间中获取不连续存储空间,其中,不连续存储空间大于等于所述BlueStore最小分配单元的空间且小于所述目标连续存储空间。
本发明实施例所提供的基于分布式存储的日志文件存储方法,当BlueStore中的剩余空间中不存在申请总存储空间对应的目标连续存储空间时,可以选取当前BlueStore的剩余空间申请总存储空间对应的最小个数的不连续存储空间最为申请总存储空间,其中,该不连续存储空间大于BlueStore最小分配单元的空间且小于目标连续存储空间。通过从确定的目标连续存储空间中选取预设存储空间除以BlueStore最小分配单元得到对应的比值,然后将得到的比值向上取整得到不连续存储空间的最小个数。由此,尽可能减小Log的元数据量,进而降低无法存储Log的元数据的概率。
在上述实施例的基础上,当BlueStore的剩余空间中满足不连续存储空间的最小个数的组合不小于2时,为了不浪费BlueStore的存储空间,即不浪费资源,可以将各组合中不连续存储空间的空间之和最小的组合作为BlueFS的申请总存储空间。为了便于理解,下面将举例说明。
例如,BlueFS需要申请的申请总存储空间为10Kb,BlueStore最小分配单元为4Kb,当BlueStore的剩余空间中不存在12Kb的目标连续存储空间,且BlueStore的剩余空间中的不连续存储空间分别为4Kb和8Kb时,则在BlueStore的剩余空间中选取满足10Kb对应的最小个数的不连续存储空间的组合分别为两个8Kb不连续存储空间,或者对应一个8Kb不连续存储空间和一个4Kb不连续存储空间,组合为两个8Kb不连续存储空间之和为16Kb,组合一个8Kb不连续存储空间与一个4Kb不连续存储空间之和为12Kb,因此,优选组合一个8Kb不连续存储空间与一个4Kb不连续存储空间作为BlueFS的申请总存储空间。
本发明实施例所提供的基于分布式存储的日志文件存储方法,当BlueStore的剩余空间中满足不连续存储空间的最小个数的组合不小于2时,选取将各组合中不连续存储空间的空间之和最小的组合作为BlueFS的申请总存储空间,由此,减小Log的元数据量以降低无法存储Log的元数据的概率的同时,节约BlueStore的存储资源。
在具体实施例中,为了加快申请存储空间的速度,在确定满足BlueFS的申请总存储空间对应的BlueStore最小分配单元的目标个数之前,可以先统计BlueStore的剩余空间之和,并判断该剩余空间之后是否大于等于申请总存储空间,若大于等于,则确定BlueStore的剩余空间足够BlueFS申请,否则,确定BlueStore的剩余空间不足,此时可以发送提示信息以提示用户。
本发明实施例所提供的基于分布式存储的日志文件存储方法,在确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数之前,先统计BlueStore的剩余空间之和,并判断剩余空间是否小于申请总存储空间,若小于,则发出提示信息以提醒用户,由此,可以加快BlueFS申请存储空间的速度,进而提高BlueFS的存储数据的速度。
在上述实施例中,对于基于分布式存储的日志文件存储方法进行了详细描述,本申请还提供基于分布式存储的日志文件存储装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件结构的角度。
图2为本发明实施例所提供的一种基于分布式存储的日志文件存储装置的结构图,如图2所示,该装置包括:
获取模块10,用于获取申请总存储空间和BlueStore最小分配单元。
确定模块11,用于确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数。
遍历模块12,用于遍历BlueStore中的剩余空间。
判断模块13,用于判断剩余空间是否存在目标连续存储空间;其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数,若存在,则调用申请模块。
申请模块14,用于申请目标连续存储空间。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明实施例所提供的基于分布式存储的日志文件存储装置,包括:获取申请总存储空间和BlueStore最小分配单元,然后确定满足申请总存储空间对应的BlueStore最小分配单元的目标个数,通过遍历BlueStore中的剩余空间,并判断剩余空间是否存在目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数,若剩余空间中存在该目标连续存储空间,则向BlueStore申请目标连续存储空间。由此可见,本发明提供的技术方案,按照BlueStore最小分配单元确定满足申请总存储空间所需要的BlueStore最小分配单元个数,遍历BlueStore中的剩余空间以申请与申请总存储空间对应的目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。避免按照最小分配单元遍历BlueStore的剩余空间以获取申请总空间时获取到不连续的存储空间,进而导致Log的元数据量过大无法存储Log的元数据的现象。
图3为本发明另一实施例提供的基于分布式存储的日志文件存储装置的结构图,如图3所示,基于分布式存储的日志文件存储装置包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例所提到的基于分布式存储的日志文件存储方法的步骤。
本实施例提供的基于分布式存储的日志文件存储装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器 (Digital Signal Processor,简称DSP)、现场可编程门阵列 (Field-Programmable Gate Array,简称FPGA)、可编程逻辑阵列(Programmable Logic Array,简称PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器 (Central Processing Unit,简称CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(Graphics Processing Unit,简称GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能 (Artificial Intelligence,简称AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的基于分布式存储的日志文件存储方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于基于分布式存储的日志文件存储方法中涉及的相关数据等。
在一些实施例中,基于分布式存储的日志文件存储装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图3中示出的结构并不构成对基于分布式存储的日志文件存储装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的基于分布式存储的日志文件存储装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:基于分布式存储的日志文件存储方法。
本发明实施例所提供的基于分布式存储的日志文件存储装置,按照BlueStore最小分配单元确定满足申请总存储空间所需要的BlueStore最小分配单元个数,遍历BlueStore中的剩余空间以申请与申请总存储空间对应的目标连续存储空间,其中,目标连续存储空间包含BlueStore最小分配单元的个数不小于目标个数。避免获取到不连续的存储空间导致Log的元数据量过大无法存储Log的元数据的现象。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种基于分布式存储的日志文件存储方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本文发布于:2023-04-13 17:45:39,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86134.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |