发明名称 海量数据分级存储方法
摘要 海量数据分级存储方法属于数据迁移领域,其特征在于:各前端主机上的并行文件系统客户代理软件通过系统接口子模块和VFS层子模块实现对VFS访问的支持;元数据服务器负责把不同数据服务器上的数据文件组织成统一的并行文件系统视图,由元数据管理模块提供访问元数据的操作,由文件迁移决策模块定期从数据服务器获取文件访问信息,并根据文件系统负载和设备分级情况对文件迁移进行决策。数据服务器的迁移执行模块执行具体的迁移工作。该方法根据负载情况自动地完成数据迁移过程,有效提高了系统的吞吐率,并且迁移文件少,迁移进程对前端应用的影响也较小。
申请公布号 CN100571281C 申请公布日期 2009.12.16
申请号 CN200710118116.5 申请日期 2007.06.29
申请人 清华大学 发明人 舒继武;薛巍;于得水;张广艳
分类号 H04L29/08(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 代理人
主权项 1、海量数据分级存储方法,其特征在于,依次含有以下步骤:步骤(1).初始化:在作为应用服务器的各种类型的前端主机上部署并行文件系统客户代理模块,以实现虚拟文件系统层VFS的各种文件操作,并从下述元数据服务器中存取各文件的元数据,该模块由下述两部分子模块构成:系统接口子模块及VFS子模块,其中:系统接口子模块,在用户空间实现,为文件访问提供系统接口:通过网络通信层读写元数据服务器中的文件元数据;通过网络通信层从数据服务器读写文件数据;该系统接口子模块又提供文件迁移的客户端接口,支持用户手动对文件迁移;VFS子模块,在内核空间实现,通过系统接口子模块中的系统接口,实现文件的VFS层操作,供用户通过VFS层对由所述应用服务器、元数据服务器和数据服务器构成的并行文件系统中的文件进行访问;该并行文件系统客户代理模块按如下步骤运行:VFS子模块接收由应用层发来的VFS访问请求,并把该请求转化为对系统接口子模块的各系统接口的请求;在元数据服务器上部署元数据系统模块、元数据管理模块以及文件迁移决策模块,上述模块由运行在Linux系统上的用户空间程序实现,其中:元数据系统模块,通过网络通信层接收到并行文件系统客户代理模块发来的元数据访问指令后,提供以下执行元数据操作的接口:文件创建、文件删除、目录创建、目录删除以及文件查找,供通过网络通信层与并行文件系统客户代理模块通信用;元数据管理模块,为由多个数据服务器并行组成的文件自管理系统提供管理元数据的接口,执行包括目录项管理、系统负载获取、所述文件系统统计信息显示在内的操作;文件迁移决策模块,由增量扫描器、文件访问表管理器和迁移调度控制器组成,按以下步骤执行文件的迁移:增量扫描器定期向所有数据服务器发出扫描请求,每个数据服务器在收到该请求后,把本扫描周期内所有被访问文件的访问情况发送给该增量扫描器,这些访问情况包括:文件的inode节点值、文件所对应的数据文件的inode节点值、数据文件的大小、所述文件在本扫描周期内的被访问次数以及所述文件在本扫描周期内的被访问字节数,其中数据文件是文件在数据服务器上的分片;增量扫描器在收到这些数据后,将其发送到并通知文件访问表管理器对自己维护的文件访问表进行更新,该文件访问表包括:文件的inode节点值、文件大小、文件从创建开始到当前的生存时间、文件的平均访问时间间隔、文件的总访问次数、文件的总访问字节数以及文件从上次访问到现在的未访问时间;文件访问表管理器计算每个文件当前访问和上次访问之间的时间间隔current_rereference_time,并利用该值来更新平均访问时间间隔rereference_time,更新后的平均访问时间间隔为:<maths id="math0001" num="0001" ><math><![CDATA[ <mrow> <msub> <mrow> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> </mrow> <mn>1</mn> </msub> <mo>=</mo> <mfenced open='{' close='}'> <mtable> <mtr> <mtd> <mi>&alpha;</mi> <mo>*</mo> <mi>current</mi> <mo>_</mo> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&alpha;</mi> <mo>)</mo> </mrow> <mo>*</mo> <msub> <mrow> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> </mrow> <mn>0</mn> </msub> <mo>,</mo> <msub> <mrow> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> </mrow> <mn>0</mn> </msub> <mo>></mo> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>current</mi> <mo>_</mo> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> <mo>,</mo> <msub> <mrow> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> </mrow> <mn>0</mn> </msub> <mo>=</mo> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>]]></math></maths>其中,rereference_time0为更新前的平均访问时间间隔,rereference_time1为更新后的平均访问时间间隔;α为遗忘因子,在[0,1]之间取值;文件访问表管理器按下式计算文件升级的预期收益时间benefit_time;<maths id="math0002" num="0002" ><math><![CDATA[ <mrow> <mi>benefit</mi> <mo>_</mo> <mi>time</mi> <mo>=</mo> <mfrac> <mrow> <mi>rereference</mi> <mo>_</mo> <mi>time</mi> <mo>*</mo> <mi>filesize</mi> <mo>*</mo> <mi>access</mi> <mo>_</mo> <mi>num</mi> </mrow> <mrow> <mi>access</mi> <mo>_</mo> <mi>bytes</mi> </mrow> </mfrac> <mo>*</mo> <mfrac> <msub> <mi>Thru</mi> <mi>fast</mi> </msub> <mrow> <msub> <mi>Thru</mi> <mi>slow</mi> </msub> <mo>-</mo> <msub> <mi>Thru</mi> <mi>fast</mi> </msub> </mrow> </mfrac> <mo>,</mo> </mrow>]]></math></maths>其中:Thrufast,快速设备的吞吐率,快速设备包括固态磁SSD,光纤阵列在内的设备;Thruslow,慢速设备的吞吐率,慢速设备包括IDE阵列,SATA阵列在内的设备;access_num,文件的被访问总次数;access_bytes,文件的被访问总字节数;filesize,文件大小;rereference_time,文件平均访问时间间隔;若文件的升级预期收益大于设定的升级阈值时,文件访问表管理器把该文件放入升级候选队列中,由升级线程处理;若文件从上次访问到现在的未访问时间大于设定的降级阈值时,文件访问表管理器把该文件放入降级候选队列中,由降级线程处理;迁移调度控制器由升级线程和降级线程两部分组成,负责迁移指令的生成和速率控制;对于升级候选文件,迁移调度控制器读取它的元数据,从其中查找该升级候选文件对应的数据文件所在的已经包含在数据服务器中的源数据服务器,然后向该源数据服务器中的迁移执行模块发送升级指令;对于降级候选文件,迁移调度控制器读取它的元数据,从其中查找该降级候选文件对应的数据文件所在的已经包含在数据服务器中的源数据服务器,在系统负载空闲时才向源数据服务器中的迁移执行模块发送降级指令;在数据服务器上部署源数据服务器和目标数据服务器后,分别在这两个数据服务器上部署I/O记录模块和迁移执行模块;对数据降级来说,源数据服务器中的I/O记录模块与固态磁盘SSD互连,而该固态磁盘SSD受迁移执行模块控制;目标数据服务器中部署的I/O记录模块与电子集成驱动器IDE阵列互连,而该IDE阵列受该目标数据服务器中的迁移执行模块控制;并行文件系统客户代理模块与所述源数据服务器以及目标数据服务器中相应的I/O记录模块相连,以执行I/O操作;当源数据服务器中的I/O记录模块收到并行文件系统客户代理模块发出的I/O操作指令以及后继的由元数据服务器中的迁移调度控制器发给迁移执行模块的迁移指令后,得到要迁移文件的inode节点值、目标数据服务器的通信地址以及目标数据文件的inode节点值,然后,该源数据服务器中的迁移执行模块与目标数据服务器中的迁移执行模块建立连接并把源数据文件的数据写入目标数据文件,发往目标数据服务器中的迁移执行模块,再送往IDE阵列;步骤(2).由步骤(1)所述的并行文件系统依次按以下步骤执行海量数据分级存储方法:步骤(2.1).初始化元数据服务器和数据服务器:步骤(2.1.1).把配置文件分别读入元数据服务器和数据服务器;步骤(2.1.2).元数据服务器和数据服务器分别从该配置文件中读取各自的通信地址和服务端口,同时解析出inode节点分配表,根据文件的inode节点值将其映射到对应的数据服务器并存储;同时元数据服务器启动文件迁移模块中的升级线程、降级线程以及增量扫描器中的文件扫描线程;步骤(2.2).初始化并行文件系统客户代理模块:步骤(2.2.1).把配置文件读入该客户代理模块,步骤(2.2.2).获取元数据服务器的通信地址和服务端口,步骤(2.2.3).初始化该代理模块的cache子系统,步骤(2.2.4).虚拟出子设备,供VFS子模块存入用户的VFS访问命令,并在处理完后将返回值写入,供VFS子模块调用;步骤(2.3).按以下步骤执行文件迁移:步骤(2.3.1).元数据服务器从本地读取该文件的元数据,获取文件的inode节点值和所在的数据服务器编号;步骤(2.3.2).元数据服务器中的迁移调度控制器向文件要迁移的目标数据服务器发出创建数据文件的指令,待创建完毕后,再由该目标数据服务器向所述的迁移调度控制器返回新创建好的数据文件的inode节点值;步骤(2.3.3).元数据服务器中的迁移调度控制器向文件所在的源数据服务器发送迁移指令,包含:目标数据服务器的通信地址、该文件所在源数据服务器上的数据文件的inode节点值、该文件所在目标数据服务器上的数据文件的inode节点值;步骤(2.3.4).源数据服务器中的迁移执行模块收到迁移指令后,根据其中的通信地址与目标数据服务器中的迁移执行模块建立连接,之后通过所述的SSD把本地的数据文件的内容全部写入目标数据服务器对应的数据文件中去,执行完毕后,源数据服务器中的迁移执行模块把本地数据文件从源数据服务器中删除,并向元数据服务器的迁移调度控制器返回迁移成功的指令;步骤(2.3.5).迁移调度控制器读取文件的元数据信息,把它所在的位置改成目标数据服务器,同时把该文件所对应的数据文件的inode节点值改成目标数据服务器上的数据文件的inode节点值。
地址 100084北京市100084-82信箱