在非易失性固态储存器中的非易失性RAM存储器和闪存存储器的制作方法

文档序号:11160903阅读:554来源:国知局
在非易失性固态储存器中的非易失性RAM存储器和闪存存储器的制造方法与工艺

为了存储大量数据,诸如闪存的固态存储器目前是在固态驱动器(SSD)中使用,以扩大或代替总体被称为旋转介质的传统的硬盘驱动器(HDD)、可写入CD(光盘)或可写入DVD(数字通用光盘)驱动器,以及磁带驱动器。闪存和其它固态存储器具有与旋转介质不同的特征。但是,许多固态驱动器被设计为出于兼容性的原因符合硬盘驱动标准,这使得其难以提供增强特性或利用闪存和其它固态存储器的独特方面。

在此背景下提出各个实施方式。



技术实现要素:

在一些实施方式中,提供了非易失性固态储存器。非易失性固态储存器包括通过在非易失性固态储存器外部的处理器可寻址的非易失性随机访问存储器(NVRAM)。NVRAM被配置为存储用户数据和与用户数据关联的元数据。非易失性固态储存器包括通过处理器可寻址的闪存存储器。该闪存存储器被配置为响应于处理器引导用户数据从NVRAM传输至闪存存储器而存储用户数据。

根据以下具体实施方式结合附图,各个实施方式的其它方面和优势将会变得明显,其中附图以示例方式说明所描述的实施方式的原理。

附图说明

通过结合附图参照以下描述,可以最佳地理解所描述的实施方式和其优势。在不偏离所描述的实施方式的精神和范围的情况下,这些附图决不限制形式和细节的任何改变,所述形式和细节的任何改变可以通过本领域技术来对所描述的实施方式做出。

图1是根据一些实施方式的具有多个存储节点和耦合至每个存储节点的内部存储的用于提供网络附加存储的存储群集的立体图。

图2是一种企业计算系统的系统图,在一些实施方式中其能够使用一个或更多个图1的存储群集作为存储资源。

图3是示出根据一些实施方式的存储节点的内容和非易失性固态储存器中的一个的内容的多级框图。

图4是示出根据一些实施方式的用于元数据的冗余副本的通信路径的框图,该副本具有存储节点和固态存储的进一步细节。

图5是一种用于访问非易失性固态储存器的流程图,根据一些实施方式其能够在存储群集、存储节点和/或非易失性固态储存器单元上或通过存储群集、存储节点和/或非易失性固态储存器单元的实施方式实践。

图6是示出可以实现本文中描述的实现方式的示例性计算装置的例示。

具体实施方式

以下实施方式描述了存储群集,该存储群集存储用户数据,诸如,源于一个或更多个用户或在存储群集外部的客户端系统或其它资源的用户数据。存储群集跨越容纳在机箱(chassis)中的存储节点,使用擦除编码和元数据的冗余副本,分布用户数据。擦除编码涉及一种数据保护的方法,其中将数据破坏成碎片(fragment),利用冗余数据块扩展和编码数据,且跨越诸如磁盘、存储节点或地理位置的一组不同位置存储数据。闪存存储器是可以与实施方式集成的固态存储器的一个类型,但是实施方式可以被延伸至包括非易失性状态存储器的其它类型的固态存储器或其它存储介质。跨越群集对等系统中的存储位置分布控制存储位置和工作量。诸如在各种存储节点之间中介通信,检测存储节点何时已经变得不可用,以及平衡跨越各种存储节点的I/O(输入和输出)的任务全部基于分布式进行处理。在一些实施方式中,跨越多个存储节点以数据碎片或数据条带安排或分布数据,该数据碎片或数据条带支撑数据恢复。在群集中能够独立于输入和输出模式再分配数据的所有权。由于能够从其它存储节点重建数据并且因此保持可用于输入和输出操作,所以在系统保持可运行的情况下,以下更详细描述的这个架构允许群集中的存储节点故障。在各种实施方式中,存储节点可以被称作为群集节点、刀片服务器(blade)、或服务器。

存储群集被包含在机箱(即,容纳一个或更多个存储节点的壳体(enclosure))中。在机箱中包括诸如功率分配总线的向每个存储节点提供功率的机构,以及诸如启用这些存储节点之间通信的通信总线的通信机构。根据一些实施方式,存储群集能够作为一个位置中的独立系统运行。在一个实施方式中,机箱包含可以独立地启用或禁用的功率分配以及内部和外部通信总线的至少两个实例。内部通信总线可以是以太网总线,然而,诸如外部组件互联(PCI)Express、无线带宽(InfiniBand)和其它的其它技术也同样地适用。机箱提供用于外部通信总线的端口,以直接地或通过交换机、以及利用客户端系统启用多个机箱之间的通信。外部通信可以使用诸如以太网、无线带宽、光纤通道等的技术。在一些实施方式中,外部通信总线使用用于内部机箱和客户通信的不同通信总线技术。如果在机箱中或机箱之间布置交换机,则交换机可以担当多个协议或技术之间的转换装置。当连接多个机箱以限定存储群集时,可以通过客户端使用诸如网络文件系统(NFS)、公共因特网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传输协议(HTTP)的专用接口或标准接口访问存储群集。从客户端协议的转换可以发生在交换机、机箱外部通信总线处或在每个存储节点内。

每个存储节点可以是一个或更多个存储服务器,并且每个存储服务器连接至可以被称作为存储单元的一个或更多个非易失性固态储存器单元。一个实施方式包括:每个存储节点中和一个至八个非易失性固态储存储器单元之间的单个存储服务器,然而这一个示例并不意味着限制。存储服务器可以包括:处理器、动态随机访问存储器(DRAM)和用于针对功率总线中的每个的内部通信总线和功率分配的接口。在一些实施方式中,在存储节点内部,接口和存储单元共享例如PCI Express的通信总线。通过存储节点通信总线,非易失性固态储存储器单元可以直接地访问内部通信总线接口或请求存储节点以访问总线接口。在一些实施方式中,非易失性固态储存储器单元包含:嵌入式中央处理单元(CPU)、固态存储控制器和多个固态大容量储存器(例如,2-32太字节(TB)之间)。诸如DRAM的嵌入式易失性存储介质和能量储存装置被包括在非易失性固态储存器单元中。在一些实施方式中,能量储存装置是电容器、超级电容器、或电池,其在功率损失的情况下开启向稳态存储介质传输DRAM内容的子集。在一些实施方式中,非易失性固态储存储器单元是由取代DRAM和实现降低的功率维持装置的诸如相位变化或其它电阻性随机访问存储器(RRAM)或磁阻式随机访问存储器(MRAM)的存储类存储器构成。

在一些实施方式中,存储节点具有一个或更多个非易失性固态储存器单元,该一个或更多个固态储存器单元中的每个具有非易失性随机访问存储器(NVRAM)和闪存存储器。NVRAM和闪存存储器通过存储节点(或更具体地,通过存储节点的处理器)是独立地可寻址的。存储节点将用户数据写入至所述NVRAM,以存储在闪存存储器中。存储节点(例如,存储节点的处理器)还将元数据写入至NVRAM中,其可用作处理器的工作空间。为了存储用户数据,直接存储器访问(DMA)被用于将用户数据从NVRAM传输至闪存存储器。在功率损失的情况下,DMA还用于将NVRAM的内容传输至闪存存储器。在一些实施方式中,非易失性固态储存器中的控制器管理映射或转换表并且执行各种职责,以管理闪存存储器中的用户数据。

图1是根据一些实施方式的具有多个存储节点150和耦合至每个存储节点的内部固态存储器的用于提供网络附加存储或存储区域网络的存储群集160的透视图。网络附加存储、存储区域网络或存储群集、或其它存储存储器可能包括:以物理组件和通过此提供的存储存储器量的二者灵活和可重新配置的布置的一个或更多个存储群集160(每个存储群集具有一个或更多个存储节点150)。存储群集160被设计为适合在机架(rack)中,并且能够根据需要建立和填充(populate)一个或更多个机架用于存储存储器。存储群集160具有带有多个插槽(slot)142的单个机箱138。应该理解的是,机箱138可以被称作为外壳、壳体、或机架单元。在一个实施方式中,机箱138具有十四个插槽142,但是容易设想插槽的其它数量。例如,一些实施方式具有四个插槽、八个插槽、十六个插槽、三十二个插槽或其它适合数量的插槽。在一些实施方式中,每个插槽142能够容纳一个存储节点150。机箱138包括能够被利用以在机架上安装机箱138的翼片(flap)148。风扇144提供用于冷却存储节点150和其组件的空气循环,但是可能使用其它冷却组件,或可能设想不具有冷却组件的实施方式。交换机结构146在机箱138中将存储节点150耦合在一起,并且交换机结构146将存储节点150耦合至网络用于与存储器通信。在图1中描述的实施方式中,出于例示目的,交换机结构146和风扇144的左侧的插槽142被示出由存储节点150占用,而交换机结构146和风扇144的右侧的插槽142是空的并且可用于存储节点150的插入。这个配置是一个示例,并且在各种另外的布置中,一个或更多个存储节点150能够占据插槽142。在一些实施方式中,存储节点布置不需要是连续的或相邻的。存储节点150是热可插拔的,这意味着存储节点150能够被插入在机箱138中的插槽142中,或者能够从插槽142移除,而不需要停止系统或对系统断电。一旦存储节点150插入插槽142或从插槽142移除存储节点150,该系统自动地重新配置以识别和适用变化。在一些实施方式中,重新配置包括恢复冗余和/或再平衡数据或负载。

每个存储节点150能够具有多个组件。在此示出的实施方式中,存储节点150包括由CPU 156(即,处理器)、与CPU 156耦合的存储器154和与CPU 156耦合的非易失性固态储存器152填充的印刷电路板158,但是其它配件和/或组件可能被使用在另外实施方式中。存储器154具有通过CPU 156执行的指令和/或通过CPU 156运行的数据。如以下进一步的解释,非易失性固态储存储器152包括闪存,或在另外实施方式中的其它类型的固态存储器。

如上所述,存储群集160是可扩展的,意味着容易添加具有非统一存储大小的存储容量。在一些实施方式中,一个或更多个存储节点150能够插入每个机箱或从每个机箱移除,并且存储群集自行配置。插入式存储节点150无论是传递安装在机箱中,还是稍后添加安装在机箱中,其能够具有不同大小。例如,在一个实施方式中,存储节点150能够具有4TB的任意倍数,例如,8TB、12TB、16TB、32TB等。在另外的实施方式中,存储节点150可能具有其它存储量或容量的任何倍数。对每个存储节点150的存储容量进行广播,并且影响确定如何条带化(stripe)数据。为了最大化存储效率,根据在机箱内的具有多达一个或多达两个的非易失性固态储存器单元152或存储节点150的损失的情况下的继续运行的预设需求,实施方式能够在条带中尽可能宽地自行配置。

图2是一种企业计算系统102的系统图,其能够使用图1的存储节点、存储群集和/或非易失性固态储存器中的一个或更多个作为存储资源108。例如,在一些实施方式中,图2的闪存储存器128可以集成图1的存储节点、存储群集和/或非易失性固态储存储器。企业计算系统102具有处理资源104、网络资源106和包括闪存储存器128的存储资源108。闪存控制器130和闪存存储器132被包括在闪存储存器128中。在各种实施方式中,闪存储存器128可能包括一个或更多个存储节点或存储群集,其中闪存控制器130包括CPU,以及闪存存储器132包括存储节点的非易失性固态储存器。在一些实施方式中,闪存存储器132可以包括不同类型的闪存存储器或相同类型的闪存存储器。企业计算系统102例示适合于部署闪存储存器128的环境,但是闪存储存器128可能被使用在更大或更小的其它计算系统或装置中,或在具有更少或附加的资源的企业计算系统102的变体中。为了提供或使用服务,能够将企业计算系统102耦合至诸如因特网的网络104。例如,企业计算系统102可能提供云服务、物理计算资源、或虚拟计算服务。

在企业计算系统102中,通过各种控制器布置和管理各种资源。处理控制器110管理处理资源104,该处理资源104包括处理器116和随机访问存储器(RAM)118。网络控制器112管理网络资源106,该网络资源106包括:路由器120、交换机122和服务器124。存储控制器114管理存储资源108,该存储资源108包括硬盘驱动器126和闪存储存器128。其它类型的处理资源、网络资源和存储资源可能被包括在实施方式中。在一些实施方式中,闪存储存器128完全地替代硬盘驱动器126。企业计算系统102能够提供或分配各种资源作为物理资源,或在变体中,作为通过物理计算资源支持的虚拟计算资源。例如,可能使用一个或更多个执行软件的服务器实现各种资源。在存储资源108中存储文件或数据对象、或其它形式的数据。

在各种实施方式中,企业计算系统102可能包括由存储群集填充的多个机架,并且这些机架可能位于诸如在群集或服务器群中的单个物理位置中。在其它实施方式中,多个机架可能位于通过网络连接的诸如在不同城市、州或国家中的多个物理位置处。机架中的每个、存储群集中的每个、存储节点中的每个和非易失性固态储存器中的每个可能单独地被配置有存储空间的相应量,然后该存储空间的相应量独立于其它是可重新配置的。因此存储容量在非易失性固态储存器中的每个处能够被灵活地添加、升级、消减、恢复和/或重新配置。如上所述,在一些实施方式中,每个存储节点可能实现一个或更多个服务器。

图3是示出存储节点150的内容和存储节点150的非易失性固态储存器152的内容的多级框图。在一些实施方式中,将数据通过网络接口控制器(NIC)202往返通信至存储节点150。如上所述,每个存储节点150具有CUP 156和一个或更多个非易失性固态储存器152。在图3中向下移动一级,每个非易失性固态储存器152具有相对快速的非易失性固态存储器,诸如,非易失性随机访问存储器(NVRAM)204和闪存存储器206。在一些实施方式中,NVRAM 204可以是不请求程序/擦除循环的组件(DRAM、MRAM、PCM),并且能够是能够支持被写入比从其读取更加频繁的存储器。在图3中向下移动另一级,在一个实施方式中将NVRAM 204实现为由能量储备件218支持的诸如动态随机访问存储器(DRAM)216的高速易失性存储器。能量储备件218提供足够的电功率,以保持足够长的DRAM 216供电,用于在断电的事件中将内容传输至闪存存储器206。在一些实施方式中,在功率损失的情况下,能量储备件218是电容器、超级电容器、电池、或其它装置,该能量储备件218供应足够实现向稳态存储介质传输DRAM 216的内容的适合的能量的供应。闪存存储器206被实现为多个闪存晶圆(die)222,该多个晶圆222可以被称作为闪存晶圆222的封装或闪存晶圆222的阵列。应该理解的是,可能以若干方式中的任何一种封装闪存晶圆222,其中每封装件单个晶圆,每封装件多个晶圆(即,多芯片封装件),在混合封装件中,如在印刷电路板或其它基板上的裸晶圆,如包封的晶圆等。在示出的实施方式中,非易失性固态储存器152具有控制器212或其它处理器,以及耦合至控制器212的输入输出(I/O)端口210。I/O端口210耦合至CPU 156和/或闪存存储节点150的网络接口控制器202。闪存输入输出(I/O)端口220耦合至闪存晶圆222,并且直接存储访问单元(DMA)214耦合至控制器212、DRAM 216和闪存晶圆222。在所示的实施方式中,在可编程逻辑装置(PLD)208(例如,现场可编程门阵列(FPGA))上实现I/O端口210、控制器212、DMA单元214和闪存I/O端口220。在这个实施方式中,每个闪存晶圆222具有组织为十六kB(千字节)页224的页和寄存器226,通过该寄存器226能够将数据写入至闪存晶圆222或从闪存晶圆222读取数据。在另外的实施方式中,代替闪存晶圆222内示出的闪存存储器或除了其之外,使用其它类型的固态存储器。

在NVRAM 204中,不通过段(segment),而是通过消息组织冗余,其中在一些实施方式中,每个消息(128字节至128kB)建立其自己的数据条带。在一些实施方式中,NVRAM被维持在与段存储相同的冗余处并且在相同存储节点组中进行操作。因为单独地存储消息,所以通过消息大小和存储群集配置二者确定该条带宽度。更大消息可以被更有效地存储为更宽条带。

在存储节点150上的CPU 156的许多任务中的两个将分解写入数据,并且重新装配读取数据。当系统已经决定数据将要写入,用于那个数据的授权位于非易失性固态储存器152中的一个中。该授权可以被实施为元数据,该元数据包括诸如非易失性固态储存器152管理的数据段的列表的一个或更多个列表。当用于数据的段ID已经被确定时,将要写入的请求被转发至非易失性固态储存器152,该非易失性固态储存器152目前确定为从段确定的授权的主机。存储节点150的主机CPU 156然后分解或分区(shard)数据并且将该数据发送出去至各种非易失性固态储存器152,其中,非易失性固态储存器152和对应授权驻留在存储节点150上。所发送的数据根据擦除编码方案被写入为数据条带。在一些实施方式中,数据被请求进行拉回(pull),并且在其它实施方式中,数据被推出。相反地,当读取数据时,如上所述定位用于包含数据的段ID的授权。存储节点150的主机CPU 156从非易失性固态储存器和通过授权指出的对应存储节点请求数据,其中,非易失性固态储存器152和对应授权驻留在存储节点150上。在一些实施方式中,从闪存储存器读取作为数据条带的该数据。然后,存储节点150的主机CPU 156重新组装读取的数据、根据适当的擦除编码方案纠正任何误差(如果存在)以及向网络转发重新组装的数据。在另外实施方式中,一些或全部这些任务能够在非易失性固态储存器152中处理。在一些实施方式中,段主机(segment host)通过以下方式请求将数据发送至存储节点150:请求来自储存器的页,并且然后将数据发送至做出原始请求的存储节点。

在一些系统中,例如在UNIX类型文件系统中,利用索引节点或信息节点处理数据,其指定在文件系统中表示对象的数据结构。例如,对象可能是文件或目录。除了作为其他属性之外,元数据可以作为诸如允许数据和创建时间戳的属性伴随对象。可能将段号码分配给文件系统中的全部或部分的这种对象。在其它系统中,利用在别处分配的段号码处理数据段。出于讨论的目的,分布的单元是实体并且实体能够是文件、目录或段。也就是,实体是通过存储系统存储的数据或元数据的单元。实体被分组成称为授权的集合。每个授权具有授权所有者,其是对授权中的实体更新具有专用权的存储节点。换言之,存储节点包含授权,并且那个授权反过来包含实体。

根据一些实施方式,段是数据的逻辑容器。段可以是介质地址空间和物理闪存位置之间的地址空间。在适用的情况下,通过将段分解成若干数据或同等分区(parity shard)来保护每个数据段免受例如存储器或其它故障影响。根据擦除编码方案,跨越耦合至主机CPU 156的非易失性固态储存器152分布(即,条带化)数据和同等分区。在一些实施方式中,使用的术语段在段的地址空间中涉及容器和其位置。根据一些实施方式,使用的术语条带涉及与段相同的分区集合,并且包括如何连同冗余或同等信息一起分布该分区。

一系列的地址空间转换跨越整个存储系统发生。在顶部处是文件系统使用以将文件路径转换成信息节点ID(标识)的信息节点地址空间。信息节点指向至数据被逻辑地存储的介质地址空间。介质地址被映射成段地址空间。然后,段地址被转换成物理闪存位置。根据一些实施方式,物理闪存位置具有通过系统中的闪存量限制的地址范围。介质地址和段地址是逻辑容器,并且在一些实施方式中,在具有计算为比系统预期寿命更长的重新使用的可能性的情况下,使用128比特或更大标识符,以便实际上是无限的。在一些实施方式中,以分层的方式分配来自逻辑容器的地址。最初地,每个非易失性固态储存器152可以被分配地址空间的一定范围。在这个分配范围中,在不与其它非易失性固态储存器152同步的情况下,非易失性固态储存器152能够分配地址。

通过一组基础的存储布局存储数据和元数据,该基础的存储布局被优化用于改变工作量模式和存储装置。这些布局合并多个冗余方案、压缩格式和索引算法。这些布局中的一些存储关于授权或授权所有者的信息,同时其它的存储文件元数据和文件数据。冗余方案包括:误差纠正代码、擦除代码和复制方案;该误差纠正代码忍受单个存储装置(诸如,NAND闪存芯片)中的损坏的位,该擦除代码忍受多个存储节点的故障,以及该复制方案忍受数字中心或区域的故障。在一些实施方式中,在单个存储单元中使用低密度奇偶检验(LDPC)代码。在存储群集中没有进一步重复数据,因为假设的是存储群集可以失效。在一些实施方式中,在存储群集中使用里德-所罗门(Reed-Solomon)编码,并且在存储网格中使用镜像。可以使用有序日志结构索引(诸如:日志结构合并树(Log Structured Merge Tree))存储元数据,并且可以在无序的日志结构布局(与日志结构文件系统相似)中存储大数据。

图4是示出根据一些实施方式的用于元数据230的冗余副本的通信路径234的框图,该副本具有闪存存储节点150(即,具有闪存存储器的存储节点150)和非易失性固态储存器152的进一步细节。元数据230包括关于向闪存存储器206写入或从闪存存储器206读取的用户数据的信息。元数据230能够包括消息、或来自该消息的衍生物,这指示将要采取的活动或已经发生的活动,这些活动涉及向闪存存储器206写入的或从闪存存储器206读取的数据。通过通信互相连接件170将元数据230的冗余副本分布至非易失性固态储存器单元152确保消息是持久的并且能够免于系统可以经历的各种类型的故障。每个非易失性固态储存器152专用NVRAM 204的部分以存储元数据230。在一些实施方式中,在附加非易失性固态储存器152中存储元数据230的冗余副本。

经由通信互相连接件170耦合闪存存储节点150。更具体地,在存储群集中的每个存储节点150的网络接口控制器202被耦合至通信互相连接件170,其提供存储节点150和非易失性固态储存器152之间的通信路径234。存储节点150具有一个或更多个非易失性固态储存器单元152。存储节点内部的非易失性固态储存器单元152能够例如,经由根据本文中公开的实施方式容易设想的总线、串行通信路径、网路路径或其它通信路径234与彼此互相通信。在一些实施方式中,通信互相连接件170能够被包括在图1的交换机结构中或利用图1的交换机结构实现。图4的存储节点150形成存储群集,其被封闭在单个机箱中,该单个机箱具有如参照图1描述的机箱中的内部功率分配总线。

参照图3和图4,在功率故障的情况下,无论用于非易失性固态储存器152的局部还是存储节点150,能够将数据从NVRAM 204拷贝至闪存存储器206。例如,图3的DMA单元214能够使用通过能量储备件218供应的能量来拷贝NVRAM 204的包括元数据的内容至闪存存储器206。能量储备件218被设定大小为具有足够容量以支撑拷贝操作。也就是,能量储备件218应该被设定大小,以便在足够长的时间期间在足够电压电平处提供足够电流以完成该拷贝,使得在闪存存储器206中持续元数据230中的消息。

用于在存储系统中持续消息的另外机制涉及以上图4中描述的通信路径234。在各种方式中,能够经由通信路径234分发元数据230的冗余副本。例如,来自文件系统的消息可能经由通信互相连接件170作为通信路径234上的广播向全部非易失性固态储存器152进行分发。非易失性固态储存器152可能在通信路径234上将元数据230的副本发送至存储节点150中其它非易失性固态储存器152。经由网络接口控制器202接收来自通信互相连接件170的消息的存储节点150上的CPU 156可能将消息的副本发送至每个固态储存器152。在一些实施方式中,CPU 156可以向其它闪存存储节点150重新广播消息,并且闪存存储节点150然后可能向这些闪存存储节点150中的每个中的固态储存器152分发消息。在通信路径234的这些和其它使用中,元数据230的冗余副本能够被分发至非易失性固态储存器152。然而,如果一个非易失性固态储存器152或一个存储节点150经历了故障,则任何消息的冗余副本在至少一个其它非易失性固态储存器152的元数据230中是可用的。当评估诸如本地功率故障、不可达节点、或指令的各种状况以考虑或开始数据恢复或数据重建时,每个非易失性固态储存器152能够施加决策逻辑232。在各种实施方式中,决策逻辑232包括证明逻辑、投票逻辑、共识逻辑和/或其它类型的决策逻辑。决策逻辑232可能被实现在硬件、在控制器212上执行的软件、固件、或其组合中,并且决策逻辑232可能被实现为控制器212的部分或可能被耦合至控制器212。在一些实施方式中,决策逻辑件232在多个固态存储单元152中以共识决策被采用。在另外实施方式中,决策逻辑232可能与其它非易失性固态存储单元152合作,以收集冗余元数据230的副本,并且做出本地决策。用于在存储系统中持续消息的机构是在故障事件的情况下有用的,并且能够如上描述被使用在数据恢复和重建中。

消息的示例包括用于写入数据的请求、用于读取数据的请求、用于锁定或解锁文件的请求、在文件的许可中的变化、用于文件分配表或其它文件或目录结构的更新、用于写入具有可执行指令的文件或用于写入被保留和解释为可执行命令(direction)的文件名称的请求、用于一个或更多个授权的更新、用于指纹表的更新、使用在去除重复中的列表或其它数据、用于哈希表的更新、用于日志的更新等。当在存储节点150的非易失性固态储存器152中接收消息时,指示一些活动已经发生,在该固态储存器152的NVRAM 204中消息或消息的衍生物被存储为元数据230。通过施加元数据230的冗余副本,在进行中的活动被捕捉,使得如果故障发生,则这些活动能够被重新进行,并且然后例如在重启之后能够执行代替活动。因为活动跨越存储节点和使用群集消息,所以发送消息的活动能够经由用于持续消息的机制中的一个或更多个做出持续数据。这些机制解决一些已知故障情景,以确保数据的可用性。在一些实施方式中,消息不需要超出完成活动的耐久性。在其它实施方式中,进一步保留消息以促进回滚(rollback)或其它恢复操作。

例如,如果发送出命令以执行写入操作,则这个消息是被记录的和冗余的。如果存在故障,则能够确定那个活动已经被执行还是没有被执行,以及该活动应该被驱动至完成还是不应该被驱动至完成。在每个非易失性固态储存器152中能够使用决策逻辑232执行这种确定。在一些实施方式中,在NVRAM 204中存在用于消息和其它元数据230的专用存储,使得消息被记录在非易失性固态储存器152中并且该消息被重复。如果一个非易失性固态储存器152经历了功率故障,或如果全部系统经历了功率故障或以其它方式关闭,则消息和其它元数据230写入至闪存存储器206中。在一些实施方式中,消息的冗余水平匹配元数据的冗余水平。当存在消息的足够数量的副本时,消息变得不可撤回。如果一个节点发生故障,则其它节点能够投票,达到共识,或证明消息的各种副本并且确定什么活动(如果有的话)进行完成。如果整个系统发生故障(例如,通过总体的功率故障),则足够数量的这些消息从NVRAM 204写入至闪存存储器206。在恢复功率之后,这些节点能够再次打开该消息的副本并且确定什么活动(如果有的话)进行完成以防止任何损坏。

继续参照图3和图4,存储群集160的存储节点150包括控制器的两个级。在存储节点150中存在主机CPU 156,并且在非易失性固态储存器152中存在控制器212。控制器212能够被认为闪存存储器控制器,其充当主机CPU 156和闪存存储器206之间的桥。这些控制器中的每个(即,主机CPU 156和闪存控制器212)能够被实现为来自各种制造商的各种类型的一个或更多个处理器或控制器。主机CPU 156能够访问作为区别资源的闪存存储器206和NVRAM 204两者,其每个通过主机CPU 156是独立地(即,单独地)可寻址的。

通过将NVRAM 204和闪光存储器206分离成区别资源,不是放置在NVRAM 204中的全部数据都必须写入至闪存存储器206。NVRAM 204还能够被采用用于各种功能和目的。例如,能够通过用于NVRAM 204的更新的更新使得废弃用于NVRAM 204的更新。用户数据从NVRAM 204至闪存存储器206的稍后的传输能够传输所更新的用户数据,而不需要将废弃的用户数据传输至闪存存储器206。这个降低闪存存储器206的擦除循环的量,降低对闪存存储器206的消耗,并且更有效地移动数据。CPU 156能够在比从NVRAM 204至闪存存储器206的传输的间隔尺度更小的间隔尺度处写入至NVRAM 204。例如,CPU 156可能对NVRAM 204执行4kB写入,并且DMA单元214可能在控制器212的引导下,执行从NVRAM 204至闪存存储器206的16kB的页写入。在将用户数据从NVRAM 204写入至闪存存储器206之前,用于收集用户数据的向NVRAM 204的多个写入的能力增加了写入效率。在一些实施方式中,用户数据的客户端写入在将用户数据写入至NVRAM 204处的点处进行确认。由于参照图3上述的能量储备件218提供用于NVRAM 204的内容传输至闪存存储器206的足够功率,因此确认客户端写入不需要等待直到将该用户数据写入至闪存存储器206。

作为本实施方式和在先固态驱动器之间的差异的另外示例,除了在功率损失的情况下,NVRAM 204中的元数据230没有被写入至闪存存储器206。因此,NVRAM 204的部分充当用于存储节点150的CPU 156的工作空间,以施加元数据230。存储节点150的CPU 156能够向NVRAM 204写入并且读取NVRAM 204,以访问元数据230。在一个实施方式中,CPU 156负责将数据从NVRAM 204向下迁移至闪存存储器206。在这种实施方式中,从所述NVRAM 204至闪存存储器206的传输不是自动的并且是预设的。传输等待直到在NVRAM 204中针对用于闪存存储器206的页写入存在足够的用户数据,如通过CPU 156确定并且引导至DMA单元214。DMA单元214能够进一步涉及在用户数据的路径中。在一些实施方式中,设计DMA单元214(又被称为DMA引擎)以检测并且理解各种数据格式。DMA单元214能够执行循环冗余校验(CRC)计算以检测用户数据的完整性。在一些实施方式中,DMA单元214将CRC计算插入至所述数据并且验证该数据与在先插入的CRC计算一致。

可以将工作卸载至非易失性固态储存器152的控制器212。卸载至闪存控制器212的处理能够利用通过存储节点150的CPU 156执行的处理协同设计。在一些实施方式中,能够在非易失性固态储存器152中管理从一个地址空间转换至另一个的各种映射表(例如,索引树或地址转换表)。非易失性固态储存器152的控制器212能够例如针对通过存储节点150的CPU 156查找的用户数据,执行诸如浏览这些映射表、寻找与映射表关联的元数据和确定物理地址的各种任务。为了寻找与段号关联的授权,标准固态驱动器可能带回整个16kB闪存页,并且CPU 156将可能搜索这个页。在一些实施方式中,非易失性固态储存器152的控制器212能够更有效地执行这个搜索,并且将结果传递至存储节点150的CPU 156,而不需要将整个闪存页发送回至CPU 156。

图5是一种用于访问非易失性固态储存器的方法的流程图,根据一些实施方式,其能够在存储群集、存储节点和/或非易失性固态储存器上实践或通过存储群集、存储节点和/或非易失性固态储存器的实施方式进行实践。在一些实施方式中,能够通过诸如存储节点和非易失性固态储存器上的处理器的一个或更多个处理器执行描述在该方法中的许多活动。在活动502中,将用户数据发送至存储群集。例如,客户端可能经由网络发送用户数据用于存储在存储群集中。在活动504中,将用户数据转发至存储节点。例如,存储群集可能将用户数据路经由通信互相连接件路由至存储节点。在活动506中,将用户数据从存储节点写入至非易失性固态储存器的NVRAM中。例如,存储节点的CPU可能将用户数据从存储节点写入至非易失性固态储存器的NVRAM中。在活动508中,客户端写入被确认。例如,存储节点的CPU确认客户端写入。

在活动510中,将元数据写入至非易失性固态储存器的NVRAM中。例如,存储节点的CPU可能将与用户数据有关的元数据写入至非易失性固态储存器的NVRAM中。在确定活动512中,确定在NVRAM中是否存在足够的用户数据,用于从NVRAM至非易失性固态储存器的闪存存储器的分批模式传输。如果答案是否定的,则针对更多用户数据,流程分支返回至活动502。如果答案是肯定的,则流程继续至活动514。

在活动514中,引导非易失性固态储存器的控制器以执行传输。例如,因为在NVRAM中现在存在足够的用户数据,所以存储节点的CPU可能引导非易失性固态储存器的控制器以执行页写入或其它分批模式传输。在活动516中,引导DMA单元以执行传输。例如,在从存储节点的CPU接收指令之后,控制器可以引导非易失性固态储存器的DMA单元,以执行用户数据从NVRAM至闪存存储器的DMA传输。在活动518中,将用户数据从非易失性固态储存器的NVRAM传输至非易失性固态储存器的闪存存储器。如通过控制器引导的,可能通过DMA单元执行这个传输。

在活动520中,从非易失性固态储存器的NVRAM读取元数据。例如,存储节点的CPU可能从NVRAM读取元数据,以获得有关用户数据的信息。在活动522中,要求非易失性固态储存器的控制器以在非易失性固态储存器的闪存存储器中寻找信息。例如,在处理从NVRAM中获得的元数据之后,存储节点的CPU可能请求非易失性固态储存器的控制器寻找附加的信息。

在活动524中,搜索闪存存储器内的信息。例如,非易失性固态储存器的控制器可能读取来自闪存存储器的页,并且搜索该信息。在活动526中,将信息发送至存储节点的CPU。例如,非易失性固态储存器的控制器在闪存存储器的页的子集中寻找该信息,并且将该信息发送至存储节点的CPU,而不需要发送整个页。存储节点的CPU然后可能使用这个信息,该信息也许与CPU从NVRAM读取的元数据结合以定位用于读取的用户数据。在其它实施方式中,该信息可能被用于确定用于写入用户数据或执行如根据本文中的教导容易设想的其它操作的位置。

应该理解的是,可以利用诸如传统的通用计算机系统的数字处理系统执行本文中描述的方法。可以在替换物中使用被设计或被程序化以执行仅一个功能的专用计算机。图6是示出可以实现本文中描述的实施方式的示例性计算装置的例示。图6的计算装置可以根据一些实施方式被用于执行针对存储节点或非易失性固态储存器的功能性实施方式。计算装置包括:中央处理单元(CPU)601和大容量存储装置607,该CPU 601通过总线605耦合至存储器603。在一些实施方式中,大容量存储装置607代表诸如磁盘驱动器的持久数据存储装置,其可以是本地的或远程的。在一些实施方式中,大容量存储装置607可能实现备份存储。存储器603可以包括只读存储器、随机访问存储器等。在一些实施方式中,驻留在计算装置上的应用可以被存储在诸如存储器603或大容量存储装置607的计算机可读介质上,或经由诸如存储器603或大容量存储装置607的计算机可读介质进行访问。应用还可以是以经由计算装置的网络调制解调器或其它网络接口调制访问的调制电子信号的形式。在一些实施方式中,应该理解的是CPU 601可以被嵌入在通用处理器、专用处理器或专用程序逻辑装置。

显示器611通过总线605与CPU 601、存储器603、和大容量存储装置607进行通信。显示器611被配置为显示与本文中描述的系统关联的任何可视化工具或报告。为了通信用于CPU 601的命令选择中的信息,所以输入/输出装置609被耦合至总线605。应该理解的是,往返外部装置的数据可以通过输入/输出装置609进行通信。CPU 601能够被限定以实行描述在本文中的用于启用参照图1-6描述的功能的功能。在一些实施方式中,实施这个功能的编码可被存储在存储器603或大容量存储装置607中,以通过诸如CPU 601的处理器执行。在计算装置上的操作系统可以是MS-WINDOWSTM、UNIXTM LINUXTM、iOSTM、CentOSTM、AndroidTM、Redhat LinuxTM、z/OSTM或其它已知的操作系统。应该理解的是,本文中描述的实施方式还可以与虚拟计算系统集成。

本文公开详细例示的实施方式。然而,本文中公开的具体功能的细节仅仅表示为了描述的实施方式的目的。然而,实施方式可以是许多可代替形式,并且不应该解释为仅限制本文中阐述的实施方式。

应该理解的是,虽然可以在本文中使用术语第一、第二、等以描述各种步骤或计算,但是这些步骤或计算不应该通过这些术语进行限制。这些术语仅被用于把一个步骤或计算与另一个区分开。例如,在不偏离这个公开的范围的情况下,第一计算可能被称作第二计算,并且类似地,第二步骤可能被称作第一步骤。如本文中所使用,术语“和/或”以及“/”符号包括相关列表的数据的一个或更多个的任何和全部的组合。

如本文中所使用,“一(a,an)”和“该(the)”的单数形式旨在还包括复数形式,除非语境中另外清楚地指明。还将理解的是,术语“包含”、“包括”和/或“含有”,当在本文中使用时,指定了规定特征、整体、步骤、操作、元件和/或组件的呈现,但是不排除呈现或添加一个或更多个其它特征、整体、步骤、操作、元件、组件和/或其的群组。此外,本文中使用的术语是出于仅描述具体实施方式为目的,并且不旨将其进行限制。

应该注意的是,在一些另选的实现方式中,标注的功能/活动可以发生注意在附图中的顺序以外。例如,根据涉及的功能/活动,依次示出的两个附图事实上可以基本上同时进行执行,或有时可以以倒序方式进行执行。

考虑到上述实施方式,应该理解的是,实施方式可以采用涉及存储在计算机系统中的数据的各种计算机实施方式操作。这些操作是那些请求物理量的物理操作的操作。通常,虽然不是必须的,但是这些量采用能够被存储、转移、组合、比较、和另外的其它操作的电或磁信号的形式。另外,执行的操作常常被称作为诸如产生、识别、确定或比较这样的术语。形成实施方式的部分的本文中描述的任何操作是有用的机械操作。实施方式还涉及用于执行操作的装置或设备。设备能够被具体的构造为所需的目的,或设备能够是通过存储在计算机中的计算机程序选择性地激活或配置的通用计算机。具体的,各种通用机器能够利用按照本文中的教导撰写的计算机程序进行使用,或其可以是更方便构造更具体的设备以执行请求的操作。

模块、应用、层、代理或其他方法可操作实体可能被实现为执行软件的硬件、固件或处理器,或其的组合。应该理解的是,其中本文公开了基于软件的实施方式,该软件能够被实施在诸如控制器这样的物理机器。例如,控制器可能包括第一模块和第二模块。控制器可能被配置为执行例如方法、应用、层或代理的各种活动。

实施方式还能够被实施为非易失性计算机可读媒体上的计算机可读代码。计算机可读介质是能够存储数据的任何数据存储装置,其后能够通过计算机系统进行读取。计算机可读介质的示例包括:硬盘驱动器、网络附加存储(NAS)、只读存储器、随机访问存储器、CD-ROM、CD-R、CD-RWs、磁带和其它光学和非光学数据存储装置。计算机可读介质还能够被分布在网络耦合计算机系统上,使得以分布式方式存储和执行计算机可读代码。可以利用各种计算机系统配置实践本文中描述的实施方式,各种计算机系统配置包括:手持式装置、平板电脑、微处理器系统、基于微处理器或可编程的电子消费品、迷你计算机、主机计算机等。实施方式还能够在分布计算环境中实践,其中,通过基于有线或无线网络链接的远程处理装置执行任务。

虽然方法操作被描述在具体顺序中,但是可以理解的是其它操作可以被执行在所描述的操作之间,可以调整所描述的操作使得它们发生在稍有不同的时间处,或者所描述的操作可以分布在系统中,其允许在与处理相关的各种间隔处发生处理操作。

在各种实施方式中,本文中描述的方法和机器的一个或更多个部分可以形成云计算环境的部分。在这种实施方式中,可以根据一个或多个各种模型,将资源作为服务提供在因特网上。这种模型可以包括:作为服务的基础设施(IaaS)、作为服务的平台(PaaS)和作为服务的软件(SaaS)。在IaaS中,计算机基础设施作为服务被传递。在这种情况下,计算装备通常由服务提供商拥有或操作。在PaaS模块中,通过开发者使用的以开发软件解决方案的软件工具和基础装备可以作为服务进行提供并且通过服务提供商作为主机。SaaS典型地包括:服务提供商根据需求作为服务许可软件。服务提供商可以作为软件的主机、或者可以对客户针对给定时间段部署软件。以上模型的许多组合是可能的和是可以预期的。

各种单元、电路或其它组件可以被描述或被要求为“被配置为/经配置以”执行一个任务或多个任务。在这种上下文中,短语“被配置为/经配置以”被用于通过指示以下内容来暗指结构,以下内容是单元/电路/组件包括在操作期间执行一个任务或多个任务的结构(例如,电路系统)。如此,单元/电路/组件能够被说成被配置为/经配置以执行任务,即使当具体的单元/电路/组件不是目前可操作的(例如,不是开启的)。利用“被配置为/经配置以”语言使用的单元/电路/组件包括硬件,例如,电路、储存可执行实现操作的程序指令的存储器等。单元/电路/组件“被配置为/经配置以”执行一个或更多个任务的列举明显地不旨在触发针对单元/电路/组件的35U.S.C.112的第六段。此外,“被配置为/经配置以”能够包括通用结构(例如,通用电路系统),其通过软件和/或固件(例如,执行软件的FPGA或通用处理器)进行操作,以能够执行讨论的一个或更多个任务的方式执行。“被配置为/经配置以”还可以包括适应制造过程(例如,半导体制造设施),以制造适合实现或执行一个或更多个任务的装置(例如,集成电路)。

出于解释的目的参照具体实施方式描述了上述说明书。然而,上述的例示的讨论不旨在是详尽无遗的或限制本发明为公开的确切形式。鉴于以上教导许多修改和变形是可能。为了最好解释本实施方式的原理和其的实际应用,而选择和描述本实施方式,以从而使本领域其它技术人员能够最好的利用实施方式和各种修改,作为可以适用于预期的具体使用。此外,实施方式应被认为是说明性的而不是限制性的,并且本发明不被限制为本文中给出的细节,而是可以在所附权利要求的范围和等效物内进行修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1