CN118113663A - 用于管理存储系统的方法、设备和计算机程序产品 - Google Patents
用于管理存储系统的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN118113663A CN118113663A CN202410219210.3A CN202410219210A CN118113663A CN 118113663 A CN118113663 A CN 118113663A CN 202410219210 A CN202410219210 A CN 202410219210A CN 118113663 A CN118113663 A CN 118113663A
- Authority
- CN
- China
- Prior art keywords
- index
- node
- valid
- partition
- storage 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004590 computer program Methods 0.000 title abstract description 18
- 238000005192 partition Methods 0.000 claims abstract description 216
- 238000012545 processing Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 26
- 238000007726 management method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000009420 retrofitting Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种用于管理存储系统的方法、设备和计算机程序产品。在该方法中,获取与存储系统包括的分区相关联的分区索引,在此分区索引包括一组节点,并且一组节点中的节点指示分区中包括的一组对象中的对象的元数据。标识分区索引中的有效节点,有效节点指示与有效节点相关联的对象在存储系统中的有效元数据。基于有效节点生成针对分区索引的本地索引。响应于接收到针对一组对象中的目标对象的访问请求,基于本地索引来在存储系统中访问目标对象。利用上述示例性实现,可以以更为高效的方式访问存储系统中的元数据,进而提高存储系统的整体响应速度。进一步,提供了一种用于管理存储系统的设备和计算机程序产品。
Description
本申请是中国国家申请号为201910338507.0、申请日为2019年4月25日、发明名称为“用于管理存储系统的方法、设备和计算机程序产品”的发明专利申请的分案申请。
技术领域
本公开的各实现方式涉及存储管理,更具体地,涉及用于管理存储系统中的索引的方法、设备和计算机程序产品。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力。目前已经提出了分布式存储系统的概念,并且可以将用户数据分布在分布式存储系统中包括的各个节点上。进一步,在提高数据存储能力的同时,用户对于存储系统的响应时间也提出了越来越高的需求。目前,已经开发出了针对存储系统中存储的数据建立索引以加速数据访问速度的技术方案。
由于分布式系统中可以存在大量用户数据,并且用户数据的索引也将占用较大的存储空间,因而通常以分布式方式将索引存储在分布式存储系统中的多个节点上。在分布式存储系统的操作期间,经常需要遍历索引以查找期望的数据。这将产生大量时间开销进而降低存储系统的响应速度。此时,如何提高存储系统的响应速度,成为一个研究热点。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储系统的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为有效的方式管理存储系统。
根据本公开的第一方面,提供了一种用于管理存储系统的方法。存储系统包括至少一个分区,至少一个分区中的分区包括一组对象。在该方法中,获取与分区相关联的分区索引,在此分区索引包括一组节点,并且一组节点中的节点指示一组对象中的对象的元数据。标识分区索引中的有效节点,有效节点指示与有效节点相关联的对象在存储系统中的有效元数据。基于有效节点生成针对分区索引的本地索引。响应于接收到针对一组对象中的目标对象的访问请求,基于本地索引来在存储系统中访问目标对象。
根据本公开的第二方面,提供了一种用于管理存储系统的设备。存储系统包括至少一个分区,至少一个分区中的分区包括一组对象。该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:获取与分区相关联的分区索引,分区索引包括一组节点,一组节点中的节点指示一组对象中的对象的元数据;标识分区索引中的有效节点,有效节点指示与有效节点相关联的对象在存储系统中的有效元数据;基于有效节点生成针对分区索引的本地索引;以及响应于接收到针对一组对象中的目标对象的访问请求,基于本地索引来在存储系统中访问目标对象。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了其中可以实现本公开的方法的存储系统的示意图;
图2示意性示出了根据本公开的一个实现方式的存储系统的分区索引的框图;
图3示意性示出了根据本公开的一个实现方式的用于管理存储系统中的分区索引的框图;
图4示意性示出了根据本公开的一个实现方式的用于管理存储系统中的分区索引的方法的流程图;
图5示意性示出了根据本公开的一个实现方式的元数据的框图;
图6示意性示出了根据本公开的一个实现方式的用于基于更新的分区索引来修改本地索引的示意图;
图7示意性示出了根据本公开的一个实现方式的用于基于节点设备的工作负载来分配用于管理分区的任务的方法的流程图;
图8示意性示出了根据本公开一个实现方式的用于向另一节点设备分配用于管理分区的任务的框图;以及
图9示意性示出了根据本公开的示例性实现的用于管理存储系统的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
目前已经开发出了多种存储系统,例如,面向对象的存储系统可以以对象为单位来存储用户数据。在此的对象例如可以是图像、视频、音频或者其他格式的数据。可以将对象划分为一个或多个区块(chunk),并且基于区块进行存储。具体地,图1示意性示出了其中可以实现本公开的方法的存储系统100的示意图。如图1所示,可以提供存储资源池110,并且该存储资源池110可以包括多个存储设备112、114、……、116。尽管在此示出了多个独立的物理存储设备112、114、……、116,根据本公开的示例性实现,存储设备还可以是虚拟存储设备。
在存储资源池110之上,可以建立区块层120。该区块层可以包括多个区块122、124等。对于不同的存储系统而言,区块可以被设置为不同的大小。在区块层120之上,可以建立对象层130,并且该对象层130对于存储系统100的用户是可见的。在此,基于对象中存储的内容,对象可以包括一个或多个区块,例如,对象132可以包括两个区块(诸如,区块122和124),又例如,对象134可以仅包括一个区块。
随着存储系统100的运行,该存储系统100中可以包括大量的对象。为了便于对存储系统100中的各个对象进行管理,可以基于分布式哈希表(Distributed Hash Table,DHT)来将对象层130中的多个对象划分至相应的分区(partition)。例如,分区层140可以包括分区142、144等分区。可以基于存储系统100的配置,来设置分区的数量。例如可以将分区的数量设置为128或者其他的数值。此时,一个分区可以包括一个或多个对象。
为了便于管理分区中的各个对象,可以建立分区索引150来存储与对象相关联的元数据,以便以快速和有效的方式来访问存储系统中的对象。将会理解,图1仅示意性示出了用于分区142的分区索引150。对于分区层140中的每个分区,可以建立相应的索引。进一步,可以由一个或多个节点设备来执行管理各个分区中的对象的任务。将会理解,在此的节点设备例如可以是存储设备112、114、……、以及116,或者还可以是存储系统100中的其他具有处理能力的设备。
图2示意性示出了根据本公开的一个实现方式的存储系统的分区索引150的树状索引200的框图。如图2所示,分区索引150的树状索引200可以包括多个层级。例如,该分区索引150可以采用二叉树的形式,此时在二叉树的每个非叶节点处可以包括两个关键字。例如,在根节点210处可以包括关键字1和14。根据一种规则,关键字在[1,14)范围内的对象将被存储在根节点210的左子树中,关键字大于或者等于14的对象将被存储在根节点210的右子树中。
在左子树中的根节点220处,进一步包括关键字1和9,此时根据二叉树的规则,关键字在[1,9)范围内的对象将被存储在节点220的左侧,关键字大于或者等于9并且小于14的对象将被存储在节点220的右侧。如图2所示,在左侧的叶节点230中存储关键字为1、2、和5的对象的相关元数据,并且在右侧的叶节点232中存储关键字为9、10和11的对象的相关元数据。
对于根节点210的右子树而言,该右子树的根节点222包括关键字14和21。此时根据二叉树的规则,关键字在[14,21)范围内的对象将被存储在节点222的左侧,关键字大于或者等于21的对象将被存储在节点222的右侧。在左侧的叶节点234中存储关键字为14、15和17的对象的相关元数据,并且在右侧的叶节点236中存储关键字为21和25的对象的相关元数据。
将会理解,在分区索引150中,叶节点用于存储对象的元数据。例如,叶节点可以以键-值(key-value)方式来存储对象的元数据,其中键表示对象的标识符,而值表示对象的元数据。在此元数据例如可以包括对象包括的各个区块的地址、对象的类型、对象的更新时间等。
将会理解,尽管在图2中仅示意性示出了二叉树形式的分区索引150,根据本公开的示例性实现,还可以分区索引150还可以采用其他形式。例如,可以使用多叉树、B+树等方式来存储分区索引150。将会理解,尽管在图2中仅示意性示出了分区索引150包括两个层级的非叶节点的情况,根据本公开的示例性实现,分区索引150还可以包括更多或者更少的层级。
在存储系统100的操作期间,对象的元数据可能会被修改,此时则需要更新分区索引150。在本公开的上下文中,分区索引150可以是附加式索引。此时,当某个对象的数据被修改时,并不修改与对象相关联的叶节点,而是直接将该叶节点删除,并且向分区索引150中插入新的叶节点以指示该对象的当前元数据。因而,此时在分区索引150中将会存在两种类型的叶节点:有效节点,表示分区所包括的对象的当前元数据;无效节点,表示分区曾经包括的对象的元数据,然而该对象已经被修改或删除。随着存储系统100的运行,分区索引150中可能会包括大量的无效节点。
根据如图2所示的分区索引150,如果需要访问存储系统100中的某个对象,则需要利用对象的标识符来在分区索引150中执行检索。为了提高访问效率,可以将分区索引150加载至高速缓存中。然而,由于高速缓存的容量存在限制,并且分区索引150中的大量无效节点将会降低查询的命中率,这导致在未命中时不得不从底层设备中检索期望被访问的对象的元数据。因而,如何提高分区索引150的命中率并进一步提高存储系统100的整体性能,成为一个亟待解决的问题。
为了解决上述缺陷,本公开的实现方式提供了一种用于管理存储系统100的方法、设备和计算机程序产品。根据本公开的示例性实现,提出了一种基于分区索引150中的有效节点建立本地索引的技术方案,以便提高存储系统100的性能。在下文中,将参见图3概括地描述本公开的实现方式。图3示意性示出了根据本公开的一个实现方式的用于管理存储系统100中的分区索引150的框图300。
图3示出了针对一个分区的分区索引150的处理,为了便于描述起见,以阴影图例示出了分区索引150中的无效节点(例如,关键字为1、2和9的叶节点),而以空白图例示出了分区索引150中的有效节点(例如,关键字为5、10、11、14、15、17、21和25的叶节点)。根据本公开的示例性实现方式,可以首先获取与分区相关联的分区索引150。在此的分区索引150包括一组节点,并且一组节点中的节点指示分区中包括的一组对象中的对象的元数据。可以基于分区索引150中的标记来标识有效节点,在此有效节点指示与有效节点相关联的对象在存储系统100中的有效元数据。具体地,有效节点可以包括关键字为5、10、11、14、15、17、21和25的叶节点。
如图3所示,可以基于有效节点生成针对分区索引150的本地索引310。具体地,本地索引310可以包括与各个有效节点相关联的条目,例如,条目312、314和316可以分别对应于关键字为5、10、11的有效节点。此时,如果接收到针对一组对象中的目标对象的访问请求,可以基于本地索引310来在存储系统100中访问目标对象。例如,在接收到针对关键字为5的对象的访问请求时,可以直接在本地索引310中执行检索,以便找到条目312。将会理解,由于本地索引310包括全部有效节点相关联的数据,因而在本地索引310中可以直接找到期望访问的对象的元数据。换言之,命中率为100%。以此方式,可以大大提高检索元数据的效率,进而提高存储系统100的整体性能。
将会理解,图3仅仅示意性示出了本地索引310的一种可行的数据结构,本领域技术人员可以其他格式来存储本地索引310。例如,可以采用表、阵列、链表、树或者其他方式来存储,只要该数据结构能够存储与分区索引150中的有效节点相关联的键-值即可。
在下文中,将参见图4详细描述本公开的实现方式的更多细节。图4示意性示出了根据本公开的一个实现方式的用于管理存储系统100中的分区索引150的方法400的流程图。在框410处,获取与分区相关联的分区索引150。将会理解,在此的方法400仅描述了针对存储系统100中的一个分区的分区索引150执行的操作。该方法400还可以被应用于存储系统100中的其他一个或多个的分区。
将会理解,方法400可以替换利用高速缓存来存储分区索引150的传统方法。此时,为了获取分区索引150,可以从存储系统100中的区块中读取分区索引150。备选地和/或附加地,方法400可以与利用高速缓存来存储分区索引150的传统方法一起服务于存储系统100。此时,可以首先检查分区索引150是否存在于高速缓存中。如果存在(即,命中),则可以直接从高速缓存中读取分区索引150。如果不存在(即,未命中),则可以从存储系统100中的区块中读取分区索引150。
将会理解,在框410处所示的操作可以作为预处理操作而执行。例如,可以在某个节点设备被指定用于管理特定分区时,执行方法400。以此方式,可以预先生成分区索引150的本地索引310,以便用于提高针对分区所包括的对象的访问的效率。
在框420处,可以标识分区索引150中的有效节点,在此有效节点指示与有效节点相关联的对象在存储系统中的有效元数据。在本公开的上下文中,分区索引150可以是如图2所示的附加式树状索引200。此时,树状索引200中的节点仅能以附加方式修改。换言之,仅能向树状索引200中插入新的节点,而不能从树状索引200中删除已有节点。分区索引150可以包括两种类型的节点:叶节点和非叶节点。在此的叶节点存储对象的元数据,并且可以包括有效节点和无效节点;而非叶节点存储用于索引的数据,用于支持以更为有效的方式访问叶节点。
根据本公开的示例性实现方式,可以为叶节点设置“有效性”标记,以指示叶节点是否为有效节点。在存储系统100的运行过程中,如果一个对象被删除,则此时可以直接将分区索引150中的与被删除对象相对应的叶节点标记为“无效”。如果一个对象被更新,可以将分区索引150中的与被更新对象相对应的叶节点标记为“无效”,并且可以向分区索引150中插入与已经被更新的对象相对应的新的有效节点。
将会理解,随着存储系统100的运行,对于存储系统100中的特定对象而言,在分区索引150中可以存在一个有效节点,并且可能会存在一个或多个无效节点。此时,由于无效节点中的元数据已经过期并且不能反映当前对象的当前状态,因而在生成本地索引310时可以不必考虑无效节点。
继续参见图4,在框430处可以基于有效节点生成针对分区索引150的本地索引310。此时,可以基于在方框420处标识的有效节点来生成本地索引310。具体地,可以基于有效节点中的键和值生成本地索引310中的对象条目。在此,键指示对象的标识符,以及值指示对象的元数据。返回图3,如箭头322所示,可以基于关键字为5的叶节点来生成本地索引310中的对象条目312。此时,可以基于关键字“5”(即,对象的标识符)来生成对象条目312中的键,以及利用该叶节点中的元数据来生成对象条目312中的元数据1。类似地,如箭头324和326所示,还可以分别基于关键字为10和11的叶节点来生成本地索引310中的对象条目314和316。
根据本公开的示例性实现方式,为了提高针对本地索引310的检索效率,还可以基于至少一个非叶节点生成本地索引310中的索引条目。此时,索引条目可以保存分区索引150中的非叶节点中的索引信息。因而,在本地索引310中可以基于索引条目来迅速找到期望访问的对象。
根据本公开的示例性实现方式,对象的元数据包括对象的至少一个区块的地址。根据本公开的示例性实现方式,元数据还可以包括与对象相关的任何其他信息。图5示意性示出了根据本公开的一个实现方式的元数据的数据结构500的框图。如图5所示,元数据510可以包括多个字段:地址字段512、元数据的类型514、对象被更新的时间516、对象的大小518等。在此,地址512可以表示对象所包括的一个或多个区块的地址。类型514可以表示对象的类型,例如,类型可以包括图像、音频、视频等。更新时间516可以表示对象最后被更新的时间。大小518可以表示对象所占用的存储空间的大小。
在框440处,可以判断是否接收到针对一组对象中的目标对象的访问请求。如果接收到访问请求,则方法400前进至框450;否则方法400结束。在框450处,基于本地索引310来在存储系统100中访问目标对象。可以首先从访问请求中确定目标对象的标识符,并且利用确定的标识符来在本地索引310中进行检索,以便找到与标识符相对应的元数据。
可以基于访问请求中指定的操作类型来确定下一步的操作。假设访问请求要求读取对象中的各个区块的数据,则可以基于元数据510中的地址512中所指示的一个或多个区块的地址来访问相应的数据。假设访问请求要求查询对象的类型,则可以返回类型514中所指示的类型。将会理解,在本公开的上下文中,用户不必知晓被访问的目标对象的物理存储地址,并且元数据中的地址512对于用户而言可以是透明的。
根据本公开的示例性实现方式,可以基于本地索引310中的索引条目来确定与目标对象相关联的对象条目。将会理解,由于本地索引310仅包括与有效节点相关的条目并且条目数量将远小于分区索引150中的叶节点的数量。即使在不存在索引信息的情况下,也可以较高的效率找到期望对象条目。根据本公开的示例性实现方式,本地索引310可以进一步包括分区索引150中的非叶节点中的索引信息。此时,通过利用索引信息,可以更快地找到对象条目。
继而,可以基于对象条目确定至少一个区块的地址。利用上述示例性实现,在本地索引310中可以直接找到期望访问的目标对象的元数据。相对于在传统的分区索引150的大量节点中搜索目标对象的标识符而言,可以在本地索引310中迅速找到目标对象相关的条目,进而提高存储系统100对于访问请求的响应速度。
根据本公开的示例性实现方式,可以在存储系统100中的节点设备处执行本公开的方法400。在此,节点设备被分配用于管理分区中包括的一组对象。为了进一步提高本地索引310被访问的效率,可以在节点设备的高速缓存中生成本地索引310。将会理解,此时本地索引310描述分区中所包括的各个对象的最新版本的元数据。因而,当接收到针对对象的请求时,在高速缓存中将会100%地命中期望访问的目标对象。利用上述示例性实现,可以大大提高索引的命中率,因而进一步提高存储系统100对于数据访问请求的响应速度。
将会理解,在此的节点设备可以是用于管理分区的任何类型的计算设备。如果存储设备112、114、……、116中存在额外的处理资源,则可以向这些存储设备分配管理分区的任务。此时,当存储系统100包括多个分区的情况下,可以以分布式的方式来管理各个分区。例如,存储设备112可以用于管理一组分区,而存储设备114可以用于管理另一组分区。又例如,节点设备还可以是存储系统100中的其他设备。
根据本公开的示例性实现方式,如果检测到分区索引150被更新,可以基于更新的分区索引来修改本地索引310。以此方式,可以确保本地索引310中的内容与分区索引150中的内容的一致性,换言之,确保本地索引310中的元数据是最新的有效数据。在存储系统100的运行期间,当接收到针对目标对象的访问请求时,可以总是基于最新的有效的元数据来服务于访问请求。
图6示意性示出了根据本公开的一个实现方式的用于基于更新的分区索引150来修改本地索引310的示意图600。如图6所示,假设存储系统100中的关键字为10的对象被删除,则此时分区索引150中的关键字为10的叶节点将被标记为无效。为了确保本地索引310与分区索引的一致性,需要从本地索引310中删除关键字为10的对象相关的对象条目。修改后的本地索引如附图标记610所示,其中仅包括与有效叶节点相关联的对象条目,而与关键字为10的对象相关联的对象条目已经被删除。
将会理解,图6仅示意性示出了存储系统100中的一个对象的元数据被更新的情况。为了确保存储系统100的运行效率,通常以批次的方式来更新分区索引150的版本。在存储系统100的运行期间,为了提高管理分区索引150的效率,通常在分区索引150中被更新的节点达到一定数量时,触发“转储(dump)”操作以形成新版本的分区索引。由于可以在一个批次中同时更新多个对象的元数据,则此时需要针对多个被更新的对象来分别更新本地索引310中的多个对象条目。根据本公开的示例性实现方式,为了基于更新的分区索引来修改本地索引,可以首先确定更新的分区索引150中的被更新的节点。继而,可以基于确定的节点来更新本地索引310。
根据本公开的示例性实现方式,还可以基于存储系统100中的各个节点设备处的工作负载,动态地调整由哪个节点管理特定的分区。在下文中,将参见图7描述如何执行动态调整。图7示意性示出了根据本公开的一个实现方式的用于基于节点设备的工作负载来分配用于管理分区的任务的方法700的流程图。将会理解,方法700示意性示出了在一个节点设备处执行动态调整的过程。
根据本公开的示例性实现方式,存储系统可以包括多个分区,并且每个分区具有各自的分区索引。此时,可以将管理任务分配给工作负载较低的节点设备。利用上述示例性实现,可以更为有效地利用存储系统中的较为空闲的节点设备的处理能力。
可以针对存储系统100中的一个或多个节点设备来执行方法700。如图7所示,在框710处可以检测节点设备的工作负载。在框720处,如果工作负载高于第一阈值,则表示当前节点的性能较低并且已经不再适合于管理分区。此时,方法700前进至框730处,以便将管理分区的任务分配给工作负载较低的另一节点设备。具体地,可以将本地索引310迁移至另一节点设备,并且指示由该另一节点设备来管理分区。利用上述示例性实现,可以在发现节点设备工作负载较高并且不能有效地管理分区中的各个对象时,将管理任务重新分配给其他具有充足处理资源的节点设备。
在框720处,如果检测到节点设备处的工作负载低于第一阈值,则方法700前进至框740并确定工作负载是否高于第二阈值(在此的第二阈值低于第一阈值)。如果工作负载高于第二阈值,则表示此时工作负载处于在第一阈值和第二阈值之间并且处于正常范围。此时并不执行动态调整,而是由当前的节点设备继续管理分区。在框740处,如果工作负载低于第二阈值,则表示此时节点设备的工作负载较低并且存在额外的空闲资源来管理其他分区。此时,方法700可以前进至框750处,并且可以将该节点设备标记为可以接收管理其他分区的任务。
进一步,节点设备可以接收管理其他分区的任务。具体地,可以从存储系统100中的另一节点设备获取针对另一分区索引的另一本地索引。利用上述示例性实现,可以更为有效地利用存储系统100中的较为空闲的节点设备的处理能力。在下文中,将参见图8描述如何在两个节点设备之间动态分配管理分区的任务。
图8示意性示出了根据本公开一个实现方式的用于向另一节点设备分配用于管理分区的任务的框图800。图8示出了节点设备810和节点设备820,其中节点设备810已经被分配用于管理分区。此时,在节点设备810的高速缓存812中可以包括为管理分区而建立的本地索引310。将会理解,尽管图8示出了高速缓存812中仅包括本地索引310的情况,该节点设备810还可以被分配用于同时管理多个分区,此时在高速缓存812中将包括分别用于多个分区的多个本地索引。
当检测到节点设备810的工作负载上升并且高于第一阈值时,可以向工作负载较低(例如,低于第二阈值)的节点设备820迁移管理任务。具体地,如箭头830所示,可以向节点设备820的高速缓存822迁移本地索引310以形成本地索引824,并且指示由节点设备820来管理分区。
节点设备820在接收到管理任务时,可以首先检查本地索引824与分区的分区索引150是否相一致。可以从存储系统100的区块层120中读取分区索引150,并确定在本地索引824中是否包括分区索引150中的全部有效叶节点相关的对象条目。如果确定结果为“是”,则表示本地索引824与分区索引150相一致并且可以基于本地索引824来执行后续操作。如果确定结果为“否”,则如箭头840所示需要利用分区索引150来更新本地索引824中的对象条目。
上文参见图8示出了从节点设备810向节点设备820迁移分区管理任务的情况。在存储系统100的运行过程中,当节点设备810的工作负载降低至低于第二阈值时,可以接收来自工作负载较高的其他节点设备的分区管理任务。此时,节点设备810可以从其他节点设备接收分区索引,并基于接收的分区索引与相应本地索引的比较,更新分区索引的本地索引。利用上述示例性实现,可以充分考虑各个节点设备的工作负载,并且平衡各个节点设备的工作负载以便提高存储系统100的整体性能。
在上文中已经参见图2至图8详细描述了根据本公开的方法的示例,在下文中将描述相应的装置的实现。根据本公开的示例性实现,提供了一种用于管理存储系统的装置,存储系统包括至少一个分区,至少一个分区中的分区包括一组对象。该装置包括:获取模块,配置用于获取与分区相关联的分区索引,分区索引包括一组节点,一组节点中的节点指示一组对象中的对象的元数据;标识模块,配置用于标识分区索引中的有效节点,有效节点指示与有效节点相关联的对象在存储系统中的有效元数据;生成模块,配置用于基于有效节点生成针对分区索引的本地索引;以及访问模块,配置用于响应于接收到针对一组对象中的目标对象的访问请求,基于本地索引来在存储系统中访问目标对象。
根据本公开的示例性实现方式,该装置在存储系统中的节点设备处被实现,节点设备被分配用于管理分区中包括的一组对象。
根据本公开的示例性实现方式,其中生成模块进一步被配置用于在节点设备的高速缓存中生成本地索引。
根据本公开的示例性实现方式,分区索引是附加式树状索引,一组节点包括至少一个叶节点和至少一个非叶节点,有效节点是至少一个叶节点中的叶节点。
根据本公开的示例性实现方式,生成模块进一步被配置用于:基于至少一个非叶节点生成本地索引中的索引条目;基于至少一个叶节点确定有效节点;以及基于有效节点中的键和值生成本地索引中的对象条目,键指示对象的标识符,以及值指示对象的元数据。
根据本公开的示例性实现方式,对象的元数据包括对象的至少一个区块的地址,以及访问模块进一步配置用于:基于本地索引确定目标对象的至少一个区块的地址;以及基于至少一个区块的地址来在存储系统中访问目标对象。
根据本公开的示例性实现方式,访问模块进一步配置用于:基于本地索引中的索引条目确定与目标对象相关联的对象条目;以及基于对象条目确定至少一个区块的地址。
根据本公开的示例性实现方式,进一步包括更新模块,配置用于
响应于检测到分区索引被更新,基于更新的分区索引来修改本地索引。
根据本公开的示例性实现方式,更新模块进一步配置用于:确定更新的分区索引中的被更新的节点;以及基于确定的节点来更新本地索引。
根据本公开的示例性实现方式,进一步包括调整模块,配置用于:响应于检测到节点设备处的工作负载高于第一阈值,将本地索引迁移至存储系统中包括的多个节点设备中的另一节点设备。
根据本公开的示例性实现方式,存储系统包括另一分区以及与另一分区相关联的另一分区索引,以及调整模块进一步配置用于:响应于检测到节点设备处的工作负载低于第二阈值,从存储系统中的另一节点设备获取针对另一分区索引的另一本地索引。
根据本公开的示例性实现方式,调整模块进一步配置用于:获取另一分区索引;以及基于另一分区索引与另一本地索引的比较,更新另一本地索引。
图9示意性示出了根据本公开的示例性实现的用于管理存储系统的设备900的框图。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400和700,可由处理单元901执行。例如,在一些实现中,方法400和700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实现中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序被加载到RAM 903并由CPU901执行时,可以执行上文描述的方法400和700的一个或多个步骤。备选地,在其他实现中,CPU 901也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种用于管理存储系统的设备,所述存储系统包括至少一个分区,所述至少一个分区中的分区包括一组对象。所述设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:获取与分区相关联的分区索引,分区索引包括一组节点,一组节点中的节点指示一组对象中的对象的元数据;标识分区索引中的有效节点,有效节点指示与有效节点相关联的对象在存储系统中的有效元数据;基于有效节点生成针对分区索引的本地索引;以及响应于接收到针对一组对象中的目标对象的访问请求,基于本地索引来在存储系统中访问目标对象。
根据本公开的示例性实现方式,该动作在存储系统中的节点设备处被执行,节点设备被分配用于管理分区中包括的一组对象,以及其中生成针对分区索引的本地索引包括:在节点设备的高速缓存中生成本地索引。
根据本公开的示例性实现方式,分区索引是附加式树状索引,一组节点包括至少一个叶节点和至少一个非叶节点,有效节点是至少一个叶节点中的叶节点。
根据本公开的示例性实现方式,基于有效节点生成本地索引包括:基于至少一个非叶节点生成本地索引中的索引条目;基于至少一个叶节点确定有效节点;以及基于有效节点中的键和值生成本地索引中的对象条目,键指示对象的标识符,以及值指示对象的元数据。
根据本公开的示例性实现方式,对象的元数据包括对象的至少一个区块的地址,以及基于本地索引来访问目标对象包括:基于本地索引确定目标对象的至少一个区块的地址;以及基于至少一个区块的地址来在存储系统中访问目标对象。
根据本公开的示例性实现方式,基于本地索引确定目标对象的至少一个区块的地址进一步包括:基于本地索引中的索引条目确定与目标对象相关联的对象条目;以及基于对象条目确定至少一个区块的地址。
根据本公开的示例性实现方式,该动作进一步包括:响应于检测到分区索引被更新,基于更新的分区索引来修改本地索引。
根据本公开的示例性实现方式,基于更新的分区索引来修改本地索引包括:确定更新的分区索引中的被更新的节点;以及基于确定的节点来更新本地索引。
根据本公开的示例性实现方式,该动作进一步包括:响应于检测到节点设备处的工作负载高于第一阈值,将本地索引迁移至存储系统中包括的多个节点设备中的另一节点设备。
根据本公开的示例性实现方式,存储系统包括另一分区以及与另一分区相关联的另一分区索引。
根据本公开的示例性实现方式,该动作进一步包括:响应于检测到节点设备处的工作负载低于第二阈值,从存储系统中的另一节点设备获取针对另一分区索引的另一本地索引。
根据本公开的示例性实现方式,该动作进一步包括:获取另一分区索引;以及基于另一分区索引与另一本地索引的比较,更新另一本地索引。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。
Claims (20)
1.一种方法,包括:
基于对一组对象中的第一对象的改变,由包括处理器的第一设备修改存储系统的分区索引的一组节点中的第一节点,所述第一对象与所述第一节点相关联,其中所述修改基于所述改变来使所述第一节点无效,从而产生包括无效的第一节点的更新的分区索引;
基于所述更新的分区索引,由所述第一设备促进向第二设备传送与所述更新的分区索引对应的索引信息,其中所述更新的分区索引还包括所述一组节点中的有效的第二节点,所述有效的第二节点与所述一组对象中的第二对象相关联;
基于所述第一设备处的本地索引,由所述第一设备从所述第二设备接收针对所述第二对象的访问请求,其中所述本地索引基于被包括在被传送给所述第二设备的所述索引信息中的所述有效的第二节点而被生成,其中所述分区索引包括附加式树状索引;以及
基于所述有效的第二节点中的键和值来生成所述本地索引中的针对所述第二对象的对象条目,所述键指示所述第二对象的标识符,所述值指示描述所述第二对象的所述有效的第二节点的有效元数据。
2.根据权利要求1所述的方法,其中所述第二设备包括所述存储系统的管理节点设备,其中所述管理节点设备基于所述本地索引来管理所述一组对象,并且其中所述管理节点设备基于所述索引信息来在所述管理节点设备的高速缓存中生成所述本地索引。
3.根据权利要求1所述的方法,其中所述一组节点包括至少一个叶节点和至少一个非叶节点,并且其中所述有效的第二节点包括所述至少一个叶节点中的叶节点。
4.根据权利要求3所述的方法,其中所述第二设备基于所述有效的第二节点通过包括以下的操作来生成所述本地索引:
基于所述至少一个非叶节点来在所述本地索引中生成索引条目;以及
基于所述至少一个叶节点来确定所述有效的第二节点。
5.根据权利要求4所述的方法,其中所述有效元数据包括所述第二对象的至少一个第一区块的第一地址,并且其中所述访问请求由所述第二设备基于所述本地索引通过包括以下的操作来生成:
基于所述本地索引来确定所述第二对象的所述至少一个第二区块的第二地址;以及
基于所述第二地址来访问所述存储系统中的所述第二对象。
6.根据权利要求1所述的方法,其中所述修改通过修改描述所述第一对象的所述第一节点的元数据来使所述无效的第一节点无效,并且其中所述第一节点的所述元数据被包括在所述索引信息中。
7.根据权利要求6所述的方法,其中基于所述无效的第一节点,所述第二设备不基于所述第一节点的所述元数据来生成所述本地索引。
8.根据权利要求1所述的方法,其中所述第一设备基于所述第一节点的元数据基于所述改变而过时来使所述第一节点无效。
9.根据权利要求1所述的方法,其中所述本地索引由所述第二设备基于所述索引信息通过包括以下的过程来生成:
确定所述更新的分区索引中的更新的节点;
标识所述更新的节点的有效性;以及
基于所述更新的节点来更新所述本地索引。
10.根据权利要求1所述的方法,还包括:
由所述第一设备检测到所述第二设备处的工作负载高于阈值,从而引起阈值确定;
基于所述阈值确定,由所述第一设备将所述本地索引迁移至被包括在所述存储系统中的多个管理节点设备之中的不同设备。
11.一种存储系统设备,包括:
处理器;以及
存储器,存储可执行指令,所述可执行指令在由所述处理器执行时促进操作的执行,所述操作包括:
基于一组数据对象中的第一数据对象的更新,修改数据对象存储系统的分区索引的一组索引节点中的第一索引节点,所述第一数据对象与所述第一索引节点相关联,其中所述修改基于所述更新来使所述第一索引节点无效,从而产生包括无效的第一索引节点的改变的分区索引,
基于所述改变的分区索引,向管理节点设备发送与所述改变的分区索引对应的索引信息,其中所述改变的分区索引还包括所述一组索引节点中的有效的第二索引节点,所述有效的第二索引节点与所述一组数据对象中的第二数据对象相关联,
基于由所述管理节点设备维护的本地索引,从所述管理节点设备接收针对所述第二数据对象的数据的访问请求,其中所述本地索引基于被包括在被传送给所述管理节点设备的所述索引信息中的所述有效的第二索引节点而被生成,其中所述分区索引包括附加式树状索引,以及
基于所述有效的第二索引节点中的键和值来生成所述本地索引中的针对所述第二数据对象的对象条目,所述键指示所述第二数据对象的标识符,所述值指示描述所述第二数据对象的所述有效的第二索引节点的有效元数据。
12.根据权利要求11所述的存储系统设备,其中所述管理节点设备基于与所述分区索引的有效节点对应的所述本地索引来管理所述一组数据对象。
13.根据权利要求11所述的存储系统设备,其中所述一组索引节点包括至少一个叶节点和至少一个非叶节点,并且其中所述有效的第二索引节点包括所述至少一个叶节点中的叶节点。
14.根据权利要求13所述的存储系统设备,其中所述管理节点设备通过包括不处理所述无效的第一索引节点的操作来生成所述本地索引。
15.根据权利要求14所述的存储系统设备,其中所述管理节点设备通过还包括以下的操作来生成所述本地索引:
基于所述至少一个非叶节点来在所述本地索引中生成索引条目;以及
基于所述至少一个叶节点来确定所述有效的第二索引节点。
16.根据权利要求15所述的存储系统设备,其中所述有效元数据包括所述第二数据对象的至少一个第一区块的第一地址,并且其中所述访问请求由所述管理节点设备基于所述本地索引通过包括以下的操作来生成:
基于所述本地索引来确定所述第二数据对象的至少一个第二区块的第二地址,以及
基于所述至少一个第二区块的所述第二地址来访问所述数据对象存储系统中的所述第二数据对象。
17.一种非瞬态机器可读介质,包括可执行指令,所述可执行指令在由第一设备的处理器执行时促进操作的执行,所述操作包括:
基于对一组对象中的第一对象的改变,修改存储系统的分区索引的一组节点中的第一节点,所述第一对象与所述第一节点相关联,其中所述修改基于所述改变来使所述第一节点无效,从而产生包括无效的第一节点的更新的分区索引,
基于所述更新的分区索引,向第二设备传送与所述更新的分区索引对应的索引信息,其中所述更新的分区索引还包括所述一组节点中的有效的第二节点,所述有效的第二节点与所述一组对象中的第二对象相关联,以及
基于所述第一设备处的本地索引,从所述第二设备接收针对所述第二对象的访问请求,其中所述本地索引基于被包括在被传送给所述第二设备的所述索引信息中的所述有效的第二节点而被生成,其中所述分区索引包括附加式树状索引;以及
基于所述有效的第二节点中的键和值来生成所述本地索引中的针对所述第二对象的对象条目,所述键指示所述第二对象的标识符,所述值指示描述所述第二对象的所述有效的第二节点的有效元数据。
18.根据权利要求17所述的非瞬态机器可读介质,其中所述第二设备包括所述存储系统的管理节点设备,其中所述管理节点设备基于所述本地索引来管理所述一组对象,并且其中所述管理节点设备基于所述索引信息来在所述管理节点设备的高速缓存中生成所述本地索引。
19.根据权利要求17所述的非瞬态机器可读介质,其中所述一组节点包括至少一个叶节点和至少一个非叶节点,并且其中所述有效的第二节点包括所述至少一个叶节点中的叶节点。
20.根据权利要求17所述的非瞬态机器可读介质,其中所述修改通过修改描述所述第一对象的所述第一节点的元数据来使所述无效的第一节点无效,并且其中所述第一节点的所述元数据被包括在所述索引信息中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410219210.3A CN118113663A (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机程序产品 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338507.0A CN111857539B (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机可读介质 |
CN202410219210.3A CN118113663A (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机程序产品 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338507.0A Division CN111857539B (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118113663A true CN118113663A (zh) | 2024-05-31 |
Family
ID=72917159
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338507.0A Active CN111857539B (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机可读介质 |
CN202410219210.3A Pending CN118113663A (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机程序产品 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338507.0A Active CN111857539B (zh) | 2019-04-25 | 2019-04-25 | 用于管理存储系统的方法、设备和计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11256677B2 (zh) |
CN (2) | CN111857539B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11709815B2 (en) * | 2019-07-15 | 2023-07-25 | International Business Machines Corporation | Retrieving index data from an object storage system |
US11782624B2 (en) * | 2020-10-06 | 2023-10-10 | Samsung Electronics Co., Ltd. | Worflow-based partition allocation |
JP2022124176A (ja) * | 2021-02-15 | 2022-08-25 | 富士通株式会社 | ストレージシステム,ストレージ装置及びコンパクション処理方法 |
CN113761294B (zh) * | 2021-09-10 | 2023-03-24 | 北京火山引擎科技有限公司 | 数据管理方法、装置、存储介质以及电子设备 |
CN117349199B (zh) * | 2023-11-30 | 2024-07-23 | 摩尔线程智能科技(北京)有限责任公司 | 缓存管理装置及系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401064B1 (en) * | 2002-11-07 | 2008-07-15 | Data Advantage Group, Inc. | Method and apparatus for obtaining metadata from multiple information sources within an organization in real time |
US7383276B2 (en) * | 2004-01-30 | 2008-06-03 | Microsoft Corporation | Concurrency control for B-trees with node deletion |
CN101646994B (zh) * | 2006-12-06 | 2016-06-15 | 才智知识产权控股公司(2) | 利用内存库交错管理固态存储器的命令的装置、系统及方法 |
CN101471825B (zh) * | 2007-12-26 | 2011-05-11 | 中国科学院声学研究所 | 利用声望模型的p2p流媒体系统节点有效性的检测方法 |
US20110264880A1 (en) * | 2010-04-23 | 2011-10-27 | Tatu Ylonen Oy Ltd | Object copying with re-copying concurrently written objects |
CN102651007A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
US11841844B2 (en) * | 2013-05-20 | 2023-12-12 | Amazon Technologies, Inc. | Index update pipeline |
CN103605657A (zh) * | 2013-10-14 | 2014-02-26 | 华为技术有限公司 | 一种在线重建索引的方法和装置 |
CN103744961B (zh) * | 2014-01-06 | 2016-10-19 | 清华大学 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
US9779015B1 (en) * | 2014-03-31 | 2017-10-03 | Amazon Technologies, Inc. | Oversubscribed storage extents with on-demand page allocation |
US9851927B2 (en) * | 2015-09-01 | 2017-12-26 | International Business Machines Corporation | File management in a file system |
US10083082B2 (en) * | 2015-09-07 | 2018-09-25 | International Business Machines Corporation | Efficient index checkpointing in log-structured object stores |
US10671435B1 (en) * | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Data transformation caching in an artificial intelligence infrastructure |
US11221989B2 (en) * | 2018-07-31 | 2022-01-11 | International Business Machines Corporation | Tape image reclaim in hierarchical storage systems |
US11176099B2 (en) * | 2018-12-21 | 2021-11-16 | Vmware, Inc. | Lockless synchronization of LSM tree metadata in a distributed system |
US11256434B2 (en) * | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
-
2019
- 2019-04-25 CN CN201910338507.0A patent/CN111857539B/zh active Active
- 2019-04-25 CN CN202410219210.3A patent/CN118113663A/zh active Pending
- 2019-07-15 US US16/512,111 patent/US11256677B2/en active Active
-
2022
- 2022-01-31 US US17/589,755 patent/US11755556B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200341961A1 (en) | 2020-10-29 |
CN111857539A (zh) | 2020-10-30 |
CN111857539B (zh) | 2024-04-12 |
US20220156243A1 (en) | 2022-05-19 |
US11256677B2 (en) | 2022-02-22 |
US11755556B2 (en) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111857539B (zh) | 用于管理存储系统的方法、设备和计算机可读介质 | |
US10275489B1 (en) | Binary encoding-based optimizations at datastore accelerators | |
US8793227B2 (en) | Storage system for eliminating duplicated data | |
KR102338208B1 (ko) | 데이터를 처리하기 위한 방법, 장치 및 시스템 | |
CN112486860B (zh) | 管理存储系统的地址映射的方法、设备和计算机程序产品 | |
US11561930B2 (en) | Independent evictions from datastore accelerator fleet nodes | |
CN111597148B (zh) | 用于分布式文件系统的分布式元数据管理方法 | |
US20120047107A1 (en) | System and method for implementing on demand cloud database | |
JP2021500649A (ja) | シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム | |
US9742860B2 (en) | Bi-temporal key value cache system | |
US10706022B2 (en) | Space-efficient secondary indexing on distributed data stores | |
US11809382B2 (en) | System and method for supporting versioned objects | |
US10262024B1 (en) | Providing consistent access to data objects transcending storage limitations in a non-relational data store | |
US11816510B2 (en) | Elastic data partitioning of a database | |
US20200233861A1 (en) | Elastic data partitioning of a database | |
CN110807028B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
KR20140048396A (ko) | 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법 | |
US10146833B1 (en) | Write-back techniques at datastore accelerators | |
US20220342888A1 (en) | Object tagging | |
US20200233848A1 (en) | Elastic data partitioning of a database | |
CN111857556B (zh) | 管理存储对象的元数据的方法、装置和计算机程序产品 | |
CN111475424B (zh) | 用于管理存储系统的方法、设备和计算机可读存储介质 | |
US20230153300A1 (en) | Building cross table index in relational database | |
US11435926B2 (en) | Method, device, and computer program product for managing storage system | |
CN110968649B (zh) | 用于管理数据集的方法、设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |