用于同步数据块索引的方法和系统与流程

文档序号:12824293阅读:160来源:国知局
本发明的实施方式一般涉及数据存储系统。更特别地,本发明的实施方式涉及在存储系统中有效存储数据。
背景技术
::系统能够将数据写入到持久存储和从持久存储读取数据的速度通常是该系统总体性能的关键因素。从持久存储读取数据和向持久存储写入数据的传统方式需要在系统核中的多层和硬件中的多个实体处理。因此,从持久存储读取数据和向持久存储写入数据在系统中产生明显的等待时间,且因此降低系统的总体性能。此外,存储在固态存储设备中的数据是以数据块的形式。每个数据块包括多个数据页。每个数据页包括多个分片(例如数据片段(datafragment)或数据区块(datachunk))。针对每个分片,构建目录(tableofcontents,toc)项,其中toc项可以包括描述相应分片的信息。除了存储在存储设备的toc页之外,存储系统还构建存储器内闪存转换层(ftl)映射,允许存储系统快速确定分片的存储位置而不用参考存储在存储设备的toc项。构建toc页的操作可以消耗相对高的处理资源和时间。在多处理存储系统中,多个组件可能不得不保存其自己的ftl映射副本。保持ftl映射多个副本同步可能明显增加存储数据所需的时间和资源。附图说明在附图中通过实例且非限制的方式示出了本发明的实施方式,其中相同的附图标记表示相似的元件。图1是示出根据本发明的一个实施方式的存储系统的框图;图2是示出根据本发明的一个实施方式在存储系统中写入数据片段的处理流的框图;图3a-3b是示出根据本发明的某些实施方式在存储系统中写入数据片段的过程的示例的流程图;图4a-4f是示出根据本发明的某些实施方式的在存储系统中存储的数据的数据结构的示例的框图;图5a-5d是示出根据本发明的某些实施方式的存储设施的示例的框图;图6是根据本发明的一个实施方式的通信架构的示例的框图;图7是根据本发明的一个实施方式的存储模块的示例的框图。具体实施方式将参考下面描述的细节来描述本发明的各种实施方式和方面,且附图将示出各种实施方式。下面的描述和附图是示出本发明且不视为限制本发明。许多特定细节被描述以提供对本发明的各种实施方式的全面理解。但是,在某些情况中,公知或常规的细节没有被描述以提供对本发明的实施方式的简洁描述。在说明书中对“一个实施方式”或“一实施方式”的引用意思是与该实施方式相结合所描述的特定特征、结构或特性能够包括在本发明的至少一个实施方式中。在本说明书中不同位置出现的短语“在一个实施方式中”不必都指同一个实施方式。根据一些实施方式,存储系统包括通过通信架构连接或耦合到客户端和存储模块的第一控制模块(cm)和第二控制模块(cm)。响应于写入到存储模块的数据片段,第一cm用于在存储模块的第一存储分区中保存的目录(toc)页中创建toc项,确定toc页是否包含预定数量的toc项,以 及响应于确定toc页包含预定数量的toc项,经由处理器间链路发送控制信号给第二cm。响应于经由处理器间链路从第一cm接收到控制信号,第二cm用于将toc页从第一存储分区复制到第二cm的存储器(也称为cm存储器)。第二cm然后检查toc页的toc项并基于toc页的toc项更新其cm存储器中保存的自己的ftl映射。第一cm使用该ftl映射来服务从客户端接收的用于访问数据分片的请求。在这样的配置中,为了冗余、保护或错误容忍的目的,第一cm作为主cm操作而第二cm作为辅助cm操作。由于第一cm和第二cm通过通信架构共享存储模块,第二cm不必构建相同的toc页,构建相同的toc页可能会消耗时间和资源。而是,第二cm从第一cm构建的toc页复制该toc页并基于第一cm构建的toc页更新其自己的ftl映射。此外,一旦toc项已经在第一存储分区中被构建,第一cm能够向客户端应答数据分片的写入请求,而不必等待来自第二cm的应答。图1是示出了根据本发明的一个实施方式的存储系统的框图。存储系统100可以代表任意存储服务器,例如云存储服务器、内容服务器等。参考图1,存储系统100包括经由一个或多个集线器或交换设备104a-104b通信连接或耦合到控制模块102a-102b和一个或多个存储模块110的一个或多个客户端设备101(也简单称为客户端)。虽然示出了仅一个客户端101,但是能够使用多个客户端。类似地,虽然示出仅一个存储模块110,但也能够使用多个存储模块且除了cm102a-102b之外还能使用更多cm,这依据特定配置或要求。此外,cm102a-102b的每一个可以包括处理器和本地存储器,例如cm存储设备105a-105b(统称为cm存储设备105)。cm存储设备105可以是任意种易失性存储设备,例如动态随机存取存储器(dram)、同步dram、sdrsdram或ddrsdram。在一个实施方式中,客户端101经由通信架构连接或耦合到cm 102a-102b和存储模块110,而cm102a和cm102b经由处理器间链路(也称为处理器互连)彼此连接或耦合。在该示例中,为了示出的目的,通信架构由组件101-104b和110之间的实线或连接表示,而处理器间链路106由虚线或虚线连接表示。在该示例中实线和集线器/交换设备104a-104b表示的通信架构可以是全网通信架构,其允许组件101-104b和110的每一个彼此通信并彼此访问资源(例如存储、处理资源)。在一个实施方式中,存储系统100可以是服务器或服务器簇的部分,用于通过网络(例如因特网)提供数据存储或内容服务给远程设备。例如,客户端设备101可以是连接或耦合到cm102a-102b和存储模块110表示的后端存储设施的前端服务器组件(例如网页服务器、内容服务器或云服务器)。在这样的配置中,客户端101操作作为用于通过因特网提供服务给远程设备的服务器,同时客户端101通过通信架构操作作为cm102a-102b和存储模块110表示的存储设施的客户端。cm102a-102b也统称为cm102,可以操作为存储设施的存储控制器或服务器组件。在一个实施方式中,存储系统100可以在电子机柜内被设施。例如,客户端101可以被实施为插入到代表通信架构(由实现连接和集线器/交换设备104a-104b表示)的背板的客户端刀片(blade)或面板(plane)的部分。cm102a-102b可以被实施为插入到该背板的一个或多个控制刀片或控制面板的部分。存储模块110可以被实施为插入到背板的存储刀片(或存储面板或数据面板)的部分。因此,所有这些刀片使用各种合适的通信协议经由通信架构彼此连接或耦合,而cm102a-102b经由处理器间链路106彼此连接或耦合,该处理器间链路106可以是专用私有连接、或控制刀片内或之间的通信架构的部分。还可以存在其他配置。在一个实施方式中,存储模块110包括一个或多个随机存取存储器(ram)设备和一个或多个持久存储设备,其可以由存储模块控制器120 控制或管理。存储模块110的ram设备和持久存储设备可以在逻辑或物理上被划分成存储分区125a-125b(统称为存储分区125)。存储分区125a-125b可以分别被分配用于cm102a-102b。存储分区125a-125b的每一个包括相应的ram区,例如ram区121a-121b(统称为ram121)。ram设备可以是任意类型的易失性存储设备,例如动态随机存取存储器(dram)、同步dram、sdrsdram或ddrsdram。类似地,存储分区125a-125b的每一个包括相应的持久存储器或存储区,例如持久存储区122a-122b(统称为持久存储区122)。持久存储区122可以是任意种类的非易失性存储设备,例如nand闪存、nor闪存、磁性ram(m-ram)、自旋扭矩磁性ram(st-mram)、相变存储器(pcm)、忆阻存储器、定义为非易失性存储级存储器(scm)的任意其他存储器、磁盘或光盘。cm102a-102b可以通过通信架构与存储模块控制器120通信以访问存储分区125的存储位置。在一个实施方式中,存储模块控制器120被配置成接收从cm102a-102b读取数据和/或将数据写入到cm102a-102b的请求。此外,存储模块控制器120被配置成使用存储分区125a-125b服务该读取请求和写入请求。此外,存储模块控制器120可以包括用于在存储分区125、cm存储设备105和客户端101的客户端存储器(未示出)之间移动或复制数据的直接存储访问(dma)引擎。在一个实施方式中,通信架构可以是任意种类的高速通信架构,例如pcie、以太网、光纤信道或infinibandtm架构。处理器间链路106可以是两个cm102a-102b之间的专用私有连接,或其可以被实施为通信架构的部分。客户端101可以是包括用于发送读取请求给存储设施和/或发送写入请求给存储设施的功能的任意系统。客户端101可以包括客户端处理器和客户端存储器(未示出)。在一个实施方式中,客户端101被配置成使用各种通 信协议与存储设施(由控制模块102a-102b和存储模块110的一个或多个表示)通信,该通信协议例如是外围组件互连(pci)、pci高速(pcie)、pci扩展(pci-x)、非易失性存储高速(nvme)、通过pcie架构的非易失性存储高速(nvme)、通过以太网架构的非易失性存储高速(nvme)以及通过infiniband架构的非易失性存储高速(nvme)。在一个实施方式中,在客户端101、cm102a-102b和存储模块110之间交换的命令和响应/应答可以经由保存在与这些组件相关联的各种存储器中的相应提交队列和完成队列被交换。例如,cm存储器105a-105b的每一个可以包含用于客户端101和存储模块110的单独或分开的提交队列和完成队列。类似地,客户端101的客户端存储器可以为cm102a-102b的每一个保存提交队列和完成队列。端点使用提交队列来通过通信架构提交命令给另一端点用于特定操作。端点使用完成队列设置针对之前经由提交队列提交的命令的应答或响应以用信号通知另一端点该命令已完成。例如,当客户端101向cm102a发起读取请求时,客户端101在存储器105a中保存的与cm102a相关联的提交队列中设置读取请求命令。通过在提交队列中设置命令,cm102a可以例如经由中断(例如门铃中断)被通知。类似地,当cm102a完成从客户端101发送的命令时,cm102a可以在与客户端101相关联的完成队列中设置指示符(例如应答、响应)以用信号通知客户端101该命令已经完成。与客户端101相关联的完成队列可以被保存在客户端101的客户端存储器中。cm102a可以具有针对其存储分区125a的读取和写入访问权利或特权,并具有针对存储分区125b的仅读取访问权利或特权。类似地,cm102b可以具有针对存储分区125b的读取和写入访问权利,且针对存储分区125a具有仅读取访问权利。可替换地,cm102a-102b都可以具有针对所有存储器区和存储区的读取和写入访问权利,只要存储模块控制器120能够管理或 控制访问争用和/或冲突/相干,或如果cm102a-102b能够直接在它们之间仲裁访问,或已经建立管理访问共享的在先协议。典型地,客户端101能够经由通过cm102a的第一通信路径访问存储在与cm102a相关联的存储区中的数据。同样地,客户端101能够经由通过cm102b的第二通信路径访问存储在与cm102b相关联的存储区中的数据。这两个路径同时可用于客户端101以为了更好带宽。可替换地,一条路径可以是另一条路径的冗余或可替换路径。当一条路径(例如通过cm102b的路径)不可用(例如由于故障)时,客户端101可以经过另一条路径(例如通过cm102a的路径)来从与不可用路径相关联的存储区读取数据或向其写入数据。下面将参考图5a-5d和6-7进一步详细描述关于客户端101、cm102a-102b和存储模块110以及通信架构的进一步信息。在一个实施方式中,持久存储区122a-122b可以从一个或多个闪存设备被分配。典型地,数据可以以块的形式被存储在闪存设备中。每个块包含一个或多个数据页(例如数据页132a-132b)和描述数据页的元数据(例如toc页131a-131b)。例如,块的元数据包括目录(toc),其中toc包括一个或多个toc页。每个toc页包含描述包含在块中的一个或多个数据页的信息。每个数据页包括一个或多个数据片段或分片(也称为数据区块(datachunk)或数据段(datasegment))。每个toc页包括一个或多个toc项,每个toc项具有描述在相关联数据页中的分片的一者的信息或元数据。从客户端101接收的数据是分片的形式。基于从客户端101接收的该分片,数据页和相关联的toc页被构建。数据页和toc页然后被封装到块,其然后被写入到闪存设备的存储位置。下面在图4a-4i和5a-5e中进一步详细描述关于块中数据页和toc页的进一步信息。根据一个实施方式,在服务客户端101之前的系统建立期间,cm102a-102b的每一个被配置成扫描持久存储区122a-122b以读取并检查 toc页131a-131b的toc项。基于toc项提供的信息,每个cm分别生成并占据ftl映射,例如ftl映射130a-130b。toc页的示例在图4d中示出且toc项的示例在图4e中示出,其在下面被进一步详细描述。ftl映射130a-130b可以被cm102a-102b分别使用来服务来自客户端101的访问数据页132a-132b的请求,而不必参考toc页131a-131b。在一个实施方式中,ftl映射130a-103b的每一个包括多个ftl映射项,每一个具有描述由toc页131a-131b的toc项完整描述的数据分片之一的概要信息。ftl映射的映射项可以基于对象标识符和其在相应对象内的偏移被分类(sort)。在特定实施方式中,每个toc项包括64字节的信息,而每个ftl映射项包括描述相应toc项的64比特的信息。来自toc项的详细信息的多数可以从内核ftl映射中被删去,因为该信息是冗余的和/或能够从其他源得到。例如,没有必要对每个对象映射中的每个项包含对象id,因为该对象id可以针对每个项是相同的。此外,ftl映射中的项的位置能够用于得到其描述的偏移,因此没有必要在映射中实际存储该偏移。在一个特定实施方式中,每个64字节toc项可以由64比特映射项描述,其中仅显式保存在ftl映射中的信息是持久存储中的分片的位置。注意在仅用于示例目的的该示例中,存储模块110包括闪存设备或其他固态存储设备且这里使用的文件系统是闪存文件系统的部分。因此,ftl映射130a-130b可以根据现有技术中公知的ftl规范被构建并使用。但是,说明书中描述的技术也能够应用于其他持久存储设备和/或其他文件系统。因此,映射130a-130b可以根据其各自的规范来实施。根据一个实施方式,当客户端101将分片写入到存储模块110时,cm102a将在cm存储器105a中接收该分片。该分片被结合到打开的数据页并最终存储到持久存储区122a,作为数据页132a的部分。基于该分片,cm 102a构建完全描述新接收的分片的新toc项。cm102a然后在当前打开的toc页115a中结合或插入该新toc项。cm102a然后用该新toc项的概要信息更新存储器内ftl映射。toc115a可以是当前打开的块的部分,其也可以被保存在ram区121a中和/或可选地在cm存储器105a中。如果在cm存储器105a中没有当前打开的toc页,则cm102a可以发起或打开新toc页。在一个实施方式中,toc页能够包含预定数量的toc项。类似地,块能够包含预定数量的数据页和预定数量的toc页的组合。块的尺寸取决于与线下(underlining)闪存设备的类型相关联的擦除单元的尺寸。上述的操作可以针对从客户端101接收的每个分片被反复执行以实现当前打开的toc页和/或块。当toc页已满时(例如包含预定数量的toc项),cm102a将toc页合并到当前打开的块并打开ram区121a中的新toc页。ram区121a还可以保存当前打开的块(未示出)的副本,其可以周期性与cm存储器105a中保存的块同步。当该打开的块已满时,该块然后从ram区121a被写入到持久存储区122a。该块还可以从ram区121a溢出到持久存储区122a以响应于预定事件通知(例如供电故障通知)。一旦该块已经被写入到持久存储区122a,cm102a在ram区121a和/或cm存储器105a中分配或打开具有新toc115a的新块,以用于从客户端101接收的后续分片。此外,根据一个实施方式,当在cm存储器105a和/或在ram区121a中的toc页已满时,cm102a经由处理器间链路106传送控制信号给cm102b以指示该已满的toc页在rma区121a中可得到以允许或指示cm102b更新其保存在cm存储器105b中的ftl映射130b。该控制信号还可以指示该新的已满的toc页位于ram区121a的哪个位置。响应于该控制信号,cm102b(例如经由存储模块控制器120)复制来自ram区121a的toc页并将其加载到cm存储器105b,例如作为toc页115b的部分。cm 102b检查toc页115b的toc项并将该toc项更新到其ftl映射130b。在一个实施方式中,一旦toc页115b已经从ram区121a被加载到cm存储器105b,cm102b应答或响应经由处理器间链路106从cm102a接收的控制信号。cm102b然后处理toc页115b以更新ftl映射130b。在该实施方式中,处理器间链路106操作作为控制路径,而cm102a-102b共享的存储模块110操作作为数据路径。因此,由于cm102a-102b经由高速通信架构共享存储模块110,cm102b能够简单经由存储模块110复制cm102a创建的toc页,而不必自己构建相同的toc页。在常规系统中,针对cm102a创建的每个toc项,cm102a必须发送toc项给cm102b(例如经由处理器间链路106),其可以造成cm102a-102b之间的明显的业务量。此外,在常规系统中,cm102a必须在返回状态或应答给客户端101之前等待来自cm102b的指示cm102b已经同步ftl映射的应答,这造成不必要的等待时间。在一个实施方式中,新toc页或新toc项一被cm102a构建并存储在ram区121a中,cm102a就能够应答或返回状态给客户端101。cm102a能够处理从客户端101接收的后续分片,而cm102b并行从ram区121a同步其ftl映射130b(当toc页已满时)。注意上述的描述能够类似应用于cm102b从客户端101接收的写入请求,其中ftl映射130b的信息由cm102a同步。图2是示出根据本发明的一个实施方式的在存储系统中写入数据片段的处理流的框图。参考图2,当客户端101将分片写入到存储模块110时,其经由路径201发送该分片给集线器/交换设备104a。作为响应,集线器/交换设备104a通过通信架构的路径202发送该分片给cm存储器105a和/或存储模块110。在一个实施方式中,集线器/交换设备104a可以被编程用于使用dma事务(transaction)发送数据分片给cm存储器105a和存储模块110两者。在特定实施方式中,集线器/交换设备104a可以被编程用于将相同的 数据分片组播到cm存储器105a和ram区121a。该组播操作将在下面进一步详细描述。根据一个实施方式,响应于在cm存储器105a接收到的该分片,cm102a被配置成经由路径203在打开的toc页中构建新toc项并将该分片合并到打开的数据页。打开的toc页和打开的数据页可以是之后(例如当打开的toc页和打开的数据块已满时)要被存储在存储模块110中的打开的块的部分。路径201-203中涉及的以上操作可以针对客户端101写入的每个分片反复被执行。在一个实施方式中,在已经创建了新的toc项时,cm102a能够经由路径204应答或返回写入操作的状态给客户端101。此外,cm102a检查相应的打开的toc页以确定toc页是否已满。也就是说,cm102a检查toc页以确定toc页是否包含预定数量的toc项。如果toc页已满,cm102a则经由路径205使用处理器间链路106发送控制信号给cm102b。该控制信号可以指示新的toc页在ram区121a的特定存储位置可得到。响应于经由路径205接收的控制信号,cm102b从ram区121a将toc页复制并加载(例如经由存储模块控制器120)到cm存储器105b。在一个实施方式中,一旦toc页已经被复制并加载到cm存储器105b,cm102b能够经由路径207应答或响应控制信号,由此cm102a能够释放在ram区121a中保持toc页115a的存储资源。cm102b然后处理toc页115b的toc项以更新其ftl映射130b。因此,通过复制cm102a创建的toc页,cm102b不必为了更新ftl映射130b构建相同的toc页。此外,通过在rma区121a中存储toc页,cm102a能够应答写入操作给客户端101,而不必等待cm102b同步单个的toc项。图3a是示出了根据本发明的一个实施方式的用于在存储系统中存储数据的过程的处理流程图。过程300可以由如图1和图2所示的存储系统执行。 参考图3a,在事务301,客户端101发送将要被写入到存储模块的分片给cm102a。作为响应,在框302,cm102a创建新的toc项并更新打开的toc页。cm102a然后经由事务303应答写入请求。在框304,cm102a检查该打开的toc页以确定该打开的toc页是否已满(例如包含预定数量的toc项)。如果是,则在事务305处,cm102a经由处理器间链路发送控制信号给cm102b。响应于该控制信号,cm102b将cm102a创建的新toc页从存储分区125a中的存储位置复制到其自己的存储器。cm102b经由事务307应答控制信号以指示toc页已经被复制,由此cm102a能够释放保持该toc页的存储器。在框308,cm102b检查toc页的toc项并基于该toc项更新其ftl映射。以上操作可以反复被执行,作为在事务309-314中涉及的操作的部分,直到打开的块已满,其中该已满的块然后被写入到持久存储设备。图3b是示出根据本发明的一个实施方式的在存储系统中存储数据的过程的流程图。过程350可以由主cm执行,例如如上所述的cm102a。参考图3b,在框351,第一cm从客户端设备接收要被写入到存储模块的分片。在框352,第一cm在打开的toc页(例如描述toc页的存储器内数据结构)中创建新的toc项。在框353,第一cm检查toc页以确定该toc页是否已满(例如包含预定数量的toc项)。如果toc页已满,则在框354,第一cm经由处理器间链路发送控制信号给第二cm以允许第二cm从预定的存储位置复制该新的toc页。图4a示出了根据一个实施方式的存储模块。存储模块可以代表上述存储模块的任意,例如存储模块110。参考图4a,持久存储400包括一个或多个块。持久存储400可以是固态存储(例如闪存设备)。块是持久存储400内的存储的最小可擦除单元。图4b示出了根据一个实施方式的块。更具体地,每个块402包括一个或多个页。在一个实施方式中,页是用于持久存储 400中读取和程序操作(包括初始写入到页)的最小可寻址单元。在一个实施方式中,在块内重写页需要整个块被擦除和重写。在一个实施方式中,块内的每个页是如图4c中示出的数据页或如图4d中所示的toc页。图4c示出了根据一个实施方式的数据页404。数据页404包括一个或多个分片。分片对应于有限量的用户数据。此外,给定页内的分片可以是统一尺寸或非统一尺寸。此外,给定块内的分片可以是统一尺寸或非统一尺寸。数据页仅包括分片。每个分片包括用户数据(即,用于存储在存储设施中的客户端提供的数据)。为了描述的目的,术语“分片”和“用户数据”互换使用。图4d示出了根据一个实施方式的toc页。toc页406包括一个或多个toc项,其中toc项的每一个包括描述相应分片的元数据。此外,toc页406可以包括对块402中的另一toc页的引用。在一个实施方式中,toc页仅包括toc项(且可选地还包括对在相同块中的另一toc页的引用),但是不包括任何分片。每个toc项对应于或描述块402中的分片(见图4c)。toc项仅对应于相同块内的分片。也就是说,toc页与块相关联且仅包括用于该块中的分片的toc项。在固态存储的每一个内的每个块中没有缺陷的最后页是toc页。图4e示出了根据一个实施方式的块。更具体地,图4e示出了包括toc页414、418和426和数据页410、412、416、420、422和424的块(408)。为了示出的目的,块408概念性地从“顶”到“底”被填充。此外,一旦用于数据页中的分片的toc项的累积尺寸等于页的尺寸,则toc页被生成并存储。参考图4e,例如,数据页410和数据页412被存储在块408中。用于数据页410和数据页412中的分片(未示出)的相应toc项(未示出)具有等于该块中的页的尺寸的总累积尺寸。因此,(使用对应于该块中的分片的toc项)toc页414被生成并存储在块408中。分片页416之后被写 入到块408。由于对应于数据页416中的分片(未示出)的toc项具有等于块中的页的尺寸的总累积尺寸,toc页418被创建并被存储到块408中。此外,因为在块408中已经有toc页,因此toc页418还包括对toc页414的引用。该过程被重复执行,直到在块408中仅剩余一个页要填充。在这一点上,toc页426被创建并被存储在块408的最后页中。本领域技术人员理解toc页426中的toc项的总累积尺寸可以小于该页的尺寸。在这样的情况中,toc页可以包括填充以解决toc项的累积尺寸与页尺寸之间的差异。最终,因为在块408中有其他toc页,toc页426包括对一个其他toc页418的引用。如图4e中所示,toc页从该块的“底”链接到页的“顶”,由此toc页可以通过遵循来自低于该toc页的toc页的引用而被得到。例如,toc页418可以使用toc页426中的引用被访问。本领域技术人员应当理解虽然块408仅包括数据页和toc页,但是块408可以包括数据页和toc页以外的页(例如,包括奇偶性数据的页)而不偏离该技术。该其他页可以位于块内,且依据实施情况,在toc页与数据页之间交织。图4f示出了根据一个实施方式的toc项。每个toc项包括用于分片(且特别地分片中的用户数据)的元数据并可以包括以下字段的一个或多个:对象id,其标识存储的对象(例如文件);生成时间,其指定对应于toc项的分片被写入到圆顶存储器(vaultedmemory)的时间(例如控制模块中的处理器的处理器时钟值);偏移id,其标识分片中的用户数据相对于(由对象id标识的)对象的开始的起始点;段尺寸,其指定分片的尺寸;页id,其标识存储分片的块中的页;字节,其标识(由页id标识的)页中的分片的起始位置;逻辑长度,其指定该分片中的用户数据的未压缩长度;类型,其指定分片中的用户数据类型(例如,坏页、数据、快照、池);种类,其 指定分片是否是有效的用户数据或修剪(trim)(其指示当固态存储执行垃圾收集时可以擦除该分片);以及预留,其对应于toc项中的空间,用于存储其他用户数据。在一个实施方式中,<对象id,偏移id>或<对象id,偏移id,生成时间>标识客户端提供的用户数据。此外,<对象id,偏移id>或<对象id,偏移id,生成时间>由客户端用于标识特定用户数据,而存储设施使用物理地址来标识存储设施内的用户数据。本领域技术人员应当理解客户端可以提供逻辑地址而不是对象id和偏移id。本领域技术人员应当理解toc项可以包括另外或更少的字段。此外,toc项中的字段可以以不同顺序和/或组合来安排。此外,虽然图4f示出的toc项中的字段都是相同尺寸,但是toc项中的各种字段的尺寸可以是非统一的,任意给定字段的尺寸可基于toc项的实施而变化。图5a-5d是示出根据本发明的某些实施方式的存储设施的示例的框图。存储设施可以代表上述的存储设施。参考图5a,存储设施包括控制模块1200和存储模块群组1202。控制模块1200可以代表上述的控制模块的任意。在一个实施方式中,控制模块1200被配置成管理来自一个或多个客户端或客户端设备1380的读取和写入请求的服务。这里的客户端可以代表上述的客户端或客户端设备的任意。在一个实施方式中,控制模块1200被配置成经由通信架构1350从一个或多个客户端1380接收请求,处理该请求(其可以包括发送该请求给存储模块),以及在请求已经被服务之后提供响应给客户端1380。在一个实施方式中,控制模块1200包括输入/输出模块(iom)1204、交换架构1206、处理器1208、存储器1210以及可选地场可编程门阵列(fpga)1212。在一个实施方式中,iom1204是客户端与存储设施中的其他组件之间的物理接口。iom1204支持各种通信协议,例如pci、pcie、 pci-x、以太网(包括但不限于ieee802.3a-802.3bj下定义的各种标准)、infiniband和通过聚合以太网(roce)的远程直接存储存取(rdma)。在一个实施方式中,交换架构1206包括一个或多个互连的交换机。如果交换架构1206包括多个交换机时,每个交换机可以连接到每个其他交换机,可以连接到交换架构中的交换机子集,或可以仅连接到交换架构中的一个其他交换机。在一个实施方式中,交换架构1206中的交换机的每一个是硬件和逻辑的组合(例如使用集成电路实施)(如交换架构实施的协议定义的),其被配置成在存储设施中将各种组件连接一起并在各种连接的组件之间(使用逻辑进行)路由分组。在一个实施方式中,交换架构1206物理连接到iom1204、处理器1208、存储模块组1202,以及fpga1212(如果有的话)。在一个实施方式中,控制模块1200中的所有组件间的通信(除了处理器1208与存储器1210之间的通信)经过交换架构1206。此外,控制模块1200与存储模块组1202之间的所有通信经过交换架构1206。在一个实施方式中,使用pci协议(例如pci、pcie、pci-x或另一pci协议)来实施交换架构1206。在这样的实施方式中,经过交换架构1206的所有通信使用相应的pci协议。在一个实施方式中,如果交换架构1206实施pci协议,交换架构1206包括用于处理器的端口(或更具体地,用于在处理器1208中集成的根复合体(rootcomplex)的端口或用于连接到处理器的根复合体的端口)、用于存储模块组1202中的存储模块1214a至1214n的一个或多个端口、用于fpga1212(如果有的话)的端口、以及用于iom1204的端口。存储模块1214a-1214n的每一个可以代表上述的存储模块的任意。在一个实施方式中,上述的端口的每一个可以被配置为透明桥或非透明桥。本领域技术人员可以理解虽然已经关于pci实施描述交换架构1206,但是交换架构1206可以使用其他协议被实施而不偏离本发明的实施方式。在一个实施方式中,交换架构1206中至少一个交换机被配置成实施组播。更具体地,在一个实施方式中,处理器1208被配置成生成组播群组,其中该组播群组包括两个或更多个成员,每个成员指定存储器1210和/或存储模块1214a-1214n中的地址。当组播群组被创建时,该组播群组与组播地址相关联。为了实施该组播,交换架构中的至少一个交换机被配置成当接收到将组播地址指定为目的地地址的写入时,该交换机被配置成为该组播群组中的每个成员生成新写入并将该写入发送给存储设施中的合适地址。在一个实施方式中,用于该交换机生成的每个写入的地址通过给组播地址添加特定偏移来确定。处理器1208可以是具有单核或多核的电子电路群组,被配置成执行指令。在一个实施方式中,处理器1208可以使用复杂指令集(cisc)架构或精简指令集(risc)架构来实施。在一个实施方式中,处理器1208包括根复合体(如pcie协议定义的)。在一个实施方式中,如果控制模块1200包括根复合体(其可以集成到处理器1208),则存储器1210经由该根复合体连接或耦合到处理器1208。可替换地,存储器1210使用点对点连接机制直接连接到处理器1208。在一个实施方式中,存储器1210可以是任意易失性存储器,包括但不限于动态随机存取存储器(dram)、同步dram、sdrsdram和ddrsdram。在一个实施方式中,处理器1208被配置成创建并更新存储器内数据结构(未示出),其中存储器内数据结构被存储在存储器1210在。在一个实施方式中,存储器内数据结构包括存储模块的集合中的逻辑地址和物理存储地址之间的映射(直接或间接)。在一个实施方式中,逻辑地址是从客户端的角度数据看起来位于的地址。在一个实施方式中,逻辑地址是(或包括)通过将哈希函数(例如sha-1、md-5等)应用于n元组而生成的哈希值。在一个实施方式中,n元组是<对象id,偏移id>,其中对象id定义文件且偏 移id定义相对于文件的开始地址的位置。在该技术的另一实施方式中,该n元组是<对象id,偏移id,生成时间>,其中生成时间对应于创建(使用对象id标识的)文件的时间。可替换地,逻辑地址可以包括逻辑对象id和逻辑字节地址,或逻辑对象id和逻辑地址偏移。在该技术的另一实施方式中,逻辑地址包括对象id和偏移id。本领域技术人员应当理解多个逻辑地址可以被映射到单个物理地址且该逻辑地址不限于以上的实施方式。在一个实施方式中,物理地址可以对应于(i)存储器1210中的位置,(ii)圆顶存储器中的位置,或(iii)固态存储模块中的位置。在一个实施方式中,如果在存储设施中有数据的多个副本,则存储器内数据结构可以将单个哈希值映射到多个物理地址。在一个实施方式中,存储器1210包括以下的一个或多个:用于处理器1208的提交队列、用于处理器1208的完成队列、用于存储设施中的存储模块1214a-1214n的每一个的提交队列、以及用于存储设施中的存储模块1214a-1214n的每一个的完成队列。在一个实施方式中,用于存储器1208的提交队列用于发送命令(例如读取请求,写入请求)到处理器1208。在一个实施方式中,用于存储器1208的完成队列用于用信号通知处理器1208其发送到另一实体的命令已经被完成。用于存储模块的提交队列和完成队列以相似方式发挥功能。在一个实施方式中,处理器1208(经由交换架构)被配置成将各种类型的处理卸载到fpga1212。在一个实施方式中,fpga1212包括用于计算被写入到存储模块的数据和/或从存储模块读取的数据的校验和的功能。此外,fpga1212可以包括用于计算p和/或q奇偶信息的功能,用于使用raid方案(例如raid2-raid6)在存储模块中存储数据,和/或用于执行恢复使用raid方案(例如raid2-raid6)存储的毁坏的数据所需的各种计算的功能。在一个实施方式中,存储模块组1202包括一个或多个存储模块 (1213a-1214n),每一个被配置成存储数据。在一个实施方式中,处理器1208被配置成编程系统中的一个或多个dma引擎。例如,处理器1208被配置成编程客户端交换机中的dma引擎。处理器1208还可以被配置成编程存储模块中的dma引擎。在一个实施方式中,编程客户端交换机中的dma引擎可以包括创建组播群组并生成用于该组播群组中的成员的每一个的描述符。在一个实施方式中,通信架构1350能够是高速通信架构的任意者,例如pcte、以太网、光纤信道或infinibandtm架构。客户端1380可以是包括发送读取请求给存储设施和/或发送写入请求给存储设施的功能的任意系统。客户端1380可以包括客户端处理器1381和客户端存储器1382。在一个实施方式中,客户端1380被配置成使用各种通信协议与存储设施1355通信,该通信协议例如外围组件互连(pci)、pci高速(pcie)、pci扩展(pci-x)、非易失性存储器高速(nvme)、通过pci高速架构的非易失性存储器高速(nvme)、通过以太网架构的非易失性存储器高速(nvme)以及通过infiniband架构的非易失性存储器高速(nvme)。在一个实施方式中,如果客户端1380实施pci、pci高速或nvme,客户端1380可以包括根复合体(未示出)。根复合体是将客户端1380(包括其客户端处理器和客户端存储器)连接到pcie架构的设备。在一个实施方式中,pcie架构包括根复合体和端点,其经由交换机连接。端点是除根复合体以外的设备或能够发起pci事务(例如读取请求、写入请求)或是pci事务的目标的交换机。一个或多个客户端和一个或多个存储设施可以被集成作为pcie架构的部分。此外,如果存储设施内的单独组件使用pcie通信且客户端1380中的单独组件使用pcie通信,则存储设施和客户端1380中的所有组件可以被认为是单个pcie架构的部分。客户端存储器1382可以包括用于客户端处理器的提交队列(sq)和用 于客户端处理器的完成队列(cq)。在本发明的一个实施方式中,存储设施存储器,例如存储设备1210,包括通过通信架构对客户端可见的用于客户端处理器的一个或多个提交队列。客户端存储器1382包括通过通信架构对存储设施可见的用于客户端处理器的一个或多个完成队列。用于客户端处理器的提交队列用于发送命令(例如读取请求、写入请求)给客户端处理器。用于客户端处理器的完成队列用于用信号向客户端处理器通知其发送给另一实体的命令已经完成。客户端1380还可以包括用于将客户端1380耦合到通信架构的客户端交换机,其中客户端交换机可以包括一个或多个交换设备。如果客户端交换机包括多个交换机,每个交换机可以连接到每个其他交换机,可以连接到交换架构中的交换机的子集,或可以仅连接到一个其他交换机。在本发明的一个实施方式中,客户端交换机中的交换机的每一个是硬件和逻辑的组合,被配置成允许数据和消息在客户端1380与存储设施1355之间交换。在这样的实施方式中,客户端交换机可以包括一个或多个端口,其中每个端口可以被配置为透明桥或不透明桥。实施为透明桥的端口允许根复合体继续发现(直接或间接)连接到该端口的设备(其可以是其他根复合体、交换机、pci桥或端点)。相反,当根复合体遇到实施为不透明桥的端口时,该根复合体不能继续连接到该端口的设备的发现,而是根复合体将端口视为端点。当端口被实施为不透明桥时,不透明桥的任一侧的设备可以仅适用邮箱系统和门铃中断(由客户端交换机实施)通信。门铃中断允许不透明桥的一侧的处理器发送中断给不透明桥的另一侧的处理器。此外,邮箱系统包括交换架构的一侧的处理器可读取和可写入的一个或多个寄存器。上述寄存器使得客户端交换机的任一侧的处理器能够经由不透明桥传递控制和状态信息。为了从不透明桥的一侧的设备发送pci事务给不透明桥的另一侧的设 备,pci事务必须被寻址到实施不透明桥的端口。在接收到pci事务时,客户端交换机执行地址转换(使用直接地址转换机制或基于查找表的转换机制)。得到的地址然后用于将分组路由到不透明桥的另一侧的合适设备。客户端交换机被配置以使得客户端存储器的至少一部分对存储设施直接可访问。也就是说,客户端交换机的一侧的存储设施可以经由客户端交换机直接访问客户端交换机另一侧的客户端存储器。客户端交换机可以包括由连接到客户端交换机的存储设施或客户端处理器编程的dma引擎。dma引擎可以被编程用于从对存储设施可访问的客户端存储器的部分中的地址读取数据并将该数据的副本直接写入到存储设施或存储模块中的存储器。此外,dma引擎可以被编程用于从存储设施读取数据并将该数据的副本直接写入到对存储设施可访问的客户端存储器的部分中的地址。在本发明的一个实施方式中,dma引擎支持组播。在这样的实施方式中,存储设施中的处理器可以创建组播群组,其中组播群组的每个成员对应于存储设施的存储器中的唯一目的地址。组播群组的每个成员与描述符相关联,该描述符指定:(i)目的地址;(ii)源地址;(iii)传输尺寸字段;以及(iv)控制字段。用于描述符的每一个的源地址保持不变而目的地址针对每个描述符改变。一旦创建了组播群组,通过以组播群组地址为目标的交换机的任意数据传输(包括dma引擎发起的传输)在与组播群组相关联的目的端口的所有中放置数据的相同副本。该交换机并行处理组播群组描述符的所有。现在参考图5b,根据另一实施方式,存储设施包括控制模块1216和至少两个存储模块组1236和1238。控制模块1216包括交换架构1234,其直接连接到ioma1218、iomb1220、处理器a1222、处理器b1224、fpgaa1230(如果有的话)、fpgab1232(如果有的话)、存储模块组a1236中的存储模块1236a-1236n以及存储模块组b1238中的存储模块 1238a-1238n。上述组件之间的所有通信(除了处理器a1222与处理器b1224之间的通信)经过交换架构1234。在该技术的一个实施方式中,控制模块1216内的处理器1222和1224能够使用例如点对点互连(例如因特尔quickpath互连)进行直接通信。在一个实施方式中,控制模块1216中的两个iom1218和1220使得用于控制模块1216的i/o带宽(在具有单个iom的控制模块的i/o带宽之上)加倍。此外,第二iom(或另外iom)的添加增加了可连接到给定控制模块的客户端的数量,且通过扩展,增加了能够连接到存储设施的客户端数量。在一个实施方式中,使用交换架构1234处理各种连接的组件(上述的)之间的通信,以允许处理器1222和1224的每一个直接访问(经由交换架构1234)连接到交换架构1234的所有fpga1230和1232和所有存储模块(1236a-1236n、1238a-1238n)。参考图5c,根据另一实施方式,存储设施包括(经由交换架构1246)连接到存储模块组(1256、1258、1260、1262)中的多个存储模块(未示出)的控制模块1240。控制模块1240包括两个iom(1242、1244)、两个处理器(1248、1250)和存储器(1252、1254)。在一个实施方式中,控制模块1240中的所有组件经由交换架构1246通信。这些组件的操作与上述的操作类似。在一个实施方式中,处理器a1248被配置成主要处理与来自存储模块组a和b(1256、1258)的数据的存储和获取有关的请求,而处理器b1250被配置成主要处理与来自存储模块组c和d(1260、1262)的数据的存储和获取有关的请求。但是,处理器(1248、1250)被配置成(经由交换架构1246)与存储模块组(1256、1258、1260、1262)的全部进行通信。该配置使得控制模块1240能够在处理器之间传播i/o请求的处理和/或提供内置冗余以处理处理器之一故障的情形。参考图5d,根据另一实施方式,存储设施包括两个控制模块(1264、1266)。每个控制模块包括iom(1296、1298、1300、1302)、处理器(1268、1270、1272、1274)、存储器(1276、1278、1280、1282)以及fpga(如果有的话)(1288、1290、1292、1294)。控制模块(1264、1266)的每一个包括交换架构(1284、1286),控制模块内的组件通过该交换架构通信。在一个实施方式中,控制模块内的处理器(1268、1270、1272、1274)可以例如使用点对点互连(例如因特尔quickpath互连)彼此通信。此外,控制模块a中的处理器(1268、1270)可以经由到控制模块b中的交换架构(1286)的直接连接与控制模块b中的组件通信。类似地,控制模块b中的处理器(1272、1274)可以经由到控制模块a中的交换架构(1284)的直接连接与控制模块a中的组件通信。在一个实施方式中,控制模块的每一个连接到各种存储模块(由存储模块组(1304、1306、1308、1310)表示)。每个控制模块可以与连接到控制模块中的交换架构的存储模块通信。此外,控制模块a(1264)中的处理器可以使用交换架构b(1286)与连接到控制模块b(1266)的存储模块通信。类似地,控制模块b(1266)中的处理器可以使用交换架构a(1284)与连接到控制模块a(1264)的存储模块通信。控制模块之间的互连允许存储控制以在存储设施间分配i/o负载,不管哪个控制模块接收i/o请求。此外,控制模块的互连使得存储设施能够处理更大数量的i/o请求。此外,控制模块的互连在控制模块(或其中的一个或多个组件)故障的情况下提供内置冗余。在一个实施方式中,存储器中数据结构在控制模块中的存储器间被镜像。在这样的情况中,控制模块中的处理器发送必要命令以更新存储设施内的所有存储器,由此存储器内数据结构在所有存储器间被镜像。以这种方式,任意处理器可以使用其自己的存储器确定存储设施中的数据的位置(如上述 的n元组定义)。该功能允许任意处理器服务关于存储模块内的数据的位置的任意i/o请求。此外,通过镜像存储器内数据结构,存储设施可以在存储器之一故障时继续操作。根据一些实施方式,上述的组件的一些,例如控制模块和/或存储模块可以集成在通信架构内,例如pcie架构。图6是示出根据本发明的一个实施方式的具有通信架构的系统的框图。在该示例中,pcie架构用作用于示例目的的通信架构的示例。但是,可以理解其他类型的通信架构也能够应用。在一个实施方式中,pcie架构(2100)由两个或更多片(2104a、2104b)组成,其中该片的每一个连接或耦合到处理器(2112a、2112b)和一个或多个客户端(2102a-2102b)。客户端2102a-2102b可以代表上述客户端的任意。在一个实施方式中,每个客户端(2102a-2102b)是物理设备,其包括处理器(或另一类型的处理组件)、存储器和使其能够连接到pcie架构(2100)的物理接口。此外,每个客户端包括用于实施本发明的一个或多个实施方式所需的pcie标准(或其一部分)的功能。客户端2102a-2102b还包括用于发送和/或接收事务层分组(transactionlayerpacket,tlp)的功能。tlp对应于根据pcie标准定义的分组类型。在本发明的一个实施方式中,tlp使得客户端能够从pcie架构读取数据并将该数据写入到pcie架构。换句话说,tlp使得客户端能够传输往来pcie架构中的位置的数据。在本发明的一个实施方式中,客户端的一个或多个操作作为pcie端点,即发起事务的设备和/或是事务的目标的设备。客户端的每一个可以经由链路(即客户端与pcie架构之间的物理连接)连接到pcie架构。每个片(2104a、2104b)包括输入/输出(io)级交换机(its)(2108a、2108b)、集线器级交换机(hts)(2106a、2106b)、以及一个或多个持久存储模块(psm)2110a-2110b。关于its,每个its是连接到一个或多个 客户端(2102a-2102b)的物理pcie交换机。每个its还连接或耦合到its位于的相同片中的hts。此外,每个its可以连接或耦合到与its位于的片不同的片中的一个或多个hts。在本发明的一个实施方式中,每个its连接到pci架构中的每一个hts,产生pcie架构的级之间的完全连接的网格网。本发明的实施方式可以在没有级之间的完全连接的网格网的情况下被实施,不偏离本发明。在本发明的一个实施方式中,每个its被配置成:(i)从其连接的客户端接收tlp并使用地址路由(例如存储地址路由)将该tlp路由到its上的合适的出口端口(下游端口中一者或上游端口),以及(ii)从its连接的一个或多个hts接收tlp,并使用地址路由将tlp路由到该its上的合适的出口端口(典型地下游端口)。每个hts是连接或耦合到一个或多个its(2108a-2108b)和一个或多个持久存储模块(psm(2110a-2110b))的物理pcie交换机。每个hts连接到或耦合到hts位于的相同片中的its。此外,每个hts可以连接到在与hts位于的片中不同的片中的零个或更多个its。在本发明的一个实施方式中,每个hts连接到pcie架构中的每一个其他its,产生pcie架构中的级之间的完全连接的网格网。每个hts还可以经由其根端口(未示出)连接到处理器。本发明的实施方式可以在没有级之间的完全连接的网格网的情况下被实施,而不偏离本发明。在一个实施方式中,每个hts被配置成:(i)从其连接的持久存储模块(psm)接收tlp并使用地址路由将该tlp路由到hts上的合适出口端口(典型地下游端口)以及(ii)从hts连接到的一个或多个its接收tlp并使用地址路由将该tlp路由到hts上的合适出口端口(下游端口的一个或多个和/或上游端口)。在一个实施方式中,存储模块(2100a-2110b)的每一个包括持久存储 (未示出)且可选地易失性存储器(未示出)(例如,动态随机存取存储器(dram)、同步dram、sdrsdram和ddrsdram)。持久存储可以包括但不限于nand闪存、nor闪存、磁性ram存储器(m-ram)、自旋扭矩磁性ram存储器(st-mram)、相变存储器(pcm)、忆阻存储器、定义为非易失性存储级存储器(scm)的任意其他存储器、磁盘和光盘。本领域技术人员应当理解本发明的实施方式不限于存储级存储器。在本发明的一个实施方式中,psm的每一个是仅一个片的部分。处理器2112a-2112b的每一个可以是具有被配置成执行指令的单核或被配置成执行指令的多核的电子电路的组。处理器可以使用复杂指令集(cisc)架构或精简指令集(risc)架构被实施。在本发明的一个或多个实施方式中,处理器包括根复合体(如pcie标准定义)(未示出)。该根复合体将处理器连接到至少一个片和存储器(114a、114b)(例如动态随机存取存储器(dram)、同步dram、sdrsdram和ddrsdram),其经由pcie架构可访问但是不是pcie架构中的任意片的部分。在一个实施方式中,pcie架构2100内的处理器(2112a、2112b)能够例如使用处理器互连(2116)(例如因特尔quickpath互连、因特尔前侧总线或amd超传输)通信。本领域技术人员可以理解其他点对点通信机制可以被使用以允许处理器(2112a、2112b)之间的直接通信,而不偏离本发明的实施方式。虽然客户端被连接或耦合到its且psm被连接或耦合到hts,客户端还可以连接或耦合到hts且psm连接到its。在另一实施方式中,pcie架构可以被实施,由此其不包括psm2110a-2110b;而是its和hts被连接到客户端的分开的集合,其中pcie架构促进客户端之间的通信。此外,虽然示出的pcie架构仅包括两个片、两个处理器和四个psm,但是pcie架构2100可以被实施具有更少或更多数量的上述组件的每一个而不偏离本发明。此外,虽然pcie架构2100连接到 四个客户端和两个存储器,本发明的实施方式可以被实施以使得pcie架构能够与更少或更多数量的客户端和/或存储器连接。此外,虽然本发明的实施方式参考包括存储(例如psm2110a-2110b)的pcie架构被描述,但是本发明的实施方式可以被实施以使得任意两个设备能够使用pcie架构进行通信。例如,在本发明的一个实施方式中,客户端可以是刀片服务器,其中刀片服务器不包括任意物理nic卡且psm可以被网络端点设备替换。在该示例中,网络端点设备是被配置成使用联网协议与网络(即有线网络、无线网络或其组合)对接和经由pcie与pcie架构对接的设备。网络端点设备的示例是picenic卡。网路端点设备的每一个可以包括持久存储(如上面关于psm描述的)和存储端点设备存储器(例如动态随机存取存储器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他类型的易失性存储器)的组合。在另一示例中,在本发明的一个或多个实施方式中,psm2110a-2110b可以被存储端点设备(即,包括用于存储数据和服务来自客户端的读取和写入请求的功能的设备)替换。存储端点设备每一个可以包括持久存储(如以上关于psm所描述)和存储端点设备存储器(例如动态随机存取存储器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他类型的易失性存储器)的组合。存储端点设备的示例是存储设施。本发明不限于该示例。此外,本发明的实施方式可以被扩展为包含经由pcie架构通信的两个或更多个设备。在一般情况中,psm2110a-2110b可以一般化为目标设备,其中目标设备可以包括psm、网络端点设备、存储端点设备、或能够使用pcie通信的任意其他设备。虽然pcie架构2100被示出为包括psm(或更一般化的目的设备),pcie架构2100可以被实施为其不包括目的设备;而是 pcie架构2100仅包括用于连接到目的设备的必要物理组件。图8是示出了根据本发明的一个实施方式的存储模块的示例的框图。存储模块2320包括存储模块控制器(2322)、存储器(2324)和一个或多个持久存储模块(2330a-2330n)。持久存储模块2330a-2330n可以是固态存储设备,例如闪存设备。在一个实施方式中,存储模块控制器(2322)被配置成接收从一个或多个控制模块读取和/或向一个或多个控制模块写入数据的请求。此外,存储模块控制器(2322)被配置成使用存储器(2324)和/或持久存储模块(2330a-2330n)服务该读取和写入请求。存储模块控制器(2322)可以包括dma引擎,其中dma引擎被配置成从存储器(2324)或从持久存储模块(2330a-2330n)的一个读取数据并将该数据的副本写入到客户端存储器中的物理地址。此外,dma引擎可以被配置成将来自存储器(2324)的数据写入到持久存储模块的一个或多个。在本发明的一个实施方式中,dma引擎被配置成由处理器编程。存储器(2324)可以是任意易失性存储器,包括但不限于动态随机存取存储器(dram)、同步dram、sdrsdram以及ddrsdram。存储器(2324)可以逻辑上或物理上被划分为圆顶存储器(2326)和缓存(2328)。在在存储模块中通知供电故障的情况下(或在存储模块可以丢失供电的另一情况下)存储模块控制器(2322)被配置成将圆顶存储器(2326)的整个内容写入到持久存储模块(2330a-2330n)的一个或多个。在本发明的一个实施方式中,存储模块控制器(2322)被配置成在供电故障通知到存储模块的供电实际丢失之间的时间将圆顶存储器(2326)的整个内容写入到持久存储模块(2330a-2330n)的一个或多个。相反,缓存(2328)的内容在供电故障的情况下(或存储模块可以丢失供电的另一情况下)丢失。持久存储模块可以是使用固态存储器存储持久数据的任意数据存储设备。在本发明的一个实施方式中,固态存储器可以包括但不限于nand闪 存、nor闪存、磁性ram存储器(m-ram)、自旋扭矩磁性ram存储器(st-mram)、相变存储器(pcm)、忆阻存储器、或定义为非易失性存储级存储器(scm)的任意其他存储器。本领域技术人员可以理解本发明的实施方式不限于存储级存储器。在一个实施方式中,以下的存储位置是统一地址空间的部分:(i)经由客户端交换机可访问的客户端存储器的部分,(ii)控制模块中的存储器,(iii)存储模块中的存储器,以及(iv)固态存储模块。因此,从存储设施中的处理器角度来看,上述的存储位置(当物理上分开时)表现为物理地址的单个池。换句话说,处理器可以发送用于存储在统一地址空间中的物理地址的任意的数据的读取和/或写入请求。上述存储位置可以称为存储架构,其使用统一地址空间可访问。统一地址空间部分由客户端交换机中的不透明桥创建,其允许控制模块中的处理器“看到”客户端存储器的部分。因此,控制模块中的处理器可以在其能够“看到”的客户端存储器的部分执行读取和/或写入请求。之前详细描述的一些部分已经就计算机存储器内的数据比特的操作的算法和符号表述方面被描述。这些算法描述和表述是数据处理领域的技术人员使用的方式,以最有效向其他领域技术人员表达其工作的实质。这里算法一般地被认为是导致期望结果的操作的自相一致的序列。该操作是需要物理量的物理操作。但是应当知道,这些和类似术语的全部是与合适的物理量相关联且仅是应用于这些量的方便标签。除非从以上描述明显另有指明,否则可以理解本说明书中,使用诸如权利要求中提出的这些术语的描述涉及计算机系统或类似的电子计算设备的动作和过程,其将计算机系统的寄存器和存储器内的物理(电子)量表述的数据处理并转换成计算机系统存储器或寄存器或其他该信息存储、传输或显示设备内的物理量类似表述的其他数据。本发明的实施方式还涉及用于执行这里的操作的装置。这样的计算机程序被存储在非暂态计算机可读介质中。机器可读介质包括用于以机器(例如计算机)可读的形式存储信息的任意机制。例如,机器可读(例如计算机可读)介质包括机器(例如计算机)可读存储介质(例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存设备)。之前图中示出的过程或方法可以由处理逻辑执行,其包括硬件(例如电路、专用逻辑等)、(例如包含在非暂态计算机可读介质中的)软件或其组合。虽然以上以一些有序操作的方式描述过程或方法,应当理解描述的操作的一些可以以不同顺序被执行。此外,可以并行而不是按顺序执行一些操作。本发明的实施方式没有参考任意特定编程语言描述,可以理解各种编程语言可以用于实施这里描述的本发明的实施方式的教示。在上面的说明书中,本发明的实施方式参考其特定示意性实施方式被描述。明显的是可以对其进行各种修改而不偏离权利要求书提出的本发明的更宽实质和范围。因此,说明书和附图被视为示意性而非限制性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1