CN110737392A - 管理存储系统中的地址的方法、设备和计算机程序产品 - Google Patents
管理存储系统中的地址的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN110737392A CN110737392A CN201810801740.3A CN201810801740A CN110737392A CN 110737392 A CN110737392 A CN 110737392A CN 201810801740 A CN201810801740 A CN 201810801740A CN 110737392 A CN110737392 A CN 110737392A
- Authority
- CN
- China
- Prior art keywords
- address page
- address
- count
- page
- given
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/465—Structured object, e.g. database record
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)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种管理存储系统中的地址的方法、设备和计算机程序产品。根据本公开的示例性实现,提供了一种用于管理存储系统中地址的方法。在该方法中,如果针对存储系统中的数据进行访问的访问请求,确定指向存储系统中的目标数据的地址的地址页面。基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态。设置描述地址页面被引用的次数的计数。继而,基于计数,在存储系统的控制节点处执行事务。利用上述方法,可以加快对存储系统中的地址的访问速度,进而提高存储系统的整体响应速度。进一步,提供了管理存储系统中的地址的设备和计算机程序产品。
Description
技术领域
本公开的各实现方式涉及地址管理,更具体地,涉及用于管理存储系统中的地址的方法、设备和计算机程序产品。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。在提高数据存储能力的同时,用户对于数据可靠性和存储系统的响应时间也提供了越来越高的需求。目前已经开发出了支持更大存储空间的多种新型的存储系统,随着存储空间的增大,地址的长度也逐渐增大。在这些存储系统中,如何以更为有效的方式来管理指向用于访问存储系统中的用户数据的地址数据,成为一个研究热点。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储系统中的地址的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为有效的方式管理存储系统。
根据本公开的第一方面,提供了一种用于管理存储系统中地址的方法。在该方法中,响应于针对存储系统中的数据进行访问的访问请求,可以确定指向存储系统中的目标数据的地址的地址页面。基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态。设置描述地址页面被引用的次数的计数。继而,基于计数,在存储系统的控制节点处执行事务。
根据本公开的第二方面,提供了一种用于管理地址数据的设备。该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:响应于针对存储系统中的数据进行访问的访问请求,确定指向存储系统中的目标数据的地址的地址页面;基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态;设置描述地址页面被引用的次数的计数;以及基于计数,在存储系统的控制节点处执行事务
根据本公开的第三方面,提供了一种计算机程序产品,该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了其中可以实现本公开的方法的存储系统的示意图;
图2示意性示出了根据本公开的一个实现方式的用于访问存储系统中的数据的框图;
图3示意性示出了根据本公开的一个实现方式的用于管理地址的方法的流程图;
图4示意性示出了根据本公开的一个实现方式的地址的结构的框图;
图5示意性示出了根据本公开的一个实现方式的用于管理地址的控制结构的框图;
图6示意性示出了根据本公开的一个实现方式的事务节点的框图;
图7示意性示出了根据本公开的一个实现方式的地址页面的框图;
图8示意性示出了根据本公开一个实现方式的用于启动事务的方法的流程图;
图9示意性示出了根据本公开一个实现方式的用于读取事务的方法的流程图;
图10示意性示出了根据本公开一个实现方式的用于写入事务的方法的流程图;
图11示意性示出了根据本公开一个实现方式的用于读改写事务的方法的流程图;
图12示意性示出了根据本公开一个实现方式的用于在控制节点处本地执行事务的方法的流程图;
图13示意性示出了根据本公开一个实现方式的用于在本地提交未修改地址页面的方法的流程图;
图14示意性示出了根据本公开一个实现方式的用于更新针对地址页面的计数的方法的流程图;
图15示意性示出了根据本公开一个实现方式的用于在本地提交已修改地址页面的方法的流程图;
图16示意性示出了根据本公开一个实现方式的用于在第一控制节点和第二控制节点处提交事务的方法的流程图;
图17示意性示出了根据本公开一个实现方式的用于继续在本地提交事务的方法的流程图;以及
图18示意性示出了根据本公开的一个实现方式的用于管理地址的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示意性示出了其中可以实现本公开的方法的存储系统100的示意图。如图1所示,存储系统110可以包括多个存储设备112、114、116、……、118,此时存储系统110可以经由控制节点120来服务于来自用户的数据访问请求130。控制节点120可以包括控制器122和存储器124。当控制节点120接收到来自用户的数据访问请求130,可以利用控制器122来将目标数据加载至存储器124中,以便服务于该数据访问请求130。将会理解,尽管在图1中仅示意性示出了一个控制节点120(本地控制节点),在其他实现方式中,还可以包括另一控制节点(对端控制节点)。在此两个控制节点可以并行地服务于来自用户的多个数据访问请求。
图2示意性示出了用于访问存储系统中的数据的框图200。如图2所示,当接收到数据访问请求130时,首先需要从该数据访问请求130中解析期望被访问的目标数据的地址210,并将该地址210加载至存储器124中。在此的地址210可以指向数据访问请求130中所定义的目标数据220在存储系统110中的位置。
将会理解,如何管理地址是影响存储系统110的响应速度的一个关键因素。目前已经提出了在存储系统124中设置专门的高速缓存来存储与数据访问请求130相关联的地址,然而现有的技术方案采用传统的高速缓存技术方案来管理地址,因而导致在管理地址时效率低下。
为了解决上述缺陷,本公开的实现方式提供了一种用于管理存储系统中的地址的方法、设备和计算机程序产品。在本公开的实现方式中,针对接收到的数据访问请求建立事务,以用于管理与数据访问相关联的地址。利用上述示例性实现,可以提高管理地址的性能。
在该方法中,响应于针对存储系统中的数据进行访问的访问请求,确定指向存储系统中的目标数据的地址的地址页面。基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态。设置描述地址页面被引用的次数的计数。基于计数,在存储系统的控制节点处执行事务。在下文中,将参加图3详细描述根据本公开的方法的详细流程。
图3示意性示出了根据本公开的一个实现方式的用于管理地址的方法300的流程图。在框310处,确定是否接收到针对存储系统110中的数据进行访问的访问请求。如果确定结果为“是”,则方法300前进至框320。在框320处,确定指向存储系统中的目标数据的地址的地址页面。这里的地址页面可以存储指向目标数据的地址。根据本公开的示例性实现,该地址可以采用多种方式存储。例如,地址可以利用目标数据在存储系统110中的开始地址和目标数据的长度来表示。又例如,当地址采用树状存储结构时,还可以以树状存储结构中的各个层级中的节点的路径来表示。
在下文中,将参见图4详细描述有关地址页面的更多细节。图4示意性示出了根据本公开的一个实现方式的地址的结构400的框图。如图4所示,存储系统110中的数据的地址可以被存储在树形结构中。该树形结构例如二叉树或者其他树形结构。树可以具有多个层级,例如,树中的节点410位于树的第一层级、节点420和422位于树的第二层级、节点430、432和434位于树的第三层级、而节点440位于第四层级。尽管在图4中示出的树具有四个层级,根据本公开的示例性实现,还可以按照其他的树形结构来存储地址。
在此实现中,地址页面450可以包括一组地址,一组地址中的每个地址描述树形结构中的每个层级中的地址。例如,地址页面450可以分别指向节点410、420、430和440,并且包括每个节点中的数据。可以在此的地址页面450可以具有不同的长度。例如,地址页面450可以具有64位的长度。
返回图3,在框330处,基于地址页面生成用于管理地址页面的事务,在此事务至少包括地址页面的指示符和事务的状态。将会理解,事务可以具有不同的状态,以便指示在执行事务的过程中前进至哪种状态。具体地,事务可以包括如下状态:
(1)TX_STATE_FREE:表示事务处于空闲状态。
(2)TX_STATE_STARTED:表示事务已经被启动并且处于开始状态。
(3)TX_STATE_LOCAL_COMMITTING:表示事务在本地控制节点处提交。
(4)TX_STATE_PEER_COMMITTING:表示事务在对端控制节点处提交。
(5)TX_STATE_PEER_COMMITTED:表示事务已经在对端处被提交。
在框340处,设置描述地址页面被引用的次数的计数(counter)。继而,在框350处,可以基于计数来在存储系统110的控制节点120处执行事务。在此实现中,可以设置多个数据结构来用于管理地址页面。图5示意性示出了根据本公开的一个实现方式的用于管理地址的控制结构500的框图。如图5所示,可以在控制节点124处设置控制控制结构500,该控制结构500可以包括:地址页面缓存(page cache)510,用于存储与接收到的数据访问请求所涉及的地址的地址页面;空闲地址页面列表520,用于指示在该控制节点124处可以分配用于使用的空闲地址页面;空闲事务列表530,用于指示在该控制节点124处可以分配用于使用的空闲事务;清洁地址页面列表540,用于指示在存储系统110执行期间被使用然而内容并未发生改变的地址页面;以及脏地址页面列表550,用于指示在存储系统110执行期间被使用并且内容已经发生改变的地址页面。根据本公开的示例性实现,可以基于最近最少使用原则来构造上述清洁地址页面列表540和脏地址页面列表550。
将会理解,在此的地址页面缓存可以采用多种数据结构。根据本公开的示例性实现,可以以列表的方式来设置地址页面缓存。此时,可以按照各个地址页面被使用的顺序来逐一将各个地址页面加载至地址页面缓存。根据本公开的示例性实现,为了提高针对页面缓存的管理效率,还可以基于哈希函数来设置地址页面缓存。例如,可以基于哈希函数来将地址页面缓存的整个存储空间划分为不同的桶(bucket),并且按照各个地址页面中的内容的哈希值来将各个地址页面放置到相应的桶中。将会理解,为了避免在操作期间的访问冲突,还可以在操作某个桶中的地址页面时,首先将该桶锁定。在操作完成后,可以解锁以便该桶中的地址页面可以用于其他操作。
将会理解,为了确保存储系统110中的数据一致性,因而需要确保事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)(缩写为ACID)。根据本公开的示例性实现,可以基于上述控制结构500来实现满足ACID要求的存储系统110。将会理解,由于可以部署两个控制节点来用于控制针对存储系统110的数据访问操作,因而此时需要将在一个控制节点处被改变的数据镜像(mirror)至另一控制节点。此时,在控制结构500处还可以分别记录用于本地控制节点的地址页面缓存的地址以及用于对端(peer)控制节点的地址页面缓存的地址。
图6示意性示出了根据本公开的一个实现方式的事务节点600的框图。如图6所示,事务节点600可以包括可用地址页面列表610,用于指示已经分配给该事务节点600所表示的事务的地址页面。通过预先向事务分配由可用地址页面列表610指示的多个地址页面,可以避免在存储系统运行过程中出现可用地址页面短缺进而造成死锁的情况。事务节点600还可以包括事务状态620和地址页面列表630。具体地,事务状态620可以涉及上文描述的多个状态;并且地址页面列表630可以包括与该事务节点600所表示的事务涉及的地址页面。将会理解,当地址页面采用在上文参见图4描述的四级结构时,地址页面列表630中可以包括有关节点410、420、430和440所示的信息。
图7示意性示出了根据本公开的一个实现方式的地址页面节点700的框图。该地址页面节点710例如可以包括:地址页面ID 710,用于指示地址页面的唯一编号;以及计数720,用于记录该地址页面被引用的次数。将会理解,在本公开的上下文中,引用是指地址页面被使用,包括该地址页面被数据访问请求访问以及在存储系统内部为确保数据一致性所执行的访问。进一步,地址页面节点710还可以包括地址页面状态730,该地址页面状态730例如可以选自以下状态。
(1)PD_STATE_INVALID:表示该地址页面处于无效状态。例如,已经在地址页面缓存中分配空间然而地址页面尚未被完全加载到所分配的空间中,此时地址页面处于无效状态。又例如,未被分配的可用地址页面也处于此状态。
(2)PD_STATE_VALID:表示该地址页面处于有效状态。例如,在上述无效状态之后,已经将地址页面完全加载后,则该地址页面将改变至有效状态。
(3)PD_STATE_DIRTY:表示该地址页面中的数据是有效的,其中的数据已经被修改,并且尚未被冲刷至存储系统的存储设备中。
(4)PD_STATE_DIRTY_PREPARE:表示该地址页面被一个事务所操作,并且该事务尚未被提交,此时地址页面的内容可能被修改。
(5)PD_STATE_FLUSHING:表示该地址页面中的数据当前正在被冲刷至存储系统的存储设备。
根据本公开的示例性实现,生成任务可以包括启动(start)过程。具体地,图8示意性示出了根据本公开一个实现方式的用于启动事务的方法800的流程图。在框810处,可以首先向事务分配可用的事务标识符,在此可以从上文图5所示的空闲事务列表530中选择可用的标识符并进行分配。在框820处,可以向事务分配可用地址页面,并且将分配的地址页面加入事务节点600中的可用地址页面列表610。将会理解,在此可以估计事务将会使用的地址页面的数量,并基于估计的数量从控制结构500中的空闲地址页面列表520中选择相应数量的空闲地址页面并进行分配。在框830处,可以将事务的状态设置为TX_STATE_STARTED,以表示事务已经被启动。
根据本公开的示例性实现,可以首先确定访问请求的类型,继而,基于类型和地址页面生成事务。利用上述示例性实现,可以有针对性地根据不同类型的访问请求来确定在后续的事务中将要执行哪些操作。根据本公开的示例性实现,访问请求可以包括读取请求、写入请求以及读改写(read-modify-write)请求。在下文中,将分别参见图9至图11来详细描述。
根据本公开的示例性实现,如果确定访问请求指示将要针对地址页面进行读操作,则可以生成读事务。概括而言,可以首先确定在地址页面缓存中是否存在该地址页面,如果未命中(miss)则将地址页面添加至地址页面缓存中,并将地址页面加入事务。进一步,还可以设置描述地址页面被引用的次数的计数。在此可以将计数从初始值增加预定步长,例如在初始值为0的情况下,可以将针对地址页面的计数设置为1。如果在地址页面缓存中存在该地址页面,则表示在处理先前的数据访问请求已经将该地址页面加载至地址页面缓存中,此时只需要从地址页面缓存中获取相应的地址页面并增加该地址页面的计数。
在下文中,将参见图9详细描述如何处理读请求。图9示意性示出了根据本公开一个实现方式的用于读取事务的方法900的流程图。如图9所示,如果检测到接收到的数据访问请求130是读请求,则在框910处启动方法900。在框920处,判断该数据访问请求130所指示的地址页面是否存在于地址页面缓存920中。如果不存在,则方法900前进至框930,此时可以分配空闲地址页面,并且将所分配的地址页面的状态设置为PD_STATE_INVALID。继而在框940处,可以在后台执行加载过程以便将地址页面中的数据加载至地址页面缓存。
返回框920,如果确定地址页面没有存在于地址页面缓存中,则方法900前进至框950处以从地址页面缓存中获取找到的地址页面。接着,在框960处可以判断地址页面的状态。将会理解,由于无效状态和冲刷状态并非稳定状态,此时需要等待存储系统110中的其他操作的结果才能执行后续步骤。因而,在框960处,如果确定地址页面状态为PD_STATE_INVALID或者PD_STATE_FLUSHING,则方法900前进至框970处并执行等待地址页面发生变化。在框972处,如果确定地址页面状态改变,则方法900返回框920。如果地址页面的状态未出现变化,则方法900返回值框970处以便执行进一步的等待。
在框960处,如果确定地址页面的状态不是上述两个不稳定状态,则方法900前进至框980。在框980处,将地址页面加入事务节点600中的地址页面列表630。在框982处,可以从控制结构500中的相应的列表(清洁地址页面列表540和脏地址页面列表550)中去除该地址页面。
将会理解,尽管在图9中未示出,在方法900开始之后还可以首先锁定基于地址页面的哈希值所确定的桶,并且在方法900结束之前还可以对该桶进行解锁。
根据本公开的示例性实现,如果确定访问请求指示将要针对地址页面进行写入操作,则可以执行用于写入事务的操作。概括而言,可以将地址页面添加至地址页面缓存中,增加针对地址页面的计数,并且将地址页面加入事务。以此方式,可以建立专用于处理写入操作的事务。
在下文中将参见图10详细描述更多细节,图10示意性示出了根据本公开一个实现方式的用于写入事务的方法1000的流程图。如图10所示,在框1010处,可以分配空闲地址页面,并且将所分配的地址页面的状态设置为PD_STATE_DIRTY_PREPARED。在框1020处,可以将地址页面加入地址页面缓存。在框1030处,可以将地址页面加入事务节点600中的地址页面列表630,并且增加地址页面节点中的针对该地址页面的计数。将会理解,由于在存储系统110的上层操作中已经确保不会针对相同的地址页面执行写操作,因而在此的方法1000中并不会涉及写冲突。
将会理解,尽管在图10中未示出,在方法1000开始之后还可以首先锁定基于地址页面的哈希值所确定的桶,并且在方法1000结束之前还可以对该桶进行解锁。
根据本公开的示例性实现,如果确定访问请求指示将要针对地址页面进行读改写操作,则可以执行用于读改写事务的操作。概括而言,可以生成地址页面的副本,增加针对地址页面的计数以及针对副本的计数,并且将地址页面以及副本加入事务。
在下文中将参见图11详细描述更多细节,图11示意性示出了根据本公开一个实现方式的用于读改写事务的方法1100的流程图。方法1100大体上类似于如图9所示的方法900,不同之处在以阴影示出的框1110和1112。将会理解,读改写操作需要首先读取地址页面中的内容,继而对该读取的内容进行修改。为了防止在修改期间出现潜在故障,可以在框1110处生成该地址页面的副本,并且后期对副本进行修改而保持原始地址页面内容不变。以此方式,当存储系统中出现故障并且导致修改未完成时,可以基于原始地址页面来执行恢复。继而,在框1112处,可以将原始地址页面和副本两者加入事务节点600中的地址页面列表630,并且增加针对两者的计数。
将会理解,尽管在图11中未示出,在方法1100开始之后还可以首先锁定基于地址页面的哈希值所确定的桶,并且在方法1100结束之前还可以对该桶进行解锁。
在上文中已经描述了如何基于数据访问请求130所涉及的类型来生成相应的事务,在下文中将参见图12至图15描述如何在控制节点处执行按照上文的方法生成的事务。
根据本公开的示例性实现,可以在存储系统110的控制节点130处执行事务。具体地,可以针对事务节点中的地址页面列表中的各个地址页面来执行如下操作。针对事务中的给定地址页面而言,可以首先确定指示给定地址页面的状态(该状态指示是否被修改的状态)。继而,可以基于确定的状态更新针对给定地址页面的计数以及地址页面缓存。在下文中,将参见图12详细描述如何在控制节点130处执行事务。将会理解,当仅有一个本地控制节点用于控制对存储系统110的访问时,可以仅在该控制节点处执行如图12描述的方法1200。当存在对端控制节点时,还需要分别在本地控制节点和对端控制节点处执行不同的操作。
图12示意性示出了根据本公开一个实现方式的用于在控制节点处本地执行事务的方法1200的流程图。利用上述示例性实现,可以逐一针对事务所涉及的全部地址页面进行操作。进一步,通过基于地址页面是否被修改来执行相应的操作,可以提高管理地址的效率。如图12所示,方法1200开始于框1210。继而,在框1220处,可以将事务的状态设置为TX_STATE_LOCAL_COMMITTING,以指示该事务处于本地提交状态。将会理解,在此方法1200中需要逐一针对事务所涉及的全部地址页面执行操作,因而在框1230处可以判断是否已经处理了全部地址页面。如果判断结果为“是”,则方法1200前进至1240并且在此方法1200结束。如果判断结果为“否”,则方法1200前进至框1250。
在框1250处,可以确定待提交的下一地址页面并锁定该地址页面所涉及的桶,以此方式可以避免在存储系统110的操作期间产生数据不一致的问题。接着,在框1260处,如果地址页面被修改,则方法1200前进至框1270以便针对未被修改的地址页面进行处理。在框1260处,如果地址页面被修改,则方法前进至框1280以便针对已经被修改的地址页面进行处理。
根据本公开的示例性实现,针对未被修改的地址页面,可以首先确定地址页面的类型。在此的类型是指该地址页面是否为在读改写期间创建的副本。如果判断结果为“是”则该地址页面类型为副本类型,否则,该地址页面类型为普通类型。对于普通类型的地址页面,可以更新针对该地址页面的计数。如果该地址页面类型为副本类型,则可以将原始地址页面与副本进行解耦,并从地址页面缓存中释放给定地址页面。利用上述示例性实现,针对不同类型的地址页面执行不同的处理,可以以更为有效的方式管理地址。
在下文中,将参见图13来详细描述如何在本地提交未被修改的地址页面。图13示意性示出了根据本公开一个实现方式的用于在本地提交未修改地址页面的方法1300的流程图。方法1300开始于框1310,在框1320处,可以确定当前正在被处理的地址页面的类型,如果确定的类型是副本类型,则方法1300前进至框1330。在框1330处,可以将地址页面以及该地址页面作为其副本的原始地址页面进行解耦。在此,“解耦”是指断开两者之间的关联关系,此时,由于副本并未被修改,因而不必保持副本中的内容,而是可以释放副本所占用的存储空间。继而,在框1340处,可以释放作为副本的地址页面,并且方法1300前进至框1350。
返回框1320处,如果确定地址页面为普通类型,此时可以直接跳过框1330和1340,并且方法1300直接前进至框1350。在框1350处,可以更新地址页面的计数,继而方法1300在框1360处结束。将会理解,在此框1350处的更新计数的操作并非简单地将计数的数值减小。在下文中,将参见图14详细描述具体操作。
图14示意性示出了根据本公开一个实现方式的用于更新针对地址页面的计数的方法1400的流程图。将会理解,在此的更新并非简单地降低计数的数值,而是需要基于地址页面的具体状态来执行相应的操作。利用上述示例性实现,可以对地址页面执行定制的操作,进而确保存事务的ACID特征。
如图14所示,方法1400开始于框1410。在框1420处,可以降低针对给定地址页面的给定计数。在此的降低是指按照预定步长减小计数的数值,假设当前数值为2则降低后的计数的数值可以设置为1。接着,在框1430处判断计数是否等于0。如果等于0则方法1400前进至框1440。在框1440处,可以判断地址页面是否存在于地址页面缓存中,如果存在则方法1400前进至框1450,否则方法1400前进至框1470。
在框1450处,可以将地址页面添加至相应的地址页面列表。在此的地址页面列表可以是上文描述的控制结构500中的清洁地址页面列表540脏地址页面列表550中的任一项。具体而言,如果地址页面的内容未被修改,则可以将其添加至清洁地址页面列表540,如果地址页面的内容已经被修改,则可以将其添加至脏地址页面列表540。
在框1470、1472和1474处的操作涉及存在对端控制节点的情况。为了确保本地控制节点和对端控制节点所访问数据的一致性,还需要针对地址页面设置TO_BE_RECLAIM标记。将会理解,如果该标记被设置,则表示对端控制节点尚未完成针对该地址页面的所需操作,此时本地控制节点需要特殊处理该地址页面而并不能立即释放该地址页面。具体地,如果地址页面的该标记被设置,则方法1400前进至框1472,以便将该地址页面添加至待回收列表。在框1470处,如果确定未设置TO_BE_RECLAIM标记,则方法1400前进至框1474并且在此处可以将地址页面添加至空闲地址页面列表。
在上文中已经描述了如何在本地提交未被修改的地址页面,在下文中,将参见图15详细描述如何在本地提交已经被修改的地址页面。图15示意性示出了根据本公开一个实现方式的用于在本地提交已修改地址页面的方法1500的流程图。如图15所示,方法1500开始于框1510。在框1520处,判断给定地址页面的类型释放为副本类型。如果判断结果为是,则方法1500前进至框1530。此时,可以交换给定地址页面以及给定地址页面作为其副本的原始地址页面。将会理解,在此交换的含义是指将原始地址页面的内容移除至地址页面缓存之外(副本所在的位置),并且将副本的内容移动至地址页面缓存中原始地址页面先前所在的位置。接着,在框1540处,可以增加针对原始地址页面的计数,并且方法1500前进至框1550。
返回框1520,如果地址页面为普通类型,则方法1500跳过框1530和1540而直接前进至框1550。在框1550处,可以将交换后的地址页面缓存中的地址页面(即副本中的新的地址页面)的状态设置为PD_STATE_DIRTY。
根据本公开的示例性实现,可以基于地址页面的状态是否为“脏”来执行后续的冲刷操作。例如,可以从地址页面缓存中选择状态为“脏”的一组地址页面。继而,可以将将选择的一组地址页面冲刷至存储系统。
将会理解,在上文中参见附图详细描述了在本地控制节点处执行提交事务的具体操作。当存在对端控制节点时,则需要从本地控制节点通知对端控制节点在该本地控制节点处已经出现的变化。在下文中,将参见图16描述与对端控制节点相关联的操作。图16示意性示出了根据本公开一个实现方式的用于在第一(本地)控制节点和第二(对端)控制节点处提交事务的方法1600的流程图。在图16中,附图左侧示出了在第一控制节点处执行的操作,而在右侧示出了在第二节点处执行的操作。方法1600开始于框1610,继而在框1620处,将事务的状态设置为TX_STATE_PEER_COMMITTING。接着,在框1630处,将在第一控制节点处的全部被修改的地址页面封装在一个消息中。根据本公开的示例性实现,可以采用专用于在两个控制节点之间传输消息的协议来进行封装。继而,在框1640处可以向对端控制节点发送消息,以便通知对端控制节点在本地控制节点中已经修改了哪些地址页面。
框1650至框1670示出了在第二控制节点处执行的操作。在框1650处,可以解析接收到的消息,以便获得在第一控制节点处被修改的地址页面。继而,在框1660处,可以在第二控制节点处基于获得的被修改的地址页面来执行提交操作。在此的提交操作即上文参见图12所描述的方法1200。继而,可以在框1670处向第一控制节点发送应答消息,以指示在第二控制节点处已经执行了本地提交。当第一控制节点接收到来自第二控制节点的应答消息后,可以在框1680处继续执行提交操作。具体地,可以针对事务中的已经被修改的地址页面执行相应的操作。
在下文中,将参见图17来描述有关本地继续提交的更多细节。图17示意性示出了根据本公开一个实现方式的用于继续在本地提交事务的方法1700的流程图。在图17中,方法1700开始于框1710。继而,在框1712处处可以将事务的状态更新至TX_STATE_PEER_COMMITTED。在框1714处,可以从事务的地址页面列表中选择被修改的地址页面,并且针对选择的地址页面来执行在框1720至1736处所示的操作。
在框1720处,确定选择的地址页面是否为副本类型。如果判断结果为“是”,则方法1700前进至1722。在框1722处,可以将选择的地址页面与地址页面的副本进行解耦。继而在框1724处更新针对新地址页面(即副本)的计数。在框1720处,如果选择的地址页面为普通类型,则方法1700可以跳过框1722和1724直接前进至框1730。
在框1730处,可以更新针对旧的地址页面(原始地址页面)的计数。在框1732处,可以释放分配给事务但并未使用的地址页面。在框1734处,可以向对端发送回收响应消息,以便询问对端是否已经不再使用回收列表中的地址页面。在框1736处,如果接收到来自对端的确认消息,则可以释放被存储至回收列表中的地址页面。在框1738处可以释放事务并且将事务的状态设置为TX_STATE_FREE。此时,针对事务的全部处理操作在框1740处结束。
在上文中已经参见图1至图17详细描述了根据本公开的方法的示例,在下文中将描述相应的设备的实现。根据本公开的示例性实现,提供了一种用于管理存储系统中的地址的装置。该装置包括:确定模块,配置用于响应于针对存储系统中的数据进行访问的访问请求,确定指向存储系统中的目标数据的地址的地址页面;生成模块,配置用于基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态;设置模块,配置用于设置描述地址页面被引用的次数的计数;以及执行模块,配置用于基于计数,在存储系统的控制节点处执行事务。
根据本公开的示例性实现,提供了一种用于管理存储系统中的地址的设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:响应于针对存储系统中的数据进行访问的访问请求,确定指向存储系统中的目标数据的地址的地址页面;基于地址页面生成用于管理地址页面的事务,事务至少包括地址页面的指示符和事务的状态;设置描述地址页面被引用的次数的计数;以及基于计数,在存储系统的控制节点处执行事务。
根据本公开的示例性实现,基于地址页面生成用于管理地址页面的事务包括:确定访问请求的类型;以及基于类型和地址页面生成事务。
根据本公开的示例性实现,基于类型和地址页面生成事务包括:响应于访问请求指示将要针对地址页面进行读操作,响应于确定在控制节点处的地址页面缓存中不存在地址页面,将地址页面添加至地址页面缓存中;以及将地址页面加入事务;其中设置描述地址页面被引用的次数的计数包括:增加针对地址页面的计数。
根据本公开的示例性实现,基于类型和地址页面生成事务包括:响应于访问请求指示将要针对地址页面进行写入操作,将地址页面添加至控制节点处的地址页面缓存中;增加针对地址页面的计数;以及将地址页面加入事务。
根据本公开的示例性实现,基于类型和地址页面生成事务包括:响应于访问请求指示将要针对地址页面进行读改写操作,响应于确定在控制节点处的地址页面缓存中不存在地址页面,将地址页面添加至地址页面缓存中;生成地址页面的副本;增加针对地址页面的计数以及针对副本的计数;以及将地址页面以及副本加入事务。
根据本公开的示例性实现,在存储系统的控制节点处执行事务包括:针对事务中的给定地址页面,确定指示给定地址页面是否被修改的状态;基于状态更新针对给定地址页面的计数以及地址页面缓存。
根据本公开的示例性实现,基于状态更新针对给定地址页面的计数以及地址页面缓存包括:响应于更新状态指示给定地址页面未被修改,响应于给定地址页面的类型为副本类型,将给定地址页面以及给定地址页面作为其副本的原始地址页面进行解耦;从地址页面缓存中释放给定地址页面;以及更新针对给定地址页面的计数;响应于给定地址页面的类型为普通类型,更新针对给定地址页面的计数。
根据本公开的示例性实现,基于状态更新针对给定地址页面的计数以及地址页面缓存包括:响应于更新状态指示给定地址页面被修改,响应于给定地址页面的类型为副本类型,交换给定地址页面以及给定地址页面作为其副本的原始地址页面;增加针对原始地址页面的计数;以及将交换后的地址页面缓存中的地址页面的状态设置为“脏”;响应于给定地址页面的类型为普通类型,将给定地址页面的状态设置为“脏”。
根据本公开的示例性实现,进一步包括:在地址页面缓存中选择状态为“脏”的一组地址页面;以及将选择的一组地址页面冲刷至存储系统。
根据本公开的示例性实现,更新针对给定地址页面的计数标识符包括:降低针对给定地址页面的给定计数;响应于给定计数达到计数的初始值,确定给定地址页面是否位于地址页面缓存中,响应于给定地址页面位于地址页面缓存中,基于给定地址页面更新控制节点处的清洁地址页面列表和脏地址页面列表,清洁地址页面列表用于指示地址页面缓存中的未被修改的地址页面,以及脏列表用于指示地址页面缓存中的被修改的地址页面。
根据本公开的示例性实现,存储系统耦合至另一控制节点,进一步包括:向另一控制节点传输地址页面缓存中的被修改的地址页面;响应于来自另一控制控制节点的应答信号,针对事务中的被修改的地址页面,基于被修改的地址页面的类型来更新地址页面缓存和针对被修改的地址页面的计数。
根据本公开的示例性实现,基于被修改的地址页面的类型来更新地址页面缓存和针对被修改的地址页面的计数包括:响应于被修改的地址页面的类型为副本类型,释放被修改的地址页面;更新针对被修改的地址页面的计数。
根据本公开的示例性实现,基于被修改的地址页面的类型来更新地址页面缓存和针对被修改的地址页面的计数包括:响应于被修改的地址页面的类型为副本类型,将被修改的地址页面与被修改的地址页面作为其副本的原始地址页面解耦;更新针对副本的计数;响应于被修改的地址页面的类型为普通类型,更新针对原始地址页面的计数;向另一控制器发送回收响应消息;响应于接收到来自另一控制器的针对回收响应消息的应答,释放回收列表中的地址页面。
根据本公开的示例性实现,存储系统中的数据的地址被存储在树形结构中,地址页面包括一组地址,一组地址中的每个地址描述树形结构中的每个层级中的地址。
图18示意性示出了根据本公开的示例性实现的用于管理存储系统中的地址的设备1800的框图。如图所示,设备1800包括中央处理单元(CPU)1801,其可以根据存储在只读存储器(ROM)1802中的计算机程序指令或者从存储单元1808加载到随机访问存储器(RAM)1803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1803中,还可存储设备1800操作所需的各种程序和数据。CPU 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。输入/输出(I/O)接口1805也连接至总线1804。
设备1800中的多个部件连接至I/O接口1805,包括:输入单元1806,例如键盘、鼠标等;输出单元1807,例如各种类型的显示器、扬声器等;存储单元1808,例如磁盘、光盘等;以及通信单元1809,例如网卡、调制解调器、无线通信收发机等。通信单元1809允许设备1800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法500,可由处理单元1801执行。例如,在一些实现中,方法500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1808。在一些实现中,计算机程序的部分或者全部可以经由ROM 1802和/或通信单元1809而被载入和/或安装到设备1800上。当计算机程序被加载到RAM 1803并由CPU 1801执行时,可以执行上文描述的方法500的一个或多个步骤。备选地,在其他实现中,CPU 1801也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种用于管理存储系统的设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。
Claims (29)
1.一种用于管理存储系统中的地址的方法,所述方法包括:
响应于针对所述存储系统中的数据进行访问的访问请求,确定指向所述存储系统中的目标数据的地址的地址页面;
基于所述地址页面生成用于管理所述地址页面的事务,所述事务至少包括所述地址页面的指示符和所述事务的状态;
设置描述所述地址页面被引用的次数的计数;以及
基于所述计数,在所述存储系统的控制节点处执行所述事务。
2.根据权利要求1所述的方法,其中基于所述地址页面生成用于管理所述地址页面的事务包括:
确定所述访问请求的类型;以及
基于所述类型和所述地址页面生成所述事务。
3.根据权利要求1所述的方法,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行读操作,
响应于确定在所述控制节点处的地址页面缓存中不存在所述地址页面,将所述地址页面添加至所述地址页面缓存中;以及
将所述地址页面加入所述事务;
其中设置描述所述地址页面被引用的次数的计数包括:增加针对所述地址页面的所述计数。
4.根据权利要求1所述的方法,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行写入操作,
将所述地址页面添加至控制节点处的地址页面缓存中;
增加针对所述地址页面的计数;以及
将所述地址页面加入所述事务。
5.根据权利要求1所述的方法,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行读改写操作,
响应于确定在所述控制节点处的地址页面缓存中不存在所述地址页面,将所述地址页面添加至所述地址页面缓存中;
生成所述地址页面的副本;
增加针对所述地址页面的计数以及针对所述副本的计数;以及
将所述地址页面以及所述副本加入所述事务。
6.根据权利要求1所述的方法,其中在所述存储系统的控制节点处执行所述事务包括:针对所述事务中的给定地址页面,
确定指示所述给定地址页面是否被修改的状态;
基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存。
7.根据权利要求6所述的方法,其中基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存包括:响应于所述更新状态指示所述给定地址页面未被修改,
响应于所述给定地址页面的类型为副本类型,
将所述给定地址页面以及所述给定地址页面作为其副本的原始地址页面进行解耦;
从所述地址页面缓存中释放所述给定地址页面;以及
更新针对所述给定地址页面的所述计数;
响应于所述给定地址页面的类型为普通类型,更新针对所述给定地址页面的计数。
8.根据权利要求6所述的方法,其中基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存包括:响应于所述更新状态指示所述给定地址页面被修改,
响应于所述给定地址页面的类型为副本类型,
交换所述给定地址页面以及所述给定地址页面作为其副本的原始地址页面;
增加针对所述原始地址页面的计数;以及
将交换后的所述地址页面缓存中的地址页面的状态设置为“脏”;
响应于所述给定地址页面的类型为普通类型,将所述给定地址页面的状态设置为“脏”。
9.根据权利要求8所述的方法,进一步包括:
在所述地址页面缓存中选择状态为“脏”的一组地址页面;以及
将选择的所述一组地址页面冲刷至所述存储系统。
10.根据权利要求7所述的方法,其中更新针对所述给定地址页面的计数标识符包括:
降低针对所述给定地址页面的给定计数;
响应于所述给定计数达到所述计数的初始值,确定所述给定地址页面是否位于所述地址页面缓存中,
响应于所述给定地址页面位于所述地址页面缓存中,基于所述给定地址页面更新所述控制节点处的清洁地址页面列表和脏地址页面列表,所述清洁地址页面列表用于指示所述地址页面缓存中的未被修改的地址页面,以及所述脏列表用于指示所述地址页面缓存中的被修改的地址页面。
11.根据权利要求1所述的方法,其中所述存储系统耦合至另一控制节点,进一步包括:
向所述另一控制节点传输所述地址页面缓存中的被修改的地址页面;
响应于来自所述另一控制控制节点的应答信号,针对所述事务中的被修改的地址页面,基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数。
12.根据权利要求11所述的方法,其中基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数包括:
响应于被修改的所述地址页面的所述类型为副本类型,
释放被修改的所述地址页面;
更新针对被修改的所述地址页面的计数。
13.根据权利要求11所述的方法,其中基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数包括:
响应于被修改的所述地址页面的所述类型为副本类型,将被修改的所述地址页面与被修改的所述地址页面作为其副本的原始地址页面解耦;更新针对所述副本的计数;
响应于被修改的所述地址页面的所述类型为普通类型,更新针对所述原始地址页面的计数;
向另一控制器发送回收响应消息;
响应于接收到来自所述另一控制器的针对所述回收响应消息的应答,释放回收列表中的地址页面。
14.根据权利要求1所述的方法,其中所述存储系统中的数据的地址被存储在树形结构中,所述地址页面包括一组地址,所述一组地址中的每个地址描述所述树形结构中的每个层级中的地址。
15.一种用于管理存储系统中的地址的设备,包括:
至少一个处理器;
易失性存储器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行动作,所述动作包括:
响应于针对所述存储系统中的数据进行访问的访问请求,确定指向所述存储系统中的目标数据的地址的地址页面;
基于所述地址页面生成用于管理所述地址页面的事务,所述事务至少包括所述地址页面的指示符和所述事务的状态;
设置描述所述地址页面被引用的次数的计数;以及
基于所述计数,在所述存储系统的控制节点处执行所述事务。
16.根据权利要求15所述的设备,其中基于所述地址页面生成用于管理所述地址页面的事务包括:
确定所述访问请求的类型;以及
基于所述类型和所述地址页面生成所述事务。
17.根据权利要求15所述的设备,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行读操作,
响应于确定在所述控制节点处的地址页面缓存中不存在所述地址页面,将所述地址页面添加至所述地址页面缓存中;以及
将所述地址页面加入所述事务;
其中设置描述所述地址页面被引用的次数的计数包括:增加针对所述地址页面的所述计数。
18.根据权利要求15所述的设备,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行写入操作,
将所述地址页面添加至控制节点处的地址页面缓存中;
增加针对所述地址页面的计数;以及
将所述地址页面加入所述事务。
19.根据权利要求15所述的设备,其中基于所述类型和所述地址页面生成所述事务包括:响应于所述访问请求指示将要针对所述地址页面进行读改写操作,
响应于确定在所述控制节点处的地址页面缓存中不存在所述地址页面,将所述地址页面添加至所述地址页面缓存中;
生成所述地址页面的副本;
增加针对所述地址页面的计数以及针对所述副本的计数;以及
将所述地址页面以及所述副本加入所述事务。
20.根据权利要求15所述的设备,其中在所述存储系统的控制节点处执行所述事务包括:针对所述事务中的给定地址页面,
确定指示所述给定地址页面是否被修改的状态;
基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存。
21.根据权利要求20所述的设备,其中基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存包括:响应于所述更新状态指示所述给定地址页面未被修改,
响应于所述给定地址页面的类型为副本类型,
将所述给定地址页面以及所述给定地址页面作为其副本的原始地址页面进行解耦;
从所述地址页面缓存中释放所述给定地址页面;以及
更新针对所述给定地址页面的所述计数;
响应于所述给定地址页面的类型为普通类型,更新针对所述给定地址页面的计数。
22.根据权利要求21所述的设备,其中基于所述状态更新针对所述给定地址页面的所述计数以及所述地址页面缓存包括:响应于所述更新状态指示所述给定地址页面被修改,
响应于所述给定地址页面的类型为副本类型,
交换所述给定地址页面以及所述给定地址页面作为其副本的原始地址页面;
增加针对所述原始地址页面的计数;以及
将交换后的所述地址页面缓存中的地址页面的状态设置为“脏”;
响应于所述给定地址页面的类型为普通类型,将所述给定地址页面的状态设置为“脏”。
23.根据权利要求22所述的设备,所述动作进一步包括:
在所述地址页面缓存中选择状态为“脏”的一组地址页面;以及
将选择的所述一组地址页面冲刷至所述存储系统。
24.根据权利要求21所述的设备,其中更新针对所述给定地址页面的计数标识符包括:
降低针对所述给定地址页面的给定计数;
响应于所述给定计数达到所述计数的初始值,确定所述给定地址页面是否位于所述地址页面缓存中,
响应于所述给定地址页面位于所述地址页面缓存中,基于所述给定地址页面更新所述控制节点处的清洁地址页面列表和脏地址页面列表,所述清洁地址页面列表用于指示所述地址页面缓存中的未被修改的地址页面,以及所述脏列表用于指示所述地址页面缓存中的被修改的地址页面。
25.根据权利要求15所述的设备,其中所述存储系统耦合至另一控制节点,所述动作进一步包括:
向所述另一控制节点传输所述地址页面缓存中的被修改的地址页面;
响应于来自所述另一控制控制节点的应答信号,针对所述事务中的被修改的地址页面,基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数。
26.根据权利要求25所述的设备,其中基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数包括:
响应于被修改的所述地址页面的所述类型为副本类型,
释放被修改的所述地址页面;
更新针对被修改的所述地址页面的计数。
27.根据权利要求24所述的设备,其中基于被修改的所述地址页面的类型来更新所述地址页面缓存和针对被修改的所述地址页面的计数包括:
响应于被修改的所述地址页面的所述类型为副本类型,将被修改的所述地址页面与被修改的所述地址页面作为其副本的原始地址页面解耦;更新针对所述副本的计数;
响应于被修改的所述地址页面的所述类型为普通类型,更新针对所述原始地址页面的计数;
向另一控制器发送回收响应消息;
响应于接收到来自所述另一控制器的针对所述回收响应消息的应答,释放回收列表中的地址页面。
28.根据权利要求15所述的设备,其中所述存储系统中的数据的地址被存储在树形结构中,所述地址页面包括一组地址,所述一组地址中的每个地址描述所述树形结构中的每个层级中的地址。
29.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据权利要求1-14中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810801740.3A CN110737392B (zh) | 2018-07-20 | 2018-07-20 | 管理存储系统中的地址的方法、设备和计算机可读存储介质 |
US16/354,732 US11074187B2 (en) | 2018-07-20 | 2019-03-15 | Method, apparatus and computer program product for managing address in storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810801740.3A CN110737392B (zh) | 2018-07-20 | 2018-07-20 | 管理存储系统中的地址的方法、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737392A true CN110737392A (zh) | 2020-01-31 |
CN110737392B CN110737392B (zh) | 2023-08-25 |
Family
ID=69161300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810801740.3A Active CN110737392B (zh) | 2018-07-20 | 2018-07-20 | 管理存储系统中的地址的方法、设备和计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11074187B2 (zh) |
CN (1) | CN110737392B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459893A (zh) * | 2020-04-03 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN113438333A (zh) * | 2021-06-07 | 2021-09-24 | 中国联合网络通信集团有限公司 | 网络地址分配方法、装置和设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582473A (zh) * | 2018-10-26 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 基于区块链的跨链数据访问方法和装置 |
US11899589B2 (en) * | 2021-06-22 | 2024-02-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for bias mode management in memory systems |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810075A (zh) * | 2011-06-01 | 2012-12-05 | 英业达股份有限公司 | 事务型系统处理方法 |
US20140025651A1 (en) * | 2012-07-20 | 2014-01-23 | Sap Ag | Lock-Free, Scalable Read Access to Shared Data Structures |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN106471478A (zh) * | 2014-06-24 | 2017-03-01 | Arm 有限公司 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
US20170124012A1 (en) * | 2015-11-04 | 2017-05-04 | International Business Machines Corporation | Mapping data locations using data transmissions |
US20180046387A1 (en) * | 2016-08-12 | 2018-02-15 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804755B2 (en) | 2000-06-19 | 2004-10-12 | Storage Technology Corporation | Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme |
US6779095B2 (en) | 2000-06-19 | 2004-08-17 | Storage Technology Corporation | Apparatus and method for instant copy of data using pointers to new and original data in a data location |
US6779094B2 (en) | 2000-06-19 | 2004-08-17 | Storage Technology Corporation | Apparatus and method for instant copy of data by writing new data to an additional physical storage area |
US6912537B2 (en) | 2000-06-20 | 2005-06-28 | Storage Technology Corporation | Dynamically changeable virtual mapping scheme |
US6647386B2 (en) * | 2000-12-14 | 2003-11-11 | International Business Machines Corporation | Method, system, and program for reverse index scanning |
US7424499B2 (en) * | 2005-01-21 | 2008-09-09 | Microsoft Corporation | Lazy timestamping in transaction time database |
US7809903B2 (en) * | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US7809759B1 (en) * | 2006-08-18 | 2010-10-05 | Unisys Corporation | Dynamic preconditioning of A B+tree |
US9519664B1 (en) * | 2013-09-20 | 2016-12-13 | Amazon Technologies, Inc. | Index structure navigation using page versions for read-only nodes |
US9645739B2 (en) * | 2014-09-26 | 2017-05-09 | Intel Corporation | Host-managed non-volatile memory |
JP6198992B2 (ja) * | 2015-04-08 | 2017-09-20 | 株式会社日立製作所 | 計算機システム、及び、データベース管理方法 |
US10067960B2 (en) * | 2015-06-04 | 2018-09-04 | Microsoft Technology Licensing, Llc | Controlling atomic updates of indexes using hardware transactional memory |
US10664286B2 (en) * | 2017-03-13 | 2020-05-26 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | Enhanced performance for graphical processing unit transactional memory |
-
2018
- 2018-07-20 CN CN201810801740.3A patent/CN110737392B/zh active Active
-
2019
- 2019-03-15 US US16/354,732 patent/US11074187B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810075A (zh) * | 2011-06-01 | 2012-12-05 | 英业达股份有限公司 | 事务型系统处理方法 |
US20140025651A1 (en) * | 2012-07-20 | 2014-01-23 | Sap Ag | Lock-Free, Scalable Read Access to Shared Data Structures |
CN106471478A (zh) * | 2014-06-24 | 2017-03-01 | Arm 有限公司 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
US20170124012A1 (en) * | 2015-11-04 | 2017-05-04 | International Business Machines Corporation | Mapping data locations using data transmissions |
US20180046387A1 (en) * | 2016-08-12 | 2018-02-15 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459893A (zh) * | 2020-04-03 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN111459893B (zh) * | 2020-04-03 | 2023-08-22 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN113438333A (zh) * | 2021-06-07 | 2021-09-24 | 中国联合网络通信集团有限公司 | 网络地址分配方法、装置和设备 |
CN113438333B (zh) * | 2021-06-07 | 2022-12-20 | 中国联合网络通信集团有限公司 | 网络地址分配方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200026658A1 (en) | 2020-01-23 |
US11074187B2 (en) | 2021-07-27 |
CN110737392B (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737392A (zh) | 管理存储系统中的地址的方法、设备和计算机程序产品 | |
CN109213694B (zh) | 用于缓存管理的方法和设备 | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20150089185A1 (en) | Managing Mirror Copies without Blocking Application I/O | |
US7571286B2 (en) | Reduced memory traffic via detection and tracking of temporally silent stores | |
CN108595207A (zh) | 一种灰度发布方法、规则引擎、系统、终端和存储介质 | |
JP7193547B2 (ja) | キャッシュ・メモリ動作の調整 | |
US20110314228A1 (en) | Maintaining Cache Coherence In A Multi-Node, Symmetric Multiprocessing Computer | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和系统 | |
CN110737399A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
JP7210642B2 (ja) | ファイルディレクトリのトラバーサル方法、装置、設備、媒体、及びプログラム | |
US11586388B2 (en) | Method, device, and computer program product for managing storage system | |
CN111506604A (zh) | 访问数据的方法、装置和计算机程序产品 | |
CN109213691B (zh) | 用于缓存管理的方法和设备 | |
CN115373877A (zh) | 异构多核处理器保证共享缓存一致性的控制方法和装置 | |
CN114341821A (zh) | 生产者至消费者的主动直接高速缓存传送 | |
US11093389B2 (en) | Method, apparatus, and computer program product for managing storage system | |
CN106250322B (zh) | 一种写数据的方法和装置 | |
CN104978283A (zh) | 一种内存访问控制方法,及装置 | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
CN113742131A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN108415873B (zh) | 转发对监听请求的响应 | |
JP2018159989A (ja) | 計算機システム及びキャッシュ・コヒーレンス方法 | |
JP6257748B2 (ja) | データベースシステム、情報処理装置、方法およびプログラム | |
US20210271563A1 (en) | Methods and systems for performing data backups |
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 |