一种提升web服务器性能的文件系统及方法

文档序号:6487577阅读:122来源:国知局
一种提升web服务器性能的文件系统及方法
【专利摘要】本发明提供一种提升web服务器性能的文件系统及方法,该文件系统包括磁盘空间,磁盘空间包括磁盘元数据区和磁盘数据区;磁盘元数据区包括文件系统超级块、文件目录项位图、卷信息数组、以及文件目录项;磁盘数据区包括多个大小固定的卷;其中,每个卷包括多个大小相同的文件磁盘块,文件磁盘块用于存放web服务器中的小文件。本发明针对web服务器中保存大量小文件的应用环境简化磁盘空间管理,使得文件数据连续存放,避免了磁盘碎片;减少读写文件数据过程中磁盘操作次数,减少文件系统的API交互次数,有效提升了文件系统的性能;通过Hash链表数组,简化并加快了文件定位过程;所述文件系统的IO操作采用异步模式,消除了同步IO操作时阻塞应用程序的问题。
【专利说明】一种提升web服务器性能的文件系统及方法
【技术领域】
[0001]本发明属于计算机硬件管理领域,涉及一种文件系统及方法,特别是涉及一种提升web服务器性能的文件系统及方法。
【背景技术】
[0002]在操作系统中,文件系统处于一个很重要的地位,随着计算机硬件性能(诸如CPU,总线带宽)的不断提升,硬盘正日益成为系统性能瓶颈所在。而文件系统用来管理磁盘上数据,如何高效地管理磁盘数据,充分发挥磁盘设备的性能一直是文件系统追求的目标。
[0003]较早的诸如ext2文件系统将磁盘按照固定大小如1024字节,2048字节,4096字节等划分成块,文件数据存放在块中,这样导致超过块大小的文件无法连续存放,小于磁盘块大小的文件可能会导致严重的磁盘碎片问题。
[0004]由Hans Reiser及其团队Namesys开发的ResierFs擅长处理小文件居多的应用环境。ResierFs对一些小文件不分配inode,而是将这些小文件打包,存放在同一个磁盘分块中。而且ReiserFS是基于快速平衡树(balanced tree)搜索,平衡树在搜索性能上非常卓越。
[0005]Silicon Graphics为IRIX操作系统开发的高性能日志文件系统XFS擅长处理大文件。它提供了基于extent的分配方式,可变块尺寸允许用户根据需要在格式化时指定块大小,从512字节到64KB不等,其在小文件应用环境下可尽量减少磁盘碎片问题,延迟分配机制可最大限度地连续存放文件数据,并且在提高性能的同时能够减少磁盘碎片问题。
[0006]上述传统文件系统采用各种思想来对文件系统性能进行优化,但由于需要为文件保存inode,dentry等数据结构,因此每次读写数据之前需要进行多次额外的磁盘操作,这样便无法保证文件数据在磁盘上连续存放的同时尽量减少磁盘碎片。传统文件系统在读文件数据之前首先需要查找文件的元数据信息,而这通常也是保存在磁盘上。这样,在读有效数据前需要多次IO操作来定位文件的存储位置。对于小文件来说,这会成倍地降低文件系统性能。虽然可以对部分文件元数据进行缓存,但由于当前文件系统的元数据信息过于复杂,缓存量不应过大。因此,读写过程的主要时间消耗在磁头定位过程,这样便对小文件IO性能产生了影响。还有传统IO操作是同步操作,同步IO请求执行过程中会阻塞应用程序,这样会影响应用程序的性能问题。

【发明内容】

[0007]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种提升web服务器性能的文件系统及方法,用于解决现有技术中大文件数据无法连续存放的在磁盘上,小文件数据会带来磁盘碎片、以及IO性能和应用程序性能降低的问题。
[0008]为实现上述目的及其他相关目的,本发明提供一种提升web服务器性能的文件系统,所述文件系统包括所述磁盘空间包括磁盘元数据区和磁盘数据区;所述磁盘元数据区包括文件系统超级块、文件目录项位图、卷信息数组、以及文件目录项;所述磁盘数据区包括多个大小固定的卷;其中,每个卷包括多个大小相同、连续的文件磁盘块,所述文件磁盘块用于存放web服务器中的小文件。
[0009]优选地,所述卷的大小是可调节的,从32MB增长至256MB。
[0010]优选地,所述文件磁盘块的大小是可调节的,从4KB按倍增长至128KB。
[0011]优选地,所述文件目录项包括文件名、文件磁盘块号以及文件大小,所述文件目录项缓存于内存中组织成Hash链表数组。
[0012]优选地,所述文件系统还包括简化后的应用程序接口,所述简化后的应用程序接口包括mount应用程序接口、unmount应用程序接口、read应用程序接口、write应用程序接口、delete应用程序接口、以及flush应用程序接口。
[0013]本发明提供一种提升web服务器性能的方法,其特征在于:所述方法包括:
[0014]将磁盘空间划分成磁盘元数据区和磁盘数据区;
[0015]将所述磁盘元数据区划分成文件系统超级块、文件目录项位图、卷标信息数组、以及文件目录项;
[0016]将所述磁盘数据区划分成多个大小固定的卷;其中,每个卷被划分成多个大小相同连续的文件磁盘块。
[0017]优选地,所述方法还包括查找元数据区上的信息;所述查找元数据区上的信息的实现步骤包括:
[0018]Q1,简化文件元数据区上的信息,只记录文件名、文件磁盘块号、以及文件大小;
[0019]Q2,简化应用程序接口 ;
[0020]Q3,将文件目录项全部缓存于内存之中;
[0021]Q4,通过文件名进行Hash查找,将所述文件目录项链入Hash链表数组中。
[0022]优选地,所述方法还包括异步执行应用程序。
[0023]优选地,当所述应用程序为read应用程序时,异步执行read应用程序的过程包括:
[0024]Rl,根据文件名计算Hash ;
[0025]R2,通过Hash在Hash链表数组中查找该文件的文件目录项;
[0026]R3,判读查找是否成功;如果查找失败,返回,文件不存在在该文件目录项中;如果查找成功,继续执行R4;
[0027]R4,根据找到的文件目录项获取文件的磁盘块号等信息,并为本次read请求创建IO请求结构,初始化所述IO请求结构;10请求结构的格式为:
[0028]IO请求编号;
[0029]IO请求中包含的数据缓冲区的起始地址;
[0030]IO请求中数据缓冲区的长度;
[0031]待read的扇区号;
[0032]待read的扇区数;
[0033]请求完成状态;
[0034]R5,设置IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,read的磁盘块数转化为扇区数;
[0035]R6,将所创建的的IO请求结构添加到所述磁盘驱动的控制器中,即将IO请求插入的IO请求队列等待IO线程处理;返回成功状态。
[0036]优选地,当所述应用程序为write应用程序时,异步执行write应用程序的过程包括:
[0037]Rr,为待写入的文件数据分配数据空间;
[0038]R2’,判断分配所述数据空间是否成功;
[0039]R3 ’,分配所述磁盘文件目录项;
[0040]R4’,判断分配所述磁盘文件目录项是否成功;如果文件目录项空间使用完毕,则返回失败;为待写入的文件数据分配磁盘文件目录项空间,根据磁盘文件目录项空间位图信息分配;为该文件数据构造一个内存文件目录项,并初始化所述内存文件目录项;将所述内存文件目录项插入Hash链表数组中;为write请求创建并初始化IO请求结构;该IO请求结构的格式为:
[0041]IO请求编号;
[0042]IO请求中包含的数据缓冲区的起始地址;
[0043]IO请求中数据缓冲区的长度;
[0044]待write的扇区号;
[0045]待write的扇区数;
[0046]请求完成状态;
[0047]R5’,设置所述IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,write的磁盘块数转化为扇区数;
[0048]R6’,将创建的初始化的IO请求结构添加到磁盘控制器中,返回成功状态。
[0049]如上所述,本发明所述的一种提升web服务器性能的文件系统及方法,具有以下有益效果:
[0050]1、简化磁盘空间,可以连续存放文件数据的同时减少磁盘碎片;
[0051]2、减少每次数据读写过程中的所需IO操作次数以及磁头移动的时间,提升了文件系统的IO性能;
[0052]3、消除了同步IO操作下应用程序的阻塞,采用异步执行,应用程序的效率更高。
【专利附图】

【附图说明】
[0053]图1显示为本发明的提升web服务器性能的文件系统划分后的磁盘空间格式示意图;
[0054]图2显示为本发明的提升web服务器性能的文件系统中Hash链表数组结构示意图;
[0055]图3显示为本发明的提升web服务器性能的方法中查找元数据区上信息的流程图;
[0056]图4显示为本发明的提升web服务器性能的方法中IO请求异步执行的读取函数流程图;
[0057]图5显示为本发明的提升web服务器性能的方法中IO请求异步执行的写入函数流程图。
[0058]元件标号说明[0059]I磁盘空间
[0060]11磁盘元数据区
[0061]12磁盘数据区
[0062]111文件系统超级块
[0063]112文件目录项位图
[0064]113卷信息数组
[0065]114文件目录项
[0066]121卷
[0067]1211文件磁盘块
【具体实施方式】
[0068]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0069]请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式 中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0070]下面结合实施例和附图对本发明进行详细说明。
[0071]实施例一
[0072]本实施例提供的一种提升web服务器性能的文件系统,如图1所示,所述文件系统包括磁盘空间I。所述磁盘空间I包括磁盘元数据区11和磁盘数据区12,所述磁盘元数据区11包括文件系统超级块111、文件目录项位图112、卷信息数组113、文件目录项114 ;其中,所述文件系统超级块111用于描述文件系统的信息;所述文件目录项位图112通过比特数值用来说明位图信息;所述卷信息数组113用于描述卷信息;所述文件目录项114是指文件系统的文件保存文件的一些信息的数据结构,所述文件目录项保存的信息包含了<文件名,文件磁盘块号,文件大小 > 的映射关系,将所述文件目录项114缓存于内存组织成Hash链表数组,如图2所示,所述Hash链表数组中包括N个Hash链表,例如,Hash [O],Hash [I],…Hash [N],每个Hash链表包括文件目录项(dentry ),所述文件目录项(dentry )记录文件名(fname)、文件磁盘块(blk)的块号、以及文件大小(fsize);所述文件目录项的格式有别于传统文件inode的复杂格式。
[0073]所述磁盘数据区12包括多个卷121,这些卷121的大小是可调节的,例如,所述卷的大小从32MB增长至256MB ;同时,所述卷121包括多个大小相同、连续的文件磁盘块(blk)1211 ;其中,所述文件磁盘块(blk)用于连续存放web服务器中的小文件,所述文件磁盘块(blk)的大小是可调节的,例如,从4KB按倍增长直至128KB。
[0074]所述文件系统还包括简化后的应用程序接口(API),所述简化后的应用程序接口包括mount应用程序接口、unmount应用程序接口、read应用程序接口、write应用程序接口、deIete应用程序接口、以及flush应用程序接口。所述mount应用程序接口用于所述文件系统使用之前挂载文件系统;所述unmount应用程序接口用于所述文件系统使用完毕后卸载文件系统;所述read应用程序接口用于读取所述文件系统中的文件数据;所述write应用程序接口用于向磁盘中写入数据;所述delete应用程序接口用于删除所述文件系统中特定的文件;所述flush应用程序接口用于将内存中脏数据块同步到磁盘上,所述脏数据块是相对于原数据而言的,是指被修改过的,与原数据不一样的数据。
[0075]本发明所述的文件系统,可以极大地提升web服务器的性能。该系统针对web服务器中多保存小文件的应用环境简化文件系统,简化磁盘空间,这便可保证小文件可以连续存放;同时,卷中所述文件磁盘块(blk)的大小可根据文件大小动态的按需设定,最大程度地减少磁盘碎片问题。
[0076]实施例二
[0077]本发明提供一种提升web服务器性能的方法,所述方法包括:
[0078]将磁盘空间I划分成磁盘元数据区11和磁盘数据区12 ;
[0079]将所述磁盘元数据区划分成文件系统超级块111、文件目录项位图112、卷信息数组113、文件目录项114 ;其中,所述文件系统超级块111描述了文件系统的信息;所述文件目录项位图112通过比特数值说明位图信息;所述卷信息数组113描述卷信息;所述文件目录项114保存文件的信息的数据结构,并且将所述文件目录项114组织成Hash链表数组,根据文件名在所述Hash链表数组中查找文件在磁盘空间上的存储位置;
[0080]将所述磁盘数据区12划分成多个大小固定的卷121,同时,将所述卷121划分成多个大小相同连续的文件磁盘块(blk) 1211 ;其中,所述文件磁盘块(blk)可连续存放web服务器中的小文件,例如,存放网页等小文件。
[0081]文件系统在读写文件数据之前,需要查找元数据区上的信息,通常所述信息是保存在磁盘空间上,所以在读取文件数据前需要多次IO操作以便定位文件数据的存储位置,所以所述方法还包括查找元数据区上的信息,如图3所示,实现该过程具体包括:
[0082]Q1,简化元数据区上的信息,也就是简化文件目录项,只记录文件名,文件磁盘块号,以及文件大小;
[0083]Q2,简化应用程序接口(API),仅提供mount应用程序接口、umount应用程序接口、read应用程序接口、write应用程序接口、delete应用程序接口、以及flush应用程序接口这几个必需的应用程序接口(API);其中,
[0084]所述mount应用程序接口在所述文件系统使用之前挂载文件系统;
[0085]所述umount应用程序接口在所述文件系统使用完毕后卸载文件系统;
[0086]所述read应用程序接口读取所述文件系统中的文件数据;
[0087]所述write应用程序接口向磁盘中写入数据;
[0088]所述delete应用程序接口删除所述文件系统中特定的文件;
[0089]所述flush应用程序接口将内存中脏数据块同步到磁盘上。
[0090]Q3,在所述文件系统初始化后,将所有文件的元数据,也就是元数据中的文件目录项全部缓存于内存之中;
[0091]Q4,通过对文件名进行Hash查找,将所述文件目录项链入Hash链表数组中。
[0092]通过所述方法,每次10操作之前定位和查找文件位置信息就非常简单,只需要在内存中通过Hash链表数组快速查找,无需产生额外的10请求;[0093]传统IO操作是同步执行,所以在IO操作之前,应用程序会被阻塞,所以本发明提供的提升web服务器性能的方法还包括异步执行IO请求,首先调用文件系统中应用程序接口执行所需应用程序;
[0094]接着,文件系统负责创建并初始化相应的IO请求结构;然后,设置IO请求参数;最后,将创建的IO请求结构插入到底层磁盘驱动的控制器之中,文件系统即可向所述应用程序返回成功,当该请求完成之后,所述磁盘驱动的控制器通过中断通知文件系统请求完成,文件系统进而通知所述应用程序请求已完成,等待所述应用程序进一步的处理。
[0095]当所需应用程序为read应用程序时,如图4所示,异步执行read应用程序的过程包括:
[0096]Rl,根据文件名(fname )计算Hash ;
[0097]R2,通过Hash在Hash链表数组中查找该文件的文件目录名;
[0098]R3,判读查找是否成功;如果查找失败,返回,文件不存在在该文件目录名;同时,如果查找成功,继续执行R4;
[0099]R4,根据找到的文件目录项获取文件磁盘块号等信息,并为本次read请求创建IO请求结构,并初始化所述IO请求结构;所述IO请求结构的格式为:
[0100]{
[0101]IO请求编号;
[0102]IO请求中包含的数据缓冲区的起始地址;
[0103]IO请求中数据缓冲区的长度;
[0104]待read的扇区号;
[0105]待read的扇区数;
[0106]请求完成状态;
[0107]};
[0108]R5,设置IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,read的磁盘块数目转化为扇区数;
[0109]R6,将创建的IO请求结构添加到所述磁盘驱动的控制器中,即将请求插入的IO请求队列等待IO线程处理;返回成功状态。
[0110]实施例三
[0111]本发明提供一种提升Web服务器性能的方法,所述方法包括:
[0112]将磁盘空间I划分成磁盘元数据区11和磁盘数据区12 ;
[0113]将所述磁盘元数据区划分成文件系统超级块111、文件目录项位图112、卷信息数组113、文件目录项114 ;其中,所述文件系统超级块111描述了文件系统的信息;所述文件目录项位图112通过比特数值说明位图信息;所述卷信息数组113描述卷信息;所述文件目录项114保存文件的信息的数据结构,并且将所述文件目录项114组织成Hash链表数组,根据文件名在所述Hash链表数组中查找文件在磁盘空间上的存储位置;
[0114]将所述磁盘数据区12划分成多个大小固定的卷121,同时,将所述卷121划分成多个大小相同连续的文件磁盘块(blk) 1211 ;其中,所述文件磁盘块(blk)可连续存放web服务器中的小文件,例如,存放网页等小文件。
[0115]文件系统在读写文件数据之前,需要查找元数据区上的信息,通常所述信息是保存在磁盘空间上,所以在读取文件数据前需要多次IO操作以便定位文件数据的存储位置,所以所述方法还包括查找元数据区上的信息,实现该过程具体包括:
[0116]Ql,简化元数据区上的信息,也就是简化文件目录项,只记录文件名,文件磁盘块号,以及文件大小;
[0117]Q2,简化应用程序接口( API),仅提供mount应用程序接口、umount应用程序接口、read应用程序接口、write应用程序接口、delete应用程序接口、以及flush应用程序接口这几个必需的应用程序接口(API);其中,
[0118]所述mount应用程序接口在所述文件系统使用之前挂载文件系统;
[0119]所述umount应用程序接口在所述文件系统使用完毕后卸载文件系统;
[0120]所述read应用程序接口读取所述文件系统中的文件数据;
[0121]所述write应用程序接口向磁盘中写入数据;
[0122]所述delete应用程序接口删除所述文件系统中特定的文件;
[0123]所述flush应用程序接口将内存中脏数据块同步到磁盘上。
[0124]Q3,在所述文件系统初始化后,将所有文件的元数据,也就是元数据中的文件目录项全部缓存于内存之中;
[0125]Q4,通过对文件名进行Hash查找,将所述文件目录项链入Hash链表数组中。
[0126]通过所述方法,每次IO操作之前定位和查找文件位置信息就非常简单,只需要在内存中通过Hash链表数组快速查找,无需产生额外的IO请求;
[0127]传统IO操作是同步执行,所以在IO操作之前,应用程序会被阻塞,所以本发明提供的提升web服务器性能的方法还包括异步执行IO请求,首先调用文件系统中应用程序接口执行所需应用程序;
[0128]接着文件系统负责创建相应的IO请求结构,并初始化该IO请求结构;
[0129]然后,设置IO请求参数;
[0130]最后,将该IO请求结构插入到底层磁盘驱动的控制器之中,文件系统即可向所述应用程序返回成功,当该请求完成之后,所述磁盘驱动的控制器通过中断通知文件系统请求完成,文件系统进而通知所述应用程序请求已完成,等待所述应用程序进一步的处理。
[0131]当所需应用程序为write应用程序时,如图5所示,异步执行write应用程序的过程包括:
[0132]R1’,为待写入的文件数据分配数据空间;
[0133]R2’,判断分配所述数据空间是否成功;在内存中查找当前是否有合适块大小的卷,例如3KB大小的文件分配4KB块大小的卷,如果有,在所述卷中为该文件分配一个块;如果没有所述卷,则从空闲卷中获取一个,并将其块大小定为合适大小,例如,3KB的文件则将所述卷(volume)块大小定为4KB,并从所述卷中分配一个块来存放该文件,如果没有所述空闲卷,则失败,磁盘空间已满;
[0134]R3 ’,分配所述磁盘文件目录项;
[0135]R4’,判断分配所述磁盘文件目录项是否成功;如果文件目录项空间使用完毕,则返回失败;同时,为待写入的文件数据分配磁盘文件目录项空间,根据磁盘文件目录项空间位图信息分配;为该文件数据构造一个内存文件目录项,并初始化所述内存文件目录项;将所述内存文件目录项插入Hash链表数组中;为write请求创建并初始化10请求结构,所述IO请求结构的格式为:
[0136]{
[0137]IO请求编号;
[0138]IO请求中包含的数据缓冲区的起始地址;
[0139]IO请求中数据缓冲区的长度;
[0140]待write的扇区号;
[0141]待write的扇区数;
[0142]请求完成状态;
[0143]};
[0144]R5’,设置所述IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,write的磁盘块数目转化为扇区数;
[0145]R6’,将创建的IO请求结构添加到磁盘控制器中,即将所述初始化的IO请求插入到IO请求队列中;返回成功状态。
[0146]本发明的保护范围不限于以上所列步骤的先后顺序,只要根据本发明所述系统能够解决现有技术中中小文件连续存放的同时减少磁盘碎片、IO性能、应用程序性能问题均属于本发明的保护范围。
[0147]本发明所述的web服务器文件系统设计的磁盘空间管理、减少读取文件数据所需IO次数、以及IO请求异步执行可以保证在小文件应用环境下文件数据连续存放的同时尽可能的减少了磁盘碎片,延迟分配机制使得文件数据最大限度地连续存放,即提升性能的同时能减少磁盘碎片;其次,去掉小文件IO读写过程中频发调用open/close等系统调用,减少了数据读写过程中所需IO次数,大幅减少文件系统的APL,提升了文件系统的性能;最后消除了同步IO模式下的应用程序阻塞,应用程序的效率更高。。
[0148]综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0149]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1.一种提升web服务器性能的文件系统,其特征在于:所述文件系统包括磁盘空间;所述磁盘空间包括磁盘元数据区和磁盘数据区; 所述磁盘元数据区包括文件系统超级块、文件目录项位图、卷信息数组、以及文件目录项; 所述磁盘数据区包括多个大小固定的卷;其中,每个卷包括多个大小相同、连续的文件磁盘块,所述文件磁盘块用于存放web服务器中的小文件。
2.根据权利要求1所述的提升web服务器性能的文件系统,其特征在于:所述卷的大小是可调节的,从32MB增长至256MB。
3.根据权利要求2所述的提升web服务器性能的文件系统,其特征在于:所述文件磁盘块的大小是可调节的,从4KB按倍增长至128KB。
4.根据权利要求1所述的提升web服务器性能的文件系统,其特征在于:所述文件目录项包括文件名、文件磁盘块号以及文件大小,所述文件目录项缓存于内存中组织成Hash链表数组。
5.根据权利要求1所述的提升web服务器性能的文件系统,其特征在于:所述文件系统还包括简化后的应用程序接口,所述简化后的应用程序接口包括mount应用程序接口、unmount应用程序接口、read应用程序接口、write应用程序接口、delete应用程序接口、以及flush应用程序接口。
6.一种提升web服务器性能的方法,其特征在于:所述方法包括: 将磁盘空间划分成磁盘元数据区和磁盘数据区; 将所述磁盘元数据区划分成文件系统超级块、文件目录项位图、卷标信息数组、以及文件目录项; 将所述磁盘数据区划分成多个大小固定的卷;其中,每个卷被划分成多个大小相同连续的文件磁盘块。
7.根据权利要求6所述的提升web服务器性能的方法,其特征在于:所述方法还包括查找元数据区上的信息;所述查找元数据区上的信息的实现步骤包括: Q1,简化文件元数据区上的信息,只记录文件名、文件磁盘块号、以及文件大小; Q2,简化应用程序接口 ; Q3,将文件目录项全部缓存于内存之中; Q4,通过文件名进行Hash查找,将所述文件目录项链入Hash链表数组中。
8.根据权利要求6所述的提升web服务器性能的方法,其特征在于:所述方法还包括异步执行应用程序。
9.根据权利要求8所述的提升web服务器性能的方法,其特征在于:当所述应用程序为read应用程序时,异步执行read应用程序的过程包括: Rl,根据文件名计算Hash ; R2,通过Hash在Hash链表数组中查找该文件的文件目录项; R3,判读查找是否成功;如果查找失败,返回,文件不存在在该文件目录项中;如果查找成功,继续执行R4 ; R4,根据找到的文件目录项获取文件的磁盘块号等信息,并为本次read请求创建IO请求结构,初始化所述IO请求结构;10请求结构的格式为:IO请求编号; IO请求中包含的数据缓冲区的起始地址; IO请求中数据缓冲区的长度; 待read的扇区号; 待read的扇区数; 请求完成状态; R5,设置IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,read的磁盘块数转化为扇区数; R6,将所创建的的IO请求结构添加到所述磁盘驱动的控制器中,即将IO请求插入的IO请求队列等待IO线程处理;返回成功状态。
10.根据权利要求8所述的提升web服务器性能的方法,其特征在于:当所述应用程序为write应用程序时,异步执行write应用程序的过程包括: R1’,为待写入的文件数据分配数据空间; R2’,判断分配所述数据空间是否成功; R3 ’,分配所述磁盘文件目录项; R4’,判断分配所述磁盘文件目录项是否成功;如果文件目录项空间使用完毕,则返回失败;为待写入的文件数据分配磁盘文件目录项空间,根据磁盘文件目录项空间位图信息分配;为该文件数据构造一个内存文件目录项,并初始化所述内存文件目录项;将所述内存文件目录项插入Hash链表数组中;为write请求创建并初始化IO请求结构;该IO请求结构的格式为: IO请求编号; IO请求中包含的数据缓冲区的起始地址; IO请求中数据缓冲区的长度; 待write的扇区号; 待write的扇区数; 请求完成状态; R5’,设置所述IO请求参数,文件系统根据为文件分配的磁盘块号初始化IO请求的参数,所述参数包括将磁盘块号转化扇区号,write的磁盘块数转化为扇区数; R6’,将创建的初 始化的IO请求结构添加到磁盘控制器中,返回成功状态。
【文档编号】G06F17/30GK103577470SQ201210275779
【公开日】2014年2月12日 申请日期:2012年8月3日 优先权日:2012年8月3日
【发明者】李小勇, 丁凯, 单蓉胜 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1