[发明专利]一种目录遍历的方法、装置、设备和存储介质在审
申请号: | 201911122295.9 | 申请日: | 2019-11-15 |
公开(公告)号: | CN110928498A | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 王志豪 | 申请(专利权)人: | 浙江大华技术股份有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 深圳市威世博知识产权代理事务所(普通合伙) 44280 | 代理人: | 唐双 |
地址: | 310051 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 目录 遍历 方法 装置 设备 存储 介质 | ||
本发明公开了一种目录遍历的方法、装置、设备和存储介质。该目录遍历的方法包括:针对选定的目录,创建文件搜索列表;遍历所述目录下存储的文件,以获取所述文件的属性信息,在所述文件搜索列表中按照索引编号(inodeid)的顺序存储所述属性信息,所述属性信息包括文件名称、inodeid和/或文件路径;根据所述文件搜索列表顺序获取对应的元数据信息。通过上述方式,本发明能够实现批量读取目录下文件,然后按照inodeid的顺序对目录中的文件进行排序,再调用stat函数顺序获取文件的元数据信息,有效减少io次数和cpu负载,达到有效减少随机io,缩短遍历目录时间,提升获取元数据信息性能的目的。
技术领域
本申请涉及目录遍历领域,特别是涉及一种目录遍历的方法、装置、设备和存储介质。
背景技术
目前分布式存储系统中扫描磁盘数据块文件,通过文件接口或者操作系统提供的接口读取目录下一个文件名,然后判断文件类型,比如软连接,文件,目录等,如果是目录则跟踪目录,继续进行扫描操作;如果是文件,则直接获取数据块文件对应元数据信息,即存储路径、长度、修改时间等信息;其他文件类型直接忽略,等待所有的目录和子目录中文件都扫描结束,则整个扫描过程结束。
由于主流的文件系统索引节点(inode)元数据都是按照索引编号(inodeid)顺序存储在磁盘中,当磁盘长期使用,并且经常进行删除和重新创建操作,会导致一个目录下面的inodeid并不连续,然而一般目录遍历都是从入口目录开始,使用readdir函数每次读取目录中一个文件或者目录,然后使用stat函数获取文件修改时间和长度信息,如果是目录则继续遍历目录下文件,继续使用stat函数获取目录文件中文件信息。每次使用readdir函数获取一个文件或者目录,一个目录下文件量非常大情况下,大量调用导致cpu负载变高。获取到一个文件名后,直接使用stat函数获取索引节点(inode)元数据信息。相当于每次随机读取一个文件的inode存储的元数据信息,产生大量随机io,导致磁盘io负载很高。最终导致整个目录遍历时间变长。
目前的这种方法存在的问题:1.每次只能获取到一个文件或者目录,每次需要调用操作系统接口,进行一个io操作,并且需要内核态和用户态切换,加重cpu和io负载,拖慢运行速度;2.文件系统中每个目录下的多个数据块文件对应的元数据信息(存储在inode内),即文件长度、创建时间、修改时间等信息,并不是连续存放的,都是依据元数据索引编号(inodeid)顺序存储,特别是长时间运行的磁盘目录下文件,元数据信息存储更加离散,每次扫描到一个目录下的文件直接获取对应的元数据信息,会产生大量的随机io,增加io负载,增加io时延,导致扫描速度变慢。
因此,如何减少目录遍历过程中随机io,降低cpu和io负载,减少遍历时间是人们日益关心的问题。
发明内容
本发明公开了一种目录遍历的方法、装置、设备和存储介质,能够有效减少io次数和cpu负载,达到有效减少随机io,缩短遍历目录时间,提升获取元数据信息性能的目的。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种目录遍历的方法,包括:针对选定的目录,创建文件搜索列表;遍历所述目录下存储的文件,以获取所述文件的属性信息,在所述文件搜索列表中按照inodeid的顺序存储所述属性信息,所述属性信息包括文件名称、inodeid和/或文件路径;根据所述文件搜索列表顺序获取对应的元数据信息,所述元数据信息包括文件长度、创建时间、修改时间、文件权限和与文件对应的文件块的存储位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大华技术股份有限公司,未经浙江大华技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911122295.9/2.html,转载请声明来源钻瓜专利网。