CN111475424B - 用于管理存储***的方法、设备和计算机可读存储介质 - Google Patents

用于管理存储***的方法、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111475424B
CN111475424B CN201910065165.XA CN201910065165A CN111475424B CN 111475424 B CN111475424 B CN 111475424B CN 201910065165 A CN201910065165 A CN 201910065165A CN 111475424 B CN111475424 B CN 111475424B
Authority
CN
China
Prior art keywords
block
matrix
storage system
vector
elements
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.)
Active
Application number
CN201910065165.XA
Other languages
English (en)
Other versions
CN111475424A (zh
Inventor
雷璐
朱健
张鹏博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201910065165.XA priority Critical patent/CN111475424B/zh
Priority to US16/456,848 priority patent/US10922001B2/en
Publication of CN111475424A publication Critical patent/CN111475424A/zh
Application granted granted Critical
Publication of CN111475424B publication Critical patent/CN111475424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种用于管理存储***的方法、设备和计算机程序产品。根据本公开的示例性实现,提供了一种用于管理存储***的方法。在该方法中,基于存储***中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象。将存储***中包括的多个区块划分为多个分组。针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块。基于对象矢量和区块矢量来创建映射矩阵以用于管理存储***。进一步,提供了一种用于管理存储***的设备和计算机程序产品。采用本公开的技术方案,可以以降低处理期间所涉及的存储单元的数量以及输入/输出的时间开销。

Description

用于管理存储***的方法、设备和计算机可读存储介质
技术领域
本公开的各实现方式涉及存储***,更具体地,涉及用于管理存储***中存储的多个对象以及存储***中包括的多个区块的方法、设备和计算机程序产品。
背景技术
随着计算机技术的发展,各种存储***已经被广泛用于存储各种类型的数据。目前已经开发出了基于对象的存储***。在此类存储***中,来自多个存储设备的存储空间以区块(chunk)的方式进行管理。此时,用户数据可以作为对象来分布在存储***中的一个或多个区块中。
由于存储***中可能会包括大量区块,并且存储***的大量用户可能会频繁地向存储***中添加对象、修改对象或者删除对象。因而,在存储***中很可能会存在大量的区块已经不再被任何用户的对象所使用。此时,如何管理存储***中存储的多个对象以及存储***中包括的多个区块,成为一个研究热点。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储***的技术方案。期望该技术方案能够与现有的应用环境相兼容,并且通过改造现有应用环境的各种配置,来以更为有效的方式管理存储***。
根据本公开的第一方面,提供了一种用于管理存储***的方法。在该方法中,基于存储***中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象。将存储***中包括的多个区块划分为多个分组。针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块。基于对象矢量和区块矢量来创建映射矩阵以用于管理存储***。
根据本公开的第二方面,提供了一种用于管理存储***的设备。该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:基于存储***中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象;将存储***中包括的多个区块划分为多个分组;针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块;以及基于对象矢量和区块矢量来创建映射矩阵以用于管理存储***。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了其中可以实现本发明的方法的存储***的框图;
图2示意性示出了根据本公开的一个实现方式的用于管理存储***的框图;
图3示意性示出了根据本公开的一个实现方式的用于管理存储***的方法的流程图;
图4示意性示出了根据本公开的一个实现方式的存储***的地址映射的框图;
图5示意性示出了根据本公开的一个实现方式的用于基于地址映射来确定映射矩阵中的各个矩阵元素的数值的框图;
图6示意性示出了根据本公开的一个实现方式的用于基于映射矩阵来从存储***中回收(reclaim)区块的框图;
图7示意性示出了根据本公开一个实现方式的基于对象的分区来获取对象矩阵的框图;以及
图8示意性示出了根据本公开的示例性实现的用于管理存储***的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示意性示出了其中可以实现本发明的方法的存储***100的框图。如图1所示,可以提供资源池110,并且该资源池110可以包括多个存储设备112、114、116、……、118。尽管在此示出了多个独立的物理存储设备112、114、116、……、118,根据本公开的示例性实现,存储设备还可以是虚拟存储设备。可以基于资源池110来提供存储***100。在存储资源池110之上,还可以提供区块层120。该区块层中可以包括按照预定大小划分的多个区块,例如区块122、区块124等。可以按照存储***的具体应用环境来设置各个区块的大小,例如,可以将区块设置为128M,或者其他数值。
存储***100的用户可以经由网络130来访问区块层120中的各个区块122、124等,并且此时来自用户的数据可以以对象140的方式来存储在区块层120。基于对象140的大小或者其他策略,该对象140可以被存储至区块层120中的一个或多个区块中。具体而言,假设区块的大小被设置为128M并且对象140的大小为256M,则该对象140可以被存储在区块122和区块124中。此时,可以认为区块122被对象140所引用,并且区块124也被对象140引用。
将会理解,各个区块还可以按照地址范围来被划分为更小的存储单位。在此可以将该存储单位称为数据块(data block)。假设对象140的大小为10M,则该对象140可以被在区块122中的大小为10M的数据块中。此时,可以认为数据块被对象140引用,并且该区块122中的其余部分还可以被划分为其他大小的数据块,以便用于存储来自其他对象的数据。
将会理解,上文仅示意性示出了区块中的数据块与对象之间的引用关系。尽管上文仅示意性示出了一个数据块被一个对象引用的情况,数据块还可以同时被多个对象引用。例如,假设对象1引用数据块1,并且对象1被复制为对象2,则此时对象2也将引用数据块1。进一步,一个对象可以包括位于多个区块中的多个数据块中的数据。此时,数据块和对象之间可以具有多对多的复杂引用关系。
将会理解,随着大量用户不断地向存储***100中存储对象、更新对象以及删除对象,存储***100中的对象和区块之间的映射关系可能会不断发生变化。当某个区块中不再包括属于任何对象的数据时,则该区块中的数据不再是有效数据,因而此时可以将该区块的存储空间进行回收以用于重新分配。
目前已经提出了用于管理存储***中的区块和对象的技术方案。根据一个技术方案,可以基于待回收的区块和存储***中的对象来建立回收表。假设存储***100中存储有M个对象,并且包括N个区块,则此时的回收表如下文的表1所示。
表1回收表的示例
表1中的第一行示出了存储***100中存储的M个对象,即对象1、对象2、……、对象M。表1中的第一列示出了存储***100中包括的N个区块,即区块1、区块2、……、区块N。如表1所示,行和列的交叉点表示与该交叉点相关的对象是否被存储至与该交叉点相关联的区块中。例如,对象1与区块1的交叉点处的符号“N”表示对象1没有被存储在区块1中,对象1与区块2的交叉点处的符号“Y”表示对象1被存储在区块2中。在存储***100的运行期间,可以在预定时间段更新该回收表中的数据。如果发现某个区块不再包括来自任何对象的数据,则可以回收该区块。
例如表1所示,区块1所在的行中的全部符号均为“N”,这表示区块1中不再包括来自任何对象的数据,则此时可以回收区块1。又例如,在区块2所在的行与对象1所在的列的交叉点处的符号为“Y”,而其他符号均为“N”,这表示区块2中包括来自对象1的数据,此时不能回收区块2。
尽管可以基于上述技术方案来管理存储***100中的各个区块,然而,回收表将会占据较大的存储空间。例如,在M个对象和N个区块的情况下,该回收表将包括M×N个元素。由于通常使用单独处理资源来并行地管理有关各个对象的数据,表1中与区块1相关联的行而言,很可能出现有关大部分对象的数据已经被更新,而仅有较少对象的数据没有被更新的情况,则此时不得不等待有关全部对象的数据被更新后,才能确定区块1中是否还包括某个对象的数据。
具体而言,由于存储***100在预定时间间隔扫描回收表,对于区块2而言,此时不得不等到下一时间间隔才能获取回收表中的数据。即使在扫描之后该符号“Y”立刻被更新为“N”,也需要等到下次扫描才能执行回收操作。
进一步,在更新位于每个交叉点的数据时,都将会占用存储***100中的处理器的空间和处理器的计算资源,针对每个交叉点来频繁地进行数据读取和写入将会提高输入/输出的工作负载,进而导致存储***100的整体性能下降。
此时,如何以更高的效率来管理存储***100中的对象和区块,成为一个研究热点。为了至少部分地解决现有技术方案中的问题,根据本公开的示例性提出了一种用于管理存储***100的技术方案。在下文中,将参见图2概要介绍本公开的实现。图2示意性示出了根据本公开的一个实现方式的用于管理存储***100的框图200。如图2所示,可以基于在存储***100中存储的多个对象1、对象2、……、对象M,来建立对象矢量210。此时,对象矢量210中的对象元素关联于多个对象中的至少一个对象。将会理解,尽管图2示出了每个对象元素涉及一个对象的情况,根据本公开的示例性实现方式,每个对象元素还可以涉及多个对象。
可以将存储***100中包括的多个区块划分为多个分组,例如,第一分组可以包括区块1、区块2、……、以及区块n,第二分组可以包括区块n+1、区块n+2、……、以及区块2n。此时,针对多个分组中的一个分组,可以基于分组中的各个区块来创建区块矢量。例如,可以基于第一分组来创建区块矢量220,此时区块矢量220中的区块元素关联于第一分组中的区块。继而,可以基于对象矢量210和区块矢量220来创建映射矩阵230以用于管理存储***100。将会理解,尽管在图2中示出了各个分组包括相同数量的区块的情况。根据本公开的示例性实现方式,各个分组还可以包括不同数量的区块。
利用上述示例性实现,可以以矢量和矩阵操作的方式来管理存储***100中的各个区块和对象。具体地,通过将多个区块划分为多个分组并建立区块矢量,可以一次对区块矢量中的多个区块元素来进行操作。以此方式,可以避免逐一针对每个对象和每个区块来更新回收表中的元素的复杂。换言之,可以以批处理的方式一次处理多个区块。
假设在存储***100中存储有M个对象,存储***100中包括N个区块,并且将N个区块划分为分别包括n个区块的多个分组。采用传统方式在维护回收表时对该回收表将会产生M×N次读写操作。利用本公开的示例性实现,由于一次可以针对包括n个区块信息的区块矢量执行读写操作,此时可以将访问次数降低至M×N/n。进一步,由于每次访问操作还会涉及检查高速缓存是否命中、将数据加载至高速缓存等附加操作。访问次数的降低将会大大节省由于附加操作产生的各种额外开销,提高存储***100的整体运行效率。
另外,利用上述示例性实现,还可以确保在较短时间内完成回收表中的全部元素的更新,进而以较快的方式确定存储***100中的哪些区块不再被使用,并执行相应的回收操作。由此,还可以支持存储***100清理已经不再被使用的区块,进而解决存储***100中存储空间短缺的潜在问题。
在下文中,将参见图3描述本公开的更多细节,其中该图3示意性示出了根据本公开的一个实现方式的用于管理存储***100的方法300的流程图。在框310处,基于存储***100中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象。根据本公开的示例性实现方式,可以基于各个对象的标识符来确定对象矢量中的相应的对象元素。例如,如果存储***100中存储有对象1、对象2、……、对象M,则此时对象矢量210可以表示为:对象矢量[对象1,对象2,……,对象M]。
根据本公开的示例性实现方式,还可以将多个对象划分为多个分区,并且基于各个分区中的对象来确定对象矢量中的每个对象元素。可以简单地按照对象的标识符的顺序来划分分区,例如,可以首先确定在每个分区中包括m个对象,继而将M个对象划分至多个分区。根据本公开的示例性实现方式,还可以基于分布式哈希表(Distributed Hash Table)技术来划分分区。此时可以首先确定分区的数量,继而按照确定的数量来将多个对象划分多个分区。
根据本公开的示例性实现方式,基于以下中的至少任一项来确定多个分区的数量:多个对象的数量、存储***100中的处理器的处理性能、以及处理器的存储空间。通常而言,如果存储***100中存储了大量对象,则可以将这些对象划分至较多数量的分区。如果存储***100中仅存储了少量对象,则可以将这些对象划分至较少数量的分区。
另外,存储***100中的处理器的处理性能将会影响针对对象矢量进行操作时的性能,因而如果处理性能较高则可以处理包括较多对象元素的对象矢量,如果处理性能较低则可以处理包括较少对象元素的对象矢量。进一步,存储***100中的处理器的存储空间决定是否能够提供容纳对象矢量的存储空间。因而如果存储空间较高则可以处理包括较多对象元素的对象矢量,如果存储空间较低则可以处理包括较少对象元素的对象矢量。
在框320处,将存储***100中包括的多个区块划分为多个分组。此时,可以首先确定分组的数量。具体地,可以基于以下中的至少任一项来确定多个分组的数量,多个区块的数量、存储***中的处理器的处理性能、以及处理器的存储空间。
通常而言,如果存储***100中包括大量区块,则可以将这些区块划分至较多数量的分组。如果存储***100中仅存储了少量区块,则可以将这些区块划分至较少数量的分组。另外,存储***100中的处理器的处理性能将会影响针对区块矢量进行操作时的性能,因而如果处理性能较高则可以处理包括较多区块元素的区块矢量,如果处理性能较低则可以处理包括较少区块元素的区块矢量。进一步,存储***100中的处理器的存储空间决定是否能够提供容纳区块矢量的存储空间。因而如果存储空间较高则可以处理包括较多区块元素的区块矢量,如果存储空间较低则可以处理包括较少区块元素的区块矢量。
在框330处,针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块。例如,可以基于各个区块的区块标识符来表示区块矢量210中的各个元素。返回图2,当分组包括n个区块时,区块矢量220可以表示为按照纵向方式排列的[区块1,…,区块n],其中每个区块元素即为相对应的区块的标识符。
在框340处,基于对象矢量210和区块矢量220来创建映射矩阵230以用于管理存储***100。如图2所示,在此可以将对象矢量210和区块矢量220进行“矢量积(vectorproduct)”运算,以便获得映射矩阵230。将会理解,在本公开的上下文中,获得的映射矩阵230中的矩阵元素表示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间的地址映射关系。如图2所示,在映射矩阵230中,对象1与区块1的交叉点的位置处的数值为0,则表示对象1的数据没有被存储在区块1中。如果该交叉点处的数值为1,则表示对象1的数据被存储在区块1中。
在下文中,将详细描述如何创建映射矩阵230。根据本公开的示例性实现方式,获取存储***100的地址映射,地址映射描述多个对象与多个区块之间的地址映射关系。图4示意性示出了根据本公开的一个实现方式的存储***100的地址映射的框图400。
如图4所示,对象410可以包括片段(fragment)412、414等,并且该片段412可以被存储在存储***100中的区块420中,该片段414可以被存储在存储***100中的区块422中。此时,为了记录对象410中的各个片段被存储于何处,存储***100可以包括地址映射430,以用于描述对象410所包括的至少一个片段与至少一个区块的地址映射关系。
如图4所示,地址映射430可以包括:对象ID 432、片段ID 434(表示对象中的各个片段的ID)以及区块ID 436(表示某个片段被存储于其中的区块的ID)。可以基于存储***100中的每个对象中的每个片段来生成地址映射430中的每个条目,以便使得地址映射430描述每个对象中的每个片段被存储于哪个区块。
将会理解,图4中的地址映射430仅仅是一个示意性的数据结构,根据本公开的示例性实现,地址映射430还可以包括更多或者更少的字段。例如,地址映射430可以包括:对象ID字段,用于唯一地指示各个对象;以及区块ID列表字段,用于指示对象中的各个片段所在的区块ID的列表。通常而言,对象可以包括一个或多个片段。尽管图4示出了对象410包括多个片段的情况,该对象410还可以仅包括一个片段。
根据本公开的示例性实现方式,基于对象矢量210、区块矢量220以及地址映射创建映射矩阵230,映射矩阵230中的矩阵元素表示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间的地址映射关系。在此实现方式中,可以针对映射矩阵中的矩阵元素,来确定该矩阵元素的数值。具体地,可以基于地址映射确定与矩阵元素相关联的至少一个对象在存储***中的地址。
根据本公开的示例性实现方式,如果确定地址指向与矩阵元素相对应的区块,则可以将该矩阵元素的数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间具有地址映射关系。在下文中,将参见图5详细描述。图5示意性示出了根据本公开的一个实现方式的用于基于地址映射来确定映射矩阵中的各个矩阵元素的数值的框图500。
为了方便描述,图5示出了一个对象元素对应于一个对象的情况。地址映射510示意性示出了对象1和对象2中的各个片段被存储至存储***100中的何处。如地址映射510所示,对象1中的片段1存储至区块1,……,对象1中的片段n存储至区块n。此时,基于该地址映射510可知,映射矩阵520中的如椭圆530所示的列中的各个元素可以被设置为“1”,以便指示对象1与区块1至n均具有地址映射关系。进一步,基于该地址映射510可知,对象2中的片段1被存储至区块n+1,……,对象2中的片段n存储至区块2n。此时,如椭圆550所示的列中的各个元素可以被设置为“1”,以便指示对象2与区块n+1至2n均具有地址映射关系。
根据本公开的示例性实现方式,如果确定地址没有指向与矩阵元素相对应的区块,则可以将矩阵元素的数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间不具有地址映射关系。继续参见地址映射510,由于对象2中的各个片段并没有被存储至区块1至区块n中,因而映射矩阵520中的如椭圆540所示的列中的各个元素可以被设置为“0”,以便指示对象2与区块1至n不具有地址映射关系。利用上述示例性实现,可以基于对象矢量210、区块矢量220和地址映射510来准确地确定映射矩阵520中的各个元素。
根据本公开的示例性实现方式,针对对象矢量中的第一对象元素,确定映射矩阵中的与区块矢量中的第一区块相关联的第一组矩阵元素。此时,可以以区块矢量中包括的多个区块为单位,来确定映射矩阵中的相关元素的数值。例如,在一次写操作中,可以一次性地更新映射矩阵520中的如椭圆530所示部分的多个数值。相对于传统技术中需要逐一针对n个区块来更新回收表中的相应元素的方案,此时处理效率变为传统技术的n倍。
将会理解,由于存储***100中存在较多的处理资源,因而可以并行方式来针对对象矢量中的各个对象进行处理。根据本公开的示例性实现方式,针对对象矢量中的第二对象元素,与确定第一组矩阵元素并行地,确定映射矩阵中的与区块矢量中的第一区块相关联的第二组矩阵元素。具体地,参见图5,可以并行地确定映射矩阵520中的如椭圆530和540部分的元素的数值。
根据本公开的示例性实现方式,可以为对象1至对象M中的每个对象来分配处理资源,此时可以并行地确定映射矩阵520中的如椭圆530、540、……、560所示部分的元素的数值。利用上述示例性实现,可以以更快的速度确定对象和区块之间的映射关系,进而可以尽早发现存储***100中的不再被使用的区块,并且进行相应的回收操作。以此方式,可以解决存储***100中可能出现的存储资源短缺的问题。
根据本公开的示例性实现方式,还可以并行地处理各个区块矢量中包括的区块。例如,可以并行地确定映射矩阵520中的如椭圆540、550所示部分的元素的数值。当存储***100中包括足够计算资源的情况下,可以在一个时间周期中确定映射矩阵中的全部元素的数值。
根据本公开的示例性实现方式,如果确定映射矩阵中的与给定区块相关联的一组元素指示给定区块与一组元素相关联的全部对象不具有地址映射关系,通知存储***100以回收给定区块。在下文中,将参见图6给出更多细节。图6示意性示出了根据本公开的一个实现方式的用于基于映射矩阵来从存储***中回收区块的框图600。如图6所示,已经基于对象矢量210和区块矢量220生成了映射矩阵610。椭圆620所示的部分(数值全部为0)指示:区块1与对象1至对象M中的任一项都不具有地址映射关系,则此时可以回收区块1所占用的存储空间。
将会理解,随着存储***100的运行,用户可能会频繁地向存储***100中添加对象、修改对象或者删除对象。因而,在存储***100中的地址映射将会出现变化。此时,可以不断地获取存储***100的更新的地址映射,并且基于更新的地址映射,更新映射矩阵中的矩阵元素。此时,更新的映射矩阵可以准确地反应存储***100中的各个区块的使用状态。利用上述示例性实现,可以尽早发现存储***100中的不再被使用的区块并进行释放。
在上文中已经描述了对象矢量中的每个对象元素表示一个对象的情况。在下文中,将参见图7详细描述有关基于多个对象确定一个对象元素的更多细节。图7示意性示出了根据本公开一个实现方式的基于对象的分区来获取对象矩阵的框图。根据本公开的示例性实现方式,可以基于预定的哈希函数来将M个对象首先映射至m个分区,此时m<M。例如,可以基于哈希函数将存储***100中存储的M个对象映射至128个分区。如图7所示,此时对象矢量710中的一个对象矢量表示一个分区的标识符。
假设分区1包括多个对象1至对象K,则此时只要当对象1至对象K中的任一项位于区块1中,则对象矢量710中的分区1与区块矢量320中的区块1的交叉点处的元素将被设置为“1”,以便指示区块1与分区1具有地址映射关系。只有当对象1至对象K中没有对象位于区块1时,对象矢量710中的分区1与区块矢量320中的区块1的交叉点处的元素将被设置为“0”,以便指示区块1与分区1不具有地址映射关系。利用图7所示的示例性实现,可以大大降低对象矢量的维度,进而提高更新映射矩阵730的效率。
在上文中已经参见图2至图7详细描述了根据本公开的方法的示例,在下文中将描述相应的设备的实现。利用上述示例性实现,可以以更为快速的方式确定区块与对象之间的关系,进而防止出现对象中的某个或者某些片段被存储在待回收列表所指示的一个或多个区块中并且被错误地回收的情况。进一步,还可以提高存储***100的可靠性并确保及时回收存储***100中的不再被使用的区块。
根据本公开的示例性实现,提供了一种用于管理存储***100的装置。该装置包括:对象矢量创建模块,配置用于基于存储***中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象;划分模块,配置用于将存储***中包括的多个区块划分为多个分组;区块矢量创建模块,配置用于针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块;以及管理模块,配置用于基于对象矢量和区块矢量来创建映射矩阵以用于管理存储***。
根据本公开的示例性实现方式,管理模块包括:获取模块,配置用于获取存储***的地址映射,地址映射描述多个对象与多个区块之间的地址映射关系;以及创建模块,配置用于基于对象矢量、区块矢量以及地址映射创建映射矩阵,映射矩阵中的矩阵元素表示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间的地址映射关系。
根据本公开的示例性实现方式,创建模块包括:地址模块,配置用于针对映射矩阵中的矩阵元素,基于地址映射,确定与矩阵元素相关联的至少一个对象在存储***中的地址;以及元素确定模块,配置用于基于地址确定矩阵元素的数值。
根据本公开的示例性实现方式,元素确定模块进一步配置用于:响应于确定地址指向与矩阵元素相对应的区块,将数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间具有地址映射关系。
根据本公开的示例性实现方式,元素确定模块进一步配置用于:响应于确定地址没有指向与矩阵元素相对应的区块,将数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间不具有地址映射关系。
根据本公开的示例性实现方式,创建模块进一步包括:第一确定模块,配置用于针对对象矢量中的第一对象元素,确定映射矩阵中的与区块矢量中的第一区块相关联的第一组矩阵元素;以及第二确定模块,配置用于针对对象矢量中的第二对象元素,与所述第一确定模块并行地,确定映射矩阵中的与区块矢量中的第一区块相关联的第二组矩阵元素。
根据本公开的示例性实现方式,管理模块包括:通知模块,配置用于响应于确定映射矩阵中的与给定区块相关联的一组元素指示给定区块与一组元素相关联的全部对象不具有地址映射关系,通知存储***以回收给定区块。
根据本公开的示例性实现方式,管理模块包括:更新模块,配置用于获取存储***的更新的地址映射;以及基于更新的地址映射,更新映射矩阵中的矩阵元素。
根据本公开的示例性实现方式,划分模块进一步配置用于:基于以下中的至少任一项来确定多个分组的数量,多个区块的数量、存储***中的处理器的处理性能、以及处理器的存储空间。
根据本公开的示例性实现方式,对象矢量创建模块进一步配置用于:将多个对象划分为多个分区;以及基于多个分区来确定对象矢量中的多个对象元素。
根据本公开的示例性实现方式,将多个对象划分为多个分区包括:基于以下中的至少任一项来确定多个分区的数量,多个对象的数量、存储***中的处理器的处理性能、以及处理器的存储空间。
图8示意性示出了根据本公开的示例性实现的用于管理存储***的设备800的框图。如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元801执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实现中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实现中,CPU 801也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种用于管理存储***的设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:基于存储***中存储的多个对象来创建对象矢量,对象矢量中的对象元素关联于多个对象中的至少一个对象;将存储***中包括的多个区块划分为多个分组;针对多个分组中的一个分组,基于分组中的各个区块来创建区块矢量,区块矢量中的区块元素关联于分组中的区块;以及基于对象矢量和区块矢量来创建映射矩阵以用于管理存储***。
根据本公开的示例性实现方式,基于对象矢量和区块矢量来管理存储***包括:获取存储***的地址映射,地址映射描述多个对象与多个区块之间的地址映射关系;以及基于对象矢量、区块矢量以及地址映射创建映射矩阵,映射矩阵中的矩阵元素表示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间的地址映射关系。
根据本公开的示例性实现方式,基于对象矢量、区块矢量以及地址映射创建映射矩阵包括:针对映射矩阵中的矩阵元素,基于地址映射,确定与矩阵元素相关联的至少一个对象在存储***中的地址;以及基于地址确定矩阵元素的数值。
根据本公开的示例性实现方式,基于地址确定矩阵元素的数值包括以下中的至少任一项:响应于确定地址指向与矩阵元素相对应的区块,将数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间具有地址映射关系;以及响应于确定地址没有指向与矩阵元素相对应的区块,将数值设置为指示与矩阵元素相关联的至少一个对象以及与矩阵元素相关联的区块之间不具有地址映射关系。
根据本公开的示例性实现方式,创建映射矩阵进一步包括:针对对象矢量中的第一对象元素,确定映射矩阵中的与区块矢量中的第一区块相关联的第一组矩阵元素;以及针对对象矢量中的第二对象元素,与确定第一组矩阵元素并行地,确定映射矩阵中的与区块矢量中的第一区块相关联的第二组矩阵元素。
根据本公开的示例性实现方式,管理存储***包括:响应于确定映射矩阵中的与给定区块相关联的一组元素指示给定区块与一组元素相关联的全部对象不具有地址映射关系,通知存储***以回收给定区块。
根据本公开的示例性实现方式,管理存储***包括:获取存储***的更新的地址映射;以及基于更新的地址映射,更新映射矩阵中的矩阵元素。
根据本公开的示例性实现方式,将存储***中包括的多个区块划分为多个分组包括:基于以下中的至少任一项来确定多个分组的数量,多个区块的数量、存储***中的处理器的处理性能、以及处理器的存储空间。
根据本公开的示例性实现方式,基于存储***中存储的多个对象来创建对象矢量包括:将多个对象划分为多个分区;以及基于多个分区来确定对象矢量中的多个对象元素。
根据本公开的示例性实现方式,将多个对象划分为多个分区包括:基于以下中的至少任一项来确定多个分区的数量,多个对象的数量、存储***中的处理器的处理性能、以及处理器的存储空间。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。

Claims (21)

1.一种用于管理存储***的方法,包括:
基于所述存储***中存储的多个对象来创建对象矢量,所述对象矢量包括具有一组对象元素的一维数据结构,所述一组对象元素中的对象元素关联于所述多个对象中的至少一个对象;
将所述存储***中包括的多个区块划分为多个分组;
针对所述多个分组中的一个分组,基于所述一个分组中的各个区块来创建区块矢量,所述区块矢量包括具有一组区块元素的一维数据结构,所述一组区块元素中的区块元素关联于所述一个分组中的区块;以及
基于所述对象矢量和所述区块矢量来创建映射矩阵以用于管理所述存储***,所述映射矩阵指示由所述对象矢量标识的对象存储在由所述区块矢量标识的区块中的位置。
2.根据权利要求1所述的方法,其中基于所述对象矢量和所述区块矢量来管理所述存储***包括:
获取所述存储***的地址映射,所述地址映射描述所述多个对象与所述多个区块之间的地址映射关系;以及
基于所述对象矢量、所述区块矢量以及所述地址映射创建所述映射矩阵,所述映射矩阵中的矩阵元素表示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间的地址映射关系。
3.根据权利要求2所述的方法,其中基于所述对象矢量、所述区块矢量以及所述地址映射创建映射矩阵包括:针对所述映射矩阵中的矩阵元素,
基于所述地址映射,确定与所述矩阵元素相关联的至少一个对象在所述存储***中的地址;以及
基于所述地址确定所述矩阵元素的数值。
4.根据权利要求3所述的方法,其中基于所述地址确定所述矩阵元素的数值包括以下中的至少任一项:
响应于确定所述地址指向与所述矩阵元素相对应的区块,将所述数值设置为指示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间具有地址映射关系;以及
响应于确定所述地址没有指向与所述矩阵元素相对应的区块,将所述数值设置为指示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间不具有地址映射关系。
5.根据权利要求3所述的方法,其中创建所述映射矩阵进一步包括:
针对所述对象矢量中的第一对象元素,确定所述映射矩阵中的与所述区块矢量中的第一区块相关联的第一组矩阵元素;以及
针对所述对象矢量中的第二对象元素,与确定所述第一组矩阵元素并行地,确定所述映射矩阵中的与所述区块矢量中的第一区块相关联的第二组矩阵元素。
6.根据权利要求2所述的方法,其中管理所述存储***包括:
响应于确定所述映射矩阵中的与给定区块相关联的一组元素指示所述给定区块与所述一组元素相关联的全部对象不具有地址映射关系,通知所述存储***以回收所述给定区块。
7.根据权利要求2所述的方法,其中管理所述存储***包括:
获取所述存储***的更新的所述地址映射;以及
基于更新的所述地址映射,更新所述映射矩阵中的矩阵元素。
8.根据权利要求1所述的方法,其中将所述存储***中包括的多个区块划分为多个分组包括:基于以下中的至少任一项来确定所述多个分组的数量,
所述多个区块的数量、所述存储***中的处理器的处理性能、以及所述处理器的存储空间。
9.根据权利要求1所述的方法,其中基于所述存储***中存储的多个对象来创建对象矢量包括:
将所述多个对象划分为多个分区;以及
基于所述多个分区来确定所述对象矢量中的多个对象元素。
10.根据权利要求9所述的方法,其中将所述多个对象划分为多个分区包括:基于以下中的至少任一项来确定所述多个分区的数量,
所述多个对象的数量、所述存储***中的处理器的处理性能、以及所述处理器的存储空间。
11.一种用于管理存储***的设备,包括:
至少一个处理器;
易失性存储器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行动作,所述动作包括:
基于所述存储***中存储的多个对象来创建对象矢量,所述对象矢量包括具有一组对象元素的一维数据结构,所述一组对象元素中的对象元素关联于所述多个对象中的至少一个对象;
将所述存储***中包括的多个区块划分为多个分组;
针对所述多个分组中的一个分组,基于所述一个分组中的各个区块来创建区块矢量,所述区块矢量包括具有一组区块元素的一维数据结构,所述一组区块元素中的区块元素关联于所述一个分组中的区块;以及
基于所述对象矢量和所述区块矢量来创建映射矩阵以用于管理所述存储***,所述映射矩阵指示由所述对象矢量标识的对象存储在由所述区块矢量标识的区块中的位置。
12.根据权利要求11所述的设备,其中基于所述对象矢量和所述区块矢量来管理所述存储***包括:
获取所述存储***的地址映射,所述地址映射描述所述多个对象与所述多个区块之间的地址映射关系;以及
基于所述对象矢量、所述区块矢量以及所述地址映射创建所述映射矩阵,所述映射矩阵中的矩阵元素表示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间的地址映射关系。
13.根据权利要求12所述的设备,其中基于所述对象矢量、所述区块矢量以及所述地址映射创建映射矩阵包括:针对所述映射矩阵中的矩阵元素,
基于所述地址映射,确定与所述矩阵元素相关联的至少一个对象在所述存储***中的地址;以及
基于所述地址确定所述矩阵元素的数值。
14.根据权利要求13所述的设备,其中基于所述地址确定所述矩阵元素的数值包括以下中的至少任一项:
响应于确定所述地址指向与所述矩阵元素相对应的区块,将所述数值设置为指示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间具有地址映射关系;以及
响应于确定所述地址没有指向与所述矩阵元素相对应的区块,将所述数值设置为指示与所述矩阵元素相关联的至少一个对象以及与所述矩阵元素相关联的区块之间不具有地址映射关系。
15.根据权利要求13所述的设备,其中创建所述映射矩阵进一步包括:
针对所述对象矢量中的第一对象元素,确定所述映射矩阵中的与所述区块矢量中的第一区块相关联的第一组矩阵元素;以及
针对所述对象矢量中的第二对象元素,与确定所述第一组矩阵元素并行地,确定所述映射矩阵中的与所述区块矢量中的第一区块相关联的第二组矩阵元素。
16.根据权利要求12所述的设备,其中管理所述存储***包括:
响应于确定所述映射矩阵中的与给定区块相关联的一组元素指示所述给定区块与所述一组元素相关联的全部对象不具有地址映射关系,通知所述存储***以回收所述给定区块。
17.根据权利要求12所述的设备,其中管理所述存储***包括:
获取所述存储***的更新的所述地址映射;以及
基于更新的所述地址映射,更新所述映射矩阵中的矩阵元素。
18.根据权利要求11所述的设备,其中将所述存储***中包括的多个区块划分为多个分组包括:基于以下中的至少任一项来确定所述多个分组的数量,
所述多个区块的数量、所述存储***中的处理器的处理性能、以及所述处理器的存储空间。
19.根据权利要求11所述的设备,其中基于所述存储***中存储的多个对象来创建对象矢量包括:
将所述多个对象划分为多个分区;以及
基于所述多个分区来确定所述对象矢量中的多个对象元素。
20.根据权利要求19所述的设备,其中将所述多个对象划分为多个分区包括:基于以下中的至少任一项来确定所述多个分区的数量,
所述多个对象的数量、所述存储***中的处理器的处理性能、以及所述处理器的存储空间。
21.一种计算机可读存储介质,其上存储计算机可读指令,所述计算机可读指令用于使计算机执行根据权利要求1-10中的任一项所述的方法。
CN201910065165.XA 2019-01-23 2019-01-23 用于管理存储***的方法、设备和计算机可读存储介质 Active CN111475424B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910065165.XA CN111475424B (zh) 2019-01-23 2019-01-23 用于管理存储***的方法、设备和计算机可读存储介质
US16/456,848 US10922001B2 (en) 2019-01-23 2019-06-28 Vector-based storage management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910065165.XA CN111475424B (zh) 2019-01-23 2019-01-23 用于管理存储***的方法、设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111475424A CN111475424A (zh) 2020-07-31
CN111475424B true CN111475424B (zh) 2023-07-28

Family

ID=71609858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910065165.XA Active CN111475424B (zh) 2019-01-23 2019-01-23 用于管理存储***的方法、设备和计算机可读存储介质

Country Status (2)

Country Link
US (1) US10922001B2 (zh)
CN (1) CN111475424B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11340811B2 (en) * 2019-09-12 2022-05-24 EMC IP Holding Company LLC Determining reclaim information for a storage block based on data length and matching write and delete parameters
CN112699676B (zh) * 2020-12-31 2024-04-12 中国农业银行股份有限公司 一种地址相似关系生成方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360434A (zh) * 2011-06-16 2017-11-17 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
CN108228085A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
CN109144966A (zh) * 2018-07-06 2019-01-04 航天星图科技(北京)有限公司 一种海量时空数据的高效组织与管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108687B2 (en) * 2015-01-21 2018-10-23 Commvault Systems, Inc. Database protection using block-level mapping

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360434A (zh) * 2011-06-16 2017-11-17 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
CN108228085A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
CN109144966A (zh) * 2018-07-06 2019-01-04 航天星图科技(北京)有限公司 一种海量时空数据的高效组织与管理方法

Also Published As

Publication number Publication date
US10922001B2 (en) 2021-02-16
US20200233580A1 (en) 2020-07-23
CN111475424A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
US11157449B2 (en) Managing data in storage according to a log structure
CN107870728B (zh) 用于移动数据的方法和设备
US10831654B2 (en) Cache management using multiple cache history lists
EP3260993A1 (en) File operation method and device
CN111857539B (zh) 用于管理存储***的方法、设备和计算机可读介质
CN111183411B (zh) 用于虚拟机的动态地址转换
US10936499B2 (en) Method, device and computer programme product for storage management
CN111475424B (zh) 用于管理存储***的方法、设备和计算机可读存储介质
US11093389B2 (en) Method, apparatus, and computer program product for managing storage system
CN108399046B (zh) 文件操作请求处理方法和装置
CN114365109A (zh) 启用rdma的键-值存储库
CN111857556B (zh) 管理存储对象的元数据的方法、装置和计算机程序产品
CN114726657B (zh) 中断管理和数据收发管理的方法、装置及智能网卡
CN107291628B (zh) 访问数据存储设备的方法和装置
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN113342270A (zh) 卷卸载方法、装置和电子设备
CN110968649B (zh) 用于管理数据集的方法、设备和计算机程序产品
US20240028519A1 (en) Data processing method, electronic device and computer program product
US8966220B2 (en) Optimizing large page processing
US11663127B2 (en) Method, electronic device and computer program product for managing storage system
CN112306372B (zh) 用于处理数据的方法、设备和程序产品
US11435926B2 (en) Method, device, and computer program product for managing storage system
CN112486400A (zh) 管理存储***的索引的方法、设备和计算机程序产品
CN111857547B (zh) 用于管理数据存储的方法、设备和计算机可读介质
CN117389475A (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
GR01 Patent grant
GR01 Patent grant