一种Linux下针对机械硬盘的预读方法技术

技术编号:7470274 阅读:267 留言:0更新日期:2012-07-01 08:34
本发明专利技术公开了一种Linux下针对机械硬盘的预读方法,改方法包括步骤:1)收集需要预读的文件片断;2)预读文件片断;3)维持预读镜像的有效性;采用本发明专利技术所提出的预读方法,有效地把软件启动时刻的磁盘随机读访问转化为顺序读取,最大利用机械磁盘特性。同时预读顺序与正常访问顺序一致,有效解决了原有预读干扰问题。另外,对于文件系统元数据的读访问,也能进行预读。

【技术实现步骤摘要】

本专利技术涉及。技术背景随着软件越来越复杂化,软件的启动速度也越来越慢,其通常主要因素源自启动时刻软件对磁盘的随机访问。目前常见的机械硬盘,虽然有着不错的顺序访问性能,然而其随机访问性能却不尚ο于是一些预读技术就被提出,来优化软件的启动速度。预读主要是在磁盘空闲间隙,按照磁盘顺序,提前读取接下来要访问的内容。预读主要包含两个任务——“收集需要预读的文件片断”和“预读文件片断”。目前在Linux上,已有预读方法如下1.收集需要预读的文件片断在软件启动阶段采用fanotify/inotify系统调用来监视哪些文件被打开。启动完成后,再依次对前述打开过的文件使用mincore系统调用, 来获知文件的哪些部分在内存中,在内存中的部分被认为是启动过程中被读取的,从而被记录下来,形成类似“文件路径区间1,区间2,... ”的一条记录。最后将上述记录按照所在磁盘位置排列,写入到一个文件中。2.预读文件片断在软件启动一开始,预读程序根据上点生成的记录文件,逐个打开文件并通过readahead/posi^fadvise系统调用,来指示操作系统内核进行预读。然而上述预读方法表现并不尽如人意。首先,预读操作按照了磁盘序,固然提高了磁盘效率,却往往会干扰正常的读访问。例如某软件启动时,依次访问了四个文件片段a,b,c,d,而其磁盘顺序为d,c,b,a。这样在启动时刻,按照磁盘序预读的d并不是立即需要的,反而与启动的软件竞争磁盘带宽。其次,预读仅仅涵盖了启动时刻的文件访问,却忽略了对文件系统元数据的访问。 在实测中,启动时刻相当一部分磁盘访问对应到了文件系统的元数据。专利技术内容本专利技术所要解决的技术问题是提供,该方法可以有效改善机械硬盘上的软件启动速度。为了解决上述的技术问题,本专利技术的,包括步骤1)收集需要预读的文件片断。无缝记录软件正常启动过程中的磁盘读访问。与已有方案相比,记录对象为磁盘块,从而能记录对文件系统元数据的读取;每次读取块的顺序和块号都将被记录。启动完成后,按照其磁盘块被访问的顺序,写入到预读镜像。与已有方案相比,写入的是预读内容的一个副本,而非引用。2)预读文件片断。软件启动时刻,将优先尝试从预读镜像中读取所需块。与已有方案相比,由于预读镜像磁盘块的顺序与访问顺序一致,从而既满足了最大利用机械磁盘特性,又能避免预读非急需内容,干扰正常启动。3)维持预读镜像的有效性。定期同步预读镜像中的磁盘块副本。由于软件更新等原因造成的原件更新,将被发现并更新到镜像中的磁盘块副本中。采用本专利技术所提出的预读方法,有效地把软件启动时刻的磁盘随机读访问转化为顺序读取,最大利用机械磁盘特性。同时预读顺序与正常访问顺序一致,有效解决了原有预读干扰问题。另外,对于文件系统元数据的读访问,也能进行预读。附图说明下面结合附图和具体实施方式对本专利技术作进一步详细的说明。图1是本专利技术“收集需要预读的文件片断”任务在软件启动阶段的工作流程图2是本专利技术“收集需要预读的文件片断”任务在软件启动完成后的工作流程图3是本专利技术“预读文件片断”任务的工作流程图4是本专利技术“维持预读镜像的有效性”任务的工作流程图;具体实施方式本专利技术实现使用了 Linux内核的LVM子系统,LVM子系统能够将多个磁盘或镜像文件按照不同目标需求,组成一个虚拟的磁盘。在本专利技术中,需要为LVM子系统增加一个readahead目标,该目标下,预读镜像与机械磁盘组成一个虚拟的磁盘。readahead目标对预读的三个任务实现如下1)收集需要预读的文件片断在软件启动阶段,对磁盘块的读请求被依次记录到一块内存区域。图1显示了这个工作流。在启动完成后,通知readahead目标,生成预读镜像。图2显示了这个工作流,即根据先前记录,依次从机械磁盘上读取磁盘块填充到预读镜像。预读镜像是启动时读取的磁盘块集合的一个副本,按照读取的顺序排列。2)预读文件片断所有磁盘的访问将通过虚拟磁盘。其中读请求优先从预读镜像中满足。图3显示了这个工作流,点状虚线代表请求的磁盘块不在预读镜像时,再从机械硬盘中查找。3)维持预读镜像的有效性所有磁盘的访问将通过虚拟磁盘,如果发现更新磁盘块在预读镜像中有副本,则对副本置位无效。系统周期性对无效副本进行重填。图4显示了这个工作流。在说明书附图中,图1-3带有数字的小方框代表一个读请求,图4中带有数字的小方框代表一个写请求。框中数字代表请求的磁盘块号。上述实施例不以任何方式限制本专利技术,凡是采用等同替换或等效变换的方式获得的技术方案均落在本专利技术的保护范围内。权利要求1. ,其特征在于包括以下步骤1)收集需要预读的文件片断,无缝记录软件正常启动过程中的磁盘读访问,启动完成后,按照其磁盘块被访问的顺序,写入到预读镜像;2)预读文件片断,软件启动时刻,将优先尝试从预读镜像中读取所需块;3)维持预读镜像的有效性,定期同步预读镜像中的磁盘块副本,对于各种原因造成的原件更新,将被发现并更新到镜像中的磁盘块副本中。全文摘要本专利技术公开了,改方法包括步骤1)收集需要预读的文件片断;2)预读文件片断;3)维持预读镜像的有效性;采用本专利技术所提出的预读方法,有效地把软件启动时刻的磁盘随机读访问转化为顺序读取,最大利用机械磁盘特性。同时预读顺序与正常访问顺序一致,有效解决了原有预读干扰问题。另外,对于文件系统元数据的读访问,也能进行预读。文档编号G06F3/06GK102520884SQ20111042000公开日2012年6月27日 申请日期2011年12月15日 优先权日2011年12月15日专利技术者吴少刚, 张福新, 陈杰 申请人:江苏中科梦兰电子科技有限公司本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:张福新吴少刚陈杰
申请(专利权)人:江苏中科梦兰电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术