CN102298619B - 一种上层文件系统对空洞文件快速读取的方法及系统 - Google Patents
一种上层文件系统对空洞文件快速读取的方法及系统 Download PDFInfo
- Publication number
- CN102298619B CN102298619B CN201110228276.1A CN201110228276A CN102298619B CN 102298619 B CN102298619 B CN 102298619B CN 201110228276 A CN201110228276 A CN 201110228276A CN 102298619 B CN102298619 B CN 102298619B
- Authority
- CN
- China
- Prior art keywords
- hole
- file
- page
- request
- processing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims description 96
- 238000004891 communication Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims 2
- 230000004069 differentiation Effects 0.000 abstract 1
- 239000011800 void material Substances 0.000 description 27
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种上层文件系统对空洞文件快速读取的方法及系统,所述方法包括在Fuse内核组件上外挂空洞文件处理系统;所述空洞文件处理系统通过对上层文件系统的文件进行空洞判别,查找并标记文件的空洞页,给所述空洞页添加空洞标识;在读取文件过程中,对于带有空洞标识的空洞页,所述空洞文件处理系统中止上层文件系统对其读取。本发明通过预先标记空洞页,解决了fuse读取空洞文件时性能损失严重导致系统内存复制和进程切换时压力过大的问题,增强其对空洞文件的支持力度,在存在文件空洞的情况下,可以快速的返回,而不需要走复杂的调度到上层文件系统中,提高了读取某些存在大量空洞的文件的性能。
Description
技术领域
本发明涉及计算机系统的文件系统,特别涉及一种上层文件系统基于posix(Portable Operating System Interface of Unix,可移植操作系统接口)接口对空洞文件加速读取的方法及系统。
背景技术
文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。
随着多媒体产业的迅猛发展,出于成本、可靠性等多方面的考虑,越来越多的厂商选择在产品中部署自研的分布式上层存储系统,分布式文件系统也因此得到了快速的发展。
在普通应用中,无法使用上层分布式文件系统专有函数接口,尤其像普通程序中将一个文件或者其它对象映射进内存的mmap等操作,无法简单的在上层系统中实现,几乎所有的上层分布式文件系统选用了开源的Fuse(Filesystem in Userspace,用户空间文件系统)组件,完成从专用接口到通用接口的转变,但是Fuse组件只是一个底层文件系统的框架,在许多应用中存在一定性能上的损失,尤其读取空洞文件时,性能损失更为严重。
空洞文件是包含空洞(其中无任何内容)的文件。在文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,这就是所谓的在文件里创造“空洞(hole)”。
读取文件时,mmap函数将所要读取的文件映射进内存。在linux中,内存的保护是以页为基本单位的,即使被映射文件只有一个字节大小,内核也会为映射分配一个页面大小的内存。文件一旦被映射后,调用mmap()的进程对mmap()返回地址进行访问时,由内核处理该访问。如果内核发现返回地址所指向的页没有被操作系统读取过,则向Fuse组件发出读取页请求。Fuse组件接收到读取页请求后,不论所读取的页是否是空洞,都向上层文件系统发送读取请求。上层文件系统收到读取请求后,读取相关页并返回给Fuse组件,Fuse组件再将其返回给调用mmap()的进程。
由上述分析可见,在现有技术中,Fuse组件收到读取页请求后,不管所读取的页是否是空洞,都向上层文件系统发送读取请求,上层文件系统收到读取请求进行相应的读取后再将读取的相关页返回给Fuse组件。因此,读取空洞文件时,性能损失较为严重。同时,当遇到大量的文件空洞时,Fuse带来的系统内存复制的压力和进程切换的压力,会极大地拖累系统读取的速度。
发明内容
本发明的目的在于提供一种上层文件系统对空洞文件快速读取的方法及系统,能更好地解决Fuse读取空洞文件时性能损失严重导致系统内存复制和进程切换时压力过大的问题。
根据本发明的一个方面,提供了一种上层文件系统对空洞文件快速读取的方法,所述方法包括以下步骤:
A、在Fuse内核组件上外挂空洞文件处理系统;
B、所述空洞文件处理系统通过对上层文件系统的文件进行空洞判别,查找文件的空洞页,给所述空洞页添加空洞标识;
C、在读取文件过程中,对于带有空洞标识的空洞页,所述空洞文件处理系统中止上层文件系统对其读取。
其中,所述步骤B包括:
B1、应用程序创建新文件;
B2、Fuse内核组件判断所创建的新文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送添加空洞标识的请求;
B3、所述空洞文件处理系统接收到所述添加空洞标识的请求后,查找所述文件的空洞页,并给所述空洞页添加空洞标识。
其中,所述步骤B还包括:
B4、应用程序向Fuse内核组件发送查询文件属性的请求;
B5、Fuse内核组件接收到所述查询文件属性的请求后,判断所述文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送更新空洞标识的的请求;
B6、所述空洞文件处理系统接收到所述更新空洞标识的请求后,判断所述空洞文件是否需要更新空洞标识,如果需要,则更新所述空洞页的空洞标识。
其中,所述步骤B6包括:
B61、所述空洞文件处理系统接收到所述更新空洞标识的请求后,查询所述空洞文件对应的空洞信息的版本号,并将所述版本号发送给上层文件系统;
B62、上层文件系统比较所接收到的版本号和上层文件系统中所述空洞文件的空洞信息对应的版本号,如果所接收到的版本号小于上层文件系统中所述空洞文件的空洞信息对应的版本号,则上层文件系统将增量的空洞页属性发送给所述空洞文件处理系统;
B63、所述空洞文件处理系统根据所述增量的空洞页属性更新所述空洞标识。
其中,所述步骤C包括:
C1、应用程序向Fuse内核组件发送读取页请求;
C2、Fuse内核组件接收到所述读取页请求后,向所述空洞文件处理系统发送检查空洞的请求;
C3、所述空洞文件处理系统接收到检查空洞的请求后,根据所述空洞标识判断所述读取页是否是空洞页,如果是空洞页,则中止上层文件系统对其读取,直接返回到应用程序,反之,向Fuse内核组件发送读取请求,Fuse内核读取所述读取页后将其返回给应用程序。
根据本发明的另一方面,提供了一种上层文件系统对空洞文件快速读取的系统,所述系统包括:
上层文件系统,用于读取文件页;
Fuse内核组件,用于向空洞文件处理系统发送检查空洞的请求,并在所述空洞文件处理系统反馈不是空洞时,向上层文件系统发送读取文件页的请求;
外挂在所述Fuse内核组件的空洞文件处理系统;
其中,所述空洞文件处理系统通过对上层文件系统的文件进行空洞判别,查找文件的空洞页,给所述空洞页添加空洞标识;在读取文件过程中,对于带有空洞标识的空洞页,所述空洞文件处理系统中止上层文件系统对其读取。
其中,所述系统还包括:
应用程序,用于向所述Fuse内核组件发送读取页请求,并接收所述读取页。
Fuse上层模块,用于负责所述Fuse内核组件和所述上层文件系统之间的通信。
其中,
所述应用程序还用于向Fuse内核组件发送创建新文件的请求;
所述Fuse内核组件还用于判断所创建的文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送添加空洞标识的请求;
所述空洞文件处理系统还用于在接收到所述添加空洞标识的请求后,查找所述文件的空洞页,并给所述空洞页添加空洞标识。
其中,
所述应用程序还用于向Fuse内核组件发送查询文件属性的请求;
所述Fuse内核组件还用于在接收到所述查询文件属性的请求后,判断所述文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送更新空洞标识的的请求;
所述空洞文件处理系统还用于接收到所述更新空洞标识的请求后,判断所述空洞文件是否需要更新空洞标识,如果需要,则查找所述文件的空洞页,更新所述空洞页的空洞标识。
其中,
所述应用程序还用于向Fuse内核组件发送读取页请求;
所述Fuse内核组件还用于接收到所述读取页请求后,向所述空洞文件处理系统发送检查空洞的请求;
所述空洞文件处理系统还用于在接收到检查空洞的请求后,根据所述的空洞标识判断所述读取页是否是空洞页,如果是空洞页,则中止上层文件系统对其读取,直接返回到应用程序,反之,向Fuse内核组件发送读取请求,Fuse内核读取所述读取页后将其返回给应用程序。
与现有技术相比较,本发明的有益效果在于:在使用Fuse为posix服务提供扩展时,提高读取空洞文件的速度,并降低读取空洞文件时给系统内存复制带来的压力。
附图说明
图1是本发明实施例提供的一种上层文件系统对空洞文件快速读取的方法的原理图;
图2是本发明实施例提供的新建文件时标记空洞的方法的流程图;
图3是本发明实施例提供的读取文件属性时标记空洞的方法的流程图;
图4是本发明实施例提供的一种上层文件系统对空洞文件快速读取的方法的流程图;
图5是本发明实施例提供的一种上层文件系统对空洞文件快速读取的系统的结构图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的一种上层文件系统对空洞文件快速读取的方法的原理图,如图1所示,所述方法包括以下步骤:
步骤S101,在Fuse内核组件上外挂空洞文件处理系统;
Fuse包括Fuse内核组件和Fuse上层模块,其中,Fuse内核组件和空洞文件处理系统存在接口,Fuse内核组件接收到内核的页请求后,会通过其与空洞文件处理系统的接口,请求空洞文件处理系统判别所要读取的页是否是空洞。
步骤S102,所述空洞文件处理系统通过对上层文件系统的文件进行空洞判别,查找并标记文件的空洞页,给所述空洞页添加空洞标识;
新建文件时,Fuse内核组件发现新建文件是空洞文件后,调用空洞文件处理系统,记录空洞信息即空洞的内存地址和空洞长度。通过记录空洞的内存地址和空洞长度,在读取文件时可以判断所要读取的页的内存地址是否在某个空洞的内存地址及空洞长度确定的地址范围内,如果所读取页的地址在此范围内,则此页是空洞页。
在查询已有文件属性时,Fuse内核组件发现获得属性请求后,调用空洞文件处理系统,空洞文件处理系统查找出该文件的空洞信息版本号,并经Fuse内核组件转发给Fuse上层模块。Fuse上层模块和上层文件系统获得上层文件系统的空洞文件对应的空洞信息的版本号,并与接收到的空洞信息版本号相比较,如果获得的文件的空洞信息版本号大于接收到的版本号,则将增量的空洞属性返回给Fuse内核组件,并转发给空洞文件处理系统,空洞文件处理系统根据增量的空洞属性更新空洞信息,记录增量的空洞的内存地址及空洞长度,同时更新空洞信息版本号。
步骤S103,在读取文件过程中,对于带有空洞标识的空洞页,所述空洞文件处理系统中止上层文件系统对其读取。
进程读取文件时,Fuse内核组件调用空洞文件处理系统,检查所读取的页是否是空洞,如果是空洞页,则空洞文件处理系统不再请求上层文件系统读取空洞页,而直接通知进程。
图2是本发明实施例提供的新建文件时标记空洞的方法的流程图,如图2所示,所述方法包括以下步骤:
步骤S201,应用程序创建新文件。
应用程序新建文件之后,调用标准截长函数Ftruncate将新创建的文件的大小改为Ftruncate长度参数指定的大小。
步骤S202,Fuse内核组件调用空洞文件处理系统。
Fuse内核组件发现截长请求后,比较Ftruncate的长度参数length与新建文件的长度isize。如果length大于isize,则表明截长后的文件是空洞文件,调用空洞文件处理系统接口。
步骤S203,记录空洞信息。
空洞文件处理系统对空洞文件的空洞进行标识,记录截长后的文件的当前实际的长度k和空洞信息,所述空洞信息是空洞文件中空洞的地址和空洞的长度。空洞文件处理系统记录空洞信息后通知Fuse上层模块。
步骤S204,上层文件系统对空洞文件做相应处理并通知Fuse内核组件。
Fuse上层模块接收到空洞处理系统的通知后,转给上层文件系统,上层文件系统根据Ftruncate请求对上层文件做相应的处理,比如修改文件长度、更新修改时间等属性,之后,上层文件系统将处理结果经Fuse上层模块返回给Fuse内核组件。
步骤S205,Fuse内核组件修改空洞文件的相应信息。
Fuse内核组件接收上层文件系统的处理结果后,对所述结果进行相应的处理,更新索引节点inode的长度、接收时间、修改时间。
步骤S206,Fuse内核组件通知应用程序。
Fuse内核组件完成相应的处理后,通知应用程序操作成功。
图3是本发明实施例提供的读取文件属性时标记空洞的方法的流程图,如图3所示,所述方法包括以下步骤:
步骤S301,查询文件属性。
应用程序调用lstat函数发出获得文件属性请求,lstat函数返回文件的相关属性信息,包括文件所在设备的标识、文件结点号、文件保护模式、硬连接数、文件用户标识、文件用户组标识、文件所表示的特殊设备文件的设备标识、总大小、文件系统的块大小、分配给文件的块的数量、最后访问时间、最后修改时间、最后状态改变时间。
步骤S302,调用空洞文件处理系统的接口。
Fuse内核组件检测到lstat函数后,判断lstat函数对应的缓存是否失效,如果缓存已经失效表示其他进程可能对文件进行了修改,Fuse内核组件调用空洞文件处理系统的接口,请求查询空洞信息的版本号。
步骤S303,查询当前空洞信息的版本号并发送给Fuse内核组件。
空洞文件处理系统查找出空洞文件的空洞信息的版本号,并将其返回给Fuse内核组件,Fuse内核组件将其转发给Fuse上层模块。
步骤S304,比较空洞信息的版本号,并返回空洞属性。
Fuse上层模块接收到版本号后,比较上层文件系统的空洞文件对应的空洞信息的版本号和接收到的版本号,如果上层文件系统的空洞文件的空洞信息的版本号大于接收到的版本号,则表明上层文件系统的空洞文件已经被其他程序修改,因此要将增量的空洞信息返回给空洞文件处理系统,所述空洞信息包括发生变化的各个空洞的地址及各个空洞的长度。
步骤S305,更新空洞信息,并向Fuse内核组件发送空洞信息。
空洞文件处理系统接收到增量的空洞信息后修改空洞标识。比如,空洞变成实体数据后,在空洞信息中删除该空洞的地址及空洞的长度;新增空洞后,则记录新增空洞的地址及空洞长度。空洞文件处理系统更新了空洞信息后,更改空洞信息的版本号,并将空洞信息发送给Fuse内核组件。
步骤S306,转发空洞信息。
空洞文件处理系统更新空洞信息之后,通知Fuse内核组件操作成功,Fuse内核组件将文件属性发送给应用程序。
步骤S307,得到文件属性。
应用程序接收到文件属性,完成查询文件属性的过程。
图4是本发明实施例提供的一种上层文件系统对空洞文件快速读取的方法的流程图,如图4所示,所述方法包括以下步骤:
步骤S401,对空洞文件的空洞进行标识。
对空洞文件进行空洞标识通常包括两种情况,一种是新建文件时,对文件的空洞进行标识,另外一种是读取已有文件属性时,对文件的空洞进行标识。新建文件时,对空洞的标识执行图2所示的新建文件时标记空洞的方法的流程。读取已有文件的属性时,对空洞的标识执行图3所示的读取文件属性时标记空洞的方法的流程。
步骤S402,应用程序发出读取页面的请求。
Mmap建立文件的内存地址映射,并读取相应的内存地址对应的内容。内核如果发现所述内存地址对应的页没有被操作系统读取过,则向注册的文件系统模块Fuse发出读取页面请求。
步骤S403,Fuse内核组件请求空洞文件处理系统检查当前读取是否为空洞。
Fuse内核组件收到应用程序的读取页面请求后,内核分配相关页,Fuse内核组件调用空洞文件处理系统检查所述页是否是空洞。
步骤S404,检查是否是空洞。
空洞文件处理系统根据所述页的内存地址及空洞信息中的空洞地址和空洞长度判断所述页是否是空洞,如果所述页的内存地址在某个空洞地址和其空洞长度确定的地址范围内,则所述页是空洞页,执行步骤S405,否则执行步骤S406。
步骤S405,直接返回到应用程序。
空洞文件处理系统将内核分配的页清零后,直接通知应用程序。
步骤S406,转发读取请求。
如果不是空洞页,空洞文件处理系统向Fuse内核组件发送读取请求。Fuse内核组件将该请求转发给上层文件系统。
步骤S407,读取相应的页。
上层文件系统和Fuse上层模块接收到Fuse内核组件的读取请求后,读取相关信息并将其返回给Fuse内核组件。
步骤S408,转发相应的页。
Fuse内核组件得到上层文件系统和Fuse上层模块返回的相关页后,将其发送给应用程序。
步骤S409,应用程序得到相关页。
应用程序接收到Fuse内核组件发送的相关页,完成读取流程。
图5是本发明实施例提供的一种上层文件系统对空洞文件快速读取的系统的结构图,如图5所示,所述系统包括应用程序1、Fuse内核组件2、空洞文件处理系统3、Fuse上层模块4和上层文件系统5。其中,Fuse上层模块4和上层文件系统5用于读取文件页;Fuse内核组件2,用于向空洞文件处理系统3发送检查空洞的请求,并在空洞文件处理系统3反馈不是空洞时,向Fuse上层模块4发送读取文件页的请求;空洞文件处理系统3通过对所读取的文件进行空洞判别,查找并标记文件的空洞页,给所述空洞页添加空洞标识。在读取文件过程中,对于带有空洞标识的空洞页,所述空洞文件处理系统2中止上层文件系统5对其读取。
所述系统首先对空洞文件进行空洞标识。空洞标识分为两种情况,一种是在新建文件时进行标识,另外一种是在读取文件属性时进行标识。
新建文件时,应用程序1创建新文件后,调用标准截长请求即Ftruncate函数将新创建的文件的大小改为函数长度参数指定的大小。Fuse内核组件2接收到截长请求后,比较Ftruncate的长度参数length与创建的文件的原来长度isize。如果length大于isize,则表明截长后的文件是空洞文件,调用空洞文件处理系统3接口,请求添加空洞标识。空洞文件处理系统3记录截长后的文件的当前实际的长度k和空洞信息,所述空洞信息包括空洞地址和空洞长度。
读取文件属性时,应用程序1发出获得文件属性请求。Fuse内核组件2发现获得文件属性请求后,如果内核发现文件属性对应的缓存已经失效,则表明文件已被其他程序更改或使用,因此调用空洞文件处理系统3的接口请求空洞信息的版本号。空洞文件处理系统3查找出空洞文件的空洞信息的版本号,并将其返回给Fuse内核组件2,Fuse内核组件2将其转发给Fuse上层模块4。Fuse上层模块4接收到版本号后,比较上层文件系统5的空洞文件的空洞信息的版本号并与接收到的版本号相比较,如果上层文件系统的空洞文件的空洞信息的版本号大于接收到的版本号,则表明上层文件系统的空洞文件已经被其他程序修改,因此要将增量的空洞信息返回给空洞文件处理系统3。空洞文件处理系统3接收到增量的空洞信息后更新空洞标识。
系统在进行了空洞标识后,读取文件时,根据空洞标识快速读取。应用程序1发出读取页面的请求,Fuse内核组件2收到应用程序的读取页面请求后,内核分配相关页,Fuse内核组件2调用空洞文件处理系统3检查所读取的页面是否为空洞,如果是空洞,则直接返回到应用程序1,否则向Fuse内核组件2发送读取请求。Fuse内核组件2将该读取请求转发给Fuse上层模块4和上层文件系统5。Fuse上层模块4和上层文件系统5接收到Fuse内核组件2的读取请求后,读取相关信息并将其返回给Fuse内核组件2。Fuse内核组件2得到Fuse上层模块4和上层文件系统5返回的相关页后,将其发送给应用程序1。
综上所述,本发明通过预先标记空洞页,解决了Fuse读取空洞文件时性能损失严重导致系统内存复制和进程切换时压力过大的问题,增强其对空洞文件的支持力度,在存在文件空洞的情况下,可以快速的返回,而不需要走复杂的调度到上层文件系统中,提高了读取某些存在大量空洞的文件的性能。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (10)
1.一种上层文件系统对空洞文件快速读取的方法,其特征在于,所述方法包括以下步骤:
A、在Fuse内核组件上外挂空洞文件处理系统;
B、在Fuse内核组件对上层文件系统的文件进行空洞判别后,所述空洞文件处理系统查找文件的空洞页,给查找到的空洞页添加空洞标识;
C、在读取文件过程中,所述空洞文件处理系统根据来自所述Fuse内核组件的检查空洞的请求,检查所读取的读取页是否是带有空洞标识的空洞页,若是带有空洞标识的空洞页,则所述空洞文件处理系统中止上层文件系统对其读取;反之,空洞文件处理系统将读取页不是空洞页的检测结果反馈给Fuse内核组件,使Fuse内核组件向上层文件系统发送读取文件页的请求;
其中,所述Fuse是用户空间文件系统。
2.根据权利要求1所述的方法,其特征在于,所述步骤B包括:
B1、应用程序创建新文件;
B2、Fuse内核组件判断所创建的新文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送添加空洞标识的请求;
B3、所述空洞文件处理系统接收到所述添加空洞标识的请求后,查找所述新文件的空洞页,并给查找到的空洞页添加空洞标识。
3.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:
B4、应用程序向Fuse内核组件发送查询文件属性的请求;
B5、Fuse内核组件接收到所述查询文件属性的请求后,判断被查询的文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送更新空洞标识的请求;
B6、所述空洞文件处理系统接收到所述更新空洞标识的请求后,判断所述空洞文件的空洞页是否需要更新空洞标识,如果需要,则更新所述空洞文件的空洞页的空洞标识。
4.根据权利要求3所述的方法,其特征在于,所述步骤B6包括:
B61、所述空洞文件处理系统接收到所述更新空洞标识的请求后,查询所述空洞文件对应的空洞信息的版本号,并将所述版本号发送给上层文件系统;
B62、上层文件系统比较所接收到的版本号和上层文件系统中所述空洞文件的空洞信息对应的版本号,如果所接收到的版本号小于上层文件系统中所述空洞文件的空洞信息对应的版本号,则上层文件系统将增量的空洞页属性发送给所述空洞文件处理系统;
B63、所述空洞文件处理系统根据所述增量的空洞页属性更新所述空洞标识。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述步骤C包括:
C1、应用程序向Fuse内核组件发送读取页请求;
C2、Fuse内核组件接收到所述读取页请求后,向所述空洞文件处理系统发送检查空洞的请求;
C3、所述空洞文件处理系统接收到检查空洞的请求后,根据所述空洞标识判断所述读取页是否是空洞页,如果是空洞页,则中止上层文件系统对其读取,直接返回到应用程序,反之,向Fuse内核组件发送读取请求,Fuse内核读取所述读取页后将其返回给应用程序。
6.一种上层文件系统对空洞文件快速读取的系统,其特征在于,所述系统包括:
用于读取文件页的上层文件系统;
Fuse内核组件;
外挂在所述Fuse内核组件上的空洞文件处理系统;
其中,在所述Fuse内核组件对上层文件系统的文件进行空洞判别后,所述空洞文件处理系统查找文件的空洞页,给所述空洞页添加空洞标识;
其中,在读取文件过程中,所述空洞文件处理系统根据来自所述Fuse内核组件的检查空洞的请求,检查读取的读取页是否是带有空洞标识的空洞页,若是带有空洞标识的空洞页,所述空洞文件处理系统中止上层文件系统对其读取;反之,空洞文件处理系统将读取页不是空洞页的检测结果反馈给Fuse内核组件,使Fuse内核组件向上层文件系统发送读取文件页的请求;
其中,所述Fuse是用户空间文件系统。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
应用程序,用于向所述Fuse内核组件发送读取页请求,并接收所述读取页;
Fuse上层模块,用于负责所述Fuse内核组件和所述上层文件系统之间的通信。
8.根据权利要求7所述的系统,其特征在于,
所述应用程序还用于向Fuse内核组件发送创建新文件的请求;
所述Fuse内核组件还用于判断所创建的文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送添加空洞标识的请求;
所述空洞文件处理系统还用于在接收到所述添加空洞标识的请求后,查找所述新文件的空洞页,并给查找到的空洞页添加空洞标识。
9.根据权利要求7所述的系统,其特征在于,
所述应用程序还用于向Fuse内核组件发送查询文件属性的请求;
所述Fuse内核组件还用于在接收到所述查询文件属性的请求后,判断被查询的文件是否是空洞文件,如果是空洞文件,则向所述空洞文件处理系统发送更新空洞标识的请求;
所述空洞文件处理系统还用于接收到所述更新空洞标识的请求后,判断所述空洞文件是否需要更新空洞标识,如果需要,则查找所述空洞文件的空洞页,更新所述空洞文件的空洞页的空洞标识。
10.根据权利要求7-9任一项所述的系统,其特征在于,
所述应用程序还用于向Fuse内核组件发送读取页请求;
所述Fuse内核组件还用于接收到所述读取页请求后,向所述空洞文件处理系统发送检查空洞的请求;
所述空洞文件处理系统还用于在接收到检查空洞的请求后,根据所述的空洞标识判断所述读取页是否是空洞页,如果是空洞页,则中止上层文件系统对其读取,直接返回到应用程序,反之,向Fuse内核组件发送读取请求,Fuse内核读取所述读取页后将其返回给应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110228276.1A CN102298619B (zh) | 2011-08-10 | 2011-08-10 | 一种上层文件系统对空洞文件快速读取的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110228276.1A CN102298619B (zh) | 2011-08-10 | 2011-08-10 | 一种上层文件系统对空洞文件快速读取的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102298619A CN102298619A (zh) | 2011-12-28 |
CN102298619B true CN102298619B (zh) | 2018-05-01 |
Family
ID=45359033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110228276.1A Active CN102298619B (zh) | 2011-08-10 | 2011-08-10 | 一种上层文件系统对空洞文件快速读取的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102298619B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838725B (zh) * | 2012-11-20 | 2017-03-29 | 联想(北京)有限公司 | 文件处理方法和文件处理设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101382953B (zh) * | 2008-09-19 | 2013-03-20 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
US9767273B2 (en) * | 2008-11-26 | 2017-09-19 | Red Hat, Inc. | Reliably terminating processes in a system with confined execution environments |
CN102110202B (zh) * | 2009-12-29 | 2014-01-01 | 比亚迪股份有限公司 | 一种在移动终端文件系统中读取drm文件的方法 |
CN102014133B (zh) * | 2010-11-26 | 2013-08-21 | 清华大学 | 在云存储环境下一种安全存储系统的实现方法 |
CN102033766B (zh) * | 2010-12-01 | 2013-06-12 | 北京同有飞骥科技股份有限公司 | 一种存储操作系统的升级方法 |
-
2011
- 2011-08-10 CN CN201110228276.1A patent/CN102298619B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102298619A (zh) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8176233B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
CN109906433B (zh) | 针对容器的存储隔离 | |
US7472252B2 (en) | Merging identical memory pages | |
CN109697016B (zh) | 用于改进容器的存储性能的方法和装置 | |
US7765189B2 (en) | Data migration apparatus, method, and program for data stored in a distributed manner | |
US8725772B2 (en) | Extending cluster allocations in an extensible file system | |
US20200236171A1 (en) | Partitioning data according to relative differences indicated by a cover tree | |
CN111475469A (zh) | Kubernetes用户态应用中基于虚拟文件系统的小文件存储优化系统 | |
WO2014144449A1 (en) | Apparatus and method for translation from multi-dimensional to linear address space in storage | |
KR20060069791A (ko) | 공유된 읽기 전용 파일 시스템 내의 바이러스의 검출 및경고 | |
EP2621143A1 (en) | Information processing apparatus, distributed processing system, and distributed processing method | |
US20130247039A1 (en) | Computer system, method for allocating volume to virtual server, and computer-readable storage medium | |
CN113835639B (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN110795386B (zh) | 一种数据写入方法和服务端 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN107133334B (zh) | 基于高带宽存储系统的数据同步方法 | |
CN111831691A (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN102298619B (zh) | 一种上层文件系统对空洞文件快速读取的方法及系统 | |
US20170286442A1 (en) | File system support for file-level ghosting | |
CN103810114A (zh) | 分配存储空间的方法及装置 | |
CN115495023A (zh) | 一种数据请求方法、装置、设备及存储介质 | |
US20030154221A1 (en) | System and method for accessing file system entities | |
US20070276789A1 (en) | Methods and apparatus for conversion of content | |
CN112748854B (zh) | 对快速存储设备的优化访问 | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |