检测用于存储系统中写错误的设备与方法

文档序号:6380620阅读:190来源:国知局
专利名称:检测用于存储系统中写错误的设备与方法
技术领域
本发明涉及存储系统,具体地涉及用于电子数据存储的磁盘存储系统。
背景技术
由于记录技术的进步,现在硬盘的容量每年翻一翻。2003年,面积密度预计将达到每平方英寸100G比特,而3.5″驱动器将能存储300GB。
硬盘的可靠性以其MTBF(平均无故障时间)与不可恢复错误率指定。当前服务器级驱动器的典型规格为1,000,000小时与每读取1015比特中1个不可恢复错误。然而,由于更低的浮动高度、介质缺陷等等,面积密度的增长使保持可靠性更加困难。
RAID(独立磁盘冗余阵列)阵列(如RAID-1或RAID-5)被经常用来进一步提高存储系统的可靠性。然而对于大容量驱动器,单单一级冗余已不足以将数据丢失的可能性降到可以忽略的水平。
磁盘驱动器在读命令时偶尔也可能返回过时数据,这是因为上一次的写命令没有写到记录介质的正确位置上或者没有在介质上记录。这可能是因为间歇性硬件故障或隐蔽设计缺陷。例如,驱动器可能由于固件错误将数据写入错误的LBA(逻辑块地址),或者写得偏离磁道,或者因为润滑油滴将磁头抬离磁盘表面而根本就没写上。
目前人们对在服务器应用中使用商品驱动器越来越感兴趣,商品驱动器诸如高级技术附件(ATA)驱动器等等,这是因为就每兆字节的费用来说这些商品驱动器要便宜大约3倍。然而,这些驱动器原本打算在PC中间歇性使用的,因此其可能不如服务器级驱动器可靠。另外ATA驱动器只支持512字节的块,因此不能用块级LRC(纵向冗余校验)来检测数据损坏。
对于单一磁盘驱动器,控制器可以在刚刚写完每一块后将其读回并验证。
任何类型的RAID(独立磁盘冗余阵列)阵列都可以以允许校验读取的数据的方式实现。例如,对于RAID-5阵列,控制器可以检查读取的数据是否与其他数据驱动器和奇偶校验驱动器相一致。
然而,这些方法的缺点在于两个方法都大大降低了以每秒I/O(输入/输出)命令表示的总体吞吐量,这是因为第一个方法要求额外的旋转,而第二种方法要求每条读命令都访问几个驱动器。
因此需要可以减轻上述问题的存储系统中写错误的检测。

发明内容
根据本发明的一个方面,提供一种检测用于存储系统中写错误的设备,该设备包括用于以组存储数据块的装置,每一组都包括多个数据块与一校验块;其中在每次向存储器写入该组时,更新该校验块;以及用于通过检查该校验块来检测写错误的装置。
优选地,该校验块为该组数据块的组合。
优选地,该组合为逻辑异或组合。
优选地,该校验块为与该组相关的逻辑块地址的组合。
优选地,该组合为逻辑异或组合。
优选地,该校验块为阶段字段(phase field)的组合,在每次写入该组时,更新该阶段字段。
优选地,该组合为逻辑异或组合。
优选地,该阶段字段包含单一位值,在每次写入该组时,反转该单一位值。
优选地,该阶段字段包含多位值,在每次写入该组时,更新该多位值。
优选地,该装置还包括用于阶段字段值的非易失表。
优选地,该非易失表包含保留磁盘驱动器区域,该表的工作备份被缓存在该系统的控制器中。
优选地,该装置还包括非易失日志,其被安排以在写操作前记录项,在该写操作完成时,该项被安排用于A至B之一A失效,以及B删除。
优选地,安排该日志以保持对还没有被存储在该非易失表中的该控制器中该表的工作备份的更新。
优选地,该日志被存储在还保持用于该系统的控制器的代码的存储器中。
优选地,该存储系统包含磁盘存储系统。
优选地,该磁盘存储系统包含ATA磁盘驱动器。
优选地,该磁盘存储系统包含RAID系统。
根据本发明的第二方面,提供了一种检测用于存储系统中写错误的方法,该方法包括以组存储数据块,每一组都包括多个数据块与一校验块;在每次写入该组时,更新该校验块;以及通过检查该校验块来检测可能的写错误。
优选地,该校验块为该组数据块的组合。
优选地,该组合为逻辑异或组合。
优选地,该校验块为与该组相关的逻辑块地址的组合。
优选地,该组合为逻辑异或组合。
优选地,该校验块为阶段字段的组合,在每次写入该组时,更新该阶段字段。
优选地,该组合为逻辑异或组合。
优选地,该阶段字段包含单一位值,在每次写入该组时,反转该单一位值。
优选地,该阶段字段包含多位值,在每次写入该组时,更新该多位值。
优选地,阶段字段值被存储在非易失表中。
优选地,该非易失表包含保留磁盘驱动器区域,该表的工作备份被缓存在该系统的控制器中。
优选地,该方法还包括在写操作前将项记录在非易失日志中,在该写操作完成时,执行A至B操作之一A置该项失效,以及B删除该项。
优选地,该方法还包括在该日志中保持对还没有被存储在该非易失表中的该控制器中该表的工作备份的更新。
优选地,该日志被存储在还保持用于该系统的控制器的代码的存储器中。
优选地,该存储系统包含磁盘存储系统。
优选地,该磁盘存储系统包含ATA磁盘驱动器。
优选地,该磁盘存储系统包含RAID系统。
根据本发明的第三方面,提供了一种计算机程序元件,包含计算机程序装置,用来执行实质上如第二方面的方法。


现在将参照仅为示例的附图,描述包含本发明的一种设备与方法,用于通过使用阶段字段,检测存储系统中写错误,其中,图1示出包含本发明的磁盘驱动器存储系统的方框示意图;以及图2示出用于使用图1系统的计算奇偶校验块的方法的方框示意图。
具体实施例方式
简要而言,在其优选实施例中,本发明使用包含阶段字段(phase field)(例如单一比特标志)的交叉奇偶校验块,以检测几乎所有磁盘驱动器引起的数据损害情况。该奇偶校验块还提供另外一级的错误校正。这些特征对于ATA驱动器尤其有用,这是因为ATA驱动器一般比服务器驱动器有更高的不可校正错误率。(ATA驱动器一般规定硬错误率为1∶1015比特,因此100GB的驱动器包含具有硬读错误的块的概率为0.8%。如果使用这些驱动器来构造10+P RAID-5阵列,则在更换一个驱动器后,重构失败的概率为8%。)现在参看图1,磁盘存储系统100包括磁盘110,其中信息被存储在块D与P,其一般为512字节。在磁盘上存储数据时,每N个(例如,如图所示,每8个512字节的块或4KB)块后插入一个奇偶校验块P。认为这些N+1个块为一组120。因此驱动器的有效数据容量被降低N/(N+1)。
如图2所示,奇偶校验块P包含组奇偶校验,其由以下计算步骤210——将来自该组中的每个数据块的相应字节异或。
步骤220——将该组中第一块的物理LBA异或到步骤210结果的头几个字节中。该LBA源允许检测几乎所有读与某些写时的寻址错误。
步骤230——将阶段字段F异或到步骤220结果的最后几位中。阶段字段F可以是单一位值,其在每次写入该组时都被反转。可替换地,阶段字段F也可以是多位计数器,其在每次写入该组时都被更新(如被增加)。该阶段字段检测写时的大部分剩余寻址错误。
除非驱动器遇到硬读错误,磁盘控制器(未显示)以整组读写该驱动器。它对每一组执行以上计算。对于写,结果被写入奇偶校验块。对于读,将结果与读入奇偶校验块的内容异或,如果结果非零,则在该组中有错误。
奇偶校验块P使控制器能够处理下列驱动器错误如果驱动器在组中一个数据块中遇到不可恢复的介质错误,则控制器在下一块重新启动读。然后通过使用组奇偶校验,控制器重新构建缺失的块,其假定LBA与阶段正确。最后,控制器重新分配坏的LBA并重写该块。
如果驱动器读入错误的LBA,则由于LBA源,组奇偶校验将非零。控制器然后重试一次读,如果奇偶校验再次失败,则返回介质错误。
如果驱动器先前写入了错误的LBA,或者根本就没有写介质并且宿主然后发出请求读正确的LBA,则由于阶段字段F,组奇偶校验将非零。控制器然后重试一次读,如果奇偶校验再次失败,则返回介质错误。
如果驱动器先前写入了错误的LBA并且宿主然后发出请求读不正确的LBA,则由于LBA源,组奇偶校验将不正确。控制器重试一次读,并返回介质错误。
当控制器返回介质错误时,如果该驱动器为冗余阵列(未显示)的部件,则仍可恢复该数据。
因为控制器总是读写磁盘上的整个组,短写或未对齐写需要写-改-写。然而RAID-5具有类似的损失,所以在这种情况下并没有额外的花费。
磁盘控制器必须将每组的当前阶段存储在非易失存储130中。例如,当使用单一位阶段标志时,对于具有4KB组的100GB驱动器,产生的位图占大约2.6MB。当驱动器格式化时,控制器将所有阶段标志初始化为零。可以各种方式实现阶段标志位图130。闪存不直接合适,这是因为如果反复写同一组,闪存会很快用坏。带电池的SRAM(静态随机访问存储器)笨重而昂贵。优选的解决方案是将位图存储在磁盘驱动器的保留区域,并在控制器中的SRAM(静态随机访问存储器)中缓存工作备份。然而,为避免每次写命令都更新该保留区域,必须以某种方式将修改打包并保护其不受电源故障与驱动器重置的影响。
另外,如果磁盘写被电源故障或重置所中断,则磁盘上的阶段(phase)标志的状态无法确定。这不应该引起随后的带介质错误的读失败,这是因为该驱动器没有任何故障(然而返回旧数据、新数据或两者的混合是可以接受的,这是因为控制器没有完成向宿主的写)。
这两个问题可以以下方式解决刚好在发出磁盘写之前,在非易失日志中记入一项,并在此次写完成后将此项删除(或使之失效)。该同一个日志也可用来保存对SDRAM中的位图的更新,这些更新还没有被全部写入磁盘。典型的日志项需要8个如下字节字节描述0:3 待写入的第一组的地址。
4:5 待写入的相邻组的个数。(非零表示有效日志项)。
6初始化为FFh(‘h’表示十六进制表示法)。磁盘写完成后置零。
7初始化为FFh。磁盘上位图被更新后置零。
可以将日志存储在小型带电池的SRAM中,即NVRAM(非易失RAM)。
在有些实现中,可能便于将日志存储在闪存的附加扇区中,该闪存包含控制器代码。当日志扇区被完全使用时,将其擦除为全FFh。向闪存的字写入一般花费大约500μs,并且每一磁盘写入需要3个闪存写入。这就允许每秒将近700次磁盘写入。闪存的损耗自动被平摊,这是因为日志是依次写入的。另外日志项被格式化,从而对每次磁盘写入每一字节只被写入一次。例如,寿命为105周期的1MB闪存在每秒100次磁盘写入上将保持4年。
为确保高可用性,存储系统经常采用双(活动-活动)控制器。在这种情况下,最好在每个控制器中都保持该非易失日志的镜像备份。这就确保如果一个控制器出故障,不会丢失由阶段字段所提供的保护。必须通过在控制器间交换消息,保持这两个日志同步。在每个控制器向磁盘写入组之前以及在该写入完成时,该控制器必须通知另一控制器更新其日志。然而,在实践中这一般不构成很大花费,这是因为诸如RAID-5等更高级的功能也要交换类似信息。
还必须提供装置以重新同步两个控制器,例如,如果一个控制器在故障后被替换。这很容易实现,只要从另一控制器的日志中将悬置的更新全部写入磁盘,并将替换控制器中的日志清空。
应该理解以上描述的通过使用阶段标志位检测在存储系统中写错误的方案具有以下优点提高了数据完整性。当使用低费用的桌面型驱动器时,该方案尤其有用。这些驱动器一般局限于512字节块,因此没有空间来在每个块中存储校验字段。然而,该方案也可以用于服务器级的驱动器。
降低了性能影响,尤其当与RAID-5联合使用时(不需要额外的磁盘访问以检查读取的数据)。
在最简单的情况中,阶段字段为单一位,其在每次写入时被反转。然而,为了更好的保护,阶段字段也可以是多位计数器,其被更新,例如,增加一正值或负值(即减少)。
应该理解上述用于在存储系统中写错误检测的方法一般在位于该系统内的处理器(未显示)上运行的软件中实施,并且该软件可以作为在任何适当数据载体(也未显示)(诸如计算机磁盘或计算机光盘等等)上承载的计算机程序元件来提供。
还应该理解尽管本发明的描述针对磁盘存储系统的情况,但可替换地,本发明也可用于其他存储系统,诸如那些基于光盘或磁带的系统等等。
权利要求
1.一种检测用于存储系统中写错误的设备,该设备包括用于以组存储数据块的装置,每一组都包括多个数据块与一校验块;其中在每次向存储器写入该组时,更新该校验块;以及用于通过检查该校验块来检测写错误的装置。
2.如权利要求1所述的设备,其中该校验块为该组数据块的组合。
3.如权利要求2所述的设备,其中该组合为逻辑异或组合。
4.如权利要求1至3中任何一项所述的设备,其中该校验块为与该组相关的逻辑块地址的组合。
5.如权利要求4所述的设备,其中该组合为逻辑异或组合。
6.如权利要求1至5中任何一项所述的设备,其中该校验块为阶段字段的组合,在每次写入该组时,更新该阶段字段。
7.如权利要求6所述的设备,其中该组合为逻辑异或组合。
8.如权利要求6或7所述的设备,其中该阶段字段包含单一位值,在每次写入该组时,反转该单一位值。
9.如权利要求6或7所述的设备,其中该阶段字段包含多位值,在每次写入该组时,更新该多位值。
10.如权利要求6至9中任何一项所述的设备,还包括用于阶段字段值的非易失表。
11.如权利要求10所述的设备,其中该非易失表包含保留磁盘驱动器区域,该表的工作备份被缓存在该系统的控制器中。
12.如权利要求1至11中任何一项所述的设备,还包括非易失日志,安排其在写操作前记录项,在该写操作完成时,该项被安排用于A至B之一A失效,以及B删除。
13.如从属于权利要求11的权利要求12所述的设备,其中安排该日志以保持对还没有被存储在该非易失表中的该控制器中该表的工作备份的更新。
14.如权利要求12或13所述的设备,其中该日志被存储在还保持用于该系统的控制器的代码的存储器中。
15.如权利要求1至14中任何一项所述的设备,其中该存储系统包含磁盘存储系统。
16.如权利要求15所述的设备,其中该磁盘存储系统包含ATA磁盘驱动器。
17.如权利要求15或16所述的设备,其中该磁盘存储系统包含RAID系统。
18.一种检测用于存储系统中写错误的方法,该方法包括以组存储数据块,每一组都包括多个数据块与一校验块;在每次写入该组时,更新该校验块;以及通过检查该校验块来检测可能的写错误。
19.如权利要求18所述的方法,其中该校验块为该组数据块的组合。
20.如权利要求19所述的方法,其中该组合为逻辑异或组合。
21.如权利要求18至20中任何一项所述的方法,其中该校验块为与该组相关的逻辑块地址的组合。
22.如权利要求21所述的方法,其中该组合为逻辑异或组合。
23.如权利要求18至22中任何一项所述的方法,其中该校验块为阶段字段的组合,在每次写入该组时,更新该阶段字段。
24.如权利要求23所述的方法,其中该组合为逻辑异或组合。
25.如权利要求23或24所述的方法,其中该阶段字段包含单一位值,在每次写入该组时,反转该单一位值。
26.如权利要求23或24所述的方法,其中该阶段字段包含多位值,在每次写入该组时,更新该多位值。
27.如权利要求23至26中任何一项所述的方法,其中阶段字段值被存储在非易失表中。
28.如权利要求27所述的方法,其中该非易失表包含保留磁盘驱动器区域,该表的工作备份被缓存在该系统的控制器中。
29.如权利要求18至28中任何一项所述的方法,还包括在写操作前将项记录在非易失日志中,在该写操作完成时,执行A至B操作之一A置该项失效,以及B删除该项。
30.如从属于权利要求28的权利要求29所述的方法,还包括在该日志中保持对还没有被存储在该非易失表中的该控制器中该表的工作备份的更新。
31.如权利要求29或30所述的方法,其中该日志被存储在还保持用于该系统的控制器的代码的存储器中。
32.如权利要求18至31中任何一项所述的方法,其中该存储系统包含磁盘存储系统。
33.如权利要求32所述的方法,其中该磁盘存储系统包含ATA磁盘驱动器。
34.如权利要求32或33所述的方法,其中该磁盘存储系统包含RAID系统。
35.一种计算机程序元件,包含计算机程序装置,用来执行实质上如权利要求18至34中任何一项所述的方法。
36.一种设备,用于存储系统中写错误检测,实质上与此后参照附图所描述的相同。
37.一种方法,用于存储系统中写错误检测,实质上与此后参照附图所描述的相同。
全文摘要
一种用于通过使用阶段字段(F)检测在存储系统(100)中写错误的方案。用户数据块(P)被分为组(120),并且在每组后插入校验块(P)。该校验块包含在每次写入该组时都更新的字段。该字段可以为被反转的单一位,然而为了更好的保护,也可以是被递增的多位计数器。该校验块可以是该组数据块的异或组合(210),也可以是该组LBA的异或组合(220)。这提供了以下优点1)提高了数据完整性。当使用低费用的桌面型驱动器时,该方案尤其有用。这些驱动器一般局限于512字节块,因此没有空间来在每个块中存储校验字段。然而,该方案也可以用于服务器级的驱动器。2)降低了性能影响,当与RAID-5联合使用时尤其如此。
文档编号G06F11/10GK1573703SQ200410002829
公开日2005年2月2日 申请日期2004年1月17日 优先权日2003年6月11日
发明者伊恩·D·朱德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1