首页 / 专利库 / 广播 / 基于段的缓存 / 管理缓存的方法、装置和计算机程序产品

管理缓存的方法、装置和计算机程序产品

阅读:1018发布:2020-05-31

专利汇可以提供管理缓存的方法、装置和计算机程序产品专利检索,专利查询,专利分析的服务。并且本公开的 实施例 涉及用于管理缓存的方法、装置和 计算机程序 产品。一种方法包括由存储系统中的缓存管理模 块 创建主缓存。该方法还包括响应于主缓存被创建,向存储系统中的 硬件 管理模块发送第一 请求 ,以获取关于存储系统中的第一虚拟盘的第一信息。该方法还包括响应于从硬件管理模块接收到第一信息,利用第一虚拟盘来创建辅助缓存。此外,该方法还包括响应于主缓存中的可用容量低于预定 阈值 ,将主缓存中的至少一个缓存页面冲刷至辅助缓存。本公开的实施例能够利用盘阵列中的备用区段来创建辅助缓存,以增加系统中的总缓存容量,从而提高系统的 访问 性能。,下面是管理缓存的方法、装置和计算机程序产品专利的具体信息内容。

1.一种用于管理缓存的方法,包括:
由所述存储系统中的缓存管理模创建主缓存;
响应于所述主缓存被创建,向所述存储系统中的硬件管理模块发送第一请求,以获取关于所述存储系统中的第一虚拟盘的第一信息,
其中所述存储系统包括具有多个区段的至少一个物理盘,所述多个区段包括用于创建第一盘阵列的第一组区段,并且所述第一虚拟盘由所述硬件管理模块基于所述第一组区段中被预留用于重建所述第一盘阵列的至少一个备用区段而创建;
响应于从所述硬件管理模块接收到所述第一信息,利用所述第一虚拟盘来创建辅助缓存;以及
响应于所述主缓存中的可用容量低于预定阈值,将所述主缓存中的至少一个缓存页面冲刷至所述辅助缓存。
2.根据权利要求1所述的方法,其中所述主缓存为可读写的缓存,并且所述辅助缓存为只读缓存。
3.根据权利要求1所述的方法,其中所述第一信息包括所述第一虚拟盘的标识符和容量中的至少一项。
4.根据权利要求2所述的方法,其中将所述主缓存中的至少一个缓存页面冲刷至所述辅助缓存包括:
响应于所述主缓存中的所述可用容量低于所述预定阈值,从所述主缓存中确定不需要被冲刷至所述至少一个物理盘的所述至少一个缓存页面;以及
将所述至少一个缓存页面冲刷至所述辅助缓存。
5.根据权利要求1所述的方法,还包括:
响应于所述辅助缓存被创建并且从所述硬件管理模块接收到关于所述存储系统中的第二虚拟盘的第二信息,利用所述第二虚拟盘来扩展所述辅助缓存,
其中所述多个区段还包括用于创建第二盘阵列的第二组区段,并且所述第二虚拟盘由所述硬件管理模块基于所述第二组区段中被预留用于重建所述第二盘阵列的至少一个备用区段而创建。
6.根据权利要求1所述的方法,还包括:
响应于所述辅助缓存被创建并且从所述硬件管理模块接收到关于所述存储系统中的第三虚拟盘的第三信息,利用所述第三虚拟盘来扩展所述辅助缓存,
其中所述多个区段还包括用于扩展所述第一盘阵列的第三组区段,并且所述第三虚拟盘由所述硬件管理模块基于所述第三组区段中被预留用于重建经扩展的所述第一盘阵列的至少一个备用区段而创建。
7.根据权利要求1所述的方法,还包括:
响应于从所述硬件管理模块接收到从所述辅助缓存中移除所述第一虚拟盘以利用所述至少一个备用区段来重建所述第一盘阵列的第二请求,从所述辅助缓存中移除所述第一虚拟盘。
8.根据权利要求2所述的方法,还包括:
响应于从应用接收到要向所述存储系统写入数据的第三请求,确定所述主缓存中是否存在用于缓存待写入的地址中的数据的第一缓存页面;以及
响应于确定所述主缓存中存在所述第一缓存页面,将待写入的所述数据写入到所述第一缓存页面中。
9.根据权利要求8所述的方法,还包括:
响应于确定所述第一缓存页面在所述主缓存中缺失,确定所述辅助缓存中是否存在用于缓存所述待写入的地址中的数据的第二缓存页面;以及
响应于确定所述第二缓存页面在所述辅助缓存中缺失,将待写入的所述数据写入到所述至少一个物理盘中。
10.根据权利要求9所述的方法,还包括:
响应于确定所述辅助缓存中存在所述第二缓存页面,使所述第二缓存页面无效;
在所述主缓存中分配用于缓存所述待写入的地址中的数据的第三缓存页面;以及将待写入的所述数据写入到所述第三缓存页面中。
11.根据权利要求1所述的方法,还包括:
响应于从所述硬件管理模块接收到所述第一虚拟盘发生故障的指示,从所述辅助缓存中移除所述第一虚拟盘。
12.一种用于管理缓存的装置,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述装置执行动作,所述动作包括:
在存储系统中创建主缓存;
响应于所述主缓存被创建,向所述存储系统中的硬件管理模块发送第一请求,以获取关于所述存储系统中的第一虚拟盘的第一信息,
其中所述存储系统包括具有多个区段的至少一个物理盘,所述多个区段包括用于创建第一盘阵列的第一组区段,并且所述第一虚拟盘由所述硬件管理模块基于所述第一组区段中被预留用于重建所述第一盘阵列的至少一个备用区段而创建;
响应于从所述硬件管理模块接收到所述第一信息,利用所述第一虚拟盘来创建辅助缓存;以及
响应于所述主缓存中的可用容量低于预定阈值,将所述主缓存中的至少一个缓存页面冲刷至所述辅助缓存。
13.根据权利要求12所述的装置,其中所述主缓存为可读写的缓存,并且所述辅助缓存为只读缓存。
14.根据权利要求12所述的装置,其中所述第一信息包括所述第一虚拟盘的标识符和容量中的至少一项。
15.根据权利要求13所述的装置,其中将所述主缓存中的至少一个缓存页面冲刷至所述辅助缓存包括:
响应于所述主缓存中的所述可用容量低于所述预定阈值,从所述主缓存中确定不需要被冲刷至所述至少一个物理盘的所述至少一个缓存页面;以及
将所述至少一个缓存页面冲刷至所述辅助缓存。
16.根据权利要求12所述的装置,其中所述动作还包括:
响应于所述辅助缓存被创建并且从所述硬件管理模块接收到关于所述存储系统中的第二虚拟盘的第二信息,利用所述第二虚拟盘来扩展所述辅助缓存,
其中所述多个区段还包括用于创建第二盘阵列的第二组区段,并且所述第二虚拟盘由所述硬件管理模块基于所述第二组区段中被预留用于重建所述第二盘阵列的至少一个备用区段而创建。
17.根据权利要求12所述的装置,其中所述动作还包括:
响应于所述辅助缓存被创建并且从所述硬件管理模块接收到关于所述存储系统中的第三虚拟盘的第三信息,利用所述第三虚拟盘来扩展所述辅助缓存,
其中所述多个区段还包括用于扩展所述第一盘阵列的第三组区段,并且所述第三虚拟盘由所述硬件管理模块基于所述第三组区段中被预留用于重建经扩展的所述第一盘阵列的至少一个备用区段而创建。
18.根据权利要求12所述的装置,其中所述动作还包括:
响应于从所述硬件管理模块接收到从所述辅助缓存中移除所述第一虚拟盘以利用所述至少一个备用区段来重建所述第一盘阵列的第二请求,从所述辅助缓存中移除所述第一虚拟盘。
19.根据权利要求13所述的装置,其中所述动作还包括:
响应于从应用接收到要向所述存储系统写入数据的第三请求,确定所述主缓存中是否存在用于缓存待写入的地址中的数据的第一缓存页面;以及
响应于确定所述主缓存中存在所述第一缓存页面,将待写入的所述数据写入到所述第一缓存页面中。
20.根据权利要求19所述的装置,其中所述动作还包括:
响应于确定所述第一缓存页面在所述主缓存中缺失,确定所述辅助缓存中是否存在用于缓存所述待写入的地址中的数据的第二缓存页面;以及
响应于确定所述第二缓存页面在所述辅助缓存中缺失,将待写入的所述数据写入到所述至少一个物理盘中。
21.根据权利要求20所述的装置,其中所述动作还包括:
响应于确定所述辅助缓存中存在所述第二缓存页面,使所述第二缓存页面无效;
在所述主缓存中分配用于缓存所述待写入的地址中的数据的第三缓存页面;以及将待写入的所述数据写入到所述第三缓存页面中。
22.根据权利要求12所述的装置,其中所述动作还包括:
响应于从所述硬件管理模块接收到所述第一虚拟盘发生故障的指示,从所述辅助缓存中移除所述第一虚拟盘。
23.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1-11中的任一项所述的方法。

说明书全文

管理缓存的方法、装置和计算机程序产品

技术领域

[0001] 本公开的实施例总体涉及数据存储领域,具体涉及用于管理缓存的方法、装置和计算机程序产品。

背景技术

[0002] 存储系统通常具有多个存储盘。存储盘可以被划分为一组具有固定大小的区段(disk extent,简称DE)。出于数据冗余备份和/或性能改进的目的,可以利用多个区段来构建独立磁盘冗余阵列(RAID)。这种基于存储盘的区段而非整个存储盘来构建的RAID也被称为“映射RAID”。为了保证映射RAID的可靠性,在多个存储盘中通常还预留有一些备用区段。当多个存储盘中的某个存储盘发生故障时,这些备用区段可以被用于重建与故障相关联的RAID条带,从而避免数据丢失的发生。然而,当映射RAID未发生故障时,这些备用区段通常不被使用。
[0003] 此外,为了提高存储系统的访问性能,在存储系统中通常还存在利用具有较高访问速度的盘(例如,闪存、固态盘等)而构建的高速缓存,用于缓存被频繁访问的数据。然而,这样的高速缓存的容量通常是有限的。发明内容
[0004] 本公开的实施例提供了用于管理缓存的方法、装置和计算机程序产品。
[0005] 在本公开的第一方面,提供了一种用于管理缓存的方法。该方法包括由存储系统中的缓存管理模创建主缓存。该方法还包括响应于主缓存被创建,向存储系统中的硬件管理模块发送第一请求,以获取关于存储系统中的第一虚拟盘的第一信息。该存储系统包括具有多个区段的至少一个物理盘,多个区段包括用于创建第一盘阵列的第一组区段,并且第一虚拟盘由硬件管理模块基于第一组区段中被预留用于重建第一盘阵列的至少一个备用区段而创建。该方法还包括响应于从硬件管理模块接收到第一信息,利用第一虚拟盘来创建辅助缓存。此外,该方法还包括响应于主缓存中的可用容量低于预定阈值,将主缓存中的至少一个缓存页面冲刷至辅助缓存。
[0006] 在本公开的第二方面,提供了一种用于管理缓存的装置。该装置包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得装置执行动作,该动作包括:在存储系统中创建主缓存;响应于主缓存被创建,向存储系统中的硬件管理模块发送第一请求,以获取关于存储系统中的第一虚拟盘的第一信息,其中存储系统包括具有多个区段的至少一个物理盘,多个区段包括用于创建第一盘阵列的第一组区段,并且第一虚拟盘由硬件管理模块基于第一组区段中被预留用于重建第一盘阵列的至少一个备用区段而创建;响应于从硬件管理模块接收到第一信息,利用第一虚拟盘来创建辅助缓存;以及响应于主缓存中的可用容量低于预定阈值,将主缓存中的至少一个缓存页面冲刷至辅助缓存。
[0007] 在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令。该机器可执行指令在由设备执行时使该设备执行根据本公开的第一方面所描述的方法的任意步骤。
[0008] 提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。附图说明
[0009] 通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
[0010] 图1示出了根据本公开的实施例的示例存储系统的架构图;
[0011] 图2示出了根据本公开的实施例的示例盘阵列的示意图;
[0012] 图3示出了根据本公开的实施例的创建辅助缓存的示例过程的流程图
[0013] 图4示出了根据本公开的实施例的示例主缓存的示意图;
[0014] 图5示出了根据本公开的实施例的示例虚拟盘的示意图;
[0015] 图6示出了根据本公开的实施例的关于虚拟盘的示例信息的示意图;
[0016] 图7示出了根据本公开的实施例的用于利用第一虚拟盘来创建辅助缓存的示例方法的流程图;
[0017] 图8示出了根据本公开的实施例的包括主缓存和辅助缓存的示例缓存系统的示意图;
[0018] 图9A示出了根据本公开的实施例的扩展辅助缓存的示例过程的流程图;
[0019] 图9B示出了根据本公开的实施例的收缩辅助缓存的示例过程的流程图;
[0020] 图10示出了根据本公开的实施例的用于处理写请求的示例方法的流程图;
[0021] 图11示出了根据本公开的实施例的用于管理缓存的示例方法的流程图;以及[0022] 图12示出了可以用来实施本公开内容的实施例的示例设备的示意性框图
[0023] 在各个附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

[0024] 下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0025] 在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0026] 如上所述,存储系统通常具有多个存储盘。存储盘可以被划分为一组具有固定大小的区段。出于数据冗余备份和/或性能改进的目的,可以利用多个区段来构建独立磁盘冗余阵列(RAID)。这种基于存储盘的区段而非整个存储盘来构建的RAID也被称为“映射RAID”。为了保证映射RAID的可靠性,在多个存储盘中通常还预留有一些备用区段。当多个存储盘中的某个存储盘发生故障时,这些备用区段可以被用于重建与故障相关联的RAID条带,从而避免数据丢失的发生。然而,当映射RAID未发生故障时,这些备用区段通常不被使用。
[0027] 此外,为了提高存储系统的访问性能,在存储系统中通常还利用具有较高访问速度的盘(例如,闪存、固态盘等)来构建高速缓存,以用于缓存被经常访问的数据。然而,这样的高速缓存的容量通常是有限的。
[0028] 随着系统的运行,高速缓存中的可用容量会越来越少。当高速缓存中的可用容量低于预定阈值时,高速缓存中所缓存的数据可能被冲刷至存储盘。因此,当高速缓存的容量较小时,这种将缓存数据写回存储盘以及将存储盘中的数据写入高速缓存的操作可能反复发生,将影响高速缓存和存储盘的使用寿命。
[0029] 本公开的示例实施例提出了一种用于管理缓存的方案。该方案利用映射RAID中的备用区段来创建除以上所述的高速缓存(本文也称为“主缓存”)之外的辅助缓存。当主缓存中的可用容量低于预定阈值时,该方案能够将主缓存中的缓存页面冲刷至辅助缓存。以此方式,该方案能够增加系统中的总缓存容量,从而提高系统的访问性能。此外,该方案能够减少当主缓存容量不够时将缓存页面冲刷至存储盘的写操作的次数,以及将冲刷至存储盘的数据重新写入主缓存的写操作的次数,从而能够延长存储盘以及主缓存的使用寿命。
[0030] 图1示出了根据本公开的实施例的存储系统100的架构图。如图1所示,存储系统100可以包括应用110、存储处理器(SP)120和一个或多个存储盘130。应当理解,如图1所示的存储系统100的结构和功能仅用于示例的目的,而不暗示对于本公开的范围的任何限制。
本公开的实施例可以被体现在不同的结构和/或功能中。
[0031] 在此所述的“存储盘”可以指代任何目前已知或者将来开发的非易失性存储介质,例如磁盘、光盘或固态盘(SSD)等等。例如,存储盘130中的每个存储盘可以被划分成一组连续的、非重叠的且具有固定大小的区段。多个存储盘130的多个区段可以被组织成映射RAID。除了构建映射RAID之外,应当理解,存储盘130中的一个或多个存储盘也可以被用于构建传统RAID(即,基于整个存储盘而非存储盘中的区段来构建的RAID),并且本公开的范围在此方面不受限制。
[0032] 图2示出了根据本公开的实施例的示例映射盘阵列200的示意图,其图示了在如图1所示的多个存储盘130上构建的映射RAID的示例。如图2所示,例如,在N个存储盘130-1~
130-N(统称为“存储盘130”)上构建了具有4D+1P布局的RAID5的示例,其中N大于5。在图2所示的示例中,D0~D3分别表示用于存储用户数据的数据区段,并且P表示用于存储校验信息的校验区段。当创建一个RAID条带(其包括D0~D3以及P)时,可以随机地从5个不同的盘中选择5个区段。因此,用户数据和校验信息将被均匀地分布到所有盘中。例如,在图2的示例中,在存储盘130上创建有RAID组210和RAID组220。RAID组210可以包括RAID条带211、212和
213,而RAID组220可以包括RAID条带221、222和223。当通过添加新的存储盘来扩展存储资源池100的容量时,新添加的存储盘可以同样被划分成多个区段,并且这些区段可以被用于创建新的RAID条带或者另一RAID组。此外,为了保证映射RAID的可靠性,在存储盘130上预留有一些备用区段,例如由R来表示。当存储盘130中的某个存储盘发生故障时,这些备用区段可以被用于重建与故障相关联的RAID条带,从而避免数据丢失的发生。
[0033] 存储处理器120可以被配置为对存储盘130进行管理。如图1所示,存储处理器120例如可以包括缓存管理模块121和硬件管理模块122。应当理解,如图1所示的存储处理器120的结构和功能仅用于示例的目的,而不暗示对于本公开的范围的任何限制。在一些实施例中,存储处理器120可以包括附加模块或者可以省略所示出的模块。
[0034] 缓存管理模块121可以利用具有较高访问速度的盘(例如,闪存、固态盘等)来创建高速缓存(也称为“主缓存”),以将经常访问的数据缓存到其中。在虚拟页式存储中,缓存和存储盘间的数据替换以页面为单位进行。例如,缓存管理模块121可以为待缓存的数据分配一个或多个缓存页面,以用于缓存该数据。为了保证数据一致性,被缓存在主缓存中的数据可以在适当的时间被冲刷到存储盘130中。在以下描述中,被缓存在缓存中且尚未被提交到存储盘130的数据或缓存页面也被称为“脏数据”或“脏页面”。相反,被缓存在缓存中且已经提交到存储盘130的数据或缓存页面也被称为“干净数据”或“干净页面”。
[0035] 为了增加缓存容量并且提高存储系统的访问性能,缓存管理模块121还可以利用如图2所示的存储盘130中的备用区段(即,被标记为“R”的区段)来创建辅助缓存。例如,当主缓存中的可用容量低于预定阈值时,缓存管理模块121可以将主缓存中的至少一个缓存页面冲刷至辅助缓存。当存储盘130的数量被增加或者容量被扩展时,备用区段的数量可能相应地被增加。缓存管理模块121可以利用这些增加的备用区段来扩展辅助缓存的容量。当存储盘130中的某个存储盘发生故障时,缓存管理模块121可以将充当辅助缓存的备用区段中的至少一部分从辅助缓存中移除,以使得被移除的备用区段被用于重建与故障相关联的RAID条带,从而避免数据丢失的发生。
[0036] 硬件管理模块122可以响应于缓存管理模块121的请求而执行相应的操作。例如,硬件管理模块122可以将存储盘130中的备用区段组织在一个或多个虚拟盘中,并且将关于虚拟盘的信息返回给缓存管理模块121,使得缓存管理模块121能够基于该信息来创建或者扩展辅助缓存。当存储盘130所组成的映射RAID发生故障时,硬件管理模块122可以向缓存管理模块121发送请求以释放由辅助缓存所占用的备用区段,用于重建与故障相关联的RAID条带。
[0037] 为了使得在硬件管理模块122需要时能够随时释放备用区段以用于重建发生故障的映射RAID,辅助缓存可以是只读缓存,而主缓存可以是可读写的缓存。也即,缓存管理模块121仅能够将干净页面冲刷至辅助缓存,以使得在辅助缓存中缓存的数据无需被冲刷至存储盘130。这样,在硬件管理模块122需要时,辅助缓存所占用的备用区段能够被很快释放,以用于重建发生故障的映射RAID。
[0038] 应用110可以运行在任何物理计算机、虚拟机服务器等等上。应用110可以向存储处理器120发送读请求或写请求。例如,读请求可以首先被发送至缓存管理模块121,以确定所请求的数据是否已经被缓存在主缓存或辅助缓存中。当所请求的数据已被缓存(也被称为“缓存命中”)时,可以从主缓存或辅助缓存中获取所请求的数据,以作为针对读请求的响应。当所请求的数据未被缓存(也被称为“缓存未命中”)时,读请求可以经由缓存管理模块121被发送至存储盘130,以从存储盘130中获取所请求的数据。类似地,写请求可以首先被发送至缓存管理模块121,也确定待写入地址的数据是否已经被缓存在主缓存或辅助缓存中。当待写入地址的数据已经被缓存在主缓存中时,待写入数据可以被写入到主缓存的相应缓存页面中,并且在稍后的适当时刻被冲刷至存储盘130。当待写入地址的数据已经被缓存在辅助缓存而非主缓存时,可以将辅助缓存中的相应缓存页面无效(这是由于辅助缓存仅缓存干净数据,而非脏数据)。此外,可以在主缓存中分配相应缓存页面,以将待写入数据写入至其中。当待写入地址的数据未被缓存在主缓存或辅助缓存中时(即,缓存未命中),则待写入的数据可以被写入到存储盘130中。
[0039] 以下还将进一步结合附图来详细描述缓存管理模块121和硬件管理模块122的操作。
[0040] 图3示出了根据本公开的实施例的用于创建辅助缓存的示例过程300的流程图。出于说明的目的,在图3中关于如图1所示的缓存管理模块121和硬件管理模块122来描述过程300。应当理解,过程300还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0041] 如图3所示,缓存管理模块121可以创建(310)主缓存。在一些实施例中,主缓存可以是可读写的缓存。例如,主缓存可以由具有较高访问速度的盘(例如,闪存、固态盘等)组成。以固态盘为例,例如,主缓存可以由高耐用性(例如,支持25次全盘写入每天)和/或中等耐用性(例如,支持10次全盘写入每天)的盘组成。
[0042] 在一些实施例中,为了提供高可用性,主缓存例如可以包括一对或多对盘,并且每对盘可以被组织成RAID(即,互为镜像)。这样能够确保当一对盘中的一个盘发生故障或掉线时不会发生数据丢失。在本文中,这样的一对盘也可以被称为“缓存设备”。在一些实施例中,每个缓存设备可以被划分为四个逻辑存储单元,其中包括两个元数据单元和两个用户数据单元。元数据单元例如可以用于存储指示索引信息(例如,关于哪些数据被缓存的信息)的数据结构(诸如哈希表,其中包括与主缓存中的缓存页面相对应的哈希表条目)。用户数据单元例如可以用于缓存用户数据。
[0043] 图4示出了根据本公开的实施例的示例主缓存400的示意图。如图4所示,主缓存400例如可以包括4个缓存设备410-1~410-4(统称为缓存设备410)。缓存设备410-1例如可以包括组成RAID1的一对盘411-1和412-1。类似地,缓存设备410-2例如可以包括组成RAID1的一对盘411-2和412-2,缓存设备410-3例如可以包括组成RAID1的一对盘411-3和412-3,并且缓存设备410-4例如可以包括组成RAID1的一对盘411-4和412-4。此外,如图4所示,每个缓存设备410被划分为四个逻辑存储单元,其中包括两个元数据单元和两个用户数据单元。应当理解,如图4所示的主缓存400仅出于示例的目的而被示出。本公开的实施例也适用于以其他方式而构建的主缓存,并且本公开的范围在此方面不受限制。
[0044] 返回至图3,响应于主缓存被创建,缓存管理模块121可以向硬件管理模块122发送(320)请求,以获取关于一个或多个虚拟盘的信息。
[0045] 在此所述的“虚拟盘”可以由硬件管理模块122基于映射RAID(例如,如图2所示的映射盘阵列200)中的备用区段而创建。在一些实施例中,来自一个映射RAID的所有备用区段可以被构建为一个虚拟盘。在本文中,“虚拟盘”也被称为“虚拟缓存设备”。
[0046] 图5示出了根据本公开的实施例的示例虚拟盘500的示意图。例如,虚拟盘500可以由如图2所示的示例盘阵列200中被标识为“R”的所有备用区段组成。
[0047] 在此假设利用符号“x|s”来表示存储盘130-x(其中x∈[1,N])中的备用区段。如图5所示,在一些实施例中,硬件管理模块122可以将备用区段“1|s”、“2|s”……“N|s”组织成虚拟盘500。此外,如图5所示,硬件管理模块122可以进一步将虚拟盘500划分为4个逻辑存储单元,其中包括两个元数据单元510和520,以及两个用户数据单元530和540。元数据单元例如可以用于存储指示索引信息(例如,关于哪些数据被缓存的信息)的哈希表,其中包括与该虚拟盘中的缓存页面相对应的哈希表条目。用户数据单元例如可以用于缓存用户数据。
[0048] 在一些实施例中,缓存管理模块121可以向硬件管理模块发送第一请求,以获取存储系统中存在的所有虚拟盘的列表。例如,如果在存储系统中存在虚拟盘(例如,存在用于构建虚拟盘的备用区段),则硬件管理模块122可以向缓存管理模块121返回(330)这样的列表。如果在系统中不存在虚拟盘,则硬件管理模块122可以向缓存管理模块121返回(330)空列表。例如,硬件管理模块122所返回的信息可以包括系统中存在的每个虚拟盘的标识符(例如,该标识符可以是对应的映射RAID的标识符)和容量(例如,该虚拟盘所占用的备用区段的总容量)。
[0049] 图6示出了根据本公开的实施例的由硬件管理模块122返回的示例信息600的示意图。如图6所示,例如信息600可以包括如下字段:消息响应类型610、虚拟盘的数目620(例如,为n,其中n≥1)、虚拟盘#1的标识符630-1和容量640-1、虚拟盘#2的标识符630-2和容量640-2……虚拟盘#n的标识符630-n和容量640-n。
[0050] 返回至图3,当缓存管理模块121从硬件管理模块122接收到这样的信息时,缓存管理模块121可以基于该信息来创建(340)辅助缓存。在此假设由硬件管理模块122返回的信息包括关于存储系统中的第一虚拟盘的第一信息。在一些实施例中,缓存管理模块121可以基于第一信息,利用第一虚拟盘来创建辅助缓存。
[0051] 图7示出了根据本公开的实施例的用于利用第一虚拟盘来创建辅助缓存的方法700的流程图。方法700例如由缓存管理模块121来执行,并且可以作为如图3所示的动作340的一种示例实现。
[0052] 如图7所示,在710处,缓存管理模块121向硬件管理模块122请求将第一虚拟盘划分成四个逻辑存储单元,其中包括两个用于存储诸如索引信息(例如,关于哪些数据被缓存的信息)的元数据单元以及两个用于缓存用户数据的用户数据单元。在一些实施例中,所创建的元数据单元的大小与用户数据单元的大小可以具有预定比例(例如,1:128)。例如,所创建的元数据单元的大小与用户数据单元的大小分别如以下公式(1)和(2)所示:
[0053]
[0054]
[0055] 在720处,缓存管理模块121可以在存储器中创建用于第一虚拟盘的本地数据结构。然后,在730处,缓存管理模块121可以将第一虚拟盘加入到辅助缓存中(例如,包括将与第一虚拟盘有关的信息记录在相应数据库中等)。
[0056] 在一些实施例中,当所接收到的虚拟盘列表中包括多个虚拟盘时,缓存管理模块121可以反复执行上述方法700以将多个虚拟盘加入到辅助缓存中。以此方式,辅助缓存能够基于映射RAID的备用区段而被创建。
[0057] 图8示出了根据本公开的实施例的包括主缓存和辅助缓存的缓存系统800的示意图。如图8所示,缓存系统800可以包括主缓存810和辅助缓存820。主缓存810例如可以包括缓存设备811,其包括组成RAID1的一对盘812和813。辅助缓存820例如可以包括虚拟缓存设备821和虚拟缓存设备822。虚拟缓存设备821与虚拟盘823相对应,虚拟盘823由一个映射RAID(未示出)中的备用区段组成。虚拟缓存设备822与虚拟盘824相对应,虚拟盘824由另一映射RAID(未示出)中的备用区段组成。
[0058] 在一些实施例中,当主缓存和辅助缓存被创建时,用户数据可以按照预定规则被缓存在两者之一中。如图8所示,被经常访问的用户数据可以首先被缓存(801)至可读写的主缓存810中。主缓存810中的脏页面或脏数据可以在适当时间被冲刷(802)至存储盘130中。
[0059] 随着存储系统的运行,主缓存中的空闲缓存页面可能越来越少。当主缓存中的可用容量低于预定阈值时,可以从主缓存中选择不被经常访问的缓存页面,以冲刷(803)至辅助缓存820。在一些实施例中,可以以循环赛方式来确定要被冲刷至辅助缓存820的缓存页面。
[0060] 以此方式,主缓存将具有更多页面以用于缓存被频繁读取/写入的数据。同时,由于被冲刷至辅助缓存的页面为不被经常访问的页面,因此即使辅助缓存中包括该页面的虚拟盘被移除,也不会对系统的访问性能造成很大影响。
[0061] 在一些实施例中,辅助缓存可以被扩展。图9A示出了根据本公开的实施例的用于扩展辅助缓存的示例过程910的流程图。出于说明的目的,在图9A中关于如图1所示的缓存管理模块121和硬件管理模块122来描述过程910。应当理解,过程910还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0062] 当新的映射RAID被创建或者映射RAID的容量被扩展时,可能存在新的备用区段被预留用于重建功能。在此情况下,如图9A所示,响应于存储系统中存在新的备用区段可用,硬件管理模块122可以基于这些新的备用区段来创建(911)新的虚拟盘(本文也称为第二虚拟盘或第三虚拟盘)。例如,硬件管理模块122可以向新的虚拟盘分配标识符并且计算其容量,然后通过如图6所示的示例信息600向缓存管理模块121返回关于新虚拟盘的信息(本文也称为第二信息或第三信息)。此外,硬件管理模块122还可以将新虚拟盘划分为相应逻辑存储单元。
[0063] 当缓存管理模块121接收到关于新虚拟盘的信息时,缓存管理模块121可以利用该新的虚拟盘来扩展(912)辅助缓存。例如,缓存管理模块121可以在用于该新的虚拟盘的存储器中创建本地数据结构,并且将该新的虚拟盘加入到辅助缓存中。
[0064] 在一些实施例中,辅助缓存还可以被收缩。图9B示出了根据本公开的实施例的用于扩展辅助缓存的示例过程920的流程图。出于说明的目的,在图9B中关于如图1所示的缓存管理模块121和硬件管理模块122来描述过程920。应当理解,过程920还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0065] 如图9B所示,例如当硬件管理模块122需要备用区段来重建发生故障的映射RAID时,硬件管理模块122可以向缓存管理模块121发送(921)第二请求,以从辅助缓存中移除虚拟盘(例如,第一虚拟盘)。备选地,硬件管理模块122可以进一步将在第一虚拟盘上构建的逻辑存储单元标记为不可用。
[0066] 响应于接收到第二请求或者响应于检测到标记为不可用的逻辑存储单元,缓存管理模块121可以从辅助缓存中移除(922)第一虚拟盘。例如,缓存管理模块121可以释放为第一虚拟盘分配的存储器,然后缓存管理模块121可以销毁在第一虚拟盘上创建的逻辑存储单元(即,元数据单元和用户数据单元)。当硬件管理模块122发现第一虚拟盘上构建的所有逻辑存储单元被销毁时,其可以使用被释放的备用区段用于重建发生故障的映射RAID。由于在辅助缓存中没有脏页面,因此能够很快从辅助缓存中释放虚拟盘。
[0067] 以此方式,缓存管理模块121能够创建、扩展和/或收缩辅助缓存。当缓存管理模块121接收到来自上层应用110的读/写请求时,缓存管理模块121可以利用主缓存和/或辅助缓存来处理该I/O请求。
[0068] 以读请求为例,响应于接收到来自上层应用110的读请求,缓存管理模块321可以确定所请求的数据是否已经被缓存在主缓存或辅助缓存中。例如,缓存管理模块321可以通过查找主缓存的元数据单元中的哈希表来确定所请求的数据是否已被缓存在主缓存中。类似地,缓存管理模块321可以通过查找辅助缓存中的每个虚拟盘的元数据单元中的哈希表来确定所请求的数据是否已被缓存在辅助缓存的该虚拟盘中。当缓存管理模块321确定所请求的数据已被缓存时,其可以从主缓存或辅助缓存中获取所请求的数据,以作为针对读请求的响应。当所请求的数据未被缓存时,读请求可以经由缓存管理模块121被发送至存储盘130,以从存储盘130中获取所请求的数据。
[0069] 关于写请求,图10示出了根据本公开的实施例的用于处理写请求的方法1000的流程图。方法1000例如可以由缓存管理模块121来执行。应当理解,方法1000还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0070] 在1010处,响应于从上层应用110接收到要向存储系统写入数据的写请求(本文也称为“第三请求”),缓存管理模块121确定主缓存中是否存在用于缓存待写入的地址中的数据的第一缓存页面(即,主缓存是否命中)。如果是,则在1020处,缓存管理模块121将数据写入到第一缓存页面中。如果否,则方法1000进行至1030,其中缓存管理模块121确定辅助缓存中是否存在用于缓存待写入的地址中的数据的第二缓存页面(即,辅助缓存是否命中)。如果否,则在1040处,缓存管理模块121将数据写入到存储盘130中。
[0071] 如果确定辅助缓存中存在第二缓存页面,则在1050处,缓存管理模块121可以使第二缓存页面无效。例如,缓存管理模块121可以将对应的虚拟盘的元数据单元中与第二缓存页面相对应的条目无效。然后,在1060处,缓存管理模块121可以在主缓存中分配新缓存界面(本文中称为“第三缓存页面”)。在1070处,缓存管理模块121可以将数据写入到所分配的第三缓存页面中。在1080处,缓存管理模块121可以将与第三缓存页面相对应的条目添加到主缓存的元数据单元中。
[0072] 以此方式,缓存管理模块121能够利用主缓存和辅助缓存来处理针对存储系统的输入/输出请求。辅助缓存能够增加系统中的总缓存容量,从而提高系统的访问性能。此外,辅助缓存的使用能够减少当主缓存容量不够时将缓存页面冲刷至存储盘的写操作的次数,以及将冲刷至存储盘的数据重新写入主缓存的写操作的次数,从而能够延长存储盘以及主缓存的使用寿命
[0073] 在一些实施例中,例如在存储系统启动时,辅助缓存中的虚拟盘可能会出现故障。例如,硬件管理模块122可以发现这样的故障,并且通知给缓存管理模块121。在一些实施例中,当缓存管理模块121接收到辅助缓存中的某个虚拟盘(例如,第一虚拟盘)发生故障的指示时,其可以从辅助缓存中移除该虚拟盘。移除虚拟盘的操作与之前描述的收缩辅助缓存的操作类似。例如,缓存管理模块121可以释放为该虚拟盘分配的存储器(例如,包括哈希表和元数据存储器等),然后其可以销毁在该虚拟盘上创建的逻辑存储单元(即,元数据单元和用户数据单元)。此外,缓存管理模块121还可以移除与该虚拟盘相关联的其他记录(例如,数据库中的记录等)。
[0074] 图11示出了根据本公开的实施例的用于管理缓存的示例方法1100的流程图。例如,方法1100可以由如图1所示的缓存管理模块121来执行。应当理解,方法1000还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0075] 在1110处,缓存管理模块121在存储系统中创建主缓存。
[0076] 在1120处,响应于主缓存被创建,缓存管理模块121向存储系统中的硬件管理模块发送第一请求,以获取关于存储系统中的第一虚拟盘的第一信息。
[0077] 在一些实施例中,存储系统包括具有多个区段的至少一个物理盘。多个区段包括用于创建第一盘阵列的第一组区段,并且第一虚拟盘由硬件管理模块基于第一组区段中被预留用于重建第一盘阵列的至少一个备用区段而创建。
[0078] 在一些实施例中,主缓存为可读写的缓存,并且辅助缓存为只读缓存。
[0079] 在1130处,响应于从硬件管理模块122接收到第一信息,缓存管理模块121利用第一虚拟盘来创建辅助缓存。
[0080] 在一些实施例中,第一信息包括第一虚拟盘的标识符和容量中的至少一项。
[0081] 在1140处,缓存管理模块121确定主缓存中的可用容量是否低于预定阈值。当缓存管理模块121确定主缓存中的可用容量低于预定阈值时,在1150处,缓存管理模块121将主缓存中的至少一个缓存页面冲刷至辅助缓存。
[0082] 在一些实施例中,将主缓存中的至少一个缓存页面冲刷至所述辅助缓存包括:响应于主缓存中的可用容量低于预定阈值,从主缓存中确定不需要被冲刷到至少一个物理盘的至少一个缓存页面;以及将至少一个缓存页面冲刷至辅助缓存。
[0083] 在一些实施例中,方法1100还包括:响应于辅助缓存被创建并且从硬件管理模块接收到关于存储系统中的第二虚拟盘的第二信息,利用第二虚拟盘来扩展辅助缓存。在一些实施例中,多个区段还包括用于创建第二盘阵列的第二组区段,并且第二虚拟盘由硬件管理模块基于第二组区段中被预留用于重建第二盘阵列的至少一个备用区段而创建。备选地,在另一些实施例中,多个区段还包括用于扩展第一盘阵列的第三组区段,并且第三虚拟盘由硬件管理模块基于第三组区段中被预留用于重建经扩展的第一盘阵列的至少一个备用区段而创建
[0084] 在一些实施例中,方法1100还包括:响应于从硬件管理模块接收到从辅助缓存中移除第一虚拟盘以利用至少一个备用区段来重建第一盘阵列的第二请求,从辅助缓存中移除第一虚拟盘。
[0085] 在一些实施例中,方法1100还包括:响应于从应用接收到要向存储系统写入数据的第三请求,确定主缓存中是否存在用于缓存待写入的地址中的数据的第一缓存页面;以及响应于确定主缓存中存在第一缓存页面,将待写入的数据写入到第一缓存页面中。
[0086] 在一些实施例中,方法1100还包括:响应于确定第一缓存页面在主缓存中缺失,确定辅助缓存中是否存在用于缓存待写入的地址中的数据的第二缓存页面;以及响应于确定第二缓存页面在辅助缓存中缺失,将待写入的数据写入到至少一个物理盘中。
[0087] 在一些实施例中,方法1100还包括:响应于确定辅助缓存中存在第二缓存页面,使第二缓存页面无效;在主缓存中分配用于缓存待写入的地址中的数据的第三缓存页面;以及将待写入的数据写入到第三缓存页面中。
[0088] 在一些实施例中,方法1100还包括:响应于从硬件管理模块接收到第一虚拟盘发生故障的指示,从辅助缓存中移除第一虚拟盘。
[0089] 基于以上描述能够看出,根据本公开的实施例的用于管理缓存的方案利用映射RAID中的备用区段来创建除主缓存之外的辅助缓存。当主缓存中的可用容量低于预定阈值时,该方案能够将主缓存中的缓存页面冲刷至辅助缓存。以此方式,该方案能够增加系统中的总缓存容量,从而提高系统的访问性能。此外,该方案能够减少当主缓存容量不够时将缓存页面冲刷至存储盘的写操作的次数,以及将冲刷至存储盘的数据写入主缓存的写操作的次数,从而能够延长存储盘以及主缓存的使用寿命。
[0090] 图12示出了可以用来实施本公开内容的实施例的示例设备1200的示意性框图。例如,如图1所示的存储处理器120(例如,其中的缓存管理模块121和/或硬件管理模块122)可以由设备1200实施。如图12所示,设备1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的计算机程序指令或者从存储单元1208加载到随机访问存储器(RAM)1203中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1203中,还可存储设备1200操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
[0091] 设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206,例如键盘鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0092] 上文所描述的各个过程和处理,例如过程300、800、910和/或920,和/或方法700、1000和/或1100,可由处理单元1201执行。例如,在一些实施例中,过程300、800、910和/或
920,和/或方法700、1000和/或1100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 
1202和/或通信单元1209而被载入和/或安装到设备1200上。当计算机程序被加载到RAM 
1203并由CPU 1201执行时,可以执行上文描述的过程300、800、910和/或920,和/或方法
700、1000和/或1100的一个或多个动作。
[0093] 本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
[0094] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号
[0095] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0096] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0097] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0098] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0099] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0100] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0101] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈