CN102763091A - 将闪存高速缓存集成到大型存储系统 - Google Patents
将闪存高速缓存集成到大型存储系统 Download PDFInfo
- Publication number
- CN102763091A CN102763091A CN2011800097035A CN201180009703A CN102763091A CN 102763091 A CN102763091 A CN 102763091A CN 2011800097035 A CN2011800097035 A CN 2011800097035A CN 201180009703 A CN201180009703 A CN 201180009703A CN 102763091 A CN102763091 A CN 102763091A
- Authority
- CN
- China
- Prior art keywords
- data
- speed cache
- flash memory
- rack
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 63
- 230000015654 memory Effects 0.000 claims abstract description 260
- 238000000034 method Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 13
- 238000007726 management method Methods 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 2
- 230000001737 promoting effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 239000013307 optical fiber Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007087 memory ability Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 210000003733 optic disk Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
- G06F2212/2146—Solid state disk being detachable, e.g.. USB memory
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种I/O机柜模块,其具备一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备。主机适配器连接到所述I/O机柜模块的第一插槽并被配置为将主机连接到所述I/O机柜。设备适配器连接到所述I/O机柜模块的第二插槽并被配置为将存储设备连接到所述I/O机柜模块。闪存高速缓存连接到所述I/O机柜模块的第三插槽,并包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器。主处理器复合体管理通过所述I/O机柜模块处理的数据请求,方式为:与所述主机适配器、设备适配器以及闪存高速缓存通信以处理所述数据请求。
Description
技术领域
本发明涉及存储系统,更具体地说,涉及将基于闪存的高速缓存集成到大型存储系统。
背景技术
基于闪存的固态驱动器(“SSD”)的出现彻底改变了从笔记本电脑到企业存储系统的主存储计算机架构。基于闪存的SSD提供的随机I/O性能和访问延迟优于旋转硬盘驱动器(“HDD”)几个数量级。此外,基于闪存的SSD显著降低了功耗。
基于闪存的存储器扩展卡成为用于存储器扩展和改进的工具,即使在网络环境中也是如此。通常,使用快速外围组件互连(PCI-e)插槽直接将这些扩展卡放置到主机中,从而将这些卡放置在更靠近主机的处理器的位置,而不是更靠近由主机通过网络访问的存储盘的位置。将扩展卡放置得更靠近处理器可防止来自盘阵列控制器和网络协议的额外延迟。
即使基于闪存的SSD和基于闪存的存储器扩展卡提供的随机输入/输出(I/O)性能和访问延迟优于HDD几个数量级,但随机读取/写入I/O性能在很大程度上取决于与设备关联的固态存储控制器的架构。例如,如所指出的,基于闪存的SSD的读取和写入延迟通常比HDD低两个数量级,但在诸如使用HDD进行存储的企业存储系统之类的大型存储系统中,动态随机存取存储器(DRAM)高速缓存的延迟仍然优于基于闪存的SSD两个数量级。
就每秒I/O操作数(“IOPS”)和延迟而言,整体系统性能不仅取决于固态存储器控制器的内部架构,而且还在很大程度上取决于整体系统架构,例如基于闪存的存储器扩展如何集成到系统以及提供哪些接口。
图1是示出根据现有技术的常规存储系统100的一个实施例的示意性方块图。系统100包括多个I/O机柜(enclosure)102a-n,它们在一个或多个主机104a-n与一个或多个存储设备106a-n之间提供接口。存储设备106a-n可以容纳在机柜(例如容纳一个或多个HDD的盘机柜)中。
如在此使用的,I/O机柜指容纳各种I/O适配器和连接性设备以在I/O存储单元处理器与I/O适配器之间提供通信的设备。通常,I/O机柜102a-n成对安装以提供冗余保护。包含在I/O机柜中的I/O适配器通常是主机适配器108a-n或设备适配器110a-n。I/O机柜具有多个可用插槽,主机适配器108a-n或设备适配器110a-n可以附接到这些插槽。然而,在许多情况下,I/O机柜保留几个空置插槽(open slot)以用于扩展或其他用途。
主机适配器108a-n是在主机104a-n与I/O机柜102a-n之间提供连接性的适配器。主机104a-n通常跨网络112连接到主机适配器108a-n,网络112包括诸如路由器、交换机之类的各种设备。主机104a-n通常使用诸如光纤通道、光纤连接性(FICON)、企业系统连接(ESCON)之类的网络技术或本领域技术人员知道的其他连接性协议连接到主机适配器108a-n。设备适配器110a-n是在设备(例如存储设备106a-n)与I/O机柜102a-n之间提供连接性的设备。在一个实施例中,设备适配器110a-n可以是光纤通道仲裁环(FC-AL)设备适配器。在一个典型实施例中,每个设备适配器110a-n可以连接到为存储设备106a-n提供通信的两个单独交换网络。当设备适配器110a-n连接到存储设备106a-n时,它可以使用交换连接通过最短可能路径传输数据。
通过一个或多个处理器复合体114a-b促进系统100的各种组件之间的通信。在以典型企业存储系统实现的通用架构中,使用两个处理器复合体114a-b提高可靠性并改进性能。处理器复合体114a-b通常连接到每个I/O机柜102a-n并包括在主机适配器108a-n与设备适配器110a-n之间提供通信所必需的逻辑,从而使连接到主机适配器108a-n的主机104a-n能够经由设备适配器110a-n访问存储设备106a-n。处理器复合体114a-n在此也可以称为中央电子设备复合体(CEC)。
在常规系统中,处理器复合体通常包括诸如DRAM 116a-b之类的易失性存储器以及称为非易失性存储装置(NVS)118a-b的非易失性存储器,非易失性存储器通常被配置为带后备电源的DRAM。处理器复合体的存储器116、118通常用于缓存与通过系统100处理的数据请求关联的数据。
在操作中,主机适配器108a-n首先处理来自主机104a-n的读取和写入请求,主机适配器108a-n又与处理器复合体114a交互。处理器复合体114a管理去往存储设备106a-n的逻辑卷的所有读取和写入请求。在写入请求期间,处理器复合体114a可以使用快速写入,其中数据被缓存到一个处理器复合体114a的易失性存储器116a,并且还被写入到另一个处理器复合体114b的永久性存储器118b。处理器复合体114a然后可以甚至在实际写入到盘之前,将该写入报告为完成。这将提供快速写入延迟。然而,当处理器复合体存储器116、118用作数据高速缓存时,大小、时间和功率限制可能限制该存储器的效率。
当主机104a-n执行读取操作时,处理器复合体114a-b使用高性能交换网络架构从存储设备106a-n取回数据。当数据被取回并返回到主机104a-n时,该数据还可以被缓存到易失性存储器116a-b,以防在未来读取请求中再次需要该数据。在一个实施例中,处理器复合体114a-b尝试通过使用诸如自适应替换高速缓存中的顺序预取(SARC)之类的算法来预计未来读取。只要可能使用此类算法,数据便会保存在高速缓存中。如果在被请求数据已在高速缓存中的情况下发生高速缓存命中,则主机104a-n不必等待从存储设备106a-n取回数据。然而,由于处理器复合体存储器116、118的大小、时间和功率限制,这些存储器的缓存能力可能不会在所有情况下都令人满意。
美国专利7,421,552-B2(Long,M.,“Techniques for Managing Datawithin a Data Storage System using a Flash-based Memory Vault(使用基于闪存的存储器库在数据存储系统中管理数据的技术)”)披露了以下技术:使用基于闪存的存储器管理数据存储系统中的数据;使用易失性存储器存储高速缓存代表一组主机以及在数据存储系统由主电源供电时代表一组盘驱动器来执行数据存储操作。
因此,本领域中需要解决上述问题。
发明内容
从上述讨论应显而易见的是,需要一种改进当前存储架构和数据缓存系统的装置、系统和方法。有利的,此类装置、系统和方法将基于闪存的存储设备集成到I/O机柜的一个或多个空闲插槽,以提供改进本领域公知的架构和缓存功能的缓存和存储能力。
开发了本发明以响应本领域的目前状况,具体地说,以响应本领域中尚未完全由当前可用的存储系统架构解决的问题和需求。相应地,开发了本发明的一个优选实施例,以提供一种用于将闪存高速缓存(flash cache)集成到大型存储系统的装置、系统和方法,其克服了上面讨论的本领域中许多或全部缺点。
用于集成基于闪存的高速缓存的装置具备多个模块和设备。所述实施例中的这些模块和设备包括输入/输出(“I/O”)机柜模块、主机适配器、设备适配器、基于闪存的缓存设备(“闪存高速缓存”)以及主处理器复合体。
所述I/O机柜模块包括一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备。所述主机适配器连接到所述I/O机柜模块的第一插槽并被配置为将主机连接到所述I/O机柜。所述设备适配器连接到所述I/O机柜模块的第二插槽并被配置为将存储设备连接到所述I/O机柜模块。所述闪存高速缓存连接到所述I/O机柜模块的第三插槽,并包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器。所述主处理器复合体管理通过所述I/O机柜模块处理的数据请求,方式为:与所述主机适配器、设备适配器以及闪存高速缓存通信以处理所述数据请求。
在一个实施例中,所述主处理器复合体进一步包括动态随机存取存储器(“DRAM”)高速缓存以临时缓存与通过所述I/O机柜模块处理的数据请求关联的数据。在进一步的实施例中,其中所述主处理器复合体进一步包括非易失性存储装置(“NVS”)高速缓存,所述非易失性存储装置(“NVS”)高速缓存包括非易失性存储设备以缓存与由所述I/O机柜处理的数据请求关联的数据。在一个实施例中,所述主处理器复合体被配置为将缓存在所述DRAM高速缓存和NVS高速缓存之一中的数据离台到所述闪存高速缓存。
在一个实施例中,所述装置被进一步配置为包括辅助处理器复合体,所述辅助处理器复合体用作通过所述I/O机柜模块处理的数据请求的辅助管理器,使得所述辅助处理器复合体响应于所述主处理器复合体的故障而与所述主机适配器、设备适配器以及至少一个闪存高速缓存通信以管理数据请求。在进一步的实施例中,所述辅助处理器复合体进一步包括DRAM高速缓存以临时缓存与由所述I/O机柜处理的数据请求关联的数据。在进一步的实施例中,所述辅助处理器复合体进一步包括NVS高速缓存,所述NVS高速缓存包括非易失性存储设备以缓存与由所述I/O机柜处理的数据请求关联的数据。
在一个实施例中,将所述闪存高速缓存恰好分配给所述主处理器复合体和辅助处理器复合体中的一个,其中所述主处理器复合体和辅助处理器复合体均被配置为管理通过所述I/O机柜处理的数据请求。在进一步的实施例,响应于所述主处理器复合体的故障,将首先分配给所述主处理器复合体的所述至少一个闪存高速缓存重新分配给所述辅助处理器复合体。
在所述装置的一个实施例中,将所述闪存高速缓存分成多个区域,所述区域包括缓存与读取数据请求关联的数据的读取缓存区域以及缓存与写入数据请求关联的数据的写入缓存区域。在进一步的实施例中,将所述闪存高速缓存进一步分成:补充读取缓存区域,所述补充读取缓存区域维护已离台到存储设备的数据的缓存,以便可以从所述补充读取缓存区域取回所述数据;以及存储区域,所述存储区域存储未离台到存储设备的数据,以便从所述存储区域取回所述数据。
在一个实施例中,所述主处理器复合体被配置为独占地使用所述闪存高速缓存以缓存通过所述I/O机柜模块处理的操作,以便所述主处理器复合体不使用单独的DRAM高速缓存和/或NVS高速缓存来缓存操作。
还提供了本发明的一种用于将基于闪存的高速缓存集成到存储系统的系统。所披露的实施例中的方法实质上包括执行以上针对所述装置的操作提供的功能所必需的步骤。所述系统可以包含在各种配置中以将闪存高速缓存集成到I/O机柜的额外插槽。
具体地说,在一个实施例中,所述系统包括具有一个或多个I/O机柜的I/O机柜模块,所述I/O机柜具有多个插槽以容纳电子设备。所述系统优选地具有连接到所述I/O机柜模块的第一插槽的至少一个主机适配器,所述主机适配器被配置为将主机连接到所述I/O机柜模块。至少一个主机连接到所述至少一个主机适配器。至少一个设备适配器连接到所述I/O机柜模块的第二插槽,并且所述设备适配器被配置为将存储设备连接到所述I/O机柜模块。
所述系统还包括连接到所述至少一个设备适配器的至少一个存储设备。所述系统还包括连接到所述I/O机柜模块的第三插槽的至少一个基于闪存的缓存设备(“闪存高速缓存”)。所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器。所述系统还可以包括管理通过所述I/O机柜模块处理的数据请求的主处理器复合体。所述主处理器复合体与所述至少一个主机适配器、所述至少一个设备适配器以及所述至少一个闪存高速缓存通信以管理所述数据请求。
在所述系统的一个实施例中,所述主机是计算机系统,其中所述计算机系统包括至少一个处理器和存储器。在进一步的实施例中,所述存储设备包括硬盘驱动器和磁带驱动器中的一个或多个。
还提供了本发明的一种用于将基于闪存的高速缓存集成到存储系统的方法。所披露的实施例中的方法实质上包括执行以上针对所述装置和系统的操作提供的功能所必需的步骤。
在一个实施例中,所述方法包括将至少一个基于闪存的缓存设备(“闪存高速缓存”)连接到I/O机柜模块,所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器。所述方法还可以包括在连接到所述I/O机柜模块的第一插槽的主机适配器处接收数据请求。所述主机适配器被配置为将主机连接到所述I/O机柜模块。所述I/O机柜模块包括一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备,并且所述I/O机柜模块具有连接到所述I/O机柜模块的第二插槽的至少一个设备适配器。所述设备适配器被配置为将存储设备连接到所述I/O机柜模块。
所述方法还可以包括将所述数据请求传送到管理通过所述I/O机柜模块处理的数据请求的主处理器复合体,以及访问至少一个基于闪存的缓存设备(“闪存高速缓存”)以执行与所述数据请求关联的一个或多个缓存操作。所述闪存高速缓存连接到所述I/O机柜模块的第三插槽。所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器。
在所述方法的进一步实施例中,所述数据请求可以是读取请求,并且访问所述至少一个闪存高速缓存以执行一个或多个缓存操作可以包括从所述闪存高速缓存取回数据。在另一个实施例中,所述数据请求可以是写入请求,并且访问所述至少一个闪存高速缓存以执行一个或多个缓存操作可以包括将与所述写入请求关联的数据存储在所述闪存高速缓存中。在进一步的实施例中,所述方法还可以包括将存储在所述闪存高速缓存中的数据离台到连接到所述设备适配器的所述存储设备。
从其他方面看,本发明提供了一种存储在计算机可读介质上并可加载到数字计算机的内部存储器中的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行本发明的步骤。
本说明书中对特性、优点的引用或类似语言并非暗示可以与本发明一起实现的所有特性和优点应在本发明的任何单个实施例中。相反,将理解,引用所述特性和优点的语言指与实施例一起描述的特定特性、优点或特征包括在本发明的至少一个实施例中。因此,本说明书中对特性、优点的讨论和类似语言可以(但并不一定)指同一实施例。
此外,本发明的所述特性、优点和特性可以以任何适当的方式组合在一个或多个实施例中。本领域的技术人员将认识到,可以在没有特定实施例的一个或多个特定特性或优点的情况下实现本发明。在其他情况下,可以在特定实施例中认识到可能不存在于本发明的所有实施例中的其他特性和优点。
附图说明
现在将仅通过实例的方式参考下面附图中示出的优选实施例描述本发明,这些附图是:
图1是示出根据现有技术并且其中可以实现本发明的一个优选实施例的常规存储系统的一个实施例的示意性方块图;
图2是示出根据本发明的一个优选实施例的具有集成的基于闪存的高速缓存的存储系统的一个实施例的示意性方块图;
图3是示出根据本发明的一个优选实施例的基于闪存的缓存设备的一个实施例的示意性方块图;
图4是示出根据本发明的一个优选实施例的具有集成的基于闪存的高速缓存而没有非易失性存储高速缓存的存储系统的一个实施例的示意性方块图;
图5是示出根据本发明的一个优选实施例的仅使用集成的基于闪存的高速缓存的存储系统的一个实施例的示意性方块图;
图6是示出根据本发明的一个优选实施例的一种用于将闪存高速缓存集成到存储系统的方法的一个实施例的示意性流程图;以及
图7是示出根据本发明的一个优选实施例的一种用于在存储系统中处理数据请求的方法的一个实施例的示意性流程图。
具体实施方式
如本领域的技术人员将理解的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面(在此通常被称为“电路”、“模块”或“系统”)的实施例的形式。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。
将本说明书中描述的多个功能单元标记为模块,以便更具体地强调它们的实现无关性。例如,模块可以被实现为包括定制VLSI电路或门阵列、诸如逻辑芯片、晶体管或其他分离组件之类的现用半导体的硬件电路。模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件之类的可编程硬件器件中实现。
模块还可以在软件中实现以便由各种类型的处理器执行。例如,标识的可执行代码模块可以包括一个或多个物理或逻辑的计算机指令块,所述块可以例如组织为对象、过程或函数。然而,标识的模块的可执行代码不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当所述指令被逻辑地结合时,将包括所述模块并实现该模块的所声明的目的。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在数个不同的代码段上、多个不同的程序中,以及跨多个存储设备。同样,操作数据可以在模块中被标识和在此示出,并且可以包括在任何适当的形式中并组织在任何适当类型的数据结构中。操作数据可以被收集为单个数据集,或可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为电子信号存在于系统或网络中。如果模块或模块部分在软件中实现,则软件部分存储在一个或多个计算机可读介质上。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或它们的任意适当组合。
所述计算机可读存储介质的更具体的实例(非穷举的列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或它们的任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取各种形式中的任意一种,包括但不限于电磁、光或它们的任意适当组合。计算机可读信号介质可以是任何不同于计算机可读存储介质并且能够传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的计算机可读介质。包含在计算机可读介质中的程序代码可以使用任何适当的介质传输,包括但不限于无线、线缆、光缆、RF等或它们的任意适当组合。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
本说明书中对“一个实施例”、“一实施例”的引用或类似语言指结合该实施例描述的特定特性、结构或特征被包括在本发明的至少一个实施例中。因此,本说明书中出现的短语“在一个实施例中”、“在一实施例中”和类似语言可以(但是并非一定)都指同一实施例。
此外,本发明的所述特性、结构或特征可以以任何适当的方式组合在一个或多个实施例中。在以下说明中,提供了大量特定的详细信息,如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的实例,以便彻底理解本发明的实施例。然而,相关领域的技术人员将认识到,可以在没有一个或多个特定的细节的情况下实现本发明,或者可以通过其他方法、组件、材料等实现本发明。在其他情况下,未详细示出或描述公知的结构、材料或操作以避免使本发明的各方面变得模糊不清。
下面将参考根据本发明的实施例的方法、装置、系统和计算机程序产品的示意性流程图和/或示意性方块图对本发明的各方面进行描述。将理解,所述示意性流程图和/或示意性方块图的每个方块以及所述示意性流程图和/或示意性方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现一个或多个示意性流程图和/或示意性方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个示意性流程图和/或示意性方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的示意性流程图和/或示意性方块图示出了根据本发明的各种实施例的装置、系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述示意性流程图和/或示意性方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。
还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。可以构想其他步骤和方法,它们在功能、逻辑或效果上与所示附图的一个或多个方块或其各部分等效。
尽管可以在流程图和/或方块图中使用不同的箭头类型和线条类型,但是应理解,它们并非限制相应实施例的范围。实际上,某些箭头或其他连接器可用来仅指示所述实施例的逻辑流。例如,箭头可以指示所述实施例的枚举步骤之间的未指定持续时间的等待或监视周期。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
图2是示出根据本发明的一个优选实施例的具有集成的基于闪存的缓存设备(“闪存高速缓存”)220a-n的存储系统200的一个实施例的示意性方块图。
系统200包括一个或多个I/O机柜202a-n的集合,所述I/O机柜202a-n在一个或多个主机204a-nui一个或多个存储设备206a-n之间提供接口。存储设备206a-n可以容纳在机柜中,例如容纳一个或多个HDD或其他类型存储设备(例如磁带驱动器或光驱动器)的盘机柜。在一个实施例中,存储设备206a-n可以包括可被配置为提供各种类型冗余保护的盘阵列。
如在此使用的,I/O机柜集合可以统称为I/O机柜模块201。如在此使用的,I/O机柜202a-n指容纳各种I/O适配器208a-n、210a-n和连接性设备以在I/O存储单元处理器214a-b和I/O适配器208a-n、210a-n之间提供通信的设备。通常,I/O机柜102a-n成对安装以提供冗余保护。包含在I/O机柜202a-n中的I/O适配器208a-n、210a-n通常是主机适配器108a-n或设备适配器210a-n之一。I/O机柜202a-n通常具有多个可用插槽,主机适配器208a-n或设备适配器210a-n可以附接到这些插槽。然而,如上所述,I/O机柜202a-n可以具备多个空置插槽以用于适配器扩展或其他用途。
主机适配器208a-n是在主机204a-n与I/O机柜202a-n之间提供连接性的适配器。主机204a-n通常是诸如个人计算机、膝上型计算机、客户机之类的计算机器,它们通过I/O机柜202a-n向各种存储设备206a-n或子系统发出数据请求来访问存储系统200。主机204a-n通常跨网络212连接到主机适配器208a-n,网络212通常包括诸如路由器、交换机之类的各种设备。主机204a-n可以使用诸如光纤通道、光纤连接性(“FICON”)、企业系统连接(“ESCON”)之类的网络技术或本领域的技术人员所知的其他连接性协议连接到主机适配器108a-n。
设备适配器210a-n是在设备(例如存储设备206a-n)和I/O机柜202a-n之间提供连接性的设备。在一个实施例中,设备适配器210a-n可以是光纤通道仲裁环(“FC-AL”)设备适配器。一个典型实施例中,每个设备适配器210a-n可以连接到为存储设备206a-n提供通信的两个单独交换网络。在一个实施例中,当设备适配器210a-n连接到存储设备206a-n时,它可以使用交换连接通过最短可能路径传输数据。当然,构想了本领域的技术人员所知的其他类型的连接和通信协议。
通过一个或多个处理器复合体214a-b促进系统200的各种组件之间的通信。在以典型企业存储系统实现的通用架构中,使用两个处理器复合体214a-b提高可靠性并改进性能。通常一个是主处理器复合体214a而另一个是辅助处理器复合体214b。处理器复合体214a-b通常都连接到每个I/O机柜202a-n并包括在主机适配器208a-n与设备适配器110a-n之间提供通信的必需逻辑,从而使连接到主机适配器208a-n的主机204a-n能够经由设备适配器210a-n访问存储设备206a-n。处理器复合体214a-n在此也可以称为中央电子复合体(“CEC”)。
在所描述的实施例中,处理器复合体214a-b包括诸如动态随机存取存储器(“DRAM”)216a-b之类的易失性存储器以及称为非易失性存储装置(“NVS”)218a-b的非易失性存储器,非易失性存储器通常被配置为带后备电源的DRAM。当然,在其他实施例中,处理器复合体可以使用本领域的技术人员所知的其他类型的易失性存储器和非易失性存储器。处理器复合体214a-b的存储器216、218通常用于缓存与由系统200处理的数据请求关联的数据。
根据本发明的一个优选实施例,系统200将闪存高速缓存220a-n结合到I/O机柜模块201的空闲插槽中。优选地,可以使用多个闪存高速缓存220a-n,并可以将每个闪存高速缓存220a-n分配给特定处理器复合体214a-b。闪存高速缓存220a-n包括被配置为缓存与通过I/O机柜模块201处理的数据请求关联的数据的基于闪存的存储器。在一个构想的实施例中,“基于闪存的”存储器可以指诸如相变存储器(“PCM”)之类的其他类型的固态存储器,这些固态存储器可以具有与闪存存储器类似的属性,但可以具有改进的性能属性,具体取决于系统200的配置和架构。此外,在某些实施例中,闪存高速缓存220a可以分成两个或多个部分,每个部分可以由处理器复合体214a-b之一管理。这样可使用更少的闪存高速缓存220a-n,从而降低总体成本。在此类实施例中,可以在第二I/O机柜202b上的第二闪存高速缓存220c中提供数据冗余。
通过将闪存高速缓存220a-n集成到I/O机柜模块201的空闲插槽,闪存高速缓存220a-n在不需要对系统200的设备和组件进行重大修改的情况下与现有架构无缝集成的同时,改进了系统200的性能(例如,更好的高速缓存命中率)。此外,闪存高速缓存220a-n可伸缩并可以显著增长,使之大于常规系统的DRAM高速缓存216a-b和NVS高速缓存214a-b。
在所描述的实施例中,闪存高速缓存220a-n作为中间高速缓存运行并与DRAM高速缓存216a-b和NVS高速缓存218a-b一起运行以形成两层缓存系统。例如,数据可以首先缓存在DRAM高速缓存216a-b中,然后在进一步离台到存储设备206a-n之前,离台到闪存高速缓存220a-n。这允许以就每秒指令数和延迟而言至少相同的性能特征增强架构,同时扩展可用高速缓存以改进高速缓存命中率。
图3是示出根据本发明的一个优选实施例的基于闪存的缓存设备220a或闪存高速缓存的一个实施例的示意性方块图。如示出的,闪存高速缓存220a可以被分为不同的区域以处理不同的缓存操作。所描述的实施例示出了写入区域302、读取区域304、补充读取区域306以及存储区域308。尽管所述实施例示出了四个不同的区域,但是构想了闪存高速缓存220a可以具备少至一种不同的区域类型。通常,读取区域304用于保存镜像数据副本,其中另一副本或者位于DRAM高速缓存216a、NVS高速缓存218a,或者位于闪存高速缓存220a,而补充读取区域306保存不需要镜像到另一高速缓存中的缓存数据。在一个优选实施例中,对读取区域304的管理由处理器复合体214a-b之一控制,对补充读取区域306的管理由闪存高速缓存200a-n在内部完成。
写入区域302被配置为临时存储与写入请求关联的数据。通常,写入数据被离台到存储设备206a-n或闪存高速缓存220a的读取区域。读取区域304存储读取请求的数据,以便不需要从存储设备206a-n取回数据,而是直接从闪存高速缓存的读取区域304取回数据。优选地,读取区域304可直接由相应闪存高速缓存220a-n所在的同一I/O机柜202a-n中的主机适配器208a-n访问。补充读取区域306用于扩展可用的读取区域存储器以便增加读取请求的高速缓存命中可能性。
存储区域308被优选地配置为以类似于第0层存储设备的方式操作。例如,存储区域308可以用于存储从未离台到盘的数据(例如处理器复合体214a-b使用的元数据)或优选地存储在闪存高速缓存220a-n中的数据。在一个实施例中,闪存高速缓存220a的存储区域308可以被分配逻辑单元编号(“LUN”)以便将区域作为存储设备进行访问。
在某些实施例中,存储在闪存高速缓存220a的存储区域308中的数据可以被镜像到另一闪存高速缓存220b的存储区域中以提供冗余保护。因此,写入请求可以将数据存储在第一闪存高速缓存220a的存储区域和第二闪存高速缓存220c的存储区域中。优选地,第一和第二闪存高速缓存220a、220c位于不同的I/O机柜202a-n中。随后,读取请求可以直接从闪存高速缓存220a、220c的存储区域取回数据。优选地,由主机适配器208a接收的读取请求将从它自身所在的同一I/O机柜202a中配置的闪存高速缓存220a取回数据。
在操作中,具有处理器复合体高速缓存216a-b、218a-b和闪存高速缓存220a-n的系统200以改进的方式处理读取和写入请求两者。
对于写入请求,写入请求由主机适配器208a接收,并且主机适配器208a询问主处理器复合体214a在何处存储数据。处理器复合体214a发回响应,指示应将数据移动到的位置。通常,处理器复合体响应以两个位置,即一个易失性DRAM高速缓存216a位置以及辅助处理器复合体214b的NVS高速缓存218b中的一个非易失性位置,或闪存高速缓存220a-n的写入区域中的一个或两个位置。在一个实施例中,如果主处理器复合体214a不可达,则可以询问辅助处理器复合体214b,并且辅助处理器复合体214b变成新的主处理器复合体214a。
主处理器复合体214a将通过在其DRAM高速缓存216a中分配空间来响应写入请求。通常,还将分配辅助处理器复合体214b的NVS高速缓存218b中的空间以作为缓存数据的备份。主机适配器208a然后将数据传输到由主处理器复合体214a指示的位置,包括DRAM高速缓存216a和NVS高速缓存218b。
随后,处理器复合体214a-b则可以将数据从DRAM高速缓存216a和NVS高速缓存218b离台到闪存高速缓存220a-n。处理器复合体214a-b然后可以将数据从闪存高速缓存220a-n离台到存储设备206a-n。为此,通知设备适配器210a,并且设备适配器210a将数据从闪存高速缓存220a-n离台到连接到设备适配器210a的存储设备206a-n。优选地,使用其中存储数据的闪存高速缓存220a-n所在的同一I/O机柜202a-n中的设备适配器210a-n。在某些情况下,可以将数据直接从DRAM高速缓存216a或NVS高速缓存218b离台到存储设备206a-n。一旦完成离台操作,设备适配器210a就向处理器复合体214a通知操作完成。
一旦将数据从闪存高速缓存220a-n离台到存储设备206a-n,主处理器复合体214a就可以根据请求相同数据的读取请求,将所述数据释放到闪存高速缓存220a-n的写入区域302中,或实际上将所述数据移动到闪存高速缓存220a的补充读取区域306以供未来访问。这允许闪存高速缓存220a-n无效内部映射表项,从而减少写入放大。一旦完成此操作,从闪存高速缓存220a-n向处理器复合体214a发送完成消息。
在一个实施例中,将数据从一个缓存区域(例如,写入区域302)移动到另一个区域(例如,补充读取区域306)无需实际重新复制数据。相反,更新与闪存高速缓存220a-n关联的元数据以反映数据的区域改变。如果主处理器复合体214a出现故障,则可以将元数据信息转储到辅助处理器复合体214b的NVS高速缓存218a-b或转储到闪存高速缓存220a-n自身(例如在存储区域308中)。然后,辅助处理器复合体214b可以接管,从其NVS高速缓存218b或闪存高速缓存220a-n取回元数据,然后继续正常操作。
对于读取请求,主机适配器208a接收读取请求并询问处理器复合体214a以获得被请求数据的位置。处理器复合体214a-b中的一个或多个响应以数据位置,所述位置可以在其本地DRAM高速缓存216a-b、其NVS高速缓存218a-b、被分配给处理器复合体214a-b的闪存高速缓存220a-n的区域之一中,或在连接到系统200的存储设备206a-n上。主机适配器208a然后从所标识的位置取回数据并将其提供给主机204a-n。在某些情况下,可能尚未将数据从闪存高速缓存的写入区域302移动到读取区域304、306。尽管如此,在此类情况下,如果需要,则仍然可以直接从写入区域302取回数据。如果从存储设备206a-n之一取回数据,则处理器复合体214a-b通常使用设备适配器210a-n取回数据。
图4是示出根据本发明的一个优选实施例的具有集成的基于闪存的高速缓存220a-n而没有NVS高速缓存218a-b的存储系统300的一个实施例的示意性方块图。在此实施例中,各种闪存高速缓存220a-n仍放置在I/O机柜模块201的空闲插槽中,但通常连接到处理器复合体214a-b的NVS高速缓存218a-b被移除。在此实施例中,闪存高速缓存220a-n用作处理器复合体214a-b的非易失性存储装置,以便可以通过避免需要为NVS高速缓存218a-b提供电力而降低成本并提高效率。此外,与包括NVS高速缓存218a-b的实施例相比消耗更少的光纤通道网络(fabric)带宽,同时仍然以闪存高速缓存220a的形式提供可伸缩的写入高速缓存。
系统300的操作也稍有不同,因为从系统300中移除了NVS高速缓存218a-b。对于写入请求,主机适配器208a再次询问主处理器复合体214a在何处缓存写入数据,并且主处理器复合体214a通过在其DRAM高速缓存216a中以及在闪存高速缓存220a的写入区域302中分配空间来进行响应。数据被写入到两个位置,并且闪存高速缓存220a(而不是NVS高速缓存218b)现在用于提供写入数据的非易失性存储,而DRAM高速缓存216a用于提供与闪存高速缓存220a相比提高的存储性能。
在一个实施例中,将数据直接从DRAM高速缓存216a离台到存储设备206a-n。相应地,闪存高速缓存220a-n可以从其写入区域302释放写入数据。在一个实施例中,通过更新与闪存高速缓存220a关联的元数据,将数据从写入缓存区域302移动到补充读取区域306(或读取区域304)。然后将此操作完成的信号返回到处理器复合体214a-b。备选地,在将数据离台到存储设备206a-n之前,可以将数据从一个闪存高速缓存220a离台到另一个闪存高速缓存220c。例如,第二闪存高速缓存220c用作第一闪存高速缓存220a与存储设备206a-n之间的第二层中间高速缓存。
因为数据的至少一个副本被存储在闪存高速缓存220a-n中,所以需要其他智能以隐藏与基于闪存的存储器关联的明显过高的写入延迟(相对于DRAM而言)。在一个实施例中,这可以通过在带后备电源或通过超级电容器保护的闪存高速缓存中使用环形缓冲区来实现。一旦将数据传输到此环形缓冲区,闪存高速缓存就可以在数据实际被移动到闪存高速缓存之前,立即确认成功的写入操作。通常,环形缓冲区与NVS高速缓存218a-b相比相对较小以便节省电力和成本,并可以独立于保存与闪存高速缓存220a-n关联的结构的元数据。
读取路径对应于上面针对图2描述的路径,只是NVS高速缓存218a-b不再可作为可能的读取数据位置。
图5是示出根据本发明的一个优选实施例的仅使用闪存高速缓存220a-n而没有DRAM高速缓存216a-b或NVS高速缓存218a-b的存储系统400的一个实施例的示意性方块图。在所示出的实施例中,先前实施例的DRAM高速缓存216a-b和NVS高速缓存218a-b被连接到I/O机柜模块201的闪存高速缓存220a-n取代。在一个实施例中,此架构利用I/O机柜202a-n之间存在的对等数据传输可能性,使得系统400能够在不使用处理器复合体214a中的CPU周期而使用到处理器复合体214a的传输带宽的情况下,将数据的第二副本写入另一I/O机柜202b中的第二闪存高速缓存220c。
在此实施例中,当主机适配器208a接收到写入请求时,主机适配器208a再次询问处理器复合体214a以获得数据所应移动到的位置。可能的位置可以存储为元数据402a-b。返回与第一I/O机柜202a上的第一闪存高速缓存220a对应的第一目标位置,并返回与第二I/O机柜202b上的第二闪存高速缓存220c对应的第二目标位置。主机适配器208a然后将写入数据传输到两个不同闪存高速缓存位置上的两个位置。
随后,可以以类似于上面针对其他实施例描述的方式,将数据离台到盘或移动到闪存高速缓存220a-n中的其他区域。优选地,处理器复合体214a-b仍然可以维护与闪存高速缓存220a-n关联的元数据402a-b的存储。如果主处理器复合体214a出现故障,则可以将元数据402a-b转储到辅助处理器复合体214b或闪存高速缓存220a-n或这两者。
图6是示出根据本发明的一个优选实施例的一种用于将闪存高速缓存220a-n集成到存储系统的方法600的一个实施例的示意性流程图。在披露的实施例中,方法600实质上包括执行上面针对所述装置和系统的操作提供的功能所必需的步骤。
方法600开始时,将至少一个闪存高速缓存220a-n连接(602)到I/O机柜模块201。闪存高速缓存220a-n优选地包括被配置为缓存与通过I/O机柜模块201处理的数据请求关联的数据的基于闪存的存储器。I/O机柜模块201包括一个或多个具有多个插槽以容纳电子设备的I/O机柜2021-n。
由连接到I/O机柜模块201的第一插槽的主机适配器208a接收(604)数据请求。所述主机适配器被配置为将主机204a-n连接到I/O机柜模块201。I/O机柜模块201具有至少一个连接到I/O机柜模块201的第二插槽的设备适配器210a-n。所述设备适配器被配置为将存储设备206a-n连接到I/O机柜模块201。
接下来,主机适配器208a将数据请求传送(606)到管理通过I/O机柜模块处理的数据请求的主处理器复合体214a。主处理器复合体214a访问(608)闪存高速缓存以执行与所述数据请求关联的一个或多个缓存操作。闪存高速缓存220a-n连接到I/O机柜模块201的第三插槽。通过这种方式,存储系统能够集成基于闪存的高速缓存220a-n。
在一个实施例中,所述数据请求是读取请求,并且访问至少一个闪存高速缓存220a-n以执行一个或多个缓存操作包括从闪存高速缓存220a-n取回数据。在另一个实施例中,所述数据请求是写入请求,访问至少一个闪存高速缓存220a-n以执行一个或多个缓存操作包括将与所述写入请求关联的数据存储在闪存高速缓存220a-n中。
图7是示出根据本发明的一个优选实施例的一种用于在具有闪存高速缓存220a-n的存储系统中处理包括读取和写入请求的数据请求的方法700的一个实施例的示意性流程图。在所披露的实施例中,方法700实质上包括执行上面针对所述装置和系统的操作提供的功能所必需的步骤。
方法700开始时,主机适配器208a从主机204a-n接收(702)数据请求。首先,确定(704)数据请求是否是读取请求。如果数据请求是读取请求,则接下来确定(706)是否可在闪存高速缓存220a-n中提供满足所述读取请求的数据。如果可在闪存高速缓存220a-n中提供所述数据,则从闪存高速缓存220a-n取回(708)数据,优选地不访问任何其他存储设备。如果数据不在闪存高速缓存220a-n中,则从存储设备206a-n取回(710)数据。在某些实施例中,构想了也可以从与处理器复合体214a-b关联的易失性高速缓存(例如DRAM高速缓存216a)或非易失性高速缓存(例如NVS高速缓存218a)取回数据。
如果确定(704)数据请求不是读取请求而是写入请求,则将数据缓存(712)到闪存高速缓存220a的写入区域302。在一个实施例中,所述数据可以首先被写入到非易失性DRAM高速缓存216a,然后被离台到闪存高速缓存220a。在进一步的实施例中,可以将写入到闪存高速缓存220a的写入区域302的数据离台(714)到存储设备206a-n。通过这种方式,可以以最少的架构改变,使用集成到存储系统中的闪存高速缓存来处理数据请求。所述方法改进了高速缓存命中概率,并在某些情况下,降低了成本并提高了存储系统的整体性能。
本发明的优选实施例可以以其他特定形式体现而不偏离本发明的基本特征。从任何角度来说,都将所述实施例仅视为示例性而非限制性的。因此,本发明的范围由所附权利要求而不是上述说明来指示。在权利要求的等效含义和范围内的所有改变都将包含在权利要求的范围内。
Claims (19)
1.一种用于将基于闪存的高速缓存集成到存储系统的装置,所述装置包括:
输入/输出(I/O)机柜模块,其包括一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备,所述I/O机柜模块的第一插槽被配置为容纳至少一个主机适配器,所述I/O机柜模块的第二插槽被配置为容纳至少一个设备适配器;
至少一个基于闪存的缓存设备(“闪存高速缓存”),其用于连接到所述I/O机柜模块的第三插槽,所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器;以及
主处理器复合体,其用于管理通过所述I/O机柜模块处理的数据请求,所述主处理器复合体被配置为与至少一个主机适配器、至少一个设备适配器以及所述至少一个闪存高速缓存通信以管理所述数据请求。
2.根据权利要求1的装置,其中所述主处理器复合体进一步包括动态随机存取存储器(DRAM)高速缓存以临时缓存与通过所述I/O机柜模块处理的数据请求关联的数据。
3.根据权利要求2的装置,其中所述主处理器复合体进一步包括非易失性存储装置(NVS)高速缓存,所述非易失性存储装置(NVS)高速缓存包括非易失性存储设备以缓存与由所述I/O机柜处理的数据请求关联的数据。
4.根据权利要求3的装置,其中所述主处理器复合体被配置为将缓存在所述DRAM高速缓存和NVS高速缓存之一中的数据离台到所述闪存高速缓存。
5.根据任一上述权利要求的装置,还包括辅助处理器复合体,所述辅助处理器复合体被配置为用作通过所述I/O机柜模块处理的数据请求的辅助管理器,所述辅助处理器复合体被配置为响应于所述主处理器复合体的故障而与所述主机适配器、设备适配器以及至少一个闪存高速缓存通信以管理数据请求。
6.根据权利要求5的装置,其中所述辅助处理器复合体进一步包括DRAM高速缓存以临时缓存与由所述I/O机柜处理的数据请求关联的数据。
7.根据权利要求6的装置,其中所述辅助处理器复合体进一步包括NVS高速缓存,所述NVS高速缓存包括非易失性存储设备以缓存与由所述I/O机柜处理的数据请求关联的数据。
8.根据任一上述权利要求的装置,其中将所述至少一个闪存高速缓存恰好分配给所述主处理器复合体和辅助处理器复合体中的一个,其中所述主处理器复合体和辅助处理器复合体均被配置为管理通过所述I/O机柜处理的数据请求。
9.根据权利要求8的装置,其中响应于所述主处理器复合体的故障,将首先分配给所述主处理器复合体的所述至少一个闪存高速缓存重新分配给所述辅助处理器复合体。
10.根据权利要求1至7中的任一权利要求的装置,其中将所述至少一个闪存高速缓存分成多个区域,所述区域包括缓存与读取数据请求关联的数据的读取缓存区域以及缓存与写入数据请求关联的数据的写入缓存区域。
11.根据权利要求10的装置,其中将所述至少一个闪存高速缓存进一步分成补充读取缓存区域,所述补充读取缓存区域维护已离台到存储设备的数据的缓存,以便可以从所述补充读取缓存区域取回所述数据。
12.根据权利要求10的装置,其中将所述至少一个闪存高速缓存进一步分成存储区域,所述存储区域用于存储未离台到存储设备的数据,以便从所述存储区域取回所述数据。
13.一种用于将基于闪存的高速缓存集成到存储系统的系统,所述系统包括:
输入/输出(“I/O”)机柜模块,其包括一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备;
至少一个主机适配器,其用于连接到所述I/O机柜模块的第一插槽,所述主机适配器被配置为将主机连接到所述I/O机柜模块;
至少一个主机,其用于连接到所述至少一个主机适配器;
至少一个设备适配器,其用于连接到所述I/O机柜模块的第二插槽,所述设备适配器被配置为将存储设备连接到所述I/O机柜模块;
至少一个存储设备,其用于连接到所述至少一个设备适配器;
至少一个基于闪存的缓存设备(“闪存高速缓存”),其用于连接到所述I/O机柜模块的第三插槽,所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器;以及
主处理器复合体,其用于管理通过所述I/O机柜模块处理的数据请求,所述主处理器复合体用于与所述至少一个主机适配器、所述至少一个设备适配器以及所述至少一个闪存高速缓存通信以管理所述数据请求。
14.根据权利要求13的系统,其中所述主机包括计算机系统,所述计算机系统包括至少一个处理器和存储器。
15.根据权利要求13的系统,其中所述存储设备包括硬盘驱动器和磁带驱动器中的一个或多个。
16.一种用于将基于闪存的高速缓存集成到存储系统的方法,所述方法包括以下步骤:
将至少一个基于闪存的缓存设备(“闪存高速缓存”)连接到I/O机柜模块,所述闪存高速缓存包括被配置为缓存与通过所述I/O机柜模块处理的数据请求关联的数据的基于闪存的存储器,所述I/O机柜模块包括一个或多个I/O机柜,所述I/O机柜具有多个插槽以容纳电子设备;
在连接到所述I/O机柜模块的第一插槽的主机适配器处接收数据请求,所述主机适配器被配置为将主机连接到所述I/O机柜模块,所述I/O机柜模块具有至少一个连接到所述I/O机柜模块的第二插槽的设备适配器,所述设备适配器被配置为将存储设备连接到所述I/O机柜模块;
将所述数据请求传送到管理通过所述I/O机柜模块处理的数据请求的主处理器复合体;以及
访问所述至少一个基于闪存的缓存设备(“闪存高速缓存”)以执行与所述数据请求关联的一个或多个缓存操作,所述闪存高速缓存连接到所述I/O机柜模块的第三插槽。
17.根据权利要求16的方法,其中所述数据请求包括读取请求,并且其中访问所述至少一个闪存高速缓存以执行一个或多个缓存操作的步骤包括从所述闪存高速缓存取回数据的步骤。
18.根据权利要求14的方法,其中所述数据请求包括写入请求,并且其中访问至少一个闪存高速缓存以执行一个或多个缓存操作的步骤包括将与所述写入请求关联的数据存储在所述闪存高速缓存中的步骤。
19.一种用于促进计算环境中的请求处理的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,其可由处理电路读取并存储指令以便由所述处理电路执行以执行根据权利要求16至18中的任一权利要求的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/707,357 | 2010-02-17 | ||
US12/707,357 US9785561B2 (en) | 2010-02-17 | 2010-02-17 | Integrating a flash cache into large storage systems |
PCT/EP2011/050154 WO2011101178A1 (en) | 2010-02-17 | 2011-01-07 | Integrating a flash cache into large storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102763091A true CN102763091A (zh) | 2012-10-31 |
Family
ID=43589587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800097035A Pending CN102763091A (zh) | 2010-02-17 | 2011-01-07 | 将闪存高速缓存集成到大型存储系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9785561B2 (zh) |
CN (1) | CN102763091A (zh) |
DE (1) | DE112011100564B4 (zh) |
GB (1) | GB2490412B (zh) |
WO (1) | WO2011101178A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228088A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
CN109902035A (zh) * | 2019-02-03 | 2019-06-18 | 成都皮兆永存科技有限公司 | 复合存储器 |
CN111722785A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 一种缓存更新方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719520B1 (en) * | 2010-12-14 | 2014-05-06 | Datadirect Networks, Inc. | System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity |
TWI587136B (zh) * | 2011-05-06 | 2017-06-11 | 創惟科技股份有限公司 | 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法 |
US20130198453A1 (en) * | 2012-01-26 | 2013-08-01 | Korea Electronics Technology Institute | Hybrid storage device inclucing non-volatile memory cache having ring structure |
US9213642B2 (en) | 2014-01-20 | 2015-12-15 | International Business Machines Corporation | High availability cache in server cluster |
US9836243B1 (en) * | 2016-03-31 | 2017-12-05 | EMC IP Holding Company LLC | Cache management techniques |
JP2018022404A (ja) * | 2016-08-05 | 2018-02-08 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御プログラム |
US10380034B2 (en) * | 2017-07-14 | 2019-08-13 | International Business Machines Corporation | Cache return order optimization |
US10599579B2 (en) * | 2018-06-25 | 2020-03-24 | Intel Corporation | Dynamic cache partitioning in a persistent memory module |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1766857A (zh) * | 2004-10-12 | 2006-05-03 | 日立环球储存科技荷兰有限公司 | 具有动态随机存取存储器和闪存的硬盘驱动器 |
CN1823392A (zh) * | 2003-07-15 | 2006-08-23 | 尔必达存储器株式会社 | 半导体存储器件 |
WO2007056669A2 (en) * | 2005-11-04 | 2007-05-18 | Sandisk Corporation | Enhanced first level storage cache using nonvolatile memory |
CN101276260A (zh) * | 2007-03-26 | 2008-10-01 | 株式会社东芝 | 信息记录装置及其控制方法 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
JPH07504527A (ja) * | 1992-03-09 | 1995-05-18 | オースペックス システムズ インコーポレイテッド | 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム |
JP3328321B2 (ja) | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
GB2273798A (en) | 1992-12-22 | 1994-06-29 | Ibm | Cache system for disk array. |
US5542066A (en) | 1993-12-23 | 1996-07-30 | International Business Machines Corporation | Destaging modified data blocks from cache memory |
US6199179B1 (en) * | 1998-06-10 | 2001-03-06 | Compaq Computer Corporation | Method and apparatus for failure recovery in a multi-processor computer system |
US6567889B1 (en) | 1997-12-19 | 2003-05-20 | Lsi Logic Corporation | Apparatus and method to provide virtual solid state disk in cache memory in a storage controller |
US6467022B1 (en) | 1998-04-16 | 2002-10-15 | International Business Machines Corporation | Extending adapter memory with solid state disks in JBOD and RAID environments |
US7707354B2 (en) | 1999-08-04 | 2010-04-27 | Super Talent Electronics, Inc. | SRAM cache and flash micro-controller with differential packet interface |
US7610438B2 (en) * | 2000-01-06 | 2009-10-27 | Super Talent Electronics, Inc. | Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table |
US20020073110A1 (en) | 2000-12-12 | 2002-06-13 | Edouard Duvillier | Version collection technique implemented on an intrinsic versioning information storage and retrieval system |
US6678787B2 (en) | 2000-12-21 | 2004-01-13 | International Business Machines Corporation | DASD-free non-volatile updates |
US6748501B2 (en) | 2000-12-30 | 2004-06-08 | International Business Machines Corporation | Microprocessor reservation mechanism for a hashed address system |
US6687787B1 (en) | 2001-03-05 | 2004-02-03 | Emc Corporation | Configuration of a data storage system |
US7149846B2 (en) | 2002-04-17 | 2006-12-12 | Lsi Logic Corporation | RAID protected external secondary memory |
JP2005539309A (ja) | 2002-09-16 | 2005-12-22 | ティギ・コーポレイション | 記憶システムアーキテクチャおよび多重キャッシュ装置 |
US7076606B2 (en) | 2002-09-20 | 2006-07-11 | Quantum Corporation | Accelerated RAID with rewind capability |
US20040225659A1 (en) | 2003-05-09 | 2004-11-11 | O'brien John | Storage foundry |
US7000083B2 (en) | 2003-06-06 | 2006-02-14 | International Business Machines Corp. | Resynchronization of count key data with its corresponding meta data |
US7353339B2 (en) | 2003-12-24 | 2008-04-01 | Intel Corporation | Adaptive caching |
US7173863B2 (en) | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7219267B2 (en) | 2004-01-07 | 2007-05-15 | International Business Machines Corporation | Method, system, and program for data corruption detection and fault isolation |
KR101404083B1 (ko) | 2007-11-06 | 2014-06-09 | 삼성전자주식회사 | 반도체 디스크 및 그것의 동작 방법 |
US20060184735A1 (en) * | 2005-02-15 | 2006-08-17 | Maxwell Technologies, Inc. | Methodology for effectively utilizing processor cache in an electronic system |
US7640381B1 (en) * | 2005-10-07 | 2009-12-29 | Ji Zhang | Input/output decoupling system method having a cache for exchanging data between non-volatile storage and plurality of clients having asynchronous transfers |
US7634585B2 (en) * | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
US7421552B2 (en) | 2006-03-17 | 2008-09-02 | Emc Corporation | Techniques for managing data within a data storage system utilizing a flash-based memory vault |
JP4768504B2 (ja) * | 2006-04-28 | 2011-09-07 | 株式会社東芝 | 不揮発性フラッシュメモリを用いる記憶装置 |
KR100827677B1 (ko) | 2006-06-20 | 2008-05-07 | 한국과학기술원 | 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법 |
US7549018B2 (en) * | 2006-08-03 | 2009-06-16 | International Business Machines Corporation | Configurable blade enclosure |
US8627002B2 (en) | 2006-10-12 | 2014-01-07 | International Business Machines Corporation | Method to increase performance of non-contiguously written sectors |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US7721043B2 (en) | 2007-01-08 | 2010-05-18 | International Business Machines Corporation | Managing write requests in cache directed to different storage groups |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8112603B2 (en) | 2007-10-19 | 2012-02-07 | International Business Machines Corporation | Methods, systems, and computer program products for file relocation on a data storage device |
JP2009104687A (ja) | 2007-10-22 | 2009-05-14 | Fujitsu Ltd | 記憶装置及び制御回路 |
WO2009072100A2 (en) * | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Systems and methods for temporarily retiring memory portions |
US7958310B2 (en) | 2008-02-27 | 2011-06-07 | International Business Machines Corporation | Apparatus, system, and method for selecting a space efficient repository |
US8533397B2 (en) | 2009-01-06 | 2013-09-10 | International Business Machines Corporation | Improving performance in a cache mechanism by way of destaging data in partial strides |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8285918B2 (en) * | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
-
2010
- 2010-02-17 US US12/707,357 patent/US9785561B2/en active Active
-
2011
- 2011-01-07 DE DE112011100564.4T patent/DE112011100564B4/de active Active
- 2011-01-07 CN CN2011800097035A patent/CN102763091A/zh active Pending
- 2011-01-07 WO PCT/EP2011/050154 patent/WO2011101178A1/en active Application Filing
- 2011-01-07 GB GB1207226.0A patent/GB2490412B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1823392A (zh) * | 2003-07-15 | 2006-08-23 | 尔必达存储器株式会社 | 半导体存储器件 |
CN1766857A (zh) * | 2004-10-12 | 2006-05-03 | 日立环球储存科技荷兰有限公司 | 具有动态随机存取存储器和闪存的硬盘驱动器 |
WO2007056669A2 (en) * | 2005-11-04 | 2007-05-18 | Sandisk Corporation | Enhanced first level storage cache using nonvolatile memory |
CN101276260A (zh) * | 2007-03-26 | 2008-10-01 | 株式会社东芝 | 信息记录装置及其控制方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228088A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
CN108228088B (zh) * | 2016-12-21 | 2020-10-23 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
CN109902035A (zh) * | 2019-02-03 | 2019-06-18 | 成都皮兆永存科技有限公司 | 复合存储器 |
CN109902035B (zh) * | 2019-02-03 | 2023-10-31 | 成都皮兆永存科技有限公司 | 复合存储器 |
CN111722785A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 一种缓存更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US9785561B2 (en) | 2017-10-10 |
US20110202708A1 (en) | 2011-08-18 |
WO2011101178A1 (en) | 2011-08-25 |
GB201207226D0 (en) | 2012-06-06 |
GB2490412A (en) | 2012-10-31 |
DE112011100564B4 (de) | 2021-08-26 |
DE112011100564T5 (de) | 2012-11-29 |
GB2490412B (en) | 2017-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102763091A (zh) | 将闪存高速缓存集成到大型存储系统 | |
US8024525B2 (en) | Storage control unit with memory cache protection via recorded log | |
EP2685384B1 (en) | Elastic cache of redundant cache data | |
US8700858B2 (en) | Techniques to perform power fail-safe caching without atomic metadata | |
US20150222705A1 (en) | Large-scale data storage and delivery system | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
CN103703440A (zh) | 预取用于使更新轨道离台的数据轨道和奇偶校验数据 | |
CN104903872A (zh) | 用于自适应持久化的系统、方法和接口 | |
US10078587B2 (en) | Mirroring a cache having a modified cache state | |
US20160085460A1 (en) | Optimized read access to shared data via monitoring of mirroring operations | |
US20110276746A1 (en) | Caching storage adapter architecture | |
CN103514108A (zh) | 智能主动-主动式高可用性das系统 | |
CN102841854A (zh) | 根据动态分级存储器缓存认知执行数据读取的方法和系统 | |
CN101982816B (zh) | 用于保护高速缓存数据完整性的方法和装置 | |
CN102081561A (zh) | 在存储系统的冗余存储控制器之间镜像数据 | |
CN104145252A (zh) | 两级高速缓存系统中的自适应高速缓存提升 | |
CN103714015A (zh) | 减少来自侦听过滤器的后无效事务 | |
CN105897859B (zh) | 一种存储系统 | |
US20170277450A1 (en) | Lockless parity management in a distributed data storage system | |
CN111857540A (zh) | 数据存取方法、装置和计算机程序产品 | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
CN109213693A (zh) | 存储管理方法、存储系统和计算机程序产品 | |
JP5977430B2 (ja) | ストレージシステム、ストレージシステムの制御方法及びストレージコントローラ | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121031 |