非易失性存储器系统中的同步镜像的制作方法_5

文档序号:9583641阅读:来源:国知局
送到被动服务器以来,已经在主动服务器执行的写操作。由于故障,可能在被动服务器并未执行所确定的写操作。上文中假定,与时间上较前写入的段的序号相比,时间上较后写入的段的序号更高。
[0189]只要确定由于故障写操作还未写入被动服务器,同步镜像模块550可以查询闪存管理层来确认对应于上述识别的写操作的物理闪存块来继续表示有效逻辑块,如上所述。
[0190]如果同步镜像模块550核实对应于所识别的写入的物理闪存块继续表示有效逻辑块,那么,同步镜像模块检索该写入和对应于所识别的写入的逻辑存储块并且将它们发送到被动服务器。另一方面,如果同步镜像模块550确定对应于所识别的写入的一个或多个物理闪存块不再表示有效逻辑块,那么,同步镜像模块不发送相关写入或不正确的逻辑存储块。在这些情况下,同步镜像模块检索剩余写入和相应的逻辑存储块(继续有效)并且将它们发送到被动服务器。
[0191]应注意,在一些实现中,当主动服务器从被动服务器接收指示与标记有关的写阶段的标记时,主动服务器可以执行对应于所指示的写阶段的新的写操作。例如,主动服务器从被动服务器接收具有指示在黑写阶段写入包括在标记542中的序号的信息的标记542。在主动服务器接收标记542时,主动服务器可以在黑写阶段的新周期中,执行新的写操作。
[0192]在一些其他实现中,当主动服务器从被动服务器接收指示与该标记有关的写阶段的标记时,主动服务器可以执行对应于不同写阶段的新的写操作。例如,主动服务器从被动服务器接收具有指示在黑写阶段写入包括在标记542中的序号的信息的标记542。在主动服务器接收标记542时,主动服务器可以在红写阶段的周期中,执行新的写操作。
[0193]尽管参考红黑阶段,在上述章节中描述了两级标记方案,但应该理解,赋予写阶段的颜色仅用于示例目的,不涉及实现的功能性。其他颜色,或不同于颜色的一些其他适当的识别信息可以分配给不同类别和阶段,而不改变所述的实现。
[0194]此外,尽管上述章节描述了二级标记方案的概念,但实现同样可适用于采用不同于上述的二维的多级标记方案的系统。在这些情况下,可以有多个写阶段,不同标记与每一写阶段有关。
[0195]在一些实现中,同步镜像系统可以使用这样的二级标记方案,其中将段分类到两个阶段之一,诸如蓝阶段和绿阶段中的一个,并且在不同阶段,将写操作写入不同主动段。当在蓝阶段有效时对称接收写操作时,同步镜像模块在与蓝阶段相关联的活动段上执行写操作。当在绿阶段接收写操作时,同步镜像模块在与蓝阶段相关联的活动段不同的、与绿阶段相关联的活动段上执行写操作。
[0196]不同标记可以与不同阶段有关,并且当它们相应的阶段活动时,可以独立地更新标记。例如,如上所述,存在用于蓝阶段的标记和用于绿阶段的不同标记。
[0197]上述实现可以扩展到以参考上述蓝绿阶段描述的类似的方式,将段分类成若干种类的一种的多级标记方案。在这些情况下,不同标记可以与不同阶段的每一个有关,以及标记可以存储对应于它们各自的阶段中的活动段的信息。然而,在一些情况下,关于不同阶段,标记可能是不可知的。在这些实现中,每一标记可以存储对应于所有阶段中的活动段的?目息O
[0198]在上述章节中所述的实现,使用标记的概念来提供同步镜像,以使存储器写操作更有效。例如,消除与写入灾难恢复日志和/或非复制写入日志有关的延迟。实现性能的一致性,与写操作实际上是顺序还是随机无关。通过依赖于闪存管理层的内部而不是另外的灾难恢复日志或非复制写入日志,由于工作量之间几乎无变化,可以获得更鲁棒性能。
[0199]在采用灾难恢复日志的实现中,增加另外的写放大组件,是指被处理来写入一定量数据的另外的存储器。因此,如果闪存的几何结构相对于闪存介质,允许有限写入,灾难恢复日志会减少闪存介质数据写入的寿命。例如,假定完成4ΚΒ写的工作量,对每4ΚΒ写入,执行一个灾难恢复日志写入来打开该写入,执行4ΚΒ写入,然后另一灾难恢复日志写入来关闭该写入,系统有效地引入3Χ的写放大。因此,与用于非同步镜像方式的情形相比,闪存设备可以支持其寿命上的数据写入的数量的全部的1/3。
[0200]因此,如果能避免由于灾难恢复日志的另外的写入,与另外的情形相比,可以由那一存储元件实现更长寿命(例如,在上述例子中,3倍以上)。将标记的概念用于同步镜像这是可能的。因此,使用标记的同步镜像提供在不同工作量上更可预测的更高性能、更高耐久性和性能。
[0201]图6示例可以用于将数据写入存储器服务器中的存储块的示例性过程600。例如,可以通过存储器服务器500,在同步镜像实现中,由主动服务器实现过程600。因此,下述章节将过程600描述为由包括主控制器502、从控制器514,516,51J, 51K和闪存转换表530的存储卡501中的闪存管理层执行。然而,过程600还可以由其他系统和系统结构执行。
[0202]过程600接收用于写入到存储器的应用数据(602)。例如,存储器服务器500可以从更高级应用或操作系统接收写操作。写操作可以包括要存储在与存储器服务器500有关的永久存储器一一诸如存储卡501中的闪存晶片504、506、50J或51K—一中的数据。
[0203]识别当前阶段和活动段(604)。例如,存储器服务器500可以实现用于将数据存储在存储卡501中的二级标记方案。因此,在接收写操作时,存储卡501中的闪存管理层确定二阶段,红阶段或黑阶段中的哪一阶段目前对写入数据有效。闪存管理层还通过例如从在DRAM中保持的记录查找活动段的序号来确定在当前写入阶段中数据要写入的活动段。
[0204]闪存管理层确定活动段是否已满¢06)。例如,闪存管理层校验用于当前阶段的活动段中的所有写入页是否由数据填充。
[0205]如果确定活动段未满,闪存管理层将应用数据写入活动段中的下一可用块(608)。例如,活动段可以是524。闪存管理层可以确定段524内的下一可用写入页并且将应用数据存储在下一可用写入页中。因此,即使将段描述为分布在RAID分条中的闪存晶片上的擦除块的集合,但以段内的写入页的粒度写入数据。如上所述,每一擦除块包括多个写入页。
[0206]在写入活动段中的下一可用块后,闪存管理层利用下一块的序号,更新对应于活动段的信息(610)。例如,闪存管理层可以存储刚写入的写入页后,在活动段中可用的下一写入页的序号。可以将该信息存储为保持活动段的序号的DRAM记录的一部分。然后,闪存管理层从更高层接收下一应用数据并继续将该数据存储在物理存储器中。
[0207]另一方面,如果确定活动段满,闪存管理层识别新段并且将应用数据写入新段中的第一可用块(612)。例如,闪存管理层可以确定在活动段中没有可用空间。因此,闪存管理层将可用于写入的下一段识别为用于存储数据的新段,并且将序号与新识别的段关联。由于顺序地使用段,与刚变满的段的序号相比,与新段有关的序号是下一较高编号。在识别新段时,闪存管理层将应用数据写入新段中的第一写入页。
[0208]闪存管理层存储活动段的序号和下一块(614)。例如,当选择下一可用段以写入,闪存管理层将新选择的段识别为新活动段,并且将新活动段的序号存储在跟踪活动段的内部数据结构中,诸如保持活动段的序号的DRAM记录。
[0209]在一些实现中,闪存管理层还存储刚写该写入页后,可用在活动段中的下一写入页的序号。然后,闪存管理层从更高层接收下一应用数据并且继续将数据存储在物理存储器中。
[0210]图7示例可以用于识别实现同步镜像的存储器服务器中的活动闪存段的示例性过程700。例如通过存储器服务器500,在同步镜像实现中,可以由主动服务器执行过程700。因此,下述章节描述如由包括主控制器502、从控制器514,516,51J, 51K和闪存转换表530的存储卡501中的闪存管理层执行的过程700。然而,过程700还可以由其他系统和系统结构执行。
[0211]主动服务器可以与过程600同时执行过程700。例如,可以使用过程700来检索二级标记方案中,对应于在前阶段(诸如黑阶段)的活动段的信息,而同时执行过程600来将数据存储在当前阶段(诸如红阶段)的活动段中。
[0212]当从同步镜像模块接收到查询时,执行过程700 (702)。例如,存储器服务器500可以是同步镜像实现中的主动服务器。主动服务器中的闪存管理层,诸如存储卡501中的闪存管理层可以从同步镜像模块550接收用于活动段的信息的查询。
[0213]闪存管理层识别当前阶段和在前阶段(704)。例如,在从存储器服务器500接收到查询后,存储卡501中的闪存管理层确定二级标记方案中的两阶段中的哪一个是当前写入阶段,以及相应地在前一周期中哪一阶段被写入。闪存管理层可以确定红阶段是当前活动的,因此,在前一循环中被写入黑阶段。
[0214]闪存管理层检索对应于在前阶段的活动段的序号(706)。如前所述,在二级标记方案中,有关被发送到同步镜像模块的活动段的信息对应于前一写入阶段中更新的信息。例如,如果红阶段是当前活动的,闪存管理层例如从存储有关活动段的信息的DRAM记录检索当黑阶段是活动时的前一周期中被写入的活动段的序号。与对应于在前阶段的活动段的序号一起,闪存管理层检索表示活动段内的下一可用存储块的活动段内的偏移量。
[0215]在一些实现中,可以从闪存晶片中的它们的存储位置,检索序号。例如,如果522对应于在前一阶段中被写入的活动段,闪存管理层从闪存504中的位置522a检索有关522的信息。
[0216]闪存管理层将所检索的序号发送到同步镜像模块(710)ο例如,闪存管理层将对应于前一阶段的活动段的所检索的序号发送到同步镜像模块550。在一些实现中,闪存管理层还发送表示各个段内的下一可用存储块的对应于前一阶段的活动段内的偏移量。然而,在其他实现中,闪存管理层仅发送活动段的序号。因此,同步镜像模块550具有有关最近被写入主动服务器中的存储元件的哪一部分的信息。
[0217]图8示例可以用于执行使用基于闪存的存储的主动和被动服务器之间的同步镜像的示例性过程800。例如,通过表示同步镜像设置中的主动服务器的存储器服务器500,在同步镜像实现中,由主动服务器执行过程800。因此,下述章节将过程800描述为通过与包括主控制器502、从控制器514,516,51J, 51K和闪存转换表530的存储卡501中的闪存管理层交互,由存储器服务器500中的同步镜像模块550执行。然而,过程800还可以由其他系统和系统结构执行。
[0218]作为过程800的一部分,同步镜像模块将应用数据发送到主动服务器(802)。例如,存储器服务器500可以从更高级应用,诸如用户应用和/或操作系统,接收写操作。存储器服务器500使用存储卡501上的闪存管理层,将与写操作一起接收的数据写入本地存储元件,诸如存储卡501。同时,存储器服务器500中的同步镜像模块550将包括该数据的写操作发送到镜像写入存储卡501的数据的被动服务器。
[0219]在一些实现中,仅当存储器服务器500是同步镜像结构中的主动服务器时,同步镜像模块550才将写操作发送到被动服务器。在一些实现中,同步镜像结构可以包括与配置为主动服务器的存储器服务器500分开的多个被动服务器。在这些实现中,同步镜像模块550可以将写操作发送到一个或多个被动服务器。
[0220]同步镜像模块定期地将有关活动段的信息发送到被动服务器(804)。例如,同步镜像模块550在本地存储元件(S卩,存储卡501)上的闪存管理层上查询有关最近写入的闪存段的信息。可以以一定时间间隔,定期地进行查询。或者,当将写操作的某一阈值数发送到被动服务器时,可以进行查询。或者,当写入本地存储元件上的物理存储器的某一阈值容量时,可以进行查询。例如,当填满存储卡501上的闪存晶片的可用容量的某一百分比(诸如5% )时,可以进行查询。同步镜像模块550可以跟踪存储卡501的可用容量来进行查询。
[0221]基于查询,同步镜像模块550从闪存管理层接收有关活动段的信息,如上所述。信息可以包括活动段的序号和对应于活动段中的下一可用存储块的段内的偏移量。在一些实现中,可以有多个活动段并且从闪存管理层接收的信息可以包括序号和对应于所有活动段的偏移量。同步镜像模块550将有关活动段的信息发送到镜像在存储器服务器500中存储的数据的被动服务器。
[0222]在使用多级标记方案,诸如上述二级红黑标记方案的实现中,同步镜像模块550还可以将有关对应于活动段的写入阶段的信息发送到被动服务器,如上所述。例如,当发送在黑阶段中写入的活动段的序号时,同步镜像模块550还发送指示写入阶段是黑阶段的信息。
[0223]同步镜像模块从被动服务器接收恢复消息(806)。例如,镜像在主动服务器500中存储的数据的被动服务器由于某些原因故障。当被动服务器从故障恢复时,被动服务器可以将恢复消息发送到主动服务器500来执行在停止被动服务器的时间段期间已经在活动段写入的数据的部分再同步。由主动服务器500中的同步镜像模块550处理恢复消息。
[0224]同步镜像模块从恢复消息提取标记信息(808)。例如,在从故障状况恢复时,被动服务器检索从活动端接收的最后标记,并且将最后标记发送到主动服务器500,作为恢复消息的一部分。主动服务器500中的同步镜像模块550通过处理恢复消息,读取标记信息。
[0225]同步镜像模块从闪存管理层检索有关当前活动段的信息(810)。例如,为确定自被动服务器故障以来更新的闪存块,同步镜像模块550将查询发送到本地存储元件,即,存储卡501中的闪存管理层。闪存管理层通过有关闪存管理层接收到查询时活动的一个或多个段的信息响应。同步镜像模块能从闪存管理层确定最近更新的一个或多个段,以及该段内的一个或多个存储块。
[0226]在利用二级标记方案的实现中,从被动服务器接收的标记包括有关标记相关的写入阶段的信息(例如,标记是与红阶段还是黑阶段相关)。在这些情况下,被动服务器存储对应于两个写入阶段的两个标记。当将标记发送到主动服务器用于数据恢复时,被动服务器发送所接收的倒数第二标记。如上所述,发送倒数第二标记以确保在部分再同步期间,不会由于写屏障而丢失数据,因为由被动服务器接收的倒数第二标记对应于主动服务器的在前写入阶段。
[0227]同步镜像模块通过将所检索的信息与所提取的标记信息比较,确定还未镜像到被动服务器的所存储的存储块(812)。例如,同步镜像模块550可以基于从主动服务器接收的标记提取的信息,确定由被动服务器存储的最后一段的序号。同步镜像模块550还由本地存储元件的闪存管理层发送的信息,确定已经写入本地存储器的最近段的序号。两个序号的差异给出已经写入本地存储器但还未存储在被动服务器中的段。因此,在这些段中存储的数据未被镜像到被动服务器,例如,因为通过主动服务器上的同步镜像模块550,在相应的写操作被发送到被动服务器时,被动服务器已经故障。
[0228]同步镜像模块从转换表查找对应于所确定的物理块的逻辑存储块(814)ο例如,确定已经写入本地存储器但未存储在被动服务器中的段提供有关存储卡501中的物理存储器的信息。同步镜像模块550可以查询存储卡501上的闪存管理层来将物理存储块映射到逻辑存储块,其可以是与被动服务器故障时错过的写操作有关的逻辑存储块。闪存管理层可以使用闪存转换表530,查找对应于物理存储块的逻辑存储块,并且将有关逻辑存储块的信息发送到同步镜像模块550。
[0229]同步镜像模块将对应于逻辑存储块的应用数据发送到被动服务器(818)。例如,同步镜像模块550可以由物理存储块确定在存储卡501中存储但未存储在被动服务器中的原始应用数据。在从闪存管理层接收有关逻辑存储块的信息后,同步镜像模块550还获得物理存储块到逻辑存储块的映射。因此,同步镜像模块550可以将逻辑存储块和应用数据发送到被动服务器。
[0230]被动服务器将应用数据存储在其本地物理存储器中,并且使用所接收的有关逻辑存储块的信息来确定存储应用数据的物理存储块与逻辑块的相同映射。以这种方式,在恢复阶段期间,可以镜像当被动服务器故障时丢失的数据。因此,不使用灾难恢复日志和非复制写入日志,可以实现部分再同步。
[0231]可以在数字电子电路、集成电路、专用ASICS(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现在此所述的系统和技术的各种实现。这些各种实现能包括以包括至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序的实现,所述至少一个可编程处理器可以是专用或通用目的,被耦接来接收来自存储系统、至少一个输入设备和至少一个输出设备的数据和指令,并且发送数据和指令给存储系统、至少一个输入设备和至少一个输出设备。
[0232]这些计算机程序(也被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或汇编/机器语言实现。如在此所使用的,术语“机器可读介质”、“计算机可读介质”是指用来向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括将机器指令接收为机器可读信号的机器可读介质。术语“机器可读信号”是指用来向可编程处理器提供机器指令和/或数据的任何信号。
[0233]用于执行指令的程序的适当处理器举例来说,包括通用和专用微处理器,以及单一处理器或任何类型的计算机的一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的元件可以包括用于执行指令的处理器和用于存储指令和数据的一个或多个存储器。通常,计算机还将包括或可操作地耦接来与用于存储数据文件的一个或多个大容量存储设备通信,这些设备包括磁盘,诸如内部硬盘和可移动盘、磁光盘和光盘。适合于有形地实现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,举例来说,包括半导体存储设备,诸如EPROM、EEPROM和闪存设备;磁盘,诸如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由ASICs (专用集成电路)补充或者或包含在专用逻辑电路中。
[0234]为了提供与用户的交互,在此所述的系统和技术能在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如,CRT (阴极射线管)或LCD (液晶显示器)监视器)和用户能将输入提供给计算机的键盘以及指向设备(例如,鼠标或跟踪球)。其它类型的设备也能用来提供与用户的交互;例如,向用户提供的反馈能是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且,能以任何形式,包括声音、语音或触觉输入,接收来自用户的输入。
[0235]在此所述的系统和技术能在计算机系统中实现,该计算机系统包括后端部件(例如,数据服务器),或者包括中间件部件(例如,应用服务器),或者包括前端部件(例如,具有用户能与在此所述的系统和技术的实现交互的图形用户界面或Web浏览器的客户端计算机),或者包括这种后端部件、中间件部件或前端部件的任何组合。系统的部件能由任何形式或媒介的数字数据通信(例如,通信网络)互连。通信
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1