用于使用wmrm存储器实现可靠的worm存储器的系统和方法

文档序号:6758718阅读:191来源:国知局
专利名称:用于使用wmrm存储器实现可靠的worm存储器的系统和方法
技术领域
本发明涉及一种用于加强WMRM存储器上的WORM属性的新的存储方法和系统。
背景技术
随着关键数据被越发地以电子形式加以存储,以防干扰方式可靠地存储数据是至关重要的。此外,电子数据的不断发展的子集(例如,电子邮件、瞬时消息、药品开发记录、病历)遵守用于管理其长期保留和可利用性的规章。最近,大型公营公司的备受瞩目的责任发布已经进一步导致诸如证券交易委员会(Securities and ExchangeCommission,SEC)之类的规范主体使他们的规章变得更严。举例来说,SEC的新细则17a-4(Rule 17a-4)(2003年5月生效)规定了对电子邮件、附件、备忘录以及瞬时消息传送(messaging)连同常规电话会话的存储要求。在许多这种规章中,关键的要求在于必须把数据可靠地存储在不可擦除的、不可重写的存储器中,从而使得一旦写入数据,它就无法被改变或改写。与可以多次写入的WMRM(多写多读,Write-Many Read-Many)存储器相反,这种不可重写的存储器通常被称为WORM(一写多读,Write-Once Read-Many)存储器。
传统上,WORM存储器是通过使用光学手段在存储介质(例如,WORM光盘、CD-R、DVD-R)中引起不可逆的改变来实现的。由于市场力量以及物理和/或技术限制,WORM光存储器没有得到非常大的改进,并且在性能和/或存储密度方面不可能有非常大的改进。组织机构由此必须把他们的迅速增长的大量关键记录存储在越来越多的大量WORM光盘上。管理这么大量的盘是繁重的、耗时的、易于出错的并且是昂贵的过程。更重要的是,与数据发现请求有关的记录无法容易地被定位在这种系统中,并且无法以及时的方式来递送。
WORM光存储器的最近介绍的替代方式是WORM磁带。所述WORM磁带速度慢,并且不允许对数据的直接随机存取。而是必须顺序地附加并且读取数据。虽然一次性写入的(基准)数据有时被认为是很少读取或者从不读取,但是存在许多读取性能出现问题的情况。此外,当数据的发现请求到达时,需要数据是易于访问的,取决于应用以随机或是顺序方式进行访问。
WORM光存储器的另一替代方式是内容可寻址的存储器(CAS)。CAS通过把数据存储在由正在写入的数据唯一确定的位置处来实现一次性写入存储器的效果。然而,这种系统需要新的存储器接口,并且需要彻底改变应用程序和系统软件来谨慎地跟踪和管理写入数据的位置。

发明内容
根据本发明,提供了一种用于确保存储在可重写存储器上的数据不可改变的方法。所述方法包括把存储器的选定的用户可寻址块初始化为可写状态。另外,所述方法包括接受将存储在指定的用户可寻址块中的数据。所述方法还包括确定所指定的块是否是可写的。所述方法还包括把所接受的数据存储至可重写存储器。此外,所述方法包括把指定块的状态设置为不可写。在一个实施例中,与每个块相关联的可写/不可写状态被编码并且存储在相应块的内容中。在另一个实施例中,确定指定块是否是可写的、把所接受的数据存储至可重写存储器并且把指定块的状态设置为不可写的步骤被集成并且是不可分割的。


图1是示出了在WMRM存储器系统上提供WORM属性的方法的流程图。
图2是示出了在WMRM存储器系统上提供WORM属性的方法的流程图,其中状态信息被编码并且被存储在数据中。
图3是示出了把状态测试和状态更新机制与数据存储操作集成以便只要成功地写入数据就无法改写它的方法的流程图。
图4A是示出了存储位置以及将在该存储位置存储的已接收数据的先前内容的合成数学函数的采样分解的图。
图4B是示出了存储位置以及将在该存储位置存储的已接收数据的先前内容的合成数学函数的采样实现方式的图。
图5A是示出了使用NAND门或者ALU运算的三输入端多数门(majority gate)的图。
图5B是示出了使用AND/OR门或者ALU运算的三输入端多数门(majority gate)的图。
图6是与三输入端多数门相关联的真值表。
图7是举例说明本发明的示例性实施例的图。
具体实施例方式
将本发明主要作为用于使用WMRM存储器来实现可靠的WORM存储器的系统和方法来加以描述。在随后的描述中,为了说明的目的,提出了很多具体细节,以便提供对本发明的彻底的了解。然而,对于本领域中的普通技术人员来说显然本发明可以在没有这些具体细节的情况下来实施。
本领域技术人员将意识到的是,包括CPU、存储器、I/O、程序存储器、连接总线以及其它适当部件的诸如数据处理系统之类的设备可以被编程或者被设计成能够易于本发明的实施。这种系统往往包括适当的程序装置用于执行本发明的操作。
诸如预先记录的盘或者其它供数据处理系统使用的类似计算机程序产品的制造物可以包括存储介质和记录在其上的程序装置,用于引导数据处理系统易于实施本发明的方法。这种设备和制造物也落入本发明的精神和范围。
本发明提供了成本有效的WORM存储器,其提供了高的存储密度和良好的性能。本发明通过用于可靠地加强WMRM存储器上的WORM属性的系统和方法解决了这种需要,该系统和方法是快速的、密集的并且迅速改善的。
图1是举例说明用于在WMRM存储器系统上提供WORM属性的方法10的流程图。在块12,方法10开始。
在块14,对存储器系统的状态进行初始化。所述初始化提供对存储器系统状态的初始化,以便使存储器的每一块是可写的,或者使存储器的某些指定块是可写的。
在块16,接收要存储在存储器系统中的数据。
在块18,对存储器系统内的将要存储数据的目标地址进行识别。
在块20,就目标地址是否可写进行判断。如果不是,那么在块22返回故障。如果是,那么在块24,把所接收的数据写入目标地址。
在块26,向其写入所接收数据的目标地址的状态被更新为不可写。
在块28,返回用于确认成功写入所接收数据的消息。
在块30,方法10结束。
在一个实施例中,方法10还包括额外的步骤,借此将已更新的状态和/或数据写入读回并且对其进行验证以便确保已经成功地存储了它们。如果检测到偏差,那么系统重试相应的操作并且重新验证是否已经成功执行它们。预定次数的重试之后,所述系统返回写入故障。
限制对状态的直接访问,以便一旦有一个块处于不可写状态,那么可以防止其状态被变回到可写。通常,状态初始化只在工厂中被执行一次。其后,可以用来更新所述状态的唯一机制是在写相应块时将其改为不可写。作为选择,一个块的状态可以在某一持续时间内被锁定。在一个实施例中,所述持续时间取决于所存储数据的保留期。在下一段中,我们将描述用于可靠地保持存储块的状态并且在执行任何写操作以前检验所述状态的多种方法。应注意的是,在某些环境中,对仍未被写入的块的试图读取返回错误是合乎需要的。在这种环境中,就读操作来检查所请求的块的状态,并且如果所述状态是可写的,则返回故障。在下文中,我们将集中描述写操作。
外部不可重写在一个实施例中,存储块的状态被保存在被存储数据之外。所述系统使用诸如列表、散列表或者位图之类的数据结构来跟踪哪些块是可写的(或者是不可写的)。为了便于说明,使用了位图,其中每一位对应于一个存储块,并且该位的值表明相应的存储块是否是可写的。
所述位图被存储在存储器系统中,通常存储在非用户可寻址部分中。为了减少状态被破坏以及WORM属性被阻止实现的可能性,所述系统保留所述位图中各位的校验和或者其它的数学函数,并且把它们安全地存储在存储器系统的非用户可寻址部分中。对位图以及校验和的所有更新被写入永久性存储器。
当初始化时,位图中的各位被设置为1,表明相应的块是可写的。为了检验存储块的状态,所述系统查看位图中相应的位。此外,它还重新计算并且验证相应的校验和是有效的。在一个实施例中,只有当相应的位是1并且相应的校验和是有效的时,所述块才是可写的。为了把存储块的状态设置为不可写,所述系统把相应的位设置为0并且更新相应的校验和。
为了改善性能,所述位图和校验和是以分布式方式存储在存储器系统中的,以便使所述位与校验和位于接近于它们的相应存储块的地方。例如,盘圆柱的最初少数扇区(块)可用于存储圆柱中其它扇区的位图和相应的校验和。如果所述盘支持稍微大于逻辑(用户可寻址的)扇区大小(例如512字节)的物理扇区大小(例如524字节),那么对应于每一逻辑扇区的位还可以被存储在与逻辑扇区的数据内容相同的物理扇区中。
在此实施例中,通过独立于数据的实际存储器的机制加强了一次性写入属性。
集成状态在另一个实施例中,存储块的状态被编码并且保存在正被存储的数据中。因此,如果数据被成功地存储,那么所述状态用于确保数据不会被改写。
图2是举例说明用于在WMRM存储器系统上提供WORM属性的方法40的流程图,其中状态信息被编码并且存储在数据中。在块42,方法40开始。
在块44,所述存储器系统初始化存储块。所述初始化提供对存储器系统状态的初始化,以便存储器的每一块是可写的,或者存储器的某些指定块是可写的。
在块46,所述存储器系统接收将存储在目标地址的数据。
在块48,读取目标地址的当前内容。
在块50,对与目标地址当前内容相关联的状态信息进行解码。
在块52,就目标地址是否可写做出确定。如果目标地址被确定为不可写,那么在块54,响应于写入请求返回故障。如果目标地址被确定为可写,那么在块56,不可写状态信息被编码在将存储在目标地址的数据中。
在块58,将包括所编码的状态信息的数据写入目标地址。
在块60,返回用于确认已经成功地写入数据的消息。
在块62,方法40结束。
在一个特定实施例中,所述初始化(参见块40)是通过在将被初始化的存储块中存储预定的位模式来执行的,并且如果目标地址的当前内容包括预定的位模式,那么可以确定所述目标地址是可写的。
此实施例的缺点在于预定的位模式无法以不可重写的方式被存储。解决方案在于检测何时系统被要求存储预定的位模式并且此后把数据改变为其它的预定位模式。例如,在法律文件中,空白页不是被留下空白,而是被标记为“有意留下空白”。另一选项是仅仅让预定的位模式是可重写的。通过增大预定位模式的长度,它在数据流中被遇到的概率得以极大地降低。
例如,采用8字节预定位模式,那么在28×8=5.4×10-20中,预定位模式被遇到的概率只有1。
在另一个实施例中,所述初始化(参见块40)是通过把预定位模式存储在将被初始化的每一存储块内的预定位置来执行的,并且如果目标地址的当前内容包括处于预定位置的预定位模式,那么可以确定所述目标地址是可写的。
在又一个实施例中,由系统将存储器的每一个用户可寻址或者逻辑块映射到存储器的多个物理块上,最好均位于独立故障域中。例如,对应于逻辑块的每个物理块可以来自于独立的盘或者盘阵列。所述系统使用相应物理块的内容之间的关系来编码逻辑块的状态。此外,所存储的数据可以从任意一个相应物理块中被检索,由此极大地增加了系统的可靠性。在一个实施例中,存储器的每一逻辑块被映射到两个物理块上。
对所述系统进行初始化,以便使对应于一个逻辑块的每对物理块的内容满足特定的数学关系式f。举例来说,如果第一物理块包含位模式x,那么第二物理块往往包含x的逻辑非。当一个数据块将被写入逻辑块时,所述系统读取相应物理块的当前内容。如果所述内容满足预定的数学关系式f(例如,逻辑非),那么所述逻辑块是可写的。否则,所述逻辑块是不可写的。如果所述逻辑块是可写的,那么系统继续将数据写入两个物理块中。一般说来,数据的某些数学函数被写入两个物理块的每个中,以便两个物理块中的数据都满足不同于f的数学关系式。当逻辑块将被读取时,所述系统可以从相应物理块的任一个中读取。作为选择,为了增加可靠性,从两个物理块读取并且验证两个物理块的内容满足有效的关系式。
这种系统为存储在系统中的任何数据无法被改写提供了非常强大的保证,这是因为逻辑块的可写/不可写状态是通过存储数据的实际动作来更新的。
集成状态和测试图3是举例说明把状态更新和状态测试机制与数据存储操作集成以便一旦成功地写入数据就无法改写它的方法70的流程图。换言之,通过方法70,写入数据的动作确保WORM属性。在块72,方法70开始。
在块74,对存储器系统的状态进行初始化。所述初始化提供对存储器系统状态的初始化,以便存储器的每一块是可写的,或者存储器的某些指定块是可写的。
在块76,所述存储器系统接收将存储的数据。
在块78,读取将要存储所接收数据的目标地址的当前内容。
在块80,对将存储的数据和目标地址的当前内容(参见块78)的数学函数进行计算。
在块82,将所计算的数学函数写入由目标地址标识的物理块。
在块84,方法70结束。
在一个实施例中,由系统将存储器的每一个用户可寻址或者逻辑块映射到存储器的多个物理块上,最好均位于独立故障域中。例如,对应于逻辑块的每个物理块可以来自于独立的盘或者盘阵列。此外,所存储的数据可以从任一相应物理块中被检索,由此极大地增加了系统的可靠性。
在一个特定实施例中,存储器的每一逻辑块被映射到两个物理块上。对所述系统进行初始化,以便使对应于一个逻辑块的每对物理块的内容满足特定的数学关系式f。举例来说,如果第一物理块包含位模式x,那么第二物理块往往包含x的逻辑非。
所述数学函数(参见块80)可以是多级函数,例如包括先前内容的函数以及所接收的数据的进退函数(further function),如图4A中举例说明的那样。所述数学函数可以依照软件(使用ALU运算)或者硬件(使用逻辑门)来实现,如图4B中的例子所示那样。
在优选的实施例中,所述数学函数是逐位多数逻辑决议(bit-wisemajority vote),它指的是所计算的值中的每一位只有当相应输入位的大部分是1(0)时才会是1(0)。对所述系统进行初始化,以便使对应于一个逻辑块的每组物理块的内容的多数逻辑决议是0。当把每个逻辑块映射到两个物理块时,这意味着系统被初始化,以便对应于一个逻辑块的每对物理块的内容满足逻辑非。
所述多数逻辑决议很容易在软件或硬件中实现,例如通过使用图5A和图5B中示出的门/ALU运算的组合,或者通过图6中示出的用于实现真值表的查找表来实现。应注意的是,典型的实现方式往往对多个位(例如32位)并行执行操作。
在一个实施例中,在把所计算的值写入两个物理块(参见块82)之后,所述系统读回物理块的内容以便验证数据已经被成功地存储。如果所述内容不同于将存储的数据,那么系统返回写入故障。否则,它确认已经成功地执行了写操作。
应注意的是,在此方法中,先前写入的数据可以利用相同的值来重写。即使重写过程被中断,所述系统也必须确保物理块的内容是有效的。已知的方法是确保块写入操作是极其基本的(atomic)。
精细粒度WORM底层(underlying)存储器允许重写的事实意味着系统可以实际读取早已写入的块,向其添加数据,然后再次写入它。换言之,所述系统可以有效地实现以比底层存储器的最小写入单元更精细的粒度的一次性写入属性。此外,所述系统允许随机块被写入。这些属性使系统能存储数据以及元数据,这通常要求数据被写入连续的块中,所述元数据用于依照比传统光学WORM存储器更加灵活的方式来描述数据。
为了支持这种精细粒度WORM,在外部不可重写实施例中,所述系统以小于块大小的粒度来保留可写/不可写位。例如,每8字节一位。在该情况下,只有其相应位表明它是可写的,存储器的给定8字节才能够被写入。在使用预定位模式来表明可写性的实施例中,只有当其当前包含预定位模式时,存储器的单元才能够被写入。所述WORM粒度在该情况下必须至少是所述位模式的大小。用于通过使用相应物理块的内容之间的关系来保留存储块的可写/不可写状态的实施例可以被扩展,而不会为实现处于任意精细粒度的一次性写入属性带来额外成本。具体来讲,对于存储器的每一位而言,所述系统检验两个副本中的相应位,以便查看它们是否服从于表明其可以被写入的关系。在集成状态和测试实施例中,所述系统仅仅对将被写入的位执行多数逻辑决议。
例如,假定所述系统接收如下写入命令,写入(目标块地址A,数据D,偏移o,长度l)。它通过首先把对应于A的两个物理块的内容读到D[1]和D[2]中,然后确定D[1]和D[2]中的相应字节之间的关系,以此来检验逻辑块A的o(包含o在内)和o+l之间的字节的状态。如果所有l个字节都是可写的,那么系统用D来替代D[1]和D[2]中的相应字节,并且把D[1]和D[2]写回到各个物理块。否则,它返回故障。当接收到诸如读取(目标块地址A,数据D,偏移o,长度l)之类的读取命令时,所述系统返回连续的不可写字节,以及这种字节的数目,所述字节起始于A+o并且在A+o+l以前结束。
这种扩展允许应用程序重复地并且逐渐地向存储在WORM存储器上的对象附加数据。这使应用程序能有效地以不可改变的方式来记录事件,并且这是保留稳固的核查踪迹的关键,如某些规章所要求的那样。如果应用程序在存储器中保存最后的对象块,那么每当其向所述对象附加数据时,它往往更便于简单发布具有新长度的最后块的写操作。为了支持这种用途,如果在当前内容中的值与新值相同,那么当前系统往往进一步认为字节将是可写的。
举例来说,假定系统接收如下写入命令,写入(目标块地址A,数据D,长度l)。它把对应于A的两个物理块的当前内容读到D[1]和D[2]中。所述系统接下来计算D、D[1]和D[2]的前l个字节的数学函数(例如,逐位多数逻辑决议),并且把结果存回D[1]和D[2]的前l个字节中。接下来,所述系统把D[1]写回到对应于A的第一物理块,把D[2]写回到第二物理块。最后,所述系统读回两个物理块的当前内容,并且验证前l个字节和D相同。作为选择,在系统执行D[1]和D[2]的写操作以前,它察看D[1]/D[2]的前l个字节是否和D的前l个字节相同。如果不是,所述系统返回故障。
应注意的是,精细粒度WORM提供了更新块内随机粒度的能力。简单地把数据附加给一个块是一个特例,其可以被优化以便只需要少数状态位。例如,当初始化系统时,可以把预定位模式写入到每个块的开始处。所述预定位模式标记可以附加数据的位置。当把数据写入一个块时,所述系统首先寻找预定位模式的位置。然后,它把新数据添加到该位置并且把所述位模式压回。如果无法找到位模式,或者剩余空间对新数据而言不足,那么系统返回故障。
在描述精细粒度WORM的过程中,已经使用了读/写接口,用于明确指定数据的字节长度和/或偏移。显而易见的是,这种信息可以被编码为其它字段,尤其是在本发明将要使用现有块接口实现对更是如此。例如,所述字节长度可以被编码为块的最后字。于是,全部块请求必须被分解为两个请求。作为选择,可以如此来进行编码,即只有当另一字段具有特定属性时,最后的字才包含长度。举例来说,如果块地址的最高有效位没有被使用,那么可以将其设置为1,以便表明长度位于所述块的最后字中。如果现有接口具有块计数,那么可以使用其最高有效位来表明长度位于所传送数据的最后字中。如果块计数非常大以至于它使用最高有效位,那么把请求分解为两个。
可靠性如果存储介质是可移动的,就像大部分光学WORM介质那样,那么驱动器故障不会令数据丢失,这是因为所述介质可以被移除并且利用另一驱动器来读取。然而,对于诸如硬盘之类的不可移动的存储介质而言,盘故障意味着存储在该盘上的数据丢失。防止因盘故障而造成数据丢失的普遍方法是使用RAID。基本思想是保留所存储数据的某些冗余信息,以便当盘发生故障时,可以通过使用其它盘上的数据和/或冗余信息来重构存储在那些盘上的数据。
利用本发明,所述系统必须进一步确保保护块的可写/不可写状态以防止丢失。当把可写/不可写状态作为数据存储在底层存储器中时,通过用于底层存储器的标准RAID方案来保护它。当可写/不可写状态取决于数据副本之间的数学关系式时,RAID方案可以被增强以便更好地保护所述状态。
在一个实施例中,所述系统出自于这样的工厂,该工厂被初始化以便使所有块都是可写的。系统被密封,以便没有方法直接访问底层WMRM存储器或者直接对存储块的可写/不可写状态进行操作。
在图7中示出的示例性系统中,可以存在多个密封部件,其中每一密封部件包含一对盘,所述盘被初始化以便使得所述盘的其中一个包含另一盘的内容的逻辑非。所述密封部件按阵列形式布置,并且跨越所述部件将数据分条(stripe)。为了防止部件故障,计算纠错码并且将其存储在所述阵列中的一个或多个附加部件上。为了便于说明,在此处的论述中,我们使用具有奇偶校验(RAID-3)的位级条纹划分。显而易见的是,只要数据的所有条纹每次都被写入,当依照其它方式跨越密封部件(例如,RAID4/5)来分送数据时,并且当使用其它纠错码(例如,里德-索罗蒙码代码,Reed-Solomon Code)时,就可以采用相同的思想。
在这种方案中,数据在每一密封部件内被镜像,并且还通过RAID奇偶校验来加以保护。当存在两个盘都发生故障的两个或更多密封部件时,数据往往才会丢失。所述可写/不可写状态跨越阵列中所有部件被镜像,并且往往在所有部件遭受至少一个盘发生故障时才会丢失。这种系统因此非常可靠,并且可以容许任何三个盘发生故障,并且容许最多n个盘发生故障,其中n是密封部件的数目。
失效部件的恢复过程操作如下。首先,对于每个将要被恢复的块而言,从阵列中其它部件的每个中读取相应块。使用早先指定的接口,这往往意味着向每个其它部件发布命令读取(目标块地址A,数据D,长度l),其中A是将要被恢复的块地址。其次,检查从完全发挥功能的部件(没有盘故障的部件)的每一个返回的长度l的一致性并且由l_来表示。第三,计算每个返回数据的相应前l_字节的XOR并且由D_表示。最后,通过命令写入(目标块地址A,计算的数据D_,长度l_)把所计算的数据写入替代部件。
当一个部件中只有其中一个盘已经发生故障时,可以如下所述更加有效地执行恢复过程。首先,从部分发生故障的部件中读取将要被恢复的块中的数据。其次,通过从完全发挥功能的部件读取相应块来确定所述块的状态。最后,把数据及其状态写入替代部件。使用上述接口,这往往涉及发布如下命令(1)到部分发生故障的部件的读取(目标块地址A,数据D_);(2)到完全发挥功能的部件的读取(目标块地址A,数据D,长度l_);以及(3)到替代部件的写入(目标块地址A,数据D_,长度l_。
应注意的是,当服务于读取请求时,相应的奇偶校验被读取并且被重新计算以便验证数据的完整性。在不需要验证的环境下,奇偶校验可以均匀地分布在阵列的所有部件当中,以便平衡每一部件上的工作量,如RAID-5中那样。
虽然以上的讨论集中于独立地描述外部不可重写性、集成状态以及集成状态和测试的各种实施例,但是应该理解的是,所述原理可依照组合形式加以应用以便实现更加稳固的对数据改写的保护措施。还应该理解的是,虽然以上的讨论集中于硬盘,但是用于加强WMRM存储器上的WORM属性的相同原理可以在WMRM存储器由其它存储器设备/系统以及存储器设备/系统的组合(例如阵列)组成时应用,所述其它存储器设备/系统诸如是MRAM以及MEMS。
此外,虽然作为此处所示出并且详细说明的用于使用WMRM存储器实现可靠的WORM存储器的特定系统和方法,完全能够实现上述的发明目的,但是应该理解的是,它是本发明当前优选的实施例,并且由此代表可通过本发明广泛构想的主题,本发明的范围完全包含本领域技术人员显而易见的其它实施例,并且本发明的范围因此仅由所附权利要求来限定,在权利要求中以单数限定的元件除非明确说明否则不意味着是“一个且仅有一个”的意思,而是指“一个或多个”。对于系统或方法而言,不需要解决本发明设法解决的每个问题,它将由当前的权利要求书来包含。此外,不管元件、部件或者方法步骤在权利要求书中是否明确讲述,但是不打算使当前公开内容中的元件、部件或者方法步骤对公众而言是专用的。此处缺少明确定义的情况下,权利要求项将会给出所有普通并且惯用的含义,这些是与本说明书和文件历史不矛盾的。
权利要求
1.一种用于确保存储在可重写存储器上的数据不可改变的方法,包括把存储器的选定的用户可寻址块初始化为可写状态;接受将存储在指定的用户可寻址块中的数据;确定所指定的块是否是可写的;把所接受的数据存储至可重写存储器;并且把指定块的状态设置为不可写。
2.如权利要求1所述的方法,其中确定指定块是否是可写的步骤包括测试与指定块相关联的状态,并且如果指定块中的至少一个是不可写的,则返回错误。
3.如权利要求1所述的方法,其中与每一个用户可寻址块相关联的状态被编码在那个块的内容中,并且其中当在所述块中存储数据时,已编码的状态被自动地并且不可避免地改变为不可写。
4.如权利要求1所述的方法,其中把存储器的选定的用户可寻址块初始化为可写状态的步骤包括在所选择的块中存储预定位模式,并且其中确定指定块是否可写的步骤包括测试指定块的内容是否包括预定位模式。
5.如权利要求1所述的方法,其中存储器的每一个用户可寻址块被映射至可重写存储器的至少一个块,并且把存储器的选定的用户可寻址块初始化为可写状态的步骤包括把预定位模式存储到可重写存储器的相应块中,以便对于存储器的每个选定的用户可寻址块而言,可重写存储器的相应块的内容满足预定的数学关系。
6.如权利要求5所述的方法,其中确定指定块是否可写的步骤包括测试可重写存储器的相应块的内容是否满足预定的数学关系。
7.如权利要求6所述的方法,其中所述数学关系是逻辑非。
8.如权利要求6所述的方法,其中确定指定块是否可写的步骤与在所述块中存储数据的实际操作被数学集成,以便如果块的状态是可写的,那么数据只能被存储在该块中。
9.如权利要求8所述的方法,其中把所接受的数据存储至可重写存储器的步骤包括读取对应于指定块的可重写存储器的块的内容;执行所读取内容和所接受数据的数学函数;以及在对应于指定块的可重写存储器的块中存储计算结果。
10.如权利要求9所述的方法,其中所述数学函数是多数逻辑决议。
11.如权利要求1所述的方法,其中按照小于所述块的精细粒度保持所述状态,以便可以将数据附加到所述块。
12.如权利要求1所述的方法,其中如果第一可重写存储器发生故障,那么在至少第二可重写存储器上对所述块的内容和状态进行复制或者使用数学代码产生冗余。
13.如权利要求12所述的方法,其中所述数学代码包括纠错码以及奇偶校验。
14.如权利要求1所述的方法,还包括在状态已经被更新为不可写之后,确认已经成功地执行了写操作。
15.如权利要求1所述的方法,其中用户可寻址块的状态被保存在存储在用户可寻址块中的数据之外。
16.如权利要求15所述的方法,其中状态的数学函数被生成并且保留在存储器系统的非用户可寻址部分中。
17.如权利要求16所述的方法,其中所述状态以分布式方式存储在可重写存储器中,其中状态的分布规定所述状态位于与相应存储块更加接近的地方。
18.一种计算机程序产品,包括计算机程序存储设备;以及存储设备上的计算机可读指令,用于使计算机执行用于确保存储在可重写存储器上的数据不可改变的方法动作,所述方法动作包括把存储器的选定的用户可寻址块初始化为可写状态;接受将存储在指定的用户可寻址块中的数据;确定所指定的块是否是可写的;把所接受的数据存储至可重写存储器;并且把指定块的状态设置为不可写。
19.如权利要求18所述的计算机程序产品,其中确定指定块是否是可写的方法动作包括测试与指定块相关联的状态,并且如果指定块中的至少一个是不可写的,则返回错误。
20.如权利要求18所述的计算机程序产品,其中与每一个用户可寻址块相关联的状态被编码在那个块的内容中,并且其中当在所述块中存储数据时,已编码的状态被自动地并且不可避免地改变为不可写。
21.如权利要求18所述的计算机程序产品,其中把存储器的选定的用户可寻址块初始化为可写状态的方法动作包括在所选择的块中存储预定位模式,并且其中确定指定块是否可写的方法动作包括测试指定块的内容是否包括预定位模式。
22.如权利要求18所述的计算机程序产品,其中存储器的每一个用户可寻址块被映射至可重写存储器的至少一个块,并且把存储器的选定的用户可寻址块初始化为可写状态的方法动作包括把预定位模式存储到可重写存储器的相应块中,以便对于存储器的每个选定的用户可寻址块而言,可重写存储器的相应块的内容满足预定的数学关系。
23.如权利要求22所述的计算机程序产品,其中确定指定块是否可写的方法动作包括测试可重写存储器的相应块的内容是否满足预定的数学关系。
24.如权利要求23所述的计算机程序产品,其中所述数学关系是逻辑非。
25.如权利要求23所述的计算机程序产品,其中确定指定块是否可写的方法动作与在所述块中存储数据的实际操作被数学集成,以便如果块的状态是可写的,那么数据只能被存储在该块中。
26.如权利要求25所述的计算机程序产品,其中把所接受的数据存储至可重写存储器的方法动作包括读取对应于指定块的可重写存储器的块的内容;执行所读取内容和所接受数据的数学函数;以及在对应于指定块的可重写存储器的块中存储计算结果。
27.如权利要求26所述的计算机程序产品,其中所述数学函数是多数逻辑决议。
28.如权利要求18所述的计算机程序产品,其中按照小于所述块的精细粒度保持所述状态,以便可以将数据附加到所述块。
29.如权利要求18所述的计算机程序产品,其中如果第一可重写存储器发生故障,那么在至少第二可重写存储器上对所述块的内容和状态进行复制或者使用数学代码产生冗余。
30.如权利要求29所述的计算机程序产品,其中所述数学代码包括纠错码以及奇偶校验。
31.如权利要求18所述的计算机程序产品,还包括在状态已经被更新为不可写之后,确认已经成功地执行了写操作。
32.如权利要求18所述的计算机程序产品,其中用户可寻址块的状态被保存在存储在用户可寻址块中的数据之外。
33.如权利要求32所述的计算机程序产品,其中状态的数学函数被生成并且保留在存储器系统的非用户可寻址部分中。
34.如权利要求33所述的计算机程序产品,其中所述状态以分布式方式存储在可重写存储器中,其中状态的分布规定所述状态位于与相应存储块更加接近的位置。
35.一种用于在WMRM存储器系统上采用可靠的WORM存储器服务的方法,包括把计算机可读代码集成到系统中以便把存储器的选定的用户可寻址块初始化为可写状态;把计算机可读代码集成到系统中以便接受将存储在指定用户可寻址块中的数据;把计算机可读代码集成到系统中以便确定指定块是否是可写的;把计算机可读代码集成到系统中以便把所接受的数据存储至可重写存储器;并且把计算机可读代码集成到系统中以便把指定块的状态设置为不可写,借此,所述服务确保存储在WMRM存储器上的数据是不可改变的。
全文摘要
本发明提供了一种用于确保存储在可重写存储器上的数据不可改变的方法。所述方法包括把存储器的选定的用户可寻址块初始化为可写状态。另外,所述方法包括接受将存储在指定用户可寻址块中的数据。所述方法还包括确定所指定的块是否是可写的。所述方法还包括把所接受的数据存储至可重写存储器。此外,所述方法包括把指定块的状态设置为不可写。在一个实施例中,与每个块相关联的可写/不可写状态被编码并且存储在相应块的内容中。在另一个实施例中,确定指定块是否是可写的、把所接受的数据存储至可重写存储器并且把指定块的状态设置为不可写的步骤被集成并且是不可分割的。
文档编号G11C17/00GK1783342SQ20051011608
公开日2006年6月7日 申请日期2005年10月28日 优先权日2004年10月29日
发明者许为善, 翁绍基 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1