CN100428185C - 存储服务器的自底向上高速缓存结构 - Google Patents
存储服务器的自底向上高速缓存结构 Download PDFInfo
- Publication number
- CN100428185C CN100428185C CNB200480030789XA CN200480030789A CN100428185C CN 100428185 C CN100428185 C CN 100428185C CN B200480030789X A CNB200480030789X A CN B200480030789XA CN 200480030789 A CN200480030789 A CN 200480030789A CN 100428185 C CN100428185 C CN 100428185C
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- cache
- request
- storage server
- 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
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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/311—In host 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种网络化存储服务器(400)具有自底向上的高速缓存分级结构。最低级高速缓存(412)位于作为网络接口卡(NIC)和主机总线适配器(HBA)的组合的嵌入式控制器(409)上。来往于网络的存储数据(1)被高速缓存在该最低级高速缓存(412)中,与这些数据相关的元数据(2)被传递给服务器主机(402)以供处理。当高速缓存的数据超过最低级高速缓存(412)的容量时,数据被移至通常远大于控制器上的存储器的主机存储器(410)。对来自网络的存储读请求,大多数数据从诸如硬盘驱动器或RAID等存储设备(413)经由最低级高速缓存(412)直接传递给网络。类似地,对来自网络的存储写请求,大多数数据在没有将它们复制到主机存储器(410)的情况下,经由最低级高速缓存直接写入存储设备(413)。控制器级处这样的数据高速缓存显著地减少了总线通信量,这导致网络化存储的极大性能改进。
Description
相关申请的交叉引用
本发明要求于2003年10月20日提交的美国专利临时申请第60/512,728号的优先权,该申请通过引用包含在此。
发明背景
本发明涉及耦合至网络的存储服务器。
数据是所有计算处理用作基础的底层资源。随着因特网和电子商务近年来的爆炸性发展,极大地增加了对数据存储系统的需求。数据存储系统包括一个或多个存储服务器以及一个或多个客户机或用户系统。存储服务器处理客户机的读和写请求(也被称为I/O请求)。众多研究致力于使得存储服务器能够更快和更有效地处理I/O请求。
在过去的十年以来,作为引起CPU性能和网络速度显著增长的技术进步的结果,显著地改进了存储服务器的I/O请求处理能力。类似地,由于诸如RAID(廉价磁盘冗余阵列)等存储设备级的数据管理技术的改进以及大范围高速缓存的使用,也极大地改进了数据存储系统的吞吐量。
与此相反,诸如PCI总线等系统互连的性能增长未跟上CPU和外设在同一时期内前进的步伐。作为结果,系统互连成为高性能服务器的主要性能瓶颈。该瓶颈问题普遍地由计算机体系结构和系统共同体(community)实现。为解决该瓶颈问题进行了大量研究。该领域的一个值得注意的研究努力涉及通过用PCI-X或InfiniBandTM替代PCI来增加系统互连的带宽。PCI-X表示“PCI扩展”,它是将PCI的速度从133Mbps提高到1GBps之多的增强的PCI总线。与共享总线相对比,InfiniBandTM技术使用交换结构来提供更高的带宽。
发明简述
本发明的实施例涉及具有最小化系统互连上的数据通信量的改进的高速缓存结构的存储服务器。在该存储服务器中,最低级高速缓存(例如,RAM)位于结合网络接口卡(NIC)和存储设备接口(例如,主机总线适配器)的功能的嵌入式控制器上。从网络接收或将向网络发送的存储数据被高速缓存在该最低级高速缓存中,且仅将与这些存储数据相关的元数据传递给服务器的CPU系统(也被称为“主处理器”)以供处理。
当高速缓存的数据超过最低级高速缓存的容量时,数据被移至通常远大于控制器上的RAM的主机RAM。控制器上的高速缓存被称为1级(L-1)高速缓存,主处理器上的高速缓存被称为2级(L-2)高速缓存。该新的系统被称为自底向上高速缓存结构(BUCS),与传统的自顶向下高速缓存形成对比,在后者中,最高级高速缓存是最小且最快的,在分级结构中越低则高速缓存越大且越慢。
在一个实施例中,一种耦合至网络的存储服务器包括,包含中央处理单元(CPU)和第一存储器的主机模块;耦合该主机模块的系统互连;以及包含处理器、耦合至网络的网络接口设备、耦合至存储子系统的存储接口设备和第二存储器的集成控制器。第二存储器定义临时性存储将被读出给网络或写入存储子系统的存储数据的较低级高速缓存,使得可无需将存储数据加载至由第一存储器定义的较高级高速缓存来处理读或写请求。
在另一实施例中,一种用于管理耦合至网络的存储服务器的方法包括,在存储服务器处经由网络从远程设备接收访问请求,该访问请求与存储数据相关。响应于该访问请求,在没有将与访问请求相关联的存储数据存储在存储服务器的主机模块的较高级高速缓存中的情况下,将存储数据存储在存储服务器的集成控制器的较低级高速缓存中,其中集成控制器具有耦合至网络的第一接口以及耦合至存储子系统的第二接口。
访问请求是写请求。与访问请求相关联的元数据经由系统互连发送给主机模块,同时将存储数据保存在集成控制器上。该方法还包括,使用从集成控制器接收的元数据在主机模块上生成描述符;在集成控制器处接收该描述符;将该描述符与集成控制器上的存储数据关联,用于经由集成控制器的第二接口将存储数据写至存储子系统中的适当存储位置。
访问请求是读请求,存储数据经由第二接口从存储子系统获得。该方法还包括,在没有首先将存储数据转发给主机模块的情况下,经由第一接口将存储数据发送给远程设备。
在另一实施例中,一种存储服务器中提供的存储控制器的集成控制器包括,处理数据的处理器;定义较低级高速缓存的存储器;经由网络耦合至远程设备的第一接口;耦合至存储子系统的第二接口。该集成控制器被配置成将与从远程设备接收的写请求相关联的写数据临时性地存储在较低级高速缓存上,并在没有将写数据存储至与存储服务器的主机模块相关联的较高级高速缓存的情况下经由第二接口将写数据发送给存储子系统。
在又一实施例中,一种计算机可读介质包括,用于处理在存储服务器处经由网络从远程设备接收的访问请求的计算机程序。该计算机程序包括这样的代码,它们用于在存储服务器处经由网络从远程设备接收访问请求,该访问请求与存储数据相关;以及响应于该访问请求,在没有将与访问请求相关联的存储数据存储在存储服务器的主机模块的较高级高速缓存中的情况下,将存储数据存储在存储服务器的集成控制器的较低级高速缓存处,该集成控制器具有耦合至网络的第一接口以及耦合至存储子系统的第二接口。
访问请求是写请求,该程序还包括用于将与访问请求相关联的元数据经由系统互连发送给主机模块,同时将存储数据保存在集成控制器处的代码。在主机模块处使用从集成控制器接收的元数据生成描述符,并将该描述符发送给集成控制器,其中,该程序还包括代码,用于将描述符与集成控制器处的存储数据关联,以便经由集成控制器的第二接口将存储数据写入存储子系统中的适当存储位置。
访问请求是读请求,且经由第二接口从存储子系统获得存储数据。该计算机程序还包括,用于在没有首先将存储数据转发给主机模块的情况下经由第一接口将存储数据发送给远程设备的代码。
附图简述
图1A示出了示例性的直接附加存储(DAS)系统。
图1B示出了示例性的存储区网络(SAN)系统。
图1C示出了示例性的网络附加存储(NAS)系统。
图2示出了包含存储服务器和存储子系统的示例性存储系统。
图3示出了根据常规技术在存储服务器内部响应于读/写请求的示例性数据流。
图4示出了根据本发明的一个实施例的存储服务器。
图5示出了根据本发明的一个实施例的BUCS或集成控制器。
图6示出了根据本发明的一个实施例的用于执行读请求的过程。
图7示出了根据本发明的一个实施例的用于执行写请求的过程。
发明的详细描述
本发明涉及存储系统中的存储服务器。在一个实施例中,以自底向上高速缓存结构(BUCS)提供存储服务器,其中大量使用较低级高速缓存来处理I/O请求。如此处所使用的,较低级高速缓存或存储器指的是直接分配给主机模块的CPU的高速缓存或存储器。
与在传统自顶向下高速缓存分级结构中将频繁使用的数据尽可能置于较高级高速缓存中形成对比,在这样的存储服务器中,与I/O请求相关联的存储数据被尽可能地保存在较低级高速缓存中,以最小化系统总线或互连上的数据通信量。对来自网络的存储读请求,大多数数据通过最低级高速缓存从诸如硬盘驱动器或RAID等存储设备中直接传给网络。类似地对于来自网络的存储写请求,大多数数据通过较低级高速缓存直接写入存储设备,而没有如现有系统中那样将它们复制到较高级高速缓存(也被称为“主存储器或高速缓存”)中。
控制器级中这样的数据高速缓存显著地减少了诸如PCI总线等系统总线上的通信量,从而引起网络化数据存储操作的极大的性能改进。在使用Intel的IQ80310标准板和Linux NBD(网络块设备)的实验中,BUCS与传统系统相比,将响应时间和系统吞吐量提高到了三倍。
图1A-1C示出了信息基础架构中的各种类型的存储系统。图1A示出了示例性的直接附加存储(DAS)系统100。DAS系统包括经由网络106耦合至存储服务器104的客户机102。存储服务器104包括使用或生成数据的应用程序108、管理数据的文件系统110以及存储数据的存储子系统112。存储子系统包括一个或多个存储设备,它们可以是磁盘设备、光盘设备、基于磁带的设备等。在一种实现中,存储子系统是磁盘阵列设备。
DAS是经由存储子系统与服务器之间的专用通信链路将存储子系统本地附加到服务器的常规方法。通常使用SCSI连接来实现DAS。服务器一般使用块级接口与存储子系统通信。驻留在服务器上的文件系统110确定需要来自存储子系统112的哪些数据块来完成来自应用程序108的文件请求(或I/O请求)。
图1B示出了示例性的存储区网络(SAN)系统120。系统120包括经由第一网络126耦合至存储服务器124的客户机122。服务器124包括应用程序123和文件系统125。存储子系统128经由第二网络130耦合至存储服务器124。第二网络130是专用于连接存储子系统、备份存储子系统和存储服务器的网络。第二网络被称为存储区网络。通常以FICONTM或光纤通道来实现SAN。可以在单个小房间内提供SAN,或者SAN也可横跨大量地理位置。和DAS一样,SAN服务器呈现对存储子系统128的块级接口。
图1C示出了示例性的网络附加存储(NAS)系统140。系统140包括经由网络146耦合至存储服务器144的客户机142。服务器144包括文件系统148和存储子系统150。在网络146和客户机142之间提供应用程序152。存储服务器144及其自身的文件系统被直接连接至网络146,这响应于如LAN上的NFS和SMB/CIFS的工业标准网络文件系统接口。从客户机将文件请求(或I/O请求)直接发送给文件系统148。NAS服务器144提供对存储子系统150的文件级接口。
图2示出了包含存储服务器202和存储子系统204的示例性存储系统200。服务器202包括含有CPU 208、主存储器210和非易失性存储器212的主机模块206。在一种实现中,主存储器和CPU经由专用总线211彼此连接来加速这两个组件之间的通信。该主存储器是RAM,CPU将它用作主高速缓存。在本实现中,该非易失性存储器是ROM,它用来存储由CPU执行的程序或代码。CPU也被称为主处理器。
存储服务器202包括将模块206、磁盘控制器214以及网络接口卡(NIC)216耦合在一起的主总线213(即系统互连)。在一种实现中,主总线213是PCI总线。磁盘控制器经由外围总线218耦合至存储子系统204。在一种实现中,外围总线是SCSI总线。NIC耦合至网络220,并用作网络和存储服务器202之间的通信接口。网络220将服务器202耦合至诸如客户机102、122或142等客户机。
参考图1A到图2,尽管基于不同技术的存储系统使用不同的命令集和不同的消息格式,但流经网络的数据流和服务器内部的数据流在众多方面是相似的。对读请求,客户机向服务器发送包含命令和元数据的读请求。元数据提供关于所请求的数据的位置和大小的信息。在接收该包之后,服务器确认该请求,并向客户机发送包含所请求的数据的一个或多个包。
对写请求,客户机向服务器发送包含元数据的写请求,随后是包含写数据的一个或多个包。在某些实现中,写数据可被包含在写请求本身中。服务器确认写请求,将写数据复制到系统存储器,将数据写至其附加的存储子系统的适当位置,并向客户机发送确认。
此处宽泛地使用术语“客户机”和“服务器”。例如,在SAN系统中,发送请求的客户机可以是服务器124,处理请求的服务器可以是存储子系统128。
图3示出了根据常规技术存储服务器300内响应于读/写请求的示例性数据流。该服务器包含主机模块302、磁盘控制器304、NIC 306以及耦合这些组件的内部总线(或主总线)308。模块302包含主处理器(未示出)和较高级高速缓存310。磁盘控制器304包括第一数据缓冲器(或较低级高速缓存)312,并被耦合至磁盘313(或存储子系统)。磁盘/存储子系统在NAS或DAS系统中可直接附加或链接至服务器,在SAN系统中可经由网络耦合至服务器。NIC 306包括第二数据缓冲器314,并经由网络耦合至客户机(未示出)。内部总线308是系统互连,且在本实现中为PCI总线。
在操作中,当经由NIC 306从客户机接收读请求之后,模块302(或服务器的操作系统)确定所请求的数据是否位于主高速缓存310中。如果是,则处理主高速缓存310中的数据,并将其发送给客户机。如果否,则模块302对磁盘控制器304调用I/O操作,并经由PCI总线308从磁盘313加载数据。在数据被加载至主高速缓存之后,主处理器生成头部,并组装将经由PCI总线发送给NIC 306的响应包。NIC然后将包发送给客户机。作为结果,数据在PCI总线上移动两次。
在经由NIC从客户机接收写请求之后,模块302首先经由PCI总线将数据从NIC加载到主高速缓存310,然后经由PCI总线将数据存储至磁盘313中。对写操作,数据通过PCI总线两次。从而,在常规方法中,服务器300大量使用PCI总线来完成I/O请求。
图4示出了根据本发明的一个实施例的存储服务器400。存储服务器400包括主机模块402、BUCS控制器404以及耦合这两个组件的内部总线406。模块402包括高速缓存管理器408和主或较高级高速缓存410。BUCS控制器404包括较低级高速缓存412。BUCS控制器经由网络耦合到磁盘413和客户机(未示出)。从而,BUCS控制器组合了磁盘控制器304和NIC 306的功能,且可被称为“集成控制器”。磁盘413可以位于直接附加到服务器400的存储子系统中,或者可位于经由网络耦合至服务器400的远程存储子系统中。取决于实现,服务器400可以是DAS、NAS或SAN系统中提供的服务器。
在BUCS体系结构中,尽可能地将数据保存在较低级高速缓存中,而不是将它们在内部总线上来回移动。描述存储数据的元数据和描述操作的命令被传送给模块402供处理使用,而相应的存储数据被保存在较低级高速缓存412处。从而,多数存储数据不经由内部或PCI总线406传送给较高级高速缓存410来避免通信量瓶颈。因为由于功率和成本的约束较低级高速缓存(即L-1高速缓存)大小通常有限,因此较高级高速缓存(即L-2高速缓存)与L-1高速缓存一起使用来处理I/O请求。高速缓存管理器408管理这一二级的分级结构。在本实现中,高速缓存管理器驻留在服务器的操作系统的内核中。
回来参考图4,对读请求,高速缓存管理器408检查数据是位于L-1还是L-2高速缓存中。如果数据位于L-1高速缓存中,则模块402准备头部,并调用BUCS控制器以通过网络接口在网络上将数据包发送给请求客户机(见图5)。如果数据位于L-2高速缓存中,高速缓存管理器将数据从L2高速缓存移到L1高速缓存中,以经由网络发送给客户机。如果数据位于存储设备或磁盘413中,则高速缓存管理器将它们读出并将它们直接加载到L-1高速缓存中。在本实现中,在这两种情况中,主机模块均生成包头部并将它们传送给BUCS控制器。控制器组装头部和数据,然后将所组装的包发送给请求客户机。
对写请求,BUCS控制器为数据包中包含的数据生成唯一的标识符,并向主机告知该标识符。主机然后将元数据附加到相应的前一命令包中的该标识符。实际的写数据被保存在L-1高速缓存中,然后被写入存储设备的正确位置。在此之后,服务器向客户机发送确认。从而,BUCS体系结构最小化了PCI总线上的大数据的传送。相反,只要可能,经由PCI总线仅向主机模块发送IO请求的命令部分和元数据。
如此处所使用的,术语“元信息”指的是请求或包中的管理信息。即,元信息是不作为包(例如,I/O请求)中的实际的读或写数据的任何信息或数据。从而,元信息可以指的是元数据、或头部、或命令部分、数据标识符、或其它管理信息或者是这些元素的任何组合。
在存储服务器400中,提供处理程序来将命令包从数据包中分离,并将该命令包转发给主机。根据本实现,处理程序被实现为运行在BUCS控制器上的程序的一部分。该处理程序存储在BUCS控制器中的非易失性存储器中(见图5)。
较佳地,由于不同的协议具有它们自身专用的消息格式,因此为每一网络存储协议提供一个处理程序。对新创建的网络连接,控制器404首先试图使用所有的处理程序来确定该连接属于哪个协议。对提供网络存储服务的公知端口,它们拥有专用的特定处理程序,以避免连接设置的开始处的处理程序搜索过程。一旦了解了协议并确定了相应的处理程序之后,所选的处理程序将用于该连接上的其余数据操作,直到该连接终止。
图5示出了根据本发明的一个实施例的BUCS或集成控制器500。控制器500集成磁盘/存储控制器和NIC的功能。控制器包括处理器502、存储器(也被称为“较低级高速缓存”)504、非易失性存储器506、网络接口508和存储接口510。存储器总线512是专用总线,它将高速缓存504连接至处理器502用于为这些组件提供快速的通信路径。内部总线514耦合控制器500中的各种组件,它可以是PCI总线或PCI-X总线或是其它合适的类型。外围总线516将非易失性存储器506耦合至处理器502。
在本实现中,非易失性存储器506是用于存储固件的Flash ROM。存储在FlashROM中的固件包括嵌入式OS代码、例如RAID功能码等与存储控制器的功能有关的微码以及某些网络协议功能。可使用存储服务器的主机模块来升级固件。
在本实现中,存储接口510是控制所附加的磁盘的存储控制器芯片,网络接口是发送和接收包的网络媒体访问控制(MAC)芯片。
存储器504是RAM,它提供L-1高速缓存。较佳地,存储器504较大,例如1GB或以上。存储器504是共享存储器,它结合存储和网络接口508和510使用来提供存储和网络接口的功能。在使用分离的存储接口(或主机总线适配器)和NIC接口的常规服务器系统中,存储HBA上的存储器和NIC上的存储器在物理上隔离,使得难以在对等设备之间交叉访问。HBA和NIC的结合允许由不同的子系统引用单个数据副本,这导致高效率。
在本实现中,板载RAM或存储器504被划分成两部分。一个部分是为板载操作系统(OS)和运行在控制器500上的程序保留的。另一部分,即主要部分,用作BUCS分级结构的L-1高速缓存。类似地,为L-2高速缓存保留模块402的主存储器410的一分区。用于高速缓存的基本单元对文件系统级存储协议而言是文件块,对块级存储协议而言是磁盘块。
使用块作为用于高速缓存的基本数据单元允许存储服务器独立于网络请求包而维护高速缓存的内容。高速缓存管理器408管理这一二级的高速缓存分级结构。高速缓存的数据由使用数据块的磁盘内偏移量作为其散列键的散列表414来组织和管理。表414可作为高速缓存管理器408的一部分来存储,或者作为单独的实体来存储。
每一散列条目包含若干项,包括存储设备上的数据偏移量、存储设备标识符、数据的大小、散列表队列的链接指针、高速缓存策略队列的链接指针、数据指针以及状态标志。状态标志中的每一位指示不同的状况,诸如数据是在L-1高速缓存中还是在L-2高速缓存中,数据是否为脏、在操作过程中该条目和数据是否被锁定等。
由于数据可能不连续地存储在物理存储器中,因此类iovec(I/O向量数据结构)结构表示每一数据片段。每一iovec结构存储存储器中连续的数据片段的地址和长度,且可由扩散-聚集DMA直接使用。在一种实现中,每一散列条目的大小大约为20字节。如果由每一条目表示的数据的平均大小为4096字节,则散列条目的成本低于5%。当将数据块添加至L-1或L-2高速缓存时,由高速缓存管理器创建新的高速缓存条目,它使用关于该数据块的元数据填充,并被插入散列表中的适当位置。
根据该实现,散列表可在不同的位置维护:1)BUCS控制器为板载存储器中的L-1高速缓存和L-2高速缓存维护散列表,2)主机模块维护主存储器中的所有元数据,3)BUCS控制器和主机模块单独维护它们自己高速缓存的元数据。
在较佳的实现中,采用第二种方法来使得驻留在主机模块上的高速缓存管理器为L-1高速缓存和L-2高速缓存维护元数据。高速缓存管理器经由API发送不同的消息给作为完成高速缓存管理任务的从属装置的BUCS控制器。由于主要在主机模块方处理网络存储协议,所以主机模块相比BUCS控制器可更容易地提取和获取高速缓存的数据上的元数据,因此在本实现中第二种方法较佳。在其它实现中,BUCS控制器可处理这样的任务。
在高速缓存管理器408中实现最近最少使用算法(LRU)替换策略,以当高速缓存已满时用于为将置入该高速缓存的新数据留出空间。一般而言,最经常使用的数据被保存在L-1高速缓存中。一旦L-1高速缓存满,则将未访问持续时间最长的数据从L-1高速缓存移至L-2高速缓存。高速缓存管理器更新散列表中的相应条目来反映这样的数据重定位。如果将数据从L-2高速缓存移至磁盘存储,则该散列条目从散列表中断开链接,并被高速缓存管理器丢弃。
当L-2高速缓存中的数据片段被再次访问且需要被置入L-1高速缓存时,将它传回L-1高速缓存。当L-2高速缓存中的数据需要被写入磁盘驱动器时,将数据传送给BUCS控制器,来由BUCS控制器直接写入磁盘驱动器而不会弄脏L-1高速缓存。这样的写操作可通过作为板载OS RAM空间的一部分保留的缓冲器。
由于BUCS使用集成BUCS控制器来替换传统的存储控制器和NIC,因此主机OS与接口控制器之间的交互被改变。在本实现中,主机模块将BUCS控制器作为具有某些附加的功能的NIC来对待,使得不需创建新一类的设备,并将对OS内核的改变保持到最小。
在主机OS中,添加代码来导出可由OS的其它部分利用的多个API,且在BUCS控制器中提供相应的微码。对每一API,主机OS将特定的命令码和参数写入BUCS控制器的寄存器中,而命令调度程序调用板内的相应微码来完成期望的任务。API可存储在BUCS控制器的非易失性存储器中,或加载到RAM中作为主机OS的一部分。
所提供的一种API是初始化API,bucs.cache.init()。在主机模块引导过程中,BUCS控制器上的微码检测板载存储器,保留该存储器的部分供内部使用,并为L-1高速缓存保留存储器的其余部分。主机OS在初始化过程中调用该API,并获得L-1高速缓存的大小。主机OS也在引导时检测L-2高速缓存。在获得关于L-1高速缓存和L-2高速缓存的信息之后,主机OS设置散列表和其它数据结构来完成初始化。
图7示出了根据本发明的一个实施例用于执行读请求的过程700。当主机需要为来自客户机的读请求发送数据时,它检查散列表来找出数据的位置(步骤702)。数据或数据的部分可位于三个可能的位置,包括L-1高速缓存、L2高速缓存和存储设备。对每一数据片段,主机生成关于其信息以及将要执行的动作的描述符(步骤704)。对L-1高速缓存中的数据,处理器502可直接发送它。对L-2高速缓存中的数据,主机为该数据给出位于L-1高速缓存中的新位置,由DMA将该数据从L-2高速缓存移至L-1高速缓存,并将其发送。对磁盘驱动器上的数据,主机找到L-1高速缓存中的新位置,指导处理器将该数据从磁盘驱动器中读出,并将其置于L-1高速缓存中。如果在该磁盘操作时L-1高速缓存满,则主机也决定L-1高速缓存中的哪些数据将被移至L-2高速缓存,并为数据重定位提供源和目的地址。这些描述符经由API bucs.append.data()发送给处理器502来执行实际的操作(步骤706)。对所接收到的每一描述符,处理器检查参数并调用不同的微码来完成读操作(步骤708)。
图8示出了根据本发明的一个实施例用于执行写请求的过程800。对来自客户机的写请求,主机模块获得命令包并指定L-1高速缓存中的位置(步骤802)。如果L-1高速缓存缺少用于写入所接收的数据的足够的空闲空间,则使用高速缓存管理器的主机模块可将L-1高速缓存中不频繁访问的数据重定位至L-2高速缓存。它然后使用API bucs.read.data()来读随命令包之后的后继数据包(步骤804)。主机OS然后将指导处理器502将数据直接置入L-1高速缓存中(步骤806)。
当主机模块想要将数据直接写入磁盘驱动器时,调用API bucs.write.data()(步骤808)。主机模块为将要写入的数据提供描述符,包括数据在L-1或L-2高速缓存中的位置、数据大小以及磁盘上的位置。数据然后被传送给作为为板载OS保留的RAM空间的一部分的处理器缓冲器,并由处理器502写入磁盘(步骤810)。
在BUCS系统中定义了某些其它的API来协助主要操作。例如,提供APIbucs.destage.L-1()将数据从L-1高速缓存降级至L-2高速缓存。API bucs.prompt.L-2()用于将数据从L-2高速缓存移至L-1高速缓存。这些API可由高速缓存管理器使用,以在需要时动态地平衡L-1高速缓存和L-2高速缓存。
在BUCS系统中,存储控制器和NIC由集成这两者的功能且具有统一高速缓存存储器的BUCS控制器替代。这使得可能在无需调用I/O总线、主机CPU和主存储器的情况下,一旦从存储设备读出数据就向网络发送该数据。通过将频繁使用的数据置入板载高速缓存存储器(L-1高速缓存),可直接满足众多读请求。可通过无需调用任何总线通信量而将数据直接置入L-1高速缓存来满足来自客户机的写请求。当需要时,可将L-1高速缓存中的数据重定位至主机存储器(L-2高速缓存)。使用有效的高速缓存策略,该多级高速缓存可为网络化存储数据访问提供高速且大容量的高速缓存。
按照特定实施例或实现描述了本发明,以使得本领域的技术人员能够实践本发明。可对所揭示的实施例或实现进行修改或更改,而不背离本发明的范围。例如,内部总线可以是PCI-X总线或交换结构,例如InfiniBandTM。从而,应使用所附权利要求书来定义本发明的范围。
Claims (22)
1.一种存储服务器,包括:
包含中央处理单元CPU和第一存储器的主机模块,其中所述第一存储器包括较高级高速缓存;
包含处理器、用于促进与网络通信的网络接口设备、与存储子系统以接口方式连接的存储接口设备和第二存储器的集成控制器;以及
用于将所述主机模块耦合至所述集成控制器的系统互连,
其中,所述第二存储器包括临时性存储将被读出给所述网络或写入所述存储子系统的存储数据的较低级高速缓存,使得可在无需将所述存储数据加载至所述较高级高速缓存的情况下处理读或写请求。
2.如权利要求1所述的存储服务器,其特征在于,所述第二存储器由所述网络接口设备和存储接口设备共享。
3.如权利要求1所述的存储服务器,其特征在于,所述集成控制器包括:
耦合所述处理器、网络接口设备和存储接口设备的内部总线;以及
耦合所述处理器和第二存储器的存储器总线。
4.如权利要求3所述的存储服务器,其特征在于,所述系统互连是总线。
5.如权利要求1所述的存储服务器,其特征在于,所述系统互连是基于交换的设备。
6.如权利要求1所述的存储服务器,其特征在于,I/O请求的存储数据被保存在所述较低级高速缓存中,而I/O请求的元数据被发送给所述主机模块来为所述I/O请求生成头部。
7.如权利要求6所述的存储服务器,其特征在于,所述I/O请求是读或写数据。
8.如权利要求1所述的存储服务器,其特征在于,还包括:
管理所述较高级和较低级高速缓存的高速缓存管理器。
9.如权利要求8所述的存储服务器,其特征在于,所述高速缓存管理器由所述主机模块维护。
10.如权利要求9所述的存储服务器,其特征在于,所述高速缓存管理器维护用于管理存储在所述较高级和较低级高速缓存中的数据的散列表。
11.如权利要求1所述的存储服务器,其特征在于,所述存储服务器是在直接附加存储系统中提供的。
12.如权利要求1所述的存储服务器,其特征在于,所述存储服务器和存储子系统是在同一外壳内提供的。
13.如权利要求1所述的存储服务器,其特征在于,所述存储服务器是在网络附加存储系统或存储区网络系统中提供的。
14.如权利要求1所述的存储服务器,其特征在于,所述第一存储器大于所述第二存储器。
15.如权利要求6所述的存储服务器,其特征在于,所述集成控制器包括处理程序,该处理程序被配置以:
将I/O请求的存储数据与I/O请求的元数据分离;以及
将所述元数据发送到主机模块。
16.如权利要求1所述的存储服务器,其特征在于,如果存储在所述较低级高速缓存中的存储数据的量接近所述较低级高速缓存的存储容量,则将最长持续时间未被访问的存储数据转移至所述较高级高速缓存。
17.一种用于管理耦合至网络的存储服务器的方法,所述方法包括:
在所述存储服务器处经由所述网络从远程设备接收访问请求,所述访问请求与存储数据相关;以及
响应于所述访问请求,将与所述访问请求相关联的存储数据存储在与所述存储服务器的控制器相关联的较低级高速缓存中,而不将所述数据存储在与所述存储服务器的主机模块相关联的较高级高速缓存中,其中,所述控制器具有用于促进与网络通信的第一接口以及与存储子系统通信的第二接口。
18.如权利要求17所述的方法,其特征在于,所述访问请求是写请求,所述方法还包括:
经由系统互连将与所述访问请求相关联的元数据发送给所述主机模块,同时将所述存储数据保存在所述控制器处。
19.如权利要求18所述的方法,其特征在于,还包括:
用从所述控制器接收的元数据在主机模块处生成描述符;
在控制器处接收该描述符;以及
将该描述符与控制器上的存储数据关联,用于经由控制器的第二接口将存储数据写至存储子系统中的适当存储位置。
20.如权利要求17所述的方法,其特征在于,访问请求是读请求,存储数据经由第二接口从存储子系统获得。
21.如权利要求20所述的方法,其特征在于,还包括:经由第一接口将存储数据发送给远程设备,而不将存储数据先转发给主机模块。
22.一种存储服务器中提供的存储控制器的集成控制器,其特征在于,所述集成控制器包括:
处理数据的处理器;
包括较低级高速缓存的存储器;
用于促进通过网络与远程设备通信的第一接口;
用于促进与存储子系统通信的第二接口,
其中所述集成控制器被配置成将与从远程设备接收的写请求相关联的写数据临时性地存储在较低级高速缓存上,并经由第二接口将写数据发送给存储子系统,而不将写数据存储至与存储服务器的主机模块相关联的较高级高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51272803P | 2003-10-20 | 2003-10-20 | |
US60/512,728 | 2003-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1871587A CN1871587A (zh) | 2006-11-29 |
CN100428185C true CN100428185C (zh) | 2008-10-22 |
Family
ID=34549220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200480030789XA Expired - Fee Related CN100428185C (zh) | 2003-10-20 | 2004-10-20 | 存储服务器的自底向上高速缓存结构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050144223A1 (zh) |
EP (1) | EP1690185A4 (zh) |
JP (1) | JP2007510978A (zh) |
CN (1) | CN100428185C (zh) |
WO (1) | WO2005043395A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349999B2 (en) | 2003-12-29 | 2008-03-25 | Intel Corporation | Method, system, and program for managing data read operations on network controller with offloading functions |
US8108483B2 (en) * | 2004-01-30 | 2012-01-31 | Microsoft Corporation | System and method for generating a consistent user namespace on networked devices |
GB0427540D0 (en) * | 2004-12-15 | 2005-01-19 | Ibm | A system for maintaining data |
KR100919920B1 (ko) * | 2004-12-29 | 2009-10-07 | 엔비디아 코포레이션 | 로컬 버스 트래픽이 감소된 디스크 드라이브 동작들을 위한지능형 스토리지 엔진 |
US7962656B1 (en) * | 2006-01-03 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | Command encoding of data to enable high-level functions in computer networks |
JP2007188428A (ja) * | 2006-01-16 | 2007-07-26 | Fuji Xerox Co Ltd | 半導体ストレージ装置およびストレージシステム |
US20080022155A1 (en) * | 2006-07-20 | 2008-01-24 | International Business Machines Corporation | Facilitating testing of file systems by minimizing resources needed for testing |
US20080189558A1 (en) * | 2007-02-01 | 2008-08-07 | Sun Microsystems, Inc. | System and Method for Secure Data Storage |
US20110055476A1 (en) * | 2008-03-27 | 2011-03-03 | Christ Bryan E | RAID Array Access By A RAID Array-unaware Operating System |
US8806129B2 (en) | 2008-11-21 | 2014-08-12 | International Business Machines Corporation | Mounted cache memory in a multi-core processor (MCP) |
US9824008B2 (en) | 2008-11-21 | 2017-11-21 | International Business Machines Corporation | Cache memory sharing in a multi-core processor (MCP) |
US9122617B2 (en) | 2008-11-21 | 2015-09-01 | International Business Machines Corporation | Pseudo cache memory in a multi-core processor (MCP) |
US7804329B2 (en) * | 2008-11-21 | 2010-09-28 | International Business Machines Corporation | Internal charge transfer for circuits |
US9886389B2 (en) * | 2008-11-21 | 2018-02-06 | International Business Machines Corporation | Cache memory bypass in a multi-core processor (MCP) |
CN101436152B (zh) * | 2008-12-02 | 2013-01-23 | 成都市华为赛门铁克科技有限公司 | 一种数据备份的方法和装置 |
JP2010165395A (ja) * | 2009-01-13 | 2010-07-29 | Hitachi Ltd | ストレージ機器 |
US9043555B1 (en) * | 2009-02-25 | 2015-05-26 | Netapp, Inc. | Single instance buffer cache method and system |
CN102103545B (zh) * | 2009-12-16 | 2013-03-27 | 中兴通讯股份有限公司 | 一种数据缓存的方法、装置及系统 |
US9128853B1 (en) * | 2010-05-05 | 2015-09-08 | Toshiba Corporation | Lookup structure for large block cache |
US9195603B2 (en) | 2010-06-08 | 2015-11-24 | Hewlett-Packard Development Company, L.P. | Storage caching |
US9141538B2 (en) * | 2010-07-07 | 2015-09-22 | Marvell World Trade Ltd. | Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive |
US10360150B2 (en) * | 2011-02-14 | 2019-07-23 | Suse Llc | Techniques for managing memory in a multiprocessor architecture |
US9098397B2 (en) | 2011-04-04 | 2015-08-04 | International Business Machines Corporation | Extending cache for an external storage system into individual servers |
CN102571904A (zh) * | 2011-10-11 | 2012-07-11 | 浪潮电子信息产业股份有限公司 | 一种模块化设计的nas集群系统构建方法 |
JP5966229B2 (ja) | 2011-10-27 | 2016-08-10 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | 高速データ配布のための方法および装置 |
KR20130129639A (ko) * | 2012-05-21 | 2013-11-29 | 삼성전자주식회사 | 파일 머지 시스템 |
US9286219B1 (en) * | 2012-09-28 | 2016-03-15 | Emc Corporation | System and method for cache management |
CN105162856B (zh) * | 2012-10-16 | 2019-03-01 | 北京奇虎科技有限公司 | 网络应用集成系统和方法 |
US9330007B2 (en) | 2012-11-30 | 2016-05-03 | Dell Products, Lp | Systems and methods for dynamic optimization of flash cache in storage devices |
CN103336745B (zh) * | 2013-07-01 | 2017-02-01 | 无锡北方数据计算股份有限公司 | 一种基于ssd缓存的fc hba及其设计方法 |
CN104598392A (zh) * | 2013-10-31 | 2015-05-06 | 南京思润软件有限公司 | 一种利用多级Hash服务器缓存结构的实现方法 |
US9851901B2 (en) | 2014-09-26 | 2017-12-26 | Western Digital Technologies, Inc. | Transfer of object memory references in a data storage device |
US9934177B2 (en) * | 2014-11-04 | 2018-04-03 | Cavium, Inc. | Methods and systems for accessing storage using a network interface card |
US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
US10523585B2 (en) * | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
US11200192B2 (en) | 2015-02-13 | 2021-12-14 | Amazon Technologies. lac. | Multi-mode system on a chip |
CN104991614A (zh) * | 2015-06-16 | 2015-10-21 | 山东超越数控电子有限公司 | 一种加固模块化服务器 |
CN110058964B (zh) * | 2018-01-18 | 2023-05-02 | 伊姆西Ip控股有限责任公司 | 数据恢复方法、数据恢复系统和计算机可读介质 |
US10481834B2 (en) * | 2018-01-24 | 2019-11-19 | Samsung Electronics Co., Ltd. | Erasure code data protection across multiple NVME over fabrics storage devices |
CN113360081A (zh) | 2020-03-06 | 2021-09-07 | 华为技术有限公司 | 数据处理方法及其设备 |
US11327909B1 (en) * | 2020-10-26 | 2022-05-10 | Mellanox Technologies, Ltd. | System for improving input / output performance |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010021949A1 (en) * | 1997-10-14 | 2001-09-13 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US20010037406A1 (en) * | 1997-10-14 | 2001-11-01 | Philbrick Clive M. | Intelligent network storage interface system |
CN1330326A (zh) * | 2000-06-21 | 2002-01-09 | 国际商业机器公司 | 为多种设备提供快速信息服务的装置及方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038641A (en) * | 1988-12-30 | 2000-03-14 | Packard Bell Nec | Two stage cache memory system and method |
JPH08328760A (ja) * | 1995-06-01 | 1996-12-13 | Hitachi Ltd | ディスクアレイ装置 |
US5903907A (en) * | 1996-07-01 | 1999-05-11 | Sun Microsystems, Inc. | Skip-level write-through in a multi-level memory of a computer system |
US6098153A (en) * | 1998-01-30 | 2000-08-01 | International Business Machines Corporation | Method and a system for determining an appropriate amount of data to cache |
US6338115B1 (en) * | 1999-02-16 | 2002-01-08 | International Business Machines Corporation | Advanced read cache management |
US6502174B1 (en) * | 1999-03-03 | 2002-12-31 | International Business Machines Corporation | Method and system for managing meta data |
JP2001005614A (ja) * | 1999-06-25 | 2001-01-12 | Hitachi Ltd | ディスク装置およびサーバ装置 |
US6981070B1 (en) * | 2000-07-12 | 2005-12-27 | Shun Hang Luk | Network storage device having solid-state non-volatile memory |
JP4478321B2 (ja) * | 2000-11-27 | 2010-06-09 | 富士通株式会社 | ストレージシステム |
US7401126B2 (en) * | 2001-03-23 | 2008-07-15 | Neteffect, Inc. | Transaction switch and network interface adapter incorporating same |
US6775738B2 (en) * | 2001-08-17 | 2004-08-10 | International Business Machines Corporation | Method, system, and program for caching data in a storage controller |
US6976205B1 (en) * | 2001-09-21 | 2005-12-13 | Syrus Ziai | Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources |
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US20040040029A1 (en) * | 2002-08-22 | 2004-02-26 | Mourad Debbabi | Method call acceleration in virtual machines |
WO2004077211A2 (en) * | 2003-02-28 | 2004-09-10 | Tilmon Systems Ltd. | Method and apparatus for increasing file server performance by offloading data path processing |
US6963946B1 (en) * | 2003-10-01 | 2005-11-08 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data between a host and a peripheral |
-
2004
- 2004-10-20 EP EP04795875A patent/EP1690185A4/en not_active Withdrawn
- 2004-10-20 JP JP2006536765A patent/JP2007510978A/ja active Pending
- 2004-10-20 WO PCT/US2004/034772 patent/WO2005043395A1/en active Application Filing
- 2004-10-20 CN CNB200480030789XA patent/CN100428185C/zh not_active Expired - Fee Related
- 2004-10-20 US US10/970,671 patent/US20050144223A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010021949A1 (en) * | 1997-10-14 | 2001-09-13 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US20010037406A1 (en) * | 1997-10-14 | 2001-11-01 | Philbrick Clive M. | Intelligent network storage interface system |
CN1330326A (zh) * | 2000-06-21 | 2002-01-09 | 国际商业机器公司 | 为多种设备提供快速信息服务的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1690185A1 (en) | 2006-08-16 |
EP1690185A4 (en) | 2007-04-04 |
US20050144223A1 (en) | 2005-06-30 |
CN1871587A (zh) | 2006-11-29 |
JP2007510978A (ja) | 2007-04-26 |
WO2005043395A1 (en) | 2005-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100428185C (zh) | 存储服务器的自底向上高速缓存结构 | |
US20210072893A1 (en) | Single-Step Configuration Of Storage And Network Devices In A Virtualized Cluster Of Storage Resources | |
US9513825B2 (en) | Storage system having a channel control function using a plurality of processors | |
US7181578B1 (en) | Method and apparatus for efficient scalable storage management | |
KR100995466B1 (ko) | 저장장치 영역 네트워크 내의 저장장치 가상화 구현을 위한 방법 및 장치 | |
EP1595363B1 (en) | Scsi-to-ip cache storage device and method | |
US10042751B1 (en) | Method and system for multi-tier all-flash array | |
US9009427B2 (en) | Mirroring mechanisms for storage area networks and network based virtualization | |
US9104326B2 (en) | Scalable block data storage using content addressing | |
US5895485A (en) | Method and device using a redundant cache for preventing the loss of dirty data | |
US20070094466A1 (en) | Techniques for improving mirroring operations implemented in storage area networks and network based virtualization | |
US20070094465A1 (en) | Mirroring mechanisms for storage area networks and network based virtualization | |
US20090259817A1 (en) | Mirror Consistency Checking Techniques For Storage Area Networks And Network Based Virtualization | |
US7472231B1 (en) | Storage area network data cache | |
US20090259816A1 (en) | Techniques for Improving Mirroring Operations Implemented In Storage Area Networks and Network Based Virtualization | |
US11157184B2 (en) | Host access to storage system metadata | |
US7725654B2 (en) | Affecting a caching algorithm used by a cache of storage system | |
JP2003044421A (ja) | 仮想ストレージシステム及び同システムに使用されるスイッチングノード | |
US9667735B2 (en) | Content centric networking | |
US7484038B1 (en) | Method and apparatus to manage storage devices | |
US7003553B2 (en) | Storage control system with channel control device having data storage memory and transfer destination circuit which transfers data for accessing target cache area without passing through data storage memory | |
US7240151B1 (en) | Methods and apparatus for transferring data in a content addressable computer system | |
KR20230088215A (ko) | 분산 스토리지 시스템 | |
JP2004013246A (ja) | 多重書き込み型記憶装置 | |
Zeng et al. | A high-speed and low-cost storage architecture based on virtual interface |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20131020 |