首页> 中国专利> 文件系统提示

文件系统提示

摘要

一种生成并传达文件系统提示的方法。方法可包括从文件系统层接收I/O请求并为文件系统上下文信息检查I/O请求。方法也可包括访问文件系统层以确定文件系统上下文信息的属性并从文件系统层接收文件系统上下文信息的属性。方法可进一步包括分析文件系统上下文信息的属性并基于对文件系统上下文信息的属性的分析生成提示。方法可包括提供从应用程序传递的数据的体重年龄的机制。提示可关联于I/O请求,提示可包括热度信息以增加在较低等级存储层处的数据访问性的效率。方法可包括将提示发送给较低等级存储层。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-09

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20181019 变更前: 变更后: 申请日:20130327

    专利申请权、专利权的转移

  • 2017-08-04

    授权

    授权

  • 2015-08-26

    专利申请权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20150806 申请日:20130327

    专利申请权、专利权的转移

  • 2014-07-30

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130327

    实质审查的生效

  • 2013-10-23

    公开

    公开

说明书

技术领域

本发明一般地涉及一种派生、生成、和传达文件系统提示和/或应用程序驱动提示的方法和设备。基于从文件系统层所发布的I/O请求处截取的文件系统上下文信息,可将所述文件系统提示生成并传达给较低等级存储层。

背景技术

当前基于缓存的存储系统不能有效确定或派生文件系统了解的上下文信息。当前基于缓存的存储系统,如以如2层缓存的非常低等级运行的基于缓存的存储系统,缺少文件系统I/O的上下文和邻近的文件系统I/O。由于所述上下文和邻近的缺少,当前基于缓存的存储系统缺少基于正接收数据重要性改善数据可访问性的能力。另外,因为当前基于缓存的存储系统缺少文件系统I/O的上下文和邻近的文件系统I/O,当前基于缓存的存储系统必然缺少获得应用程序数据访问方案相关信息的能力。

在处于非常低的等级时,较低等级存储系统或装置的分层存储系统或存储控制器不了解应用程序或文件系统的数据访问方案。较低等级(如容纳较低等级存储系统(如,较低等级RAID存储系统)的那些)不具有直接获得正访问自文件系统或应用程序的数据类型相关信息的方式。较低等级存储系统可能正工作作为2层缓存分层存储系统;然而,未将主机侧缓存信息传递给较低等级存储系统的缓存。

当前,不存在任何用于将应用程序特定信息发送或传递下去给较低等级存储系统的机制。

因此,可期望的是,提供一种解决上述引用问题的方法和设备。

发明内容

本发明的目的是提供一种用于生成和传达文件系统提示的方法。该方法可包括从文件系统层接收I/O请求并为文件系统上下文信息检查I/O请求。该方法也可包括访问文件系统层以确定文件系统上下文信息的属性并从文件系统层接收文件系统上下文信息的属性。该方法可进一步包括分析文件系统上下文信息的属性并基于对文件系统上下文信息的属性的分析生成至少一个提示。该提示可指示当由文件系统上下文信息的属性确定的数据的重要性,和与确定所述数据是否位于相对快的存储介质或相对慢的存储介质中的提示相关的数据的相关重要性。另外,该方法可包括将所述至少一个暗示发送给较低等级存储层。

另外,本发明提供了一种装置,该装置被配置用以附加到系统拓扑以生成并传达文件系统提示。该装置可至少包括被配置用以与系统拓扑的文件系统层、块设备层、和较低等级存储层通信的过滤驱动。过滤驱动可至少包括提示引擎和通信组件。另外,过滤驱动可进一步被配置至少用以:从文件系统层接收I/O请求;为文件系统上下文信息检查I/O请求;访问文件系统层以确定文件系统上下文信息的属性;从文件系统层接收文件系统上下文信息的属性;分析文件系统上下文信息的属性;基于对文件系统上下文信息的属性的分析生成至少一个提示,所述至少一个提示关联于I/O请求,其中所述至少一个提示可指示当由文件系统上下文信息的属性确定的数据的重要性,和与确定所述数据是否位于相对快的存储介质或相对慢的存储介质中的提示相关的数据的相关重要性;将所述至少一个暗示发送给较低等级存储层。

进一步,实施方案可包括非临时性计算机可读介质,体现为使得计算装置实施一种生成和传达文件系统提示的方法的计算机代码,计算机代码使得计算装置去执行:从文件系统层接收I/O请求;为文件系统上下文信息检查I/O请求;访问文件系统层以确定文件系统上下文信息的属性;从文件系统层接收文件系统上下文信息的属性;分析文件系统上下文信息的属性;基于对文件系统上下文信息的属性的分析生成至少一个提示,所述至少一个提示可指示当由文件系统上下文信息的属性确定的数据的重要性,和与确定所述数据是否位于相对快的存储介质或相对慢的存储介质中的提示相关的数据的相关重要性;将所述暗示发送给较低等级存储层。

应当理解,以上一般说明和后续具体说明都仅仅是示例性和解释性且不是对请求保护的发明的限制。被并入和构成说明书一部分的附图,描述了本发明的实施方案,并和一般说明一起用于解释原理。

附图简要说明

本领域技术人员通过参考附图可更好理解本发明的众多目标和优点,其中:

图1示出了在当前实施的系统拓扑中用户空间和内核空间中的各个层的图;

图2示出了配置用以提示的系统拓扑的流程图;

图3示出了包括提示引擎的过滤驱动的方框图;

图4示出了在配置用以文件系统提示的文件系统层和过滤驱动中的I/O请求的流程图;

图5示出了在配置用以应用程序提示的文件系统层和过滤驱动中的I/O请求的流程图;

图6示出了用于提示通信的第一方式的流程图;

图7示出了用于提示通信的第二方式的流程图;

图8示出了用于提示处理的流程图;和

图9示出了用于生成和传达文件系统提示的方法。

具体实施方式

现在,将针对公开主题具体做出在附图中所述的参考。本发明的范围仅仅由权利要求限制;包含了众多替换,修改和等同体。为了清楚起见,尚未具体说明在实施方案相关技术领域中已知的技术材料以避免不必要的模糊本说明。

本发明的实施方案可包括提示。提示允许将某些主机或应用程序特定信息传递到较低等级,如较低等级的存储层。提示允许或不然将由较低等级可访问以用于更有效缓存的信息。例如,可利用提示信息用于改善缓存或自动分层。提示可使得将各种元数据信息的加权平均(体重年龄)能够传递下去给较低等级。提示可进一步包括将文件系统或应用程序的数据访问方案传递下去给较低等级。随后较低等级可更有效或合适地基于通过提示获得数据特性而动作或响应。例如,可将提示提供作为较低等级存储控制器(如,MegaRAID?存储控制器),驱动,系统,或相关软件或固件的顾问或指导者。

提示可包括文件系统特定提示和/或应用程序特定提示。可不依赖于其他应用程序导出文件系统提示。应用程序特定提示可包括来自一个或多个各个应用程序的支持。提示方案也可暴露出能够覆盖默认应用程序提示算法/机制的API,这些API将使得应用程序能够提供更多特定的提示和具有对这些提示的更好控制。另外,可使得通用API集为可获得的使得应用程序能够使用这些API将提示传递给较低等级。

本发明的实施方案可访问文件系统构架以获得文件系统上下文信息而不修改文件系统或文件系统构件。本发明的实施方案可进一步是文件系统不可知的或大部分文件系统不可知的。成为文件系统不可知的允许本发明实施方案工作于并跨越各种类型的文件系统而不基于文件系统的特定格式或语言。另外,因为本发明的实施方案可考虑区域的访问模式以及数据类型,实施方案可获得应用程序上下文信息。因此,可配置实施方式和实施方案以生成和传达文件系统提示和应用程序驱动提示的任一或二者。

参照图1,描绘了当前实施的系统拓扑100。系统拓扑100典型地可包括用户空间110和内核空间120。数据库/用户应用程序112典型地可位于用户空间110中。数据库/用户应用程序可发出从用户空间110到内核空间120的I/O请求。数据库/用户应用程序请求可包括连续或非连续I/O请求并可包括随机I/O请求。系统拓扑的不同实施方式可包括附加组件,硬件,软件,或位于用户空间110上的层。

内核空间120可运行在用户空间110之下。内核空间可包括直接I/O 122,系统调用接口124,一个或多个虚拟文件系统126,一个或多个文件系统128,块设备层130,包含多个LBA(逻辑块地址)的请求132,SCSI层140。系统拓扑的不同实施方式可包括附加组件,硬件,软件,或位于内核空间110上的层,例如,可包括存储控制器(如152)和存储系统150。

直接I/O 122可将I/O请求发送给块设备层130。所述I/O请求可包含应用程序特定数据。

系统调用接口124可配置用以发送或接收来自运行在用户空间110上应用程序的、用于内核空间120中请求业务的调用或I/O请求。

虚拟文件系统126可包括在文件系统(如128)的顶部上的摘要层。虚拟文件系统126可配置用来允许多个和不同类型的物理文件系统(如128)。例如,虚拟文件系统126可实施于VMware产品。文件系统128可配置用以组织文件或数据。文件系统128可包括文件和数据,其中所述文件和数据可包括或包含元数据。文件系统128可将I/O请求发送给块设备层130,块设备层130的I/O请求可包括用户数据,文件系统元数据,其他数据,或其他元数据的至少一个。

文件系统层的文件系统,以及虚拟文件系统层的虚拟文件系统,可包含数据(如文件)和元数据。元数据可包含与一些数据结构相关的信息。文件可关联于索引节点(索引节点)或虚拟节点(虚拟索引节点)。可由整数编号识别索引节点或虚拟节点。索引节点或虚拟节点可存储与文件和目录(如文件夹)相关的信息。例如,索引节点或虚拟节点可包含与文件类型,文件所有者,或访问模式(如,读,写,许可等)相关的信息。

块设备层130可配置用以从文件系统128和直接I/O 122接收I/O请求。类似地,文件系统128和直接I/O可配置用以访问块设备层。块设备层130可通信地连接到SCSI层140。块设备层130可配置用以将一个或多个请求发送到存储系统150和SCSI层140上的存储系统控制器152。

SCSI层140可包括SAS(串行连接SCSI)连接或光纤通道连接。SCSI层140可通信地连接块设备层130到存储系统150。SCSI层可进一步通信地连接多个装置,层,或系统,如主机系统,存储系统,存储控制器,控制器,扩展器,存储网络,计算机网络,其他块设备层等。

存储系统150可包括一个或多个存储装置,如硬盘驱动(HDD)或固态驱动(SSD)的一些组合。存储系统150可包括存储控制器152。存储系统150可以是较低等级存储系统。较低等级存储系统可包括RAID存储系统和RAID分层存储系统。

存储系统150可包括集成的,可集成的,连接的,或相关存储控制器152。存储控制器152可配置用以有效处置,传送,协同,和管理存储任务,如路由和接收读/写I/O请求。存储控制器可包括软件或固件,包括存储在计算机可读存储介质中的代码。存储控制器的软件或固件可配置用以运行和处置存储控制器任务。

参照图2,描绘了包括提示引擎260的系统拓扑200。类似于图1,系统拓扑200可包括用户空间110,内核空间120,数据库/用户应用程序112,文件系统128,块设备层130,SCSI层140,存储系统驱动器142,存储系统150,和存储控制器152。文件系统128可进一步包括文件系统索引节点(索引节点)缓存229A和缓冲区缓存229B。系统拓扑200也可包括提示引擎260。

在优选实施方式中,存储系统150可包括分层存储系统或分层RAID(独立磁盘冗余阵列)存储系统,如MegaRAID?存储系统。分层存储系统或分层RAID存储系统可包括一个或多个HDD,一个或多个SSD,或一个或多个其他存储装置。分层存储系统或分层RAID存储系统可进一步包括一个或多个存储器,一个或多个缓存,和一个或多个处理器,以及软件或固件。在优选实施方式中,存储控制器152可包括运行MegaRAID? CacheCade软件(如,MegaRAID? CacheCade Pro v. 2.0)版本的MegaRAID? CacheCade软件存储控制器卡。另外,存储系统驱动或存储控制器驱动(如142)可配置用以接口于存储控制器152或存储系统150,存储系统驱动142可位于连接在SCSI层的装置或系统上。或者,存储系统驱动器142可位于存储控制器152上。存储系统和存储控制器可配置为分层存储系统使得将热数据存储在如SSD的更快可访问存储类型中,将较冷数据存储在如标准HDD的较慢可访问存储类型中。

仍旧参照图2,提示引擎260可配置用以接收,导出,或截取从文件系统128层传递到块设备层130的I/O请求处的提示。提示引擎可截取和导出指示的I/O请求,可包括文件读,写,附加,删除,移动,拷贝等。提示引擎260可位于文件系统128层中或之下。另外,提示引擎260可位于块设备层130中或之上。例如,提示引擎260可位于文件系统128层和块设备层130之间。提示引擎可配置用以为文件系统上下文信息检查I/O请求。例如,文件系统上下文信息可包括文件系统元数据,文件系统访问模式,文件系统索引节点(索引节点),文件系统虚拟节点(虚拟索引节点),文件系统超级块,具有特定意义并影响或反映文件系统布局的日志文件系统块(如分组描述符表,块位图,索引节点位图,或索引节点表)的处理日志,或具有特定意义并影响或反映文件系统布局的元文件(如索引节点元文件)中的至少一个。

系统拓扑200的数据库/用户应用程序112可传递具有读/写请求的应用程序提示。例如,应用程序可传递应用程序提示,在发送从用户空间110到内核空间120各个层(如,文件系统128层,虚拟文件系统层126,系统调用接口124,或块设备层130)的读/写请求期间,之前,或之后。可将应用程序提示传递作为读/写请求的一部分或可包括读/写请求之前或之后发送的一个或多个独立信号,传输,通知,或消息。

参照图3,示出了过滤驱动300的图标式实施方案。过滤驱动300可包括提示引擎260和通信组件330。过滤驱动的提示引擎可配置用以导出文件系统提示310或应用程序驱动提示320中的至少一个。

过滤驱动300或过滤驱动300的提示引擎260可配置用以生成文件系统提示310。过滤驱动300或提示引擎260可配置用以通过探听,截取,或接收自文件系统128发送的读/写请求来获得来自文件系统128的信息。随后提示引擎260可从自文件系统128获得的信息处生成或导出文件系统提示310。

过滤驱动300或过滤驱动300的提示引擎260可配置用以生成应用程序驱动提示320。提示引擎260或过滤驱动300可通过暴露API(应用程序编程接口)或确定应用程序用于通信的ioctls(I/O控制)来生成应用程序驱动提示320。

过滤驱动可包括通信组件330,配置用以将第一系统提示310或应用程序驱动提示320的至少一个发送或传递下去给存储系统(如150)。通信组件330可配置用以仅仅发送或主要发送提示(即,文件系统和/或应用程序驱动提示)下去给存储系统(如150);或者,过滤驱动300的通信组件330可配置用以将提示发送作为被包含在正常请求(如,读/写I/O请求)内或一部分;又者,通信组件可配置用以发送或传递提示给存储系统和用于发送或中继标准读/写请求。例如,过滤驱动300的通信组件330可配置用以发送或传递这些提示,在读/写请求之前,期间,之后,或之内。通过进一步的实施例,在一些实施方式中,可将一个或多个提示附加,插入,注入,或置入I/O请求的块的未使用字段;据此,所述一个或多个提示可被传递或发送下去给存储系统(如150)作为所述I/O请求的一部分。

在一些实施方式中,当I/O请求不具有任何未使用的字段或不具有带有充足大小或容量的未使用字段时,可将提示传递下去到稍后消息中给存储系统150,或可将提示传递下去到后续I/O请求的未使用字段中。当将提示传递下去作为后续消息或当置入后续I/O请求的未使用字段时,所述字段可包括或由相关偏移指示符来实现,所述偏移指示符指示了所述提示附加到的真实I/O请求的至少一个,或从所述真实I/O请求到所述提示附加的请求将所述提示偏移的I/O请求的时间量或数量。随后可将存储系统或存储控制器重新组合,重新联合,或将各个后续提示重新关联到合适的I/O请求,当存储控制器或存储系统接收I/O请求和相关提示或提示一部分时。

参照图4,用于I/O请求和文件系统提示的示意性流程图被示出并可包括步骤401到406的任一或所有步骤。应当注意,以下所述的步骤401到406的顺序仅仅是示例性的,并且在一些实施方式中,步骤401到406的顺序可被不同地实施或具有被一起或同时实施的步骤。如图4所示,过滤驱动300可位于文件系统128层和块设备层130之间。

步骤401可包括从缓冲区或缓存(如,文件系统索引节点(索引节点)缓存229A或缓冲区缓存229B)发出I/O请求的文件系统128。步骤401可进一步包括具有被包括的、截取自文件系统发布的I/O请求的内部提示引擎(如260)的过滤驱动300。

在步骤402中,因为I/O请求可通过块来涉及索引节点(索引节点)和/或虚拟节点(虚拟文件系统的索引节点),内部提示引擎(如260)可实施索引节点和/或虚拟节点映射。这个索引节点和/或虚拟节点映射可提供与特定I/O请求或文件系统128拱盖结构和/或虚拟文件系统(如126)相关的信息。而且,因为附加到特定I/O请求的索引节点和/或虚拟节点将不会改变至少直到I/O请求完成,从所述映射获得的信息将保持精确至少直到I/O请求完成。

在步骤403中,过滤驱动300或过滤驱动300的内部提示引擎(如260)可查找,访问,或发送请求以查找在文件系统128层中索引节点和/或虚拟节点的属性。

在步骤404中,文件系统层可发送文件系统128层的索引节点和/或虚拟节点属性以由过滤驱动300或过滤驱动300的内部提示引擎260来接收。索引节点/虚拟节点的一些属性可包括索引节点/虚拟节点编号,索引节点/虚拟节点标记,和索引节点/虚拟节点类型。

在步骤405中,内部提示引擎(如260)可生成提示(如文件系统提示),通过分析块的各个标记,如超级块,元索引节点(元索引节点),和元虚拟节点(元虚拟索引节点)。元索引节点/元虚拟节点是一个文件系统保持以更好管理其数据的内部索引节点/虚拟节点。例如,内部提示引擎(如260)可基于特定块的标记或块编号来检查和/或确定特定块是否是超级块。另外,例如,内部提示引擎(如260)可基于特定块的标记来检查或确定特定块是否是元索引节点和/或元虚拟节点。随后,内部提示引擎(如260),可在分析索引节点和/或虚拟节点属性后建立或生成提示。

在步骤406中,过滤驱动,过滤驱动的内部提示引擎,或过滤驱动的通信组件可发送或传递下去生成的提示通过SCSI层(如140)给存储系统驱动(如142),存储控制器(如152),或存储系统(如150)。

进一步参照图4,过滤驱动300或过滤驱动300的内部提示引擎260可包括哈希表410。过滤驱动300或过滤驱动300的内部提示引擎260可保持哈希表410以存储针对LBA(逻辑块地址)生成的提示(如,文件系统提示)。可将生成的提示在他们被生成时存入哈希表410。可在内部提示引擎生成与哈希表中现有入口相关的附加提示或获得附加信息时,更新哈希表410的入口。

一些文件系统元数据提示可包括与超级块和元文件相关的信息。

典型地,超级块非常频繁地获得刷新以保持一致性。因此,与超级块相关的文件系统元数据提示可被认作为非常热。典型地,在大多数文件系统上很好地定义了超级块。典型地,可从块编号本身检测到超级块。

关于元文件,所有或大多数元文件具有或相关于特定文件系统的保留索引节点编号。典型地,元文件不大,但是在大文件系统中,元文件能够变大。在文件系统包括大元文件的环境下,过滤驱动或提示引擎可选择以仅仅生成与特定元文件相关的提示,如索引节点映射元文件或块映射元文件。相关于元文件的文件系统元数据提示可包括,例如,索引节点映射元文件或块映射元文件。与元文件相关的文件系统元数据提示(如,索引节点印刷元文件或块映射元文件)可被认作为非常热。

提示相关的一些文件系统I/O可包括与替换写,恢复写,块预先分配,和读相关的信息。

替换写I/O请求可发生在文件系统宽的数据刷新到存储或指示被写数据概率以释放资源的写硬化期间。因此,提示相关的文件系统I/O可被认作为热,因为所述I/O(如写)请求应被快速完成,传递给块设备层的标记可指示替换写。

恢复写I/O请求典型地可由用户触发以确保在崩溃发生之前的数据持续性,在这种崩溃的情况中,可能未提供提示。

应用程序预先分配随后使用的块。可将块的预先分配请求认作为冷的,因为预先分配请求发生在附加模式中,并一般包括大量的要分配的块。

关于READ I/O请求,典型地,每一个文件系统具有其自己的缓冲区缓存,其遵循基于特定近因的算法,因此,提示可包括指示与READ I/O请求相关数据可能未立即访问的信息。因此,READ I/O请求可被认作为冷的。

参照图5,用于I/O请求和应用程序提示的示意性流程图被示出并可包括步骤501到506的任一或所有步骤。如图5所示,过滤驱动(如300)可位于文件系统128层和核心空间120中块设备层130之间。过滤驱动可包括,包含,或相关于外部提示引擎(如560或260)。用户空间110的数据库/用户应用程序层(如112)可包括一个或多个数据库(如514),一个或多个应用程序(如516),和一个或多个API(应用程序编程接口)库(如512)。

步骤501可包括使用(如,访问或接口)API库512以发送I/O请求的应用程序或数据库应用程序。另外,可为一些数据库配置有块结构的预存知识使得具有块结构的预存知识的数据库可配置用以实施具有块设备层(如130)的直接I/O。其他数据库可能不具有块结构的预存知识。另一方面,应用程序典型地可能不具有块结构的预存知识。

在步骤502中,可将一个或多个ioctl(I/O控制)发送给驱动(如,过滤驱动(如300)或存储系统驱动(如142))。所述ioctl(即,ioctl调用)可能是用于特定装置的I/O操作的系统调用。例如,一个ioctl或ioctl接口可包括单个系统调用,通过其,用户空间(如110)可通信于装置驱动器(如,存储系统取得142或过滤驱动300)。另外,通过ioctl发送到装置驱动的请求可能根据ioctl系统调用被引导,ioctl系统调用可能包括对装置的处置和请求编号。

在步骤503中,过滤驱动(如300)或过滤驱动的外部提示引擎(如560或260)可处理所述ioctl。外部提示引擎(如560或260)也可存储ioctl自身或可存储自处理所述ioctl所获得的信息。ioctl相关信息可被存储用于稍后使用。例如,ioctl相关信息可被存入哈希表(如510或410)用于稍后参考。

在步骤540中,过滤驱动(如300)或过滤驱动(如300)的外部提示引擎(如560或260)可接收I/O请求。响应于I/O请求的接收或当接收到I/O请求时,外部提示引擎(如560或260)可查找或访问用户提供的信息。外部提示引擎(如560或260)随后可分析用户提供的信息以生成提示(如,应用程序驱动提示)或多个提示。外部提示引擎(如560或260)可将生成的提示或多个提示存入哈希表(如510或410)。

在步骤505中,外部提示引擎(如560或260)可确定是否回落到文件系统提示机制。如果外部提示引擎(如560或260)确定了接收到不足够的用户提供信息(如,没有任何用户提供信息或非常少的用户提供信息)使得不能产生提示,外部提示引擎(如560或260)可确定所述提示引擎应回落到附加到特定I/O请求或ioctl的文件系统提示机制(如配置用以产生文件系统提示的过滤驱动的内部提示引擎)。类似地,如果能够从用户提供信息产生提示或如果不存在任何相关或相应的文件系统提示,外部提示引擎(如560或260)可确定不回落到文件系统提示机制。另外,外部提示引擎可确定或判决从用户提供信息所产生提示的有用性是相对低并可决定使用文件系统提示机制产生的文件系统提示来补充或增加从用户提供信息所产生的提示。在一些实施方式中,当可能时(如,当文件系统提示和相关应用驱动提示存在时),外部提示引擎可总是或接近总是选择去使用文件系统提示机制产生的文件系统提示来补充或增加从用户提供信息所产生的提示。在其他实施方式中,如果特定文件系统提示有助于或增加到所述值或对特定应用程序驱动提示有用,外部提示引擎可仅仅决定增加或补充。

在步骤506中,可将提示发送或传递下去给存储系统驱动。过滤驱动,过滤驱动的外部提示引擎,或过滤驱动的通信组件可通过SCSI层(如140)将产生的提示发送或传递下去给存储系统驱动(如142),存储控制器(如152),或存储系统(如150)。

进一步参考图5,过滤驱动(如300)或过滤驱动(如300)的外部提示引擎(如560或260)可包括哈希表(如510或410)。过滤驱动(如300)或过滤驱动(如300)的外部提示引擎(如560或260)可保持哈希表(如510或410)以针对LBA(逻辑块地址)存储生成的提示(如文件系统提示)。可将生成的提示在他们被生成时存入哈希表(如510或410)。当外部提示引擎产生与哈希表中现有入口相关的附加提示或获得附加信息时,可更新哈希表(如510或410)的入口。

一些应用软件特定提示可包括与定义特定文件热冷,通过块定义应用软件的热数据,或在实际I/O之前设置或未设置上下文相关的信息。

关于定义特定文件热冷,API可采用所述文件名或具有其数据将为热/冷的特定范围的文件名。定义应用软件特定元数据可能非常有用。可将路径名转换为提示的索引节点编号。

关于通过块定义应用软件的热数据,API可采用可被说明为热/冷数据的块的范围。通过块定义应用软件的热数据可能是有用的,其中对于应用程序来说重要的是具有这些块的知识。提示可包括块编号集。

关于在实际I/O之前设置或未设置上下文,设置/未设置上下文可提及即将到来的I/O是热/冷。对于包括用于存储的独立应用程序的、或其中用户可定义所述I/O之前数据的重要性的应用程序来说,其可能是有用的。提示可包括至少一个过程识别符编号。

而且,文件系统提示(如,上述的文件系统提示)可被结合利用或用于改善应用程序驱动提示的效力。应用软件提示可包括应用软件即时提示。应用软件即时提示可包括暴露一个或多个API和覆盖默认提示机制以合并源自文件系统提示的信息。通过接收文件系统提示,访问文件系统提示,或访问包含文件系统提示的哈希表,可实施应用软件即时提示。应用软件即时提示可包括访问哈希表,其包含文件系统提示,并基于文件系统提示生成一个或多个应用软件提示。

参照图6和图7,示出了显示将提示从提示过滤驱动610传达到存储系统150的不同方法的示意性流程图。图6和图7描绘了提示过滤驱动610,块设备层130,包含从块设备层130到SCSI层140的一个或多个LBA的请求132。提示过滤驱动610可包括先前提及的过滤驱动(如300)的功能或包含先前提及的过滤驱动(如300)。提示过滤驱动610可位于块设备层130之上。提示过滤驱动可包括如内部提示引擎和/或外部提示引擎(如560或260)的一个或多个提示引擎的功能,包含,包括,或相关于所述一个或多个提示引擎。

在图6和图7中,提示过滤驱动610可接收用于生成来自内部或外部输入的提示的信息。例如,内部输入可包括从文件系统接收的I/O请求并可用于使用内部提示引擎生成文件系统提示。同样,例如,外部输入可包括从用户空间的应用程序或数据库接收的ioctl,并可用于使用外部提示引擎生成应用软件驱动提示。

现在参照图6,示出了将提示从提示过滤驱动610传达到存储系统150的第一方式。在第一方式中,提示过滤驱动610可将一个或多个提示附加到一个或多个块的一个或多个现有未使用字段上。随后通过SCSI层140将所述提示和所述块一起发送下去作为I/O请求(如,写请求)一部分下去到存储系统取得142,存储控制器152,或存储系统150。例如,可将文件系统提示从提示过滤驱动610传递到存储系统驱动(如142),通过将文件系统提示附加到被向下发送到存储驱动的块的未使用字段中。随后存储驱动可接收被附加在块的未使用字段中、作为I/O请求一部分的提示。随后存储驱动142可将所述提示附加到I/O帧的字段上并将具有附加提示的I/O帧传递下去到存储控制器150和/或存储系统150。在本发明的一些实施方式中,存储驱动142可包括存储驱动,配置用来使用消息传递技术(MPT)传达。第一方式的优点是所述提示与所述数据在一起。

传达来自提示过滤驱动的特定提示的一些实施方式可包括修改,混合,或替换的第一方式。例如,传达特定提示的一些实施方式可包括将所述提示附加作为稍晚请求的块的未使用字段的一部分,如果相关所述提示的请求的块不具有任何未使用的字段或不具有充足大小的字段。当I/O请求不具有任一未使用字段或不具有充足大小或容量的未使用字段,可将提示在稍晚请求中传递下去到存储层,或可将提示在后续I/O请求的未使用字段中传递下去。当将提示作为后续消息传递下去时或被置于后续I/O请求的未使用字段内时,提示可包括或由相关偏移指示符来实现,所述偏移指示符指示了所述提示附加到的真实I/O请求的至少一个,或从所述真实I/O请求到所述提示附加的请求将所述提示偏移的I/O请求的时间量或数量。随后可将存储系统或存储控制器重新组合,重新联合,或将各个后续提示重新关联到合适的I/O请求,当存储控制器或存储系统接收I/O请求和相关提示或提示一部分时。

现在参照图7,示出了将提示从提示过滤驱动610传达到存储系统150的第二方式。在第二方式中,提示过滤驱动可独立发送I/O请求和提示下去到存储系统驱动142,存储控制器152,或存储系统150。在一些实施方式中,提示过滤驱动可将I/O请求发送下去到存储等级;随后提示过滤驱动可等待以接收来自存储等级的请求用于与I/O请求相关的提示;并基于来自存储等级的提示请求的接收,提示过滤驱动可将提示发送下去到存储等级。即,提示过滤驱动610可通过SCSI层140将提示发送下去到存储系统驱动142,存储控制器152,或存储系统150,当由存储系统驱动142,存储控制器152,或存储系统150请求时。相应地,存储驱动142可配置用以接收I/O请求并可配置用以发送调用以请求来自提示过滤驱动610的提示。基于提示和相关I/O请求的接收,存储驱动142可将提示附加到I/O帧的字段并将具有附加提示的I/O帧传递下去到存储控制器152和/或存储系统150。在本发明的一些实施方式中,存储驱动142可包括存储驱动,配置用以使用MPT协议的版本传达。第二方式不需要基于具有未使用或空闲字段的I/O请求的块。

现在参照图8,示出了与提示处理相关的流程图。可在存储等级以硬件,固件,或软件执行提示处理,通过提示处理组件或模块,如通过或在存储驱动142,存储控制器152,存储系统150等处。在优选实施方案中,可以在存储控制器152上的固件实施提示处理。当提示处理接收到提示时,提示处理组件可实施用于处理提示的方法800。方法800可包括步骤810,820,830,831,840,841,850,851,和860的任一或所有步骤。

步骤810可包括检查和/或确定提示处理组件或模块是否应处理或忽略提示。如果提示处理组件或模块决定了应处理而不是忽略提示,提示处理组件或模块可随后进行到步骤820。如果提示处理组件或模块决定了应忽略提示,方法800可随后包括进行到步骤860以进行到常规I/O请求存储算法。

步骤820可包括查找和/或分析特定提示以确定特定提示的重要性或“热度”使得提示处理组件或模块能够为所述特定提示设置热映射索引值,至少通过步骤830,831,840,841,850,851或图8未示的附加的重要性或“热度”确定的至少一个。

在步骤830中,如果提示处理组件或模块确定了所述特定提示具有非常高的重要性或“非常热”,提示处理组件或模块可在步骤831中将特定热索引值设置为非常大的编号,放置与所述特定提示相关的块或多个块,并钉住与所述特定指示相关的块或多个块。

在步骤840中,如果提示处理组件或模块确定了所述特定提示具有高的重要性或“热”,提示处理组件或模块可在步骤841中将特定热索引值设置为中度大的编号并放置与所述特定提示相关的块或多个块。

在步骤850中,如果提示处理组件或模块确定了所述特定体制具有低的重要性或“冷”,提示处理组件或模块可在步骤851中将特定热索引值设置为非常低的编号并将与所述特定提示相关的块或多个块置于较慢的存储位置中(如,在较慢存储装置中)。

应当注意,步骤830,831,840,841,850,和851仅仅是示例性的,可将特定热索引值设置为整数或非整数值的任意范围的值。

在步骤830,831,840,841,850,851,或860至少一个完成之后,方法可包括步骤860以进行到常规I/O请求存储算法。

参照图9,描绘了与生成并传达指示相关的实施方法900。应当预期到,可实施方法900的实施方案通过过滤驱动,执行在计算装置(如过滤驱动的处理器)上的软件或固件,提示引擎,其他计算装置,其他计算组件,或在其他软件,固件,或中间件上。方法900可包括步骤910,920,930,940,950,960,或970的任一或所有,应当预期到,方法900可包括在本文中整篇公开的、但未明确提出的附加步骤。而且,完全应当预期到,可一起或以非连续顺序来实施方法900的步骤。方法900可包括步骤910,其中步骤910可包括从文件系统层接收I/O请求。方法900可包括步骤920,其中步骤920可包括为文件系统上下文信息检查I/O请求。为文件系统上下文信息检查I/O请求可包括为文件系统上下文信息检查I/O请求的至少一个块的标记,状态(如索引节点的状态),字段(如索引节点的字段)的至少一个。方法900可包括步骤930,其中步骤930可包括访问文件系统层以确定文件系统上下文信息的属性。方法900可包括步骤940,其中步骤940可包括从文件系统层接收文件系统上下文信息的属性。方法900可包括步骤950,其中步骤950可包括分析文件系统上下文信息的属性。方法900可包括步骤960,其中步骤960可包括基于对文件系统上下文信息的属性的分析生成至少一个提示,其中所述至少一个提示指示了所述I/O请求的数据的相对重要性以确定所述数据是否位于相对较快存储介质或相对较慢存储介质中。方法900可包括步骤970,其中步骤970可包括将至少一个提示发送给较低等级存储层。方法也可包括提供从所述应用程序传递的数据的体重年龄的机制的使用。

应当相信,通过以上说明将理解到本发明和许多其伴随的优点,明显的是,可在其组件的形式,结构和安排中做出各种改变而不背离本发明的范围和精神或不牺牲其所有实质性优点。这里之前所述的形式仅仅是其解释性的实施方案,计划的是,后续权利要求包含并包括这些改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号