一种文件系统中管理数据的方法和装置与流程

文档序号:14653501发布日期:2018-06-08 22:28阅读:278来源:国知局
一种文件系统中管理数据的方法和装置与流程

本发明涉及数据存储技术领域,特别涉及一种文件系统中管理数据的方法和装置。



背景技术:

CDN(Content Delivery Network,内容分发网络)服务器中一般存储有大量的文件,并建立有用于管理这些文件的文件系统。文件系统中的数据可以分为文件数据和元数据,文件数据是指文件的具体内容数据,元数据是指用来描述文件属性的系统数据,诸如访问权限、文件拥有者、存储区域的分布信息以及文件系统的描述信息(如文件系统的可用空间)等。

CDN服务器对于数据存储的容量需求很大,一般选用存储量大、成本低的机械硬盘来存储文件系统中的数据,具体可以基于机械硬盘建立用于管理文件的文件系统,CDN服务器存储文件时,可以将文件的元数据以及文件数据存入机械硬盘,并通过文件系统对文件进行管理操作。当接收到外界对于某个文件的文件访问请求时,CDN服务器可以通过文件系统对机械硬盘进行I/O(Input/Output,读/写)操作,从机械硬盘中获取该文件的元数据,然后通过元数据定位到文件数据的存储位置,进而可以向外界反馈机械硬盘中存储的文件数据。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

CDN服务器往往需要并发处理大量的文件访问请求,对存储介质的IOPS(Input/Output Operations Per Second,每秒读/写次数)需求越来越大,而机械硬盘的IOPS能力较差,无法实现对于文件访问请求的快速反馈,因此文件系统的服务性能较差。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种文件系统中管理数据的方法和装置。所述技术方案如下:

第一方面,提供了一种文件系统中管理数据的方法,所述方法包括:

格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在所述高IOPS存储介质分区设置I-node表单;

将待存储的元数据存入所述I-node表单,并将待存储的文件数据存入所述低IOPS存储介质。

可选的,所述方法还包括:

如果所述高IOPS存储介质分区存在剩余存储空间,则将待存储的目录文件和间接块数据存入所述剩余存储空间;

当所述剩余存储空间不足时,将所述待存储的目录文件和间接块数据继续存入所述低IOPS存储介质。

可选的,所述方法还包括:

预估所有待存储文件的平均文件大小,基于所述低IOPS存储介质的容量和所述平均文件大小,估算I-node个数;

根据所述I-node个数、I-node单位容量和所述低IOPS存储介质的单位存储量,确定所述高IOPS存储介质分区的存储容量。

可选的,所述将待存储的文件数据存入所述低IOPS存储介质,包括:

根据文件系统的进程读写的最大并行数量,将所述低IOPS存储介质划分为大小统一的连续的多个存储区域;

对于一个待存储文件,采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据。

可选的,所述采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据,包括:

如果所述待存储文件的文件大小大于预设数值,则采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据;

如果所述待存储文件的文件大小不大于所述预设数值,则从位置游标指向的空闲存储单元开始写入所述待存储文件的文件数据,并更新位置游标指向的空闲存储单元,其中,所述位置游标指向的空闲存储单元始终为所述多个存储区域内的首个空闲存储单元。

可选的,所述高IOPS存储介质为固态硬盘,所述低IOPS存储介质为机械硬盘。

第二方面,提供了一种文件系统中管理数据的装置,所述装置包括:

建立模块,用于格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在所述高IOPS存储介质分区设置I-node表单;

存储模块,用于将待存储的元数据存入所述I-node表单,并将待存储的文件数据存入所述低IOPS存储介质。

可选的,所述存储模块,还用于:

如果所述高IOPS存储介质分区存在剩余存储空间,则将待存储的目录文件和间接块数据存入所述剩余存储空间;

当所述剩余存储空间不足时,将所述待存储的目录文件和间接块数据继续存入所述低IOPS存储介质。

可选的,所述装置还包括:

估算模块,用于预估所有待存储文件的平均文件大小,基于所述低IOPS存储介质的容量和所述平均文件大小,估算I-node个数;

确定模块,用于根据所述I-node个数、I-node单位容量和所述低IOPS存储介质的单位存储量,确定所述高IOPS存储介质分区的存储容量。

可选的,所述存储模块,具体用于:

根据文件系统的进程读写的最大并行数量,将所述低IOPS存储介质划分为大小统一的连续的多个存储区域;

对于一个待存储文件,采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据。

可选的,所述存储模块,具体用于:

如果所述待存储文件的文件大小大于预设数值,则采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据;

如果所述待存储文件的文件大小不大于所述预设数值,则从位置游标指向的空闲存储单元开始写入所述待存储文件的文件数据,并更新位置游标指向的空闲存储单元,其中,所述位置游标指向的空闲存储单元始终为所述多个存储区域内的首个空闲存储单元。

可选的,所述高IOPS存储介质为固态硬盘,所述低IOPS存储介质为机械硬盘。

第三方面,提供了一种文件存储设备,所述文件存储设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一所述的文件系统中管理数据的方法。

第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一所述的文件系统中管理数据的方法。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在所述高IOPS存储介质分区设置I-node表单,将待存储的元数据存入I-node表单,并将待存储的文件数据存入低IOPS存储介质。这样,利用固态硬盘等快速反馈能力强的高IOPS存储介质存储元数据,分担了文件系统中元数据访问处理给机械硬盘等低IOPS存储介质带来的IOPS压力,从而可以提高文件系统的服务性能。

附图说明

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

图1是本发明实施例提供的一种文件系统的数据存储示意图;

图2是本发明实施例提供的一种文件系统中管理数据的方法流程图;

图3是本发明实施例提供的一种文件系统中管理数据的装置结构示意图;

图4是本发明实施例提供的一种文件系统中管理数据的装置结构示意图;

图5是本发明实施例提供的一种文件存储设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种文件系统中管理数据的方法,该方法的执行主体可以是文件存储设备,其中,文件存储设备可以是存储有大量文件,并具备文件管理功能的任意设备,可以是终端,也可以是服务器。文件存储设备中至少存在两种IOPS不同的存储介质,文件存储设备可以基于单一存储介质构建本地文件系统,也可以基于多种存储介质构建本地文件系统。文件存储设备中可以设置有处理器、存储器、收发器,处理器可以用于对文件系统中管理数据的过程进行处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于文件存储设备与外界进行数据交互。本实施例中,以文件存储设备为CDN服务器、高IOPS存储介质为固态硬盘、低IOPS存储介质为机械硬盘为例进行说明,其它情况与之类似,不再一一介绍。可以理解,本发明实施例所述的方法也可以适用于其他非CDN领域的服务器或文件存储设备中。

图1为本实施例中固态硬盘和机械硬盘的数据存储示意图,其中,CDN服务器侧的技术人员可以预先在固态硬盘中划分出用于建立文件系统的固态硬盘分区,固态硬盘分区中可以包含I-node表单和预留的存储空间,I-node表单是由大量大小相同的I-node(information node,信息节点)构成的表单,文件系统中每个文件在该表单中都对应有一个I-node,I-node中记录每个文件的一些属性信息,如文件的大小、文件所有者、和创建时间等;机械硬盘可以包含有大量用于存储文件数据的存储单元,所有存储单元的大小相同,各自对应唯一的编号。

下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,内容可以如下:

步骤201,格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在高IOPS存储介质分区设置I-node表单。

在实施中,CDN服务器侧的技术人员可以控制CDN服务器对文件系统内部的数据进行分离存储。具体地,CDN服务器检测到下述文件系统中管理数据的过程的预设触发条件时,则可以对已有的建立在机械硬盘上的原始文件系统进行格式化,同时可以基于预先分配的固态硬盘分区和机械硬盘建立新文件系统。之后,CDN服务器可以在上述固态硬盘分区中设置I-node表单。可以理解,上述预设触发条件可以由技术人员根据CDN服务器的运行状态任意设定,可以是接收到用户输入的开始指令,也可以是到达预设的时间点,或者是检测到当前负载不大于预设负载值等。

步骤202,将待存储的元数据存入I-node表单,并将待存储的文件数据存入低IOPS存储介质。

在实施中,CDN服务器基于固态硬盘分区和机械硬盘建立了新文件系统后,可以记录固态硬盘分区和机械硬盘的起止地址。之后,CDN服务器可以获取待存储文件的元数据和文件数据,并将待存储的元数据存入上述I-node表单,然后将待存储的文件数据存入机械硬盘。

可选的,CDN服务器还可以将目录文件和间接块数据优先存入固态硬盘中,相应的处理可以如下:如果高IOPS存储介质分区存在剩余存储空间,则将待存储的目录文件和间接块数据存入剩余存储空间;当剩余存储空间不足时,将待存储的目录文件和间接块数据继续存入低IOPS存储介质。

其中,为了实现文件目录的管理,通常将文件目录以文件的形式进行保存,这个文件则被称为目录文件,目录文件是长度固定的记录式文件。

如果文件数据的大小超过机械硬盘上一个存储单元的容量,文件数据则需要存放在多个存储单元中。CDN服务器可以将文件数据的分布情况记录在文件对应的I-node包含的磁盘序号列表里。当文件数据占用的存储单元的数量超过磁盘序号列表的容量时,则需要将部分存储单元的编号记录在磁盘序号列表外的一个存储单元中,并在磁盘序号列表里记录该存储单元的指针,CDN服务器可以通过这个指针查找到上述部分存储单元,而这个指针可以认为是间接块数据。

在实施中,如果固态硬盘分区中除I-node表单之外,还存在可用的存储空间(即剩余存储空间),CDN服务器则可以将待存储的目录文件和间接块数据存入上述剩余存储空间。具体的,CDN服务器在构建新文件系统后,以文件为单位对待存储的数据进行存储,可以先将元数据存入I-node表单,然后将相关的目录文件和间接块数据存入固态硬盘分区。当固态硬盘分区中剩余存储空间不足,无法继续存入目录文件和间接块数据时,CDN服务器则可以将后续的目录文件和间接块数据继续存入机械硬盘中。

可选的,CDN服务器可以根据文件的存储状况,对固态硬盘分区的存储容量预先进行设定,相应的处理可以如下:预估所有待存储文件的平均文件大小,基于低IOPS存储介质的容量和平均文件大小,估算I-node个数;根据I-node个数、I-node单位容量和低IOPS存储介质的单位存储量,确定高IOPS存储介质分区的存储容量。

在实施中,CDN服务器可以预先估算所有待存储文件的平均文件大小,然后基于机械硬盘的容量和平均文件大小,估算机械硬盘可存储的文件的数量,即估算出I-node个数。例如,预估平均文件大小为1MB,机械硬盘的容量为1TB,则可以得出至少需要100万个I-node。之后,CDN服务器可以根据I-node个数和I-node的单位容量,先计算出I-node表单所占用的存储容量,如一个I-node的单位容量为128B,I-node个数为100万个,I-node表单的存储容量则为128MB。进一步的,可以在固态硬盘分区中预留一部分存储空间来存储目录文件和间接块数据,具体可以根据目录文件或者间接块数据的数量,以及机械硬盘的单位存储量来计算预留的存储空间的大小。假设100万个I-node,存在1/4的目录文件或者间接块数据,同时机械硬盘的单位存储量为4KB,则需要预留1000000*1/4*4KB的存储空间。进而,将上述I-node表单的存储容量和预留的存储空间相加,即可以确定出固态硬盘分区的存储容量。

可选的,可以对机械硬盘进行存储区域划分,然后在存储文件数据时在多个存储区域中随机选择存储区域,相应的,步骤202可以如下:根据文件系统的进程读写的最大并行数量,将低IOPS存储介质划分为大小统一的连续的多个存储区域;对于一个待存储文件,采用预设随机算法在多个存储区域中选择目标存储区域,并从目标存储区域的第一个可用存储单元开始写入待存储文件的文件数据。

在实施中,CDN服务器可以统计文件系统的进程读写的最大并行数量,即在同一时间内存在的文件管理操作的最大数量,然后可以根据上述最大并行数量,将机械硬盘划分为多个大小统一且连续的存储区域,使得存储区域的数量不大于最大并行数量,每个存储区域可以包含多个存储单元。之后,在对一个待存储文件的文件数据进行存储时,CDN服务器可以采用预设随机算法,在上述多个存储区域中选择一个存储区域(如目标存储区域),然后可以从目标存储区域的第一个可用存储单元开始,写入待存储文件的文件数据。这样,可以有效避免多个待存储文件同时写入时,出现多文件交叉存储,而产生大量碎片文件的情况。

可选的,可以将文件区分为大文件和小文件,对大文件和小文件按照不同存储方式进行存储,相应的处理可以如下:如果待存储文件的文件大小大于预设数值,则采用预设随机算法在多个存储区域中选择目标存储区域,并从目标存储区域的第一个可用存储单元开始写入待存储文件的文件数据;如果待存储文件的文件大小小于或等于预设数值,则从位置游标指向的空闲存储单元开始写入待存储文件的文件数据,并更新位置游标指向的空闲存储单元。

其中,位置游标指向的空闲存储单元始终为多个存储区域内的首个空闲存储单元。

在实施中,CDN服务器可以根据待存储文件的大小分布情况,设置一个数值(即预设数值)作为大文件和小文件的划分标准,如果文件的大小大于该预设数值,则为大文件,如果文件的大小小于或等于该预设数值,则为小文件。进而,在对一个待存储文件的文件数据进行存储时,如果待存储文件为大文件,CDN服务器则可以采用预设随机算法在多个存储区域中选择目标存储区域,并从目标存储区域的第一个可用存储单元开始写入待存储文件的文件数据,如果待存储文件为小文件,CDN服务器则可以从多个存储区域内的首个空闲存储单元开始写入待存储文件的文件数据,从而可以减小文件系统在小文件并发写入时机械硬盘的IOPS压力。此处,CDN服务器可以使用位置游标指向上述多个存储区域内的首个空闲存储单元,这样,在存储小文件的文件数据时,可以通过位置游标来查找空闲存储单元,而在存储完成之后,可以对位置游标指向的空闲存储单元进行更新。

本发明实施例中,格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,将待存储的元数据存入I-node表单,并将待存储的文件数据存入低IOPS存储介质。这样,利用固态硬盘等快速反馈能力强的高IOPS存储介质存储元数据,分担了文件系统中元数据的访问处理给机械硬盘等低IOPS存储介质带来的IOPS压力,从而可以提高文件系统的服务性能。

另一方面,一般文件系统中元数据和文件数据的比例在1:100以下,固态硬盘等高IOPS存储介质只用来存储元数据,相应的存储容量要求较低,并且能够针对应用场景估算并分配适当大小的固态硬盘分区,可以节省固态硬盘等高IOPS存储介质的存储资源,有效降低成本。

基于相同的技术构思,提供了一种文件系统中管理数据的装置,如图3所示,所述装置包括:

建立模块301,用于格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在所述高IOPS存储介质分区设置I-node表单;

存储模块302,用于将待存储的元数据存入所述I-node表单,并将所述待存储的文件数据存入所述低IOPS存储介质。

可选的,所述存储模块302,还用于:

如果所述高IOPS存储介质分区存在剩余存储空间,则将待存储的目录文件和间接块数据存入所述剩余存储空间;

当所述剩余存储空间不足时,将所述待存储的目录文件和间接块数据继续存入所述低IOPS存储介质。

可选的,如图4所示,所述装置还包括:

估算模块303,用于预估所有待存储文件的平均文件大小,基于所述低IOPS存储介质的容量和所述平均文件大小,估算I-node个数;

确定模块304,用于根据所述I-node个数、I-node单位容量和所述低IOPS存储介质的单位存储量,确定所述高IOPS存储介质分区的存储容量。

可选的,所述存储模块302,具体用于:

根据文件系统的进程读写的最大并行数量,将所述低IOPS存储介质划分为大小统一的连续的多个存储区域;

对于一个待存储文件,采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据。

可选的,所述存储模块302,具体用于:

如果所述待存储文件的文件大小大于预设数值,则采用预设随机算法在所述多个存储区域中选择目标存储区域,并从所述目标存储区域的第一个可用存储单元开始写入所述待存储文件的文件数据;

如果所述待存储文件的文件大小不大于所述预设数值,则从位置游标指向的空闲存储单元开始写入所述待存储文件的文件数据,并更新位置游标指向的空闲存储单元,其中,所述位置游标指向的空闲存储单元始终为所述多个存储区域内的首个空闲存储单元。

可选的,所述高IOPS存储介质为固态硬盘,所述低IOPS存储介质为机械硬盘。

本发明实施例中,格式化原始文件系统,基于预先分配的高IOPS存储介质分区和低IOPS存储介质建立新文件系统,在所述高IOPS存储介质分区设置I-node表单,将待存储的元数据存入I-node表单,并将待存储的文件数据存入低IOPS存储介质。这样,利用固态硬盘等快速反馈能力强的高IOPS存储介质存储元数据,分担了文件系统中元数据访问处理给机械硬盘等低IOPS存储介质带来的IOPS压力,从而可以提高文件系统的服务性能。

需要说明的是:上述实施例提供的文件系统中管理数据的装置在文件系统中管理数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件系统中管理数据的装置与文件系统中管理数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5是本发明实施例提供的文件存储设备的结构示意图。该文件存储设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对文件存储设备中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在文件存储设备500上执行存储介质530中的一系列指令操作。

文件存储设备500还可以包括一个或一个以上电源529,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,一个或一个以上键盘556,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

文件存储设备500可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行上述文件系统中管理数据的指令。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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