CN103207840B - 用于将不完整记录从第一缓存降级至第二缓存的系统和方法 - Google Patents
用于将不完整记录从第一缓存降级至第二缓存的系统和方法 Download PDFInfo
- Publication number
- CN103207840B CN103207840B CN201310016878.XA CN201310016878A CN103207840B CN 103207840 B CN103207840 B CN 103207840B CN 201310016878 A CN201310016878 A CN 201310016878A CN 103207840 B CN103207840 B CN 103207840B
- Authority
- CN
- China
- Prior art keywords
- record
- buffer memory
- degradation
- sector
- legacy version
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 329
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000015556 catabolic process Effects 0.000 claims abstract description 61
- 238000006731 degradation reaction Methods 0.000 claims abstract description 61
- 238000003860 storage Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 238000012163 sequencing technique Methods 0.000 description 8
- 230000000593 degrading effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003801 milling Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- WNEODWDFDXWOLU-QHCPKHFHSA-N 3-[3-(hydroxymethyl)-4-[1-methyl-5-[[5-[(2s)-2-methyl-4-(oxetan-3-yl)piperazin-1-yl]pyridin-2-yl]amino]-6-oxopyridin-3-yl]pyridin-2-yl]-7,7-dimethyl-1,2,6,8-tetrahydrocyclopenta[3,4]pyrrolo[3,5-b]pyrazin-4-one Chemical compound C([C@@H](N(CC1)C=2C=NC(NC=3C(N(C)C=C(C=3)C=3C(=C(N4C(C5=CC=6CC(C)(C)CC=6N5CC4)=O)N=CC=3)CO)=O)=CC=2)C)N1C1COC1 WNEODWDFDXWOLU-QHCPKHFHSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Classifications
-
- 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
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明是用于将不完整记录从第一缓存降级至第二缓存的系统和方法。对记录进行从第一缓存降级至第二缓存的判定,其中第一缓存内的记录对应于存储系统内的记录并且包括多个扇区。响应于判定第二缓存包括从第一缓存降级的旧版本记录,就旧版本的记录是否包括在从第一缓存降级的记录中未包含的记录扇区进行判定。将从第一缓存降级的记录中的扇区与记录旧版本中未包含在从第一缓存降级的记录内的扇区合并为记录的新版本。将记录的新版本写入第二缓存。
Description
技术领域
本发明涉及一种用于将不完整记录从第一缓存降级至第二缓存的计算机程序产品、系统和方法。
背景技术
由于要在比存储被请求记录的存储设备更快速的访问存储设备(例如内存)中进行读写操作,缓存管理系统缓冲最近访问的存储设备中的记录。随后对较快速访问的缓存内存中记录的读请求就以比从较慢速访问存储器中返回被请求记录更快的速率被返回,由此缩短了读等待时间。缓存管理系统也可以在向缓存内存写入涉及存储设备的修改记录时并且在将修改记录全部写出至存储设备(例如硬盘驱动器)之前返回完成写请求。对存储设备的写等待时间通常要明显长于写入缓存内存的等待时间。因此,使用缓存也缩短了写等待时间。
缓存管理系统可以保留对缓存内存储的每一条记录都有一个条目的链表,其中可以包括在写入存储设备之前在缓存内缓冲的写数据或者读数据。在常用的最近最少使用(LRU)缓存技术中,如果访问到缓存内的记录,也就是缓存“命中”,那么LRU列表中用于被访问记录的条目即被移动到列表的最近使用(MRU)端。如果被访问记录不在缓存内,也就是缓存未命中,那么其条目位于列表LRU端的缓存内记录即可被移除(或降级送回存储器),并且用于从存储器进级到缓存内的记录数据的条目即可被加至LRU列表的MRU端。通过这种LRU缓存技术,被访问越频繁的记录越有可能保留在缓存内,而被访问越不频繁的数据则越有可能从列表的LRU端被移除,从而在缓存中为新近访问的记录留出空间。
本领域内对于在存储系统中使用缓存的改进技术存在需求。
发明内容
提供了一种用于将不完整记录从第一缓存降级至第二缓存的计算机程序产品、系统和方法。对记录进行从第一缓存降级至第二缓存的判定,其中第一缓存内的记录对应于存储系统内的记录并且包括多个扇区。对第二缓存是否包括从第一缓存降级的记录的旧版本进行判定。响应于判定第二缓存包括记录的旧版本,就记录的旧版本是否包括在从第一缓存降级的记录中未包含的记录扇区进行判定。将从第一缓存降级的记录中的扇区与记录旧版本中未包含在从第一缓存降级的记录内的扇区合并为记录的新版本。将记录的新版本写入第二缓存。
附图说明
图1示出了计算环境的实施例。
图2示出了第一缓存管理信息的实施例。
图3示出了第二缓存管理信息的实施例。
图4示出了第一缓存控制模块的实施例。
图5示出了第二缓存控制模块的实施例。
图6示出了步长信息的实施例。
图7示出了第二缓存RAID结构的实施例。
图8示出了存储器RAID结构的实施例。
图9示出了将第一缓存中的未修改无序记录降级以提升至第二缓存的操作实施例。
图10示出了将记录加入第一缓存的操作实施例。
图11示出了处理记录以从第一缓存降级至第二缓存的操作实施例。
图12示出了将记录从第一步长增加为第二步长的操作实施例。
图13示出了在第二缓存内释放空间的操作实施例。
图14示出了处理对记录的请求以返回读请求的操作实施例。
具体实施方式
介绍的实施例提供了用于将记录从第一缓存降级至第二缓存的技术。如果待降级记录包括不完整记录并且如果第二记录包括旧版本的记录,那么就可以在第二缓存内建立新版本的记录,包括将从第一缓存降级的不完整记录的扇区与第二缓存内记录旧版本中未包含在被降级的部分记录的扇区内的扇区合并。记录的新版本可以被写入第二缓存中的新位置。
图1示出了计算环境的实施例。多个主机2a,2b…2n可以通过网络向存储控制器4提交输入/输出(I/O)请求以访问存储器10内存储卷8(例如逻辑单元号、逻辑设备、逻辑子系统等)中的数据。存储控制器4包括处理器复合体12,其中包括具有单核或多核的一个或多个处理器、第一缓存14和第二缓存18。第一缓存14和第二缓存18缓存在主机2a,2b…2n和存储器10之间传输的缓存数据。
存储控制器4具有内存20,其包括用于管理在主机2a,2b…2n和存储器10之间传输的记录传输的存储管理器22,以及在第一缓存14和第二缓存18内管理主机2a,2b…2n和存储器10之间传输数据的缓存管理器24。记录可以包括设置在存储器10内的任何数据单元,例如构成更大记录分组譬如卷、逻辑设备等的一部分的记录、逻辑块地址(LBA)等。缓存管理器24保留第一缓存管理信息26和第二缓存管理信息28以管理第一缓存14和第二缓存18内的读(不修改)记录和写(修改)记录。
存储管理器22和缓存管理器24在图1中被示出为载入内存20并由处理器复合体12执行的程序代码。可选地,部分或全部功能可以以存储控制器4内的硬件设备实现,例如专用集成电路(ASIC)。
第二缓存18可以在日志结构阵列(LSA)32内存储记录,其中记录按接收时的先后顺序写入,由此提供写入第二缓存18的记录的时间排序。在LSA中,已存在于LSA内的记录的后续版本在LSA32的末端写入。在可选实施例中,第二缓存18可以用不同于LSA的格式来存储数据。
内存20进一步包括第二缓存RAID配置信息34,其提供关于RAID配置的信息用于确定如何构成存储在第二缓存18内的记录步长。在一个实施例中,第二缓存18可以包括多个存储设备(例如独立的固态存储设备(SSD))以使由第一缓存14中的记录构成的步长被分散到构成第二缓存18的独立存储设备(例如闪存)上。在进一步的实施例中,第二缓存18可以包括单个存储设备(例如一个闪存)以使记录按照由第二缓存RAID配置34定义的步长分组,而且记录被写为用于实现第二缓存18的单个设备(例如一个闪存)的步长。被设置用于第二缓存RAID配置34的步长记录可以被写入第二缓存18设备内的LSA32。第二缓存RAID配置34可以明确不同的RAID等级,例如5级、10级等。
内存20进一步包括存储器RAID配置信息36,提供关于RAID配置的信息用于确定如果第二缓存18应该存储修改的数据则如何将第一缓存14或第二缓存18中的记录写入存储系统10,其中降级步长的记录被分散到存储系统10内的存储设备上,例如磁盘驱动器。
在一个实施例中,第一缓存14可以包括随机访问内存(RAM),例如动态随机访问内存(DRAM),并且第二缓存18可以包括闪存,例如固态设备,而存储器10由一个或多个顺序访问存储设备(例如硬盘驱动器和磁带构成)。存储器10可以包括单个顺序访问存储设备或者可以包括存储设备阵列,例如简单磁盘捆绑(JBOD)、直接访问存储设备(DASD)、独立磁盘冗余阵列(RAID)、虚拟设备等。在一个实施例中,第一缓存14是比第二缓存18更快的存取设备,并且第二缓存18是比存储器10更快的存取设备。而且,第一缓存14可以具有比第二缓存18更高的单位存储成本,并且第二缓存18可以具有比存储器10内的存储设备更高的单位存储成本。
第一缓存14可以是内存20的一部分或者可以用独立的内存设备例如DRAM实现。
在某些实施例中,第二缓存可以包括只读缓存以缓存从第一缓存14降级的记录。
网络6可以包括存储区域网(SAN)、局域网(LAN)、广域网(WAN)、互联网、内部网等。
图2示出了第一缓存管理信息26的实施例,包括:记录索引50,用于提供第一缓存14内的记录索引以对控制块目录52中的模块进行控制;未修改的有序LRU列表54,用于提供第一缓存14内未修改有序记录的时间排序;修改的LRU列表56,用于提供第一缓存14内修改的有序和无序记录的时间排序;未修改的无序LRU列表58,用于提供第一缓存14内未修改无序记录的时间排序;以及步长信息60,用于提供由第一缓存14内未修改无序记录构成的步长信息以按照全步长写操作写入第二缓存18。
在某些实施例中,当确定第一缓存18已满时,修改的LRU列表56被用于将修改的记录从第一缓存10降级至存储器10,以使得可以删除这些降级记录在第一缓存18中的副本从而在第一缓存18中为新的修改的记录留出空间。
一旦修改的无序记录从第一缓存14降级至存储器10,那么缓存管理器24可将降级的记录指定为第一缓存14内的未修改无序记录并向未修改的无序LRU列表58中加入新指定的未修改记录的标记,由此才适合用于提升至第二缓存14。可以通过更新第一缓存控制块104以在字段106内将降级的修改无序记录指示为未修改而改变降级的修改记录的状态。因此,第一缓存14内未修改的无序记录可以包括读取的数据或者根据修改的LRU列表56降级至存储器10的修改的无序记录。因此,在LRU列表58内变成未修改记录的降级修改记录可以被提升至第二缓存14,以供随后的读请求使用。在这些实施例中,第二缓存14包括用于缓存未修改无序记录的只读缓存。
图3示出了第二缓存管理信息28的实施例,包括:记录索引70,用于提供第二缓存18内的记录索引以对控制块目录72中的模块进行控制;未修改的列表74,用于提供第二缓存18内未修改记录的时间排序;以及步长信息78,用于提供写入第二缓存18的记录的步长的信息。在一个实施例中,第二缓存18仅存储未修改的无序记录。在进一步的实施例中,第二缓存18也可以存储修改的记录和/或有序记录。
所有的LRU列表54、56、58和74均可包括第一缓存14和第二缓存18内记录的记录标识符,记录标识符根据被标识记录上一次被访问的时间来排序。LRU列表54、56、58和74具有指示最近访问记录的最近使用(MRU)端和指示最近最少使用或访问记录的LRU端。加入缓存14和18的记录的记录标识符被加至LRU列表的MRU端,并且从LRU端访问从缓存14和18降级的记录。记录索引50和70可以包括离散索引表(SIT)。各种可选类型的数据结构均可被用于提供缓存14和18内记录的时间排序。
无序记录可以包括联机线事务处理(OLTP)记录,其经常包括并非完全随机且具有一定的引用局部性(也就是存在重复访问可能性)的小块写操作。
图4示出了控制块目录52内的第一缓存控制块100条目的实施例,包括控制块标识符(ID)102、在第一缓存14内的记录的物理位置的第一缓存位置104、指示记录是修改还是未修改的信息106、指示记录是有序还是无序访问的信息108、指示用于记录的降级状态(例如未降级,准备降级和完成降级)的信息110以及指示第一缓存14内包含的记录中扇区的扇区图112。如果扇区图112指示第一缓存14内的记录的某些扇区还没有数据,那么保留在第一缓存14内的记录就包括不完整记录。
图5示出了第二缓存控制块目录72内的第二缓存控制块120条目的实施例,包括控制块标识符(ID)122;其中记录位于LSA32内的LSA位置124;指示记录是修改还是未修改的修改/未修改信息126;指示记录是有效还是无效的有效/无效标志128;以及指示第二缓存18内包含的记录中扇区的扇区图129。如果记录要在第一缓存14内更新或者如果记录要从第二缓存18降级,那么就将第二缓存18内的记录指示为无效。如果扇区图129指示第二缓存18内的记录的某些扇区还没有数据,那么保留在第二缓存18内的记录就包括不完整记录。如果第二缓存18只存储未修改的读取数据,那么缓存控制块120可以不包括字段126。
图6示出了用于在第二缓存18内构成的一个步长的步长信息60、78的实例130,包括步长标识符(ID)132、步长132内包含的存储器10的记录134,以及指示该步长的记录总数中有效记录数量的占用率136,其中该步长内无效的记录适合用于垃圾收集操作。
图7示出了第二缓存RAID配置34的一个实施例,保留该配置以确定如何根据第一缓存14内的记录构成第二缓存18内的记录的步长。RAID等级140表示使用的RAID配置,例如RAID1、RAID5、RAID6、RAID10等,多个(m个)数据盘142存储用户数据的记录,并且多个(p个)奇偶校验盘144存储由数据盘142算出的奇偶校验值,其中p可以是一个或多个,表示用于存储算出的奇偶校验块的盘数量。未修改的奇偶校验可选标志148指示是否应针对第一缓存14内提升至第二缓存18的未修改无序记录计算奇偶校验值。该可选标志148只允许在步长内包括未修改的无序记录,从而只用未修改的无序记录来填充该步长。第一缓存14内未修改无序记录的步长可以在LSA32内指明,其中该步长中的记录被分散到构成第二缓存18的m加p个存储设备上。可选地,第二缓存18可以包括少于n个设备。
图8示出了存储器RAID配置36的一个实施例,保留该配置以确定如何构成第二缓存18内修改记录的步长以分散(stripe)到存储器10中的磁盘上。RAID等级150表示使用的RAID配置,多个(m个)数据盘152存储用户数据的记录,并且多个(p个)奇偶校验盘154存储由数据盘152算出的奇偶校验值,其中p可以是一个或多个,表示用于存储算出的奇偶校验块的盘数量。第二缓存18的记录步长可以分散到存储系统10内的盘上。
在一个实施例中,第二缓存RAID配置34和存储器RAID配置36可以提供不同的参数或者具有相同的参数,例如不同的RAID等级、数据盘、奇偶校验盘等。
图9示出了由缓存管理器24执行的将第一缓存14中的未修改无序记录降级以提升至第二缓存18的操作实施例,其中在需要空间时可以从未修改无序LRU列表58的LRU端选择未修改的无序记录。当(在块200)启动操作以降级选中的未修改无序记录时,被选择降级的未修改无序记录的降级状态110(图4)就(在块202)被设定为“就绪”。缓存管理器24(在块204)利用第二缓存RAID配置信息34构成第一缓存114内用于提升至第二缓存18内步长的记录的第一步长。例如,构成记录的第一步长可以包括根据用于第二缓存的RAID配置信息34构成用于RAID配置的步长,譬如使n个设备包括用于存储数据记录的m个设备以及存储由用于m个设备的数据记录算出的奇偶校验数据的至少一个奇偶校验设备p。而且,第一步长的记录可以无奇偶校验地分散在n个固态存储设备上,以构成实施例中的第二步长,其中第二缓存包括至少n个固态存储设备。
缓存管理器24(在块206)处理未修改的无序LRU列表58以确定在其控制块100内具有就绪降级状态110的未修改无序记录的数量。如果缓存管理器24(在块208)确定未修改无序记录的数量足以构成一个步长,那么缓存管理器24就(在块210)填充第一步长的具有就绪降级状态110的未修改无序记录。在一个实施例中,第一步长可以从未修改的无序LRU列表58的LRU端开始填充并且将足够多的记录用于步长内的数据盘。如果(在块212)RAID配置指定了奇偶校验盘,那么缓存管理器24就(在块212)针对步长内包括的未修改无序记录来计算奇偶校验值并且在步长内包括(用于p个奇偶校验盘)的奇偶校验数据。如果(在块208)第一缓存14内没有足够的未修改无序记录用于填充第一步长,那么控制就结束,直到有足够数量的具有就绪降级状态的未修改无序记录可用于填充第一步长为止。
(在块210和212)填充了第一步长之后,缓存管理器14就(在块214)确定第二缓存18内用于在其中包括来自第一步长的记录的自由第二步长。来自第一步长的记录(在块216)作为对第二步长的全步长写操作被写入或分散到构成第二缓存18的设备上。在用来自第一步长的记录填充了第二缓存18内的第二步长之后,缓存管理器14就(在块218)指明步长信息130中用于第二步长的占用率136为充满。缓存管理器24(在块220)将用于步长内包括的未修改无序记录的降级状态110更新为降级“完成”。
尽管图9中的操作被描述为将第一缓存14中的未修改无序记录降级以提升至第二缓存18,但是在可选的实施例中,所述操作也可以应用于降级不同类型的记录,例如修改的记录,有序记录等。
根据所述实施例,第一缓存14中的未修改记录被收集并写为用于第二缓存18的步长,以使一个输入/输出(I/O)操作被用于传输多个记录。
在某些实施例中,第一缓存14内保留的记录可以包括不完整记录,其包括的记录具有仅用于记录扇区的子集的数据。这种情况之所以会出现,是因为缓存管理器24可以仅进入(stagein)存储器10中由读请求所请求的记录扇区而并不是记录的所有扇区。在第一缓存14针对某些记录存储有不完整记录以及完整记录(记录具有用于所有记录扇区的数据)的情况下,与完整记录相比在一个步长内可以包括更多的不完整记录,并且与具有较少空扇区的不完整记录(也就是较为完整的不完整记录)相比,在一个步长内可以包括更多的具有较多空扇区的不完整记录。因此,与具有较多扇区的记录相比,一个步长可以从第一缓存14中装入更多的具有较少扇区的不完整记录。而且,第二缓存18可以存储从第一缓存14降级的不完整记录。因此,第一缓存14中包括在第一步长内的记录被写为第二缓存18内的第二步长可以包括完整记录和/或不完整记录。
图10示出了由缓存管理器24执行的将记录加入也就是提升至第一缓存14的操作实施例,该记录可以包括来自主机2a、2b…2n的写入或修改记录,第二缓存18中接受读请求并因此移至第一缓存14的无序记录,或者在缓存14或18中均未发现并且从存储器10中获取的读请求数据。(在块240)接收要加至第一缓存14的记录时,如果(在块242)第一缓存14内已经包括记录的副本,那么缓存管理器24就(在块244)将接收到的记录写入第一缓存14。(在块246)更新用于该记录的缓存控制块100(图4)以指示具有更新记录的位置104、数据类型(修改/未修改106和有序/无序108)、降级状态110,并且更新扇区图112以指示更新记录内装有数据的扇区。在适当的LRU列表54、56、58内用于更新记录的条目(在块248)被移动至列表54、56、58的MRU端。
如果(在块242)要加至第一缓存14的记录在第一缓存14内尚未存在,那么缓存管理器24就(在块250)建立用于待添加记录的控制块100(图4)以指示第一缓存14内的位置104以及记录是修改/未修改106和有序/无序108,并且在扇区图112内指示用于该记录的具有数据的扇区。该控制块100被加入第一缓存14中的控制块目录52。缓存管理器24(在块252)向第一缓存记录索引50内加入条目,条目在控制块目录52内具有待添加记录的记录标识符和用于已建立缓存控制块100的索引。(在块254)向待添加记录的记录类型的LRU列表54、56或58的MRU端加入条目。如果(在块256)待添加记录是修改的无序记录并且如果(在块258)在第二缓存18内存在待添加记录的副本(正如根据第二缓存记录索引70所确定的那样),那么就(在块260)例如通过将第二缓存控制块120内用于第二缓存内记录的有效/无效标志128设置为无效而使第二缓存18内的记录副本无效。如果(在块256)待添加记录是未修改的有序记录,那么控制就结束。
图11示出了由缓存管理器24执行的将记录从第一缓存14降级至第二缓存18的操作实施例。(在块280)处理待从第一缓存14降级的记录时,如果(在块282)第二缓存18的记录索引70指示第二缓存18并不包括比从第一缓存14降级的记录更旧(更老)的记录版本,那么缓存管理器24就(在块284)将降级的记录(其中可以包括不完整或完整的记录)写成位于第二缓存18内新位置处的新版本记录。缓存管理器24(在块286)建立用于写入记录的第二缓存控制块120(图5)以指示具有有效数据的记录128的LSA位置124和写入记录中在扇区图129内的非空的扇区。缓存管理器24(在块288)向用于加至第二缓存18的记录的LRU列表74的MRU端加入条目。
如果(在块282)第二缓存18包括旧版本的记录,那么缓存管理器24就(在块290)判定降级的记录是否包括用于记录中所有扇区的数据(也就是说是完整记录而不是不完整的记录)。要降级的记录是不完整还是完整的判定可以根据用于待降级记录的第一缓存控制块100(图4)中的扇区图112确定。如果(在块290)记录为完整记录,那么缓存管理器24就(在块292)将要降级的完整记录写成位于第二缓存18内新位置的新版本记录。
如果(在块290)待降级记录是不完整记录,也就是用于记录的扇区图112表示有空扇区,那么缓存管理器24就(在块294)根据用于第二缓存18的扇区图129确定要降级的不完整记录在第二缓存18内的旧版本是否包括从第一缓存14降级的不完整记录内所不包括的记录扇区。记录的旧版本可以包括不完整记录或完整的记录。旧版本记录中有数据的扇区的确定可以根据第二缓存控制块120(图5)中用于第二缓存18内已有旧版本记录的扇区图129确定。如果旧版本包括在降级的不完整记录内所不包括的扇区,那么缓存管理器24就(在块296)将从第一缓存14降级的不完整记录中的扇区与被降级的不完整记录中所不包括的旧版本记录中的扇区合并为存储在第二缓存18内新位置的新版本记录。缓存管理器24(在块298)将新版本的记录写入第二缓存18内的新位置。如果(在块294)降级记录的旧版本不包括在被降级不完整记录中所不包括的记录扇区,那么缓存管理器24就(在块300)将降级的不完整记录写成位于第二缓存18内新位置的新版本记录。
在从块292、298或300写入新纪录之后,缓存管理器24(在块302)将第二缓存18内旧版本的记录无效并(在块304)更新用于该记录的第二缓存控制块120(图5)以指示第二缓存18内的新位置,并更新扇区图129以指示第二缓存18内当前具有用于记录的数据的扇区,也就是非空扇区。缓存管理器24(在块306)进一步将用于LRU列表74内记录的条目移动至LRU列表74的MRU端。
图12示出了由缓存管理器24执行的将记录从第一缓存14中的第一步长增加至第二缓存18中的第二步长的操作实施例。缓存管理器24(在块322)建立用于第二步长的步长信息130(图6),指示以第一步长加入的记录134并指示占用率136为充满。对于以第一步长加入的每一个记录,缓存管理器24(在块324)执行图11中的操作以针对从第一缓存14降级的记录向第二缓存24内的LSA增加记录,这可以包括将降级的不完整记录的扇区与从第一缓存14降级的不完整记录中所不包括的第二缓存18内的旧版本记录中的扇区相结合。
图13示出了由缓存管理器24执行的在第二缓存18内释放空间以用于将新纪录(也就是从第一缓存14降级的记录)加入第二缓存18的操作实施例。当(在块350)启动该操作时,缓存管理器24(在块352)确定来自未修改LRU列表74的LRU端的第二缓存18内的未修改记录,并且(在块354)将确定的未修改记录无效,而无需将无效的未修改记录降级至存储器10,并且还从未修改的LRU列表74中删除无效的未修改记录并在用于该记录的第二缓存控制块120内指示该记录是无效记录128。此外,由缓存管理器24选择的用于从第二缓存18降级的记录可以来自第二缓存18内形成的不同步长。而且,第二缓存内的步长可以包括有效和无效记录,其中通过从第二缓存18降级或者通过在第一缓存18内更新记录来无效记录。
在某些实施例中,缓存管理器24使用不同的记录降级算法,以通过分别使用单独的LRU列表58和74针对第一缓存14和第二缓存18确定要降级的记录来确定从第一缓存14和第二缓存18降级的记录。用于选择在第一缓存14和第二缓存18中降级的记录的算法可以考虑第一缓存14和第二缓存18中的记录特征以确定首先降级的记录。
图14示出了由缓存管理器24执行的获取用于对缓存14和18以及存储器10的读请求的请求记录的操作实施例。处理读请求的存储管理器22可以向缓存管理器24提交针对请求记录的请求。当(在块450)接收到对记录的请求后,缓存管理器24就(在块454)利用第一缓存记录索引50确定是否所有的请求记录都在第一缓存14内。如果(在块454)并非所有的请求记录都在第一缓存14内,那么缓存管理器24就(在块456)利用第二缓存记录索引70确定任何在第二缓存18内而未在第一缓存14内的请求记录。如果(在块458)有任何在第一缓存14和第二缓存18内均未找到的请求记录,那么缓存管理器24就(在块460)根据第二缓存记录索引70确定在存储器10内而未在第一缓存14和第二缓存18内的所有请求记录。缓存管理器24随后(在块462)将第二缓存18和存储器10内确定的所有记录提升至第一缓存14。缓存管理器24(在块464)利用第一缓存记录索引50获取第一缓存14中的请求记录以返回给读请求。用于获取记录的条目(在块466)被移动至包括用于获取记录的条目在内的LRU列表54、56、58的MRU端。通过图13中的操作,缓存管理器24在进入存储器10之前首先从最高等级的缓存14获取请求记录,然后再从第二缓存18获取请求记录,原因是缓存14和18应具有请求记录的最近修改版本。最近修改版本首先应在第一缓存14内发现,然后如果在第一缓存14内未发现则应在第二缓存18内发现,并且然后如果在缓存14、18内均未发现则应在存储器10内发现。
通过图14中的操作,缓存管理器24在进入存储器10之前首先从最高等级的缓存14然后再从第二缓存18获取请求记录,原因是缓存14和18应具有请求记录的最近修改版本。最近修改版本首先应在第一缓存14内发现,然后如果在第一缓存14内未发现则应在第二缓存18内发现,并且然后如果在缓存14、18内均未发现则应在存储器10内发现。
上述实施例提供了以根据用于第二缓存的RAID配置定义的步长在第一缓存内分组记录的技术,以使第一缓存内的记录能够以用于第二缓存的步长分组。第二缓存内缓存的记录可以随后被分组为根据用于存储器的RAID配置定义的步长,并随后写入存储系统中。
上述实施例提供了用于将第一缓存中的记录降级至具有不完整记录的第二缓存的技术,以将被降级的不完整记录中的扇区与第二缓存的旧版本记录中被降级的不完整记录内未包含的所有扇区合并。合并的记录可以随后写入第二缓存内的新位置。
所述操作可以利用标准编程和/或工程技术实施为方法、装置或计算机程序产品以生产软件、固件、硬件或其任意组合。因此,实施例的应用可以采用完全为硬件的实施例、完全为软件的实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件应用的实施例的形式,它们在本文中全都可以被统称为“电路”、“模块”或“系统”。而且,实施例的应用可以采用在其上装有计算机可读取程序代码的一种或多种计算机可读取介质内实施的计算机程序产品的形式。
可以使用一种或多种计算机可读取介质的任意组合。计算机可读取介质可以是计算机可读取信号介质或者计算机可读取存储介质。计算机可读取存储介质例如可以是但不局限于电、磁、光学、电磁、红外或半导体系统、装置或设备,或者是上述类型的任意适用组合。计算机可读取存储介质的更多具体示例(非穷举性列表)可以包括以下内容:具有一条或多条线路的电连接,便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存存储器),光纤,便携光盘只读存储器(CD-ROM),光存储设备,磁存储设备或上述内容的任意适用组合。在本文献的语境中,计算机可读取存储介质可以是能够包含或者存储程序以供使用或者与指令执行系统、装置或设备结合使用的任何实体介质。
计算机可读取信号介质可以包括例如在基带中或者作为载波的一部分与其中实施的计算机可读取程序代码一起传播的数据信号。这样的传播信号可以采用多种形式中的任何一种,包括但不限于电磁信号、光信号或其任意合适的组合。计算机可读取信号介质可以是并非计算机可读取存储介质并且能够通信、传播或者输送程序以供使用或者与指令执行系统、装置或设备结合使用的任意计算机可读取介质。
在计算机可读取介质上实施的程序代码可以利用任意合适的介质传输,包括但不限于无线、有线线路、光纤光缆、RF等或者上述内容任意合适的组合。
用于实现本发明应用中操作的计算机程序代码可以用一种或多种编程语言的任意组合编写,包括面向对象的编程语言例如Java、Smalltalk、C++等以及传统的过程编程语言例如C编程语言或类似的编程语言。程序代码可以完全在用户的计算机上运行,部分在用户的计算机上运行,作为单独的软件包运行,部分在用户的计算机上运行并且部分在远程计算机上运行,或者完全在远程计算机或服务器上运行。在后两种情形中,远程计算机可以通过任何类型的网络连接至用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接可以通往外部计算机(例如使用互联网服务供应商通过互联网实现)。
以上根据本发明的实施例参照方法、装置(系统)和计算机程序产品的流程图和/或方块图介绍了本发明的各种应用。应该理解流程图和/或方块图中的每一个模块以及流程图和/或方块图中的模块组合都可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或用于生产机械的其他可编程数据处理装置的处理器以使得通过计算机或其他可编程数据处理装置的处理器执行指令来创建用于实现流程图和/或方块图中的一个或多个模块中列举的功能/动作的方法。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或以特定方式工作的其他设备的计算机可读取介质内,以使存储在计算机可读取介质内的指令生产出的制品包括有实现了流程图和/或方块图中的一个或多个模块中列举的功能/动作的指令。
计算机程序指令也可以被载入到计算机、其他可编程数据处理装置或其他设备上以促使在计算机、其他可编程装置或其他设备上执行一系列操作步骤,从而生成计算机实现的过程,以使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或方块图中的一个或多个模块中列举的功能/动作的过程。
除非另有明确说明,否则术语“一个实施例”、“实施例”、“多个实施例”、“所述实施例”、“所述多个实施例”、“一个或多个实施例”、“部分实施例”和“一个实施例”是指“本发明的一个或多个(但并不是全部的)实施例”。
除非另有明确说明,否则术语“包含”、“包括”、“具有”及其变形是指“包括但不限于”。
除非另有明确说明,否则列举的项目列表并不意味着任何或全部的项目互相排斥。
除非另有明确说明,否则术语“一”、“一个”和“这个”是指“一个或多个”。
除非另有明确说明,否则彼此通信的设备不需要彼此间连续通信。另外,彼此通信的设备可以直接通信或者通过一个或多个媒介间接通信。
对其中若干部件彼此通信的实施例的说明并不意味着需要所有这样的部件。相反,介绍了多种可选部件以说明本发明可行实施例的多样性。
而且,尽管过程步骤、方法步骤、算法等可能是以一定的先后顺序进行介绍,但是这些过程、方法和算法也可以被设置为以不同的顺序工作。换句话说,任何可能已介绍过的步骤次序或顺序都并不必然表示需要用这样的顺序来执行所述步骤。本文中介绍的过程步骤可以用任何实用的顺序执行。例如,部分步骤可以同时执行。
在本文中介绍单个设备或对象时,显而易见的是可以使用多于一个设备/对象(无论它们是否协作)以代替单个设备/对象。类似地,在本文中介绍多于一个设备或对象(无论它们是否协作)时,显而易见的是可以使用单个设备/对象来代替多于一个的设备或对象或者可以使用不同数量的设备/对象来代替图示数量的设备或程序。设备的功能和/或特性可以可选地通过一种或多种其他的并未明确表述为具有这种功能/特性的设备来实施。因此,本发明的其他实施例无序包括所述设备自身。
图中示出的操作给出了按照一定顺序进行的某些事件。在可选实施例中,某些操作可以按照不同的顺序执行、修改或删除。而且,可以向上述逻辑中增加步骤并且仍然适用于上述实施例。而且,本文中介绍的操作可以顺序执行或者某些操作可以并行处理。更进一步地,操作可以由单个处理单元或者由分布式处理单元执行。
以上给出对本发明各种实施例的介绍是为了进行解释和说明。不应将其理解为穷举或者将本发明限制为公开的具体形式。根据上述教导可以得到多种修改和变形。应该理解本发明的保护范围不应由这些具体实施方式限定,而是应该由本文所附的权利要求限定。以上的说明内容、示例和数据提供了制备和使用本发明组成的完整描述。由于能够不背离本发明实质和保护范围地获得本发明的很多实施例,因此本发明应以本文所附的权利要求为基础。
Claims (20)
1.一种与存储系统通信的系统,包括:
处理器;
可供处理器访问的第一缓存;
可供处理器访问的第二缓存;
计算机可读取存储介质,具有在其中实施的由处理器执行以执行操作的计算机可读取程序代码,所述操作包括:
确定要从第一缓存降级至第二缓存的记录,其中第一缓存内的记录对应于存储系统内的记录并且包括多个扇区;
确定第二缓存是否包括从第一缓存降级的旧版本记录;
响应于确定第二缓存包括旧版本记录,确定旧版本记录是否包括在从第一缓存降级的记录中所未包括的记录扇区;
将从第一缓存降级的记录的扇区与旧版本记录中未包含在从第一缓存降级的记录内的扇区合并为新版本的记录;并且
将新版本的记录写入第二缓存。
2.如权利要求1所述的系统,其中所述操作进一步包括:
响应于将新版本的记录写入第二缓存而使第二缓存内的旧版本记录无效。
3.如权利要求1所述的系统,其中所述操作进一步包括:
确定被降级的记录是否包括用于记录的所有扇区的数据,其中确定旧版本记录是否包括在从第一缓存降级的记录中所未包括的记录扇区是响应于确定被降级的记录并不包括用于记录的所有扇区的数据而执行的。
4.如权利要求3所述的系统,其中响应于被降级记录不包括用于记录的所有扇区的数据以及旧版本记录不包括被降级记录内所未包括的记录扇区,新版本的记录包括不完整的记录,所述不完整记录包括的扇区少于记录的所有扇区。
5.如权利要求3所述的系统,其中响应于被降级记录不包括用于记录的所有扇区的数据以及旧版本记录包括被降级记录内所未包括的记录的扇区,新版本的记录包括完整的记录,所述完整的记录包括记录的所有扇区。
6.如权利要求3所述的系统,其中所述操作进一步包括:
响应于确定被降级记录包括用于记录的所有扇区的数据,将被降级记录写为新版本的记录。
7.如权利要求3所述的系统,其中所述操作进一步包括:
响应于确定被降级记录未包括用于所有记录扇区的数据并且在第二缓存内没有旧版本的记录,将被降级记录写为新版本的记录,其中被降级记录可以包括不完整的记录或完整的记录,所述不完整的记录并未包括记录的所有扇区,所述完整的记录则包括记录的所有扇区。
8.如权利要求1所述的系统,其中旧版本的记录包括先前从第一缓存降级至第二缓存的记录扇区,并且其中新版本的记录被写入第二缓存内未包括旧版本记录的位置。
9.如权利要求1所述的系统,其中从第一缓存降级的记录被包括在具有从第一记录降级的记录的第一步长内,其中所述操作进一步包括:
在不含有效记录的第二缓存内将记录从第一步长写为第二步长。
10.如权利要求9所述的系统,其中确定记录降级的操作,确定第二缓存是否包括旧版本的操作,确定旧版本是否包括在被降级记录内所未包括的扇区的操作,合并扇区的操作以及写入新版本的操作是针对从第一步长写为第二步长的每一条记录执行的。
11.一种用于在包括第一缓存、第二缓存和存储系统的缓存系统内管理数据的方法,包括:
确定要从第一缓存降级至第二缓存的记录,其中第一缓存内的记录对应于存储系统内的记录并且包括多个扇区;
确定第二缓存是否包括从第一缓存降级的旧版本的记录;
响应于判定第二缓存包括旧版本的记录,确定旧版本记录是否包括在从第一缓存降级的记录中所未包括的记录扇区;
将从第一缓存降级的记录中的扇区与旧版本记录中未包含在从第一缓存降级的记录内的扇区合并为新版本的记录;并且
将新版本的记录写入第二缓存。
12.如权利要求11所述的方法,其中所述方法进一步包括:
确定被降级的记录是否包括用于所有记录扇区的数据,其中确定旧版本记录是否包括在从第一缓存降级的记录中所未包括的记录扇区是响应于确定被降级的记录并不包括用于所有记录扇区的数据而执行的。
13.如权利要求11所述的方法,其中所述方法进一步包括:
响应于将新版本的记录写入第二缓存而使第二缓存内的旧版本记录无效。
14.如权利要求13所述的方法,其中响应于被降级记录不包括用于所有记录扇区的数据以及旧版本记录不包括被降级记录内所未包括的记录扇区,新版本的记录包括不完整的记录,所述不完整的记录包括的扇区少于记录的所有扇区。
15.如权利要求13所述的方法,其中响应于被降级记录不包括用于所有记录扇区的数据以及旧版本记录包括被降级记录内所未包括的记录的扇区,新版本的记录包括完整的记录,所述完整的记录包括记录的所有扇区。
16.如权利要求13所述的方法,其中所述方法进一步包括:
响应于确定被降级记录包括用于记录的所有扇区的数据,将被降级记录写为新版本的记录。
17.如权利要求13所述的方法,其中所述方法进一步包括:
响应于确定被降级记录未包括用于记录的所有扇区的数据并且在第二缓存内没有旧版本的记录,将被降级记录写为新版本的记录,其中被降级记录可以包括不完整的记录或完整的记录,所述不完整的记录并未包括记录的所有扇区,所述完整的记录则包括记录的所有扇区。
18.如权利要求11所述的方法,其中旧版本的记录包括先前从第一缓存降级至第二缓存的记录扇区并且其中新版本的记录被写入第二缓存内未包括旧版本记录的位置。
19.如权利要求11所述的方法,其中从第一缓存降级的记录被包括在具有从第一记录降级的记录的第一步长内,其中所述方法进一步包括:
在不含有效记录的第二缓存内将记录从第一步长写为第二步长。
20.如权利要求19所述的方法,其中确定记录降级的操作,确定第二缓存是否包括旧版本的操作,确定旧版本是否包括被降级记录内所未包括的扇区的操作,合并扇区的操作以及写入新版本的操作是针对从第一步长写为第二步长的每一条记录执行的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/352,239 US9021201B2 (en) | 2012-01-17 | 2012-01-17 | Demoting partial tracks from a first cache to a second cache |
US13/352,239 | 2012-01-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103207840A CN103207840A (zh) | 2013-07-17 |
CN103207840B true CN103207840B (zh) | 2016-01-06 |
Family
ID=47757802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310016878.XA Expired - Fee Related CN103207840B (zh) | 2012-01-17 | 2013-01-17 | 用于将不完整记录从第一缓存降级至第二缓存的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9021201B2 (zh) |
CN (1) | CN103207840B (zh) |
DE (1) | DE102013200032B4 (zh) |
GB (1) | GB2500457B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298695B (zh) * | 2013-07-19 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 数据缓存方法、装置及服务器 |
US10133488B2 (en) | 2014-03-17 | 2018-11-20 | Primaryio, Inc. | Apparatus and method for cache provisioning, configuration for optimal application performance |
US10146437B2 (en) * | 2014-03-17 | 2018-12-04 | Primaryio, Inc. | Tier aware caching solution to increase application performance |
US10242075B2 (en) * | 2014-09-25 | 2019-03-26 | Lg Cns Co., Ltd. | Database apparatus, database management method performed in database apparatus and storing the same |
US9665493B2 (en) * | 2014-10-03 | 2017-05-30 | International Business Machines Corporation | Increased cache performance with multi-level queues of complete tracks |
US20160212198A1 (en) * | 2015-01-16 | 2016-07-21 | Netapp, Inc. | System of host caches managed in a unified manner |
US10067884B2 (en) | 2015-08-21 | 2018-09-04 | International Business Machines Corporation | Distributing a plurality of tracks to add to cache to lists assigned to processors |
US10114753B2 (en) | 2015-08-21 | 2018-10-30 | International Business Machines Corporation | Using cache lists for multiple processors to cache and demote tracks in a storage system |
US10108552B2 (en) * | 2015-08-21 | 2018-10-23 | International Business Machines Corporation | Using cache lists for processors to determine tracks to demote from a cache |
US9952904B2 (en) | 2015-08-21 | 2018-04-24 | International Business Machines Corporation | Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache |
US10628331B2 (en) * | 2016-06-01 | 2020-04-21 | International Business Machines Corporation | Demote scan processing to demote tracks from cache |
CN106331335A (zh) * | 2016-08-22 | 2017-01-11 | 深圳市金立通信设备有限公司 | 一种图像数据处理方法及终端 |
US10691566B2 (en) | 2017-07-27 | 2020-06-23 | International Business Machines Corporation | Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache |
US11327664B1 (en) * | 2017-08-04 | 2022-05-10 | Dell Products L.P. | Fast small write forwarding with non-temporal cache memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860090A (en) * | 1995-10-20 | 1999-01-12 | Informix Software, Inc. | Append-only storage in a disk array using striping and parity caching |
CN1148658C (zh) * | 1999-10-01 | 2004-05-05 | 国际商业机器公司 | 利用高速缓存器管理raid存储系统的方法和系统 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464713A (en) | 1981-08-17 | 1984-08-07 | International Business Machines Corporation | Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store |
US5860091A (en) | 1996-06-28 | 1999-01-12 | Symbios, Inc. | Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications |
US20010029574A1 (en) | 1998-06-18 | 2001-10-11 | Rahul Razdan | Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state |
JP2000057039A (ja) | 1998-08-03 | 2000-02-25 | Canon Inc | アクセス制御方法及び装置及びファイルシステム及び情報処理装置 |
US6321240B1 (en) | 1999-03-15 | 2001-11-20 | Trishul M. Chilimbi | Data structure partitioning with garbage collection to optimize cache utilization |
US6925515B2 (en) * | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
EP1399823B1 (en) | 2001-06-26 | 2011-02-16 | Oracle America, Inc. | Using an l2 directory to facilitate speculative loads in a multiprocessor system |
US6748488B2 (en) * | 2001-09-28 | 2004-06-08 | Sun Microsystems, Inc. | Storage array having multiple erasure correction and sub-stripe writing |
US6785771B2 (en) | 2001-12-04 | 2004-08-31 | International Business Machines Corporation | Method, system, and program for destaging data in cache |
US7107385B2 (en) | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US6904498B2 (en) * | 2002-10-08 | 2005-06-07 | Netcell Corp. | Raid controller disk write mask |
US6996676B2 (en) | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7386663B2 (en) | 2004-05-13 | 2008-06-10 | Cousins Robert E | Transaction-based storage system and method that uses variable sized objects to store data |
US7885921B2 (en) | 2004-11-18 | 2011-02-08 | International Business Machines Corporation | Managing atomic updates on metadata tracks in a storage system |
US20060155934A1 (en) | 2005-01-11 | 2006-07-13 | Ramakrishnan Rajamony | System and method for reducing unnecessary cache operations |
US7698501B1 (en) | 2005-04-29 | 2010-04-13 | Netapp, Inc. | System and method for utilizing sparse data containers in a striped volume set |
US8504597B2 (en) | 2005-09-09 | 2013-08-06 | William M. Pitts | Distributed file system consistency mechanism extension for enabling internet video broadcasting |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
US20070118695A1 (en) | 2005-11-18 | 2007-05-24 | International Business Machines Corporation | Decoupling storage controller cache read replacement from write retirement |
US7444478B2 (en) | 2005-11-18 | 2008-10-28 | International Business Machines Corporation | Priority scheme for transmitting blocks of data |
US7650341B1 (en) | 2005-12-23 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Data backup/recovery |
US7702870B2 (en) | 2006-01-19 | 2010-04-20 | Network Appliance Inc. | Method and apparatus for defragmentation and for detection of relocated blocks |
US20080005520A1 (en) | 2006-06-09 | 2008-01-03 | Siegwart David K | Locality with parallel hierarchical copying garbage collection |
US7562203B2 (en) | 2006-09-27 | 2009-07-14 | Network Appliance, Inc. | Storage defragmentation based on modified physical address and unmodified logical address |
JP2008108145A (ja) | 2006-10-26 | 2008-05-08 | Hitachi Ltd | 計算機システム及びこれを用いたデータの管理方法 |
JP5031341B2 (ja) | 2006-11-30 | 2012-09-19 | 株式会社日立製作所 | 記憶システム及びデータ管理方法 |
US7721043B2 (en) | 2007-01-08 | 2010-05-18 | International Business Machines Corporation | Managing write requests in cache directed to different storage groups |
US20090210620A1 (en) | 2008-02-19 | 2009-08-20 | Jibbe Mahmoud K | Method to handle demand based dynamic cache allocation between SSD and RAID cache |
US7958310B2 (en) | 2008-02-27 | 2011-06-07 | International Business Machines Corporation | Apparatus, system, and method for selecting a space efficient repository |
US9088591B2 (en) | 2008-04-28 | 2015-07-21 | Vmware, Inc. | Computer file system with path lookup tables |
US8296398B2 (en) | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
KR101044521B1 (ko) | 2008-12-31 | 2011-06-27 | 엘에스산전 주식회사 | 네트워크에 연결된 슬레이브 장치들의 동기 제어장치 |
US20100191907A1 (en) | 2009-01-26 | 2010-07-29 | Lsi Corporation | RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy |
US8180981B2 (en) | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
JP4874368B2 (ja) * | 2009-06-22 | 2012-02-15 | 株式会社日立製作所 | フラッシュメモリを用いたストレージシステムの管理方法及び計算機 |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8838903B2 (en) | 2010-02-04 | 2014-09-16 | Dataram, Inc. | Priority ordered multi-medium solid-state storage system and methods for use |
US8578107B2 (en) * | 2010-02-16 | 2013-11-05 | International Business Machines Corporation | Extent migration scheduling for multi-tier storage architectures |
US8688913B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Management of partial data segments in dual cache systems |
US8688914B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Promotion of partial data segments in flash cache |
-
2012
- 2012-01-17 US US13/352,239 patent/US9021201B2/en not_active Expired - Fee Related
-
2013
- 2013-01-03 DE DE102013200032.4A patent/DE102013200032B4/de active Active
- 2013-01-10 GB GB201300444A patent/GB2500457B/en active Active
- 2013-01-17 CN CN201310016878.XA patent/CN103207840B/zh not_active Expired - Fee Related
- 2013-02-27 US US13/779,439 patent/US9026732B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860090A (en) * | 1995-10-20 | 1999-01-12 | Informix Software, Inc. | Append-only storage in a disk array using striping and parity caching |
CN1148658C (zh) * | 1999-10-01 | 2004-05-05 | 国际商业机器公司 | 利用高速缓存器管理raid存储系统的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
DE102013200032A1 (de) | 2013-07-18 |
US9021201B2 (en) | 2015-04-28 |
GB201300444D0 (en) | 2013-02-27 |
US20130185504A1 (en) | 2013-07-18 |
US9026732B2 (en) | 2015-05-05 |
DE102013200032B4 (de) | 2021-06-02 |
GB2500457A (en) | 2013-09-25 |
GB2500457B (en) | 2014-04-16 |
CN103207840A (zh) | 2013-07-17 |
US20130185502A1 (en) | 2013-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103207840B (zh) | 用于将不完整记录从第一缓存降级至第二缓存的系统和方法 | |
KR102556431B1 (ko) | 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브 | |
CN104956312B (zh) | 存储装置及存储装置的控制方法 | |
CN103703440B (zh) | 预取用于使更新轨道离台的数据轨道和奇偶校验数据 | |
CN103257932B (zh) | 用于管理计算机可读高速缓存系统中的数据的方法和系统 | |
US8825944B2 (en) | Populating strides of tracks to demote from a first cache to a second cache | |
JP5944587B2 (ja) | 計算機システム及び制御方法 | |
CN104145252A (zh) | 两级高速缓存系统中的自适应高速缓存提升 | |
JP5908118B2 (ja) | 第1キャッシュと第2キャッシュとストレージ・システムとを含むキャッシュ・システムにおいてデータを管理するプログラム、システム、及び方法 | |
CN111857540B (zh) | 数据存取方法、装置和计算机程序产品 | |
US8825956B2 (en) | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache | |
US20160004644A1 (en) | Storage Controller and Method for Managing Modified Data Flush Operations From a Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160106 Termination date: 20210117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |