CN1818886A - 检测和恢复存储设备中丢失的写入 - Google Patents
检测和恢复存储设备中丢失的写入 Download PDFInfo
- Publication number
- CN1818886A CN1818886A CNA2006100045915A CN200610004591A CN1818886A CN 1818886 A CN1818886 A CN 1818886A CN A2006100045915 A CNA2006100045915 A CN A2006100045915A CN 200610004591 A CN200610004591 A CN 200610004591A CN 1818886 A CN1818886 A CN 1818886A
- Authority
- CN
- China
- Prior art keywords
- data
- storage medium
- speed cache
- write
- writes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01N—INVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES
- G01N33/00—Investigating or analysing materials by specific methods not covered by groups G01N1/00 - G01N31/00
- G01N33/48—Biological material, e.g. blood, urine; Haemocytometers
- G01N33/483—Physical analysis of biological material
- G01N33/487—Physical analysis of biological material of liquid biological material
- G01N33/49—Blood
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3187—Built-in tests
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61B—DIAGNOSIS; SURGERY; IDENTIFICATION
- A61B5/00—Measuring for diagnostic purposes; Identification of persons
- A61B5/145—Measuring characteristics of blood in vivo, e.g. gas concentration, pH value; Measuring characteristics of body fluids or tissues, e.g. interstitial fluid, cerebral tissue
- A61B5/1468—Measuring characteristics of blood in vivo, e.g. gas concentration, pH value; Measuring characteristics of body fluids or tissues, e.g. interstitial fluid, cerebral tissue using chemical or electrochemical methods, e.g. by polarographic means
Landscapes
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Hematology (AREA)
- Biophysics (AREA)
- Pathology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Surgery (AREA)
- Chemical Kinetics & Catalysis (AREA)
- Animal Behavior & Ethology (AREA)
- Heart & Thoracic Surgery (AREA)
- Public Health (AREA)
- Veterinary Medicine (AREA)
- Optics & Photonics (AREA)
- General Chemical & Material Sciences (AREA)
- Ecology (AREA)
- Medical Informatics (AREA)
- Urology & Nephrology (AREA)
- Food Science & Technology (AREA)
- Medicinal Chemistry (AREA)
- Analytical Chemistry (AREA)
- Biochemistry (AREA)
- Immunology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了这样的方法、系统、和制品,其中接收到将数据写入到存储介质中的请求。将请求写入到存储介质中的数据存储在高速缓存中。启动将数据写入到存储介质中。定期确定存储在高速缓存中的数据是否与写入到存储介质中的数据相同。
Description
技术领域
本公开涉及用于检测和恢复存储设备中的丢失(dropped)写入的方法、系统、和制品。
背景技术
将数据写入到盘驱动器中的写入操作可能间断地或者持续地出现故障。为了检测这样的故障,某些驱动器使用头读写前置放大电路,其检测写入电流是否低于某一阈值。检测电路的复杂性增加可能存在可靠性的问题。另外,检测阈值设置未必能确保检测出所有的写入错误。
某些实现方式可能试图通过定期将致动器移动到盘的保留区域、随后进行写入并且验证每个头写入了什么,来检测盘驱动器是否具有丢失写入问题。这种对所有头的可写性(writability)的验证可以称为持续问题自测试(PPST)。这种机制仅检测当写入问题是持续的、即正在丢失写入的驱动器继续丢失所有涉及坏的头(一个或多个)的后续写入时的丢失写入。PPST验证机制在检测间断的丢失写入方面不是十分有效的。另外,PPST验证不允许恢复由于在连续的PPST可写性验证之间的丢失写入而未被写入的数据。此外,如果增加PPST验证的频率以最小化数据损坏量,则输入/输出(I/O)性能可能会下降到不可接受的水平。
在某些实现方式中,可以通过在连续的PPST验证之间将所有写入保持在高速缓存中来加强PPST验证。如果检测到错误的写入,则直接从高速缓存中恢复数据。这种机制不能提供保护以防间断的丢失写入,因为未必可以通过头的定期检查检测出间断的丢失写入。此外,可能需要十分实质性和可能很昂贵的专用高速缓存,以减少由于PPST验证的开销而导致的性能降低。为捕获所有的写入而需要的高速缓存随着PPST验证之间的时间间隔的增加而增加。
某些提供了保护以防间断和持续的丢失写入的实现方式可以为每个写操作执行写入验证,其中每当执行写入时,盘驱动器完成旋转并且读取刚刚写入的数据,并且将刚刚写入的数据与写入缓冲器中的数据进行比较。虽然这保证了不丢失数据,但是它增加了驱动器的延迟,并且使所产生的I/O性能是不可接受的。
发明内容
提供了这样的方法、系统和制品,其中接收将数据写入到存储介质中的请求。将请求写入到存储介质中的数据存储在高速缓存中。启动将数据写入到存储介质中。定期确定存储在高速缓存中的数据是否与写入到存储介质中的数据相同。
在另外的实施例中,响应于确定存储在高速缓存中的数据与写入到存储介质中的数据相同,从高速缓存中删除所存储的数据。
在还有的另外的实施例中,响应于确定存储在高速缓存中的数据不同于写入到存储介质中的数据,对存储介质进行写保护。生成错误,其指示至少一个到该存储介质的丢失写入。
在进一步的实施例中,存储介质是盘,其中高速缓存具有比盘更小的存储容量,其中与盘相比、可以更可靠地将数据写入到高速缓存中,而且其中主机应用从高速缓存中而不是从存储介质中读取未验证的数据。
在更进一步的实施例中,确定高速缓存中的条目数目是否超过阈值,其中该条目对应于经高速缓存了的写入。合并这些条目中的写入地址,以生成列有合并写入地址的列表。对合并写入地址的列表进行排序,其中在较低次序的合并写入地址之前,对较高次序的合并写入地址进行对到存储介质的写入错误的验证。在某些实施例中,超过阈值,指示高速缓存被占用了超过百分之十。
在另外的实施例中,确定高速缓存中的条目数目是否超过阈值,其中该条目对应于写入地址。就与选定条目相对应的数据是否已经没有错误地写入到存储介质中进行验证。在某些实施例中,超过阈值,指示高速缓存被占用了超过百分之九十。在其它实施例中,该验证是响应于确定允许全面验证自测试而执行的,而且其中如果不允许全面验证自测试,则执行持续问题自测试。
在某些另外的实施例中,以一种次序执行到存储介质中的写入,并且以一种不同的次序对到存储介质中的写入执行验证。
在另外的实施例中,如果存储在高速缓存中的数据与写入到存储介质中的数据不同,则检测到间断写入错误。另外,在某些实施例中,还检测到持续写入错误。
附图说明
现在参见附图,其中类似的参考数字自始至终表示对应的部分:
图1说明了依据某些实施例的计算环境的框图;
图2说明了这样的框图,其示出了依据某些实施例、包含在计算环境中的部件和数据结构;
图3说明了依据某些实施例、用于从丢失写入中恢复的操作;
图4说明了依据某些实施例、在列表维护器(maintainer)应用中实现的操作;
图5说明了依据某些实施例、在全面验证自测试应用中实现的操作;
图6说明了依据某些实施例、用于处理读取请求的操作;以及
图7说明了其中实现了某些实施例的系统。
具体实施方式
在以下的描述中,将参考形成本公开的一部分并且说明了几个实施例的附图。应当理解,可以利用其它的实施例,而且可以进行结构和操作的改变。
某些实施例允许当盘驱动器间断或者持续地丢失整块写入并且未能报告该写入错误时,从盘驱动器中恢复数据。
图1说明了依据某些实施例的计算环境100的框图。诸如盘驱动器102之类的存储设备连接到诸如主机计算设备之类的计算设备104。盘驱动器102可以直接或者经由诸如存储区域网络(SAN)、局域网(LAN)、内部网、Internet等之类的网络连接到计算设备。
计算设备104可以是任何适当的计算设备,包括本领域中目前已知的那些设备,诸如客户机、存储服务器、服务器、个人计算机、工作站、大型机、中型计算机、网络应用、手掌式计算机、电话设备、刀片(blade)计算机、手持式计算机等。虽然图1示出了作为存储设备的盘驱动器102,但是在替换实施例中,存储设备可以是本领域中目前已知的任何其它适当的设备。在某些实施例中,示例盘驱动器102可以包含在独立磁盘冗余阵列(Redundant Array of IndependentDisk,RAID)中,或者可以包含在仅仅一串磁盘(Just a Bunch ofDisks,JBOD)中。
盘驱动器102可以包括:存储未验证的写入数据106a的高速缓存106;列表维护器应用108,其维护列有与存储在高速缓存106中的条目相对应的不相重叠的逻辑块地址和相关联计数的有序列表110;全面验证自测试(CVST)应用112,如果满足一组预定条件114中的一个或多个条件,则执行该应用;以及PPST应用116。盘驱动器102可以包含可以将数据写入其中的一个或多个盘118。
高速缓存106可以包括任何适当的非易失性存储器。在某些实施例中,与在盘118上的写入相比,用更大的可靠性程度执行在高速缓存上的写入。即使在发生盘驱动器102的重置的情况下,也保持存储在高速缓存106中的未验证的写入数据106a。
可以以软件、固件、硬件、或者它们的任何组合实现列表维护器应用108、CVST应用116、和PPST应用116。可以以任何适当的数据结构存储有序列表110和预定条件114。
在某些实施例中,当在盘驱动器102处从计算设备104接收到写入请求时,将与写入请求相对应的数据存储在高速缓存106中。如果在将数据写入到盘118的过程中存在任何错误,则CVST应用112和/或PPST应用116可以通过将写入到盘118的数据与存储在高速缓存106中的数据进行比较,来确定该错误。
图2说明了这样的框图,其示出了依据某些实施例、包含在计算环境100中的部件和数据结构。
列表维护器应用108维护有序列表110,其中该有序列表110可以包含具有不相重叠的逻辑块地址(LBA)和相关联的计数的条目。例如,该有序列表110中的一个示例条目可以对应于计数=4的到逻辑块地址=3的写入。这意味着将数据写入到四个逻辑块地址3、4、5、和6。在该有序列表110中没有包括逻辑块地址3、4、5或者6的其它条目,这是因为这些逻辑块地址3、4、5、和6早已经包括在该示例条目中了。列表维护器应用108还对该列表110进行排序,以提高从盘驱动器102中读取的性能。
当满足某些预定条件114时,CVST应用112可以选择有序列表110的子集200,并且发出相应的读取命令202,以从盘118中读取数据。在某些实施例中,所选择的子集200可以包括在有序列表110中最上面的5%的条目。例如,如果子集200中的选定条目对应于逻辑块地址=3以及计数=4,则CVST应用112可以发出从盘118中读取逻辑块地址3、4、5、6的读取命令202。
将存储在盘118中、作为执行读取命令202的结果的数据204与存储在高速缓存106中的数据进行比较(参考数字206)。可以生成指示比较结果的状态208,以便发送给列表维护器应用108。例如,如果状态208指示盘118中的数据204与高速缓存106中的数据匹配,则列表维护器应用108可以删除有序列表110中的相应条目,因为已经验证了与所删除的条目相对应的未验证的写入数据106a被正确地写入到盘118中。
因此,图2说明了某些实施例,其中列表维护器应用108和CVST应用112通过将写入到盘118的数据与写入到高速缓存106的数据进行比较,来对写入到盘118的数据进行验证。
图3说明了依据某些实施例、在盘驱动器102中实现的用于从丢失的写入中恢复的操作。
控制从块300开始,其中接收到把数据写入到盘驱动器102的盘118中的请求。盘驱动器102在高速缓存106中存储(块302处)与写入请求相对应的数据,其中该数据将被写入到盘118中。从块302开始,控制并行地继续进行到块304和308。
盘驱动器102确定(块304处)高速缓存106是否具有大量的条目。在某些实施例中,如果高速缓存106被占用超过10%,则可以认为高速缓存106具有大量条目。如果是的话,则盘驱动器102执行(在块306处)列表维护器应用108,以合并这些高速缓存条目。列表维护器应用108可以产生列有不相重叠的逻辑块地址和相关联计数的有序列表110。控制然后返回到块300。如果高速缓存106不具有大量的条目,则盘驱动器102将控制返回到块300,其中接收到写入请求。
盘驱动器102确定(在块308处)高速缓存106是否差不多全被占用。例如,在某些实施例中,如果高速缓存106被占用了超过90%,则认为高速缓存106差不多全被占用。盘驱动器102确定(在块310处)是否允许CVST处理。如果是的话,则盘驱动器102在有序列表110中的选定条目上执行(在块312处)CVST应用112。在某些实施例中,选定条目可以是有序列表110中具有最高次序的条目,例如,有序列表110中的最上面的5%的条目。控制返回到块300,其中接收到新的写入请求。如果盘驱动器102确定(在块308处)高速缓存106不是差不多全被占用,则控制也返回到块300。
如果盘驱动器102确定(在块310处)不允许CVST处理,则盘驱动器102立即执行(在块314处)PPST应用116,而且控制返回到块300。PPST应用116可以检测持续的丢失写入问题。在某些实施例中,因为在某些情况下只有当写入问题是持续的时对丢失写入进行检测才是恰当的,所以不允许CVST处理。在其中不允许CVST处理的这种实施例中,可以不必引起CVST处理的某些开销。
在某些实施例中,可以基于与在某些实施例中指示高速缓存的占用程度或者高速缓存中的条目数的预定阈值进行的比较,确定(在块308处)高速缓存是否差不多全被占用,和/或确定(在块304处)高速缓存是否具有大量的条目。
因此,图3说明了某些实施例,其中当高速缓存差不多全被占用时执行CVST应用112。CVST应用112从有序列表110中选择条目用于验证到盘118的验证写入,其中当高速缓存106中的条目数目超过预定阈值时,可以由列表维护器应用108积极地管理该有序列表110。
图4说明了依据某些实施例、在列表维持器应用108中实现的某些操作。
控制在块400处开始,其中启动列表维护器应用108的执行。从块400开始,控制并行继续进行到块402和406。
列表维护器应用108合并(在块402处)写入地址,其中写入地址包括经高速缓存了的写入的连续或者重叠的逻辑块地址和计数。因此,列表维护器应用108创建列有不相重叠的逻辑块地址和相关联计数的有序列表110。例如,具有计数=4的到LBA=3的写入和随后的具有计数=8的到LBA=5的写入,可以合并成为具有计数=10、LBA=3的单个地址,这是因为两个数据块是重叠的。这将对其逻辑块地址和相关联的计数是连续或者重叠的两个或更多写入的验证有效地减少成为单次读取。在替换实施例中,还可以合并两个或更多接近连续的写入。块402的结果是列有不重叠的逻辑块地址和计数的简化列表。
列表维护器应用108对有序列表110进行重新排序(在块404处),以提高随后从盘驱动器102中读取的性能。例如,在某些实施例中,可以基于相关联计数大小以及基于落在相同轨道上的逻辑块地址的数目对逻辑块地址进行排列。
在块406处,列表维护器应用108从CVST应用接收状态208通知。基于接收到的状态208通知,列表维护器应用108可以把新的主机写入逻辑块地址和计数添加(在块408处)到有序列表110中。列表维护器应用108还可以删除已经由CVST应用112执行了的逻辑块地址列表,其中存储在高速缓存中的与逻辑块地址相对应的数据已经成功地与写入到盘118中的数据相匹配。
因此,图4说明了某些实施例,其中列表维护器应用108维护列有不相重叠的逻辑块地址和相关联计数的有序列表,以便提高随后从盘驱动器102中读取的性能。
图5说明了依据某些实施例在CVST应用112中实现的操作。
控制在块500开始,其中启动CVST应用112。CVST应用112确定(在块502处)是否已经满足了预定条件114。预定条件可以确定要由CVST应用112从有序列表110中选择的条目的大小。
如果CVST应用112确定(在块502处)已经满足了预定条件114,则CVST应用112将由列表维护器应用108提供的有序列表110的子集200转换(在块504处)成为读取命令202。否则,CVST应用112继续确定(在块502处)是否已经满足了预定条件。
CVST应用112将所执行的从盘118的读取与表示高速缓存106中的未验证写入数据106a的相应高速缓存条目进行比较(在块506处)。
在块508处,CVST应用112确定高速缓存106中的数据是否与写入到盘118的数据相匹配。如果是的话,则CVST应用112从高速缓存106中删除(在块510处)相应的数据,并且将状态208通知发送(在块512处)给列表维护器应用108,其中列表维护器应用108管理有序列表110的修改和重新排序。
如果在块508处,对于所执行的读取,CVST应用112确定高速缓存106中的数据与写入到盘118中的数据不匹配,则CVST应用112将盘驱动器102设置(在块514处)为写保护模式,并且报告错误。当盘驱动器102处于写保护模式中的,不能把数据写入到盘118中。在盘驱动器102已经进入写保护模式之后,可以确定到盘118的写入错误的情况。可以从存储在高速缓存106中的未验证写入数据106a中恢复正确的数据。
可以由多个预定条件114确定由CVST应用112在块504执行的读取命令的数目。例如,如果在第一示例条件下,主机空闲时间是2秒,则CVST应用112可以在20%的有序列表110上执行。在第二示例条件下,从有序列表110中选出的条目数目可以基于主机的工作负荷。在第三示例条件下,从有序列表110中选出的条目数目可以基于正被使用的高速缓存106的量。例如,如果高速缓存被占用了90%,则CVST应用112可以选择有序列表110的5%。可以调整百分比数目以优化对盘118的读和写的性能。
因此,图5说明了某些实施例,其中CVST应用112使用预定条件114来验证在向盘118进行写入的同时是否已经出现了间断的写入错误。
图6说明了依据某些实施例、在盘驱动器102中实现的用于处理读取请求的操作。
控制在块600开始,其中盘驱动器102从计算设备104接收读取请求。盘驱动器102确定(在块602处)与读取请求相对应的数据是否是存在于高速缓存106中的未验证写入数据106a。如果是的话,则通过从高速缓存106中返回(在块604处)数据来满足读取请求。如果不是的话,则通过从盘118中返回(在块606处)数据来满足读取请求。
因此,图6说明了某些实施例,其中如果与读取请求相对应的数据是未验证的写入数据106a,则从高速缓存106中满足来自外部主机的读取请求。因此,响应于读取请求而返回的数据是没有错误的。
某些实施例提供了列表维护器应用108和CVST应用112,其中CVST应用112通过使用由列表维护器应用108提供给CVST应用112的有序列表110,将高速缓存106中的一些写入数据和从盘118读取的数据进行比较。某些实施例通过简化存储在高速缓存106中的写入数目,来提高性能。此外,如果当写入高速缓存106接近全被占用时用CVST应用替换实现PPST的PPST应用,则某些实施例还提供了针对间断和持续的丢失写入的保护。
某些实施例可以通过使用PPST应用116作为丢失写入检查、同时使用列表维护器应用108和CVST应用112减少检测阶段之间写入高速缓存106中的内容,来提供针对持续的丢失写入的完全保护。在这种情况下,当写入高速缓存106接近全被占用时,可以调用PPST应用116,而且如果没有检测出错误,则刷新经写入高速缓存的条目。
在某些实施例中,可以以后台模式或者实时地执行数据的恢复。某些实施例与接口无关地在任何盘驱动器上提供了针对任何类型的丢失写入问题的保护。丢失写入可以是间断的或者持续的,并且可以减少对主机应用的破坏量。某些提供保护以防盘驱动器中的丢失写入的实施例未必会显著地影响输入/输出(I/O)的性能。
包含列表维护器应用108,延长了高速缓存106到达差不多全被占用的状态期间的时段,并且因此延缓了可能由PPST或者CVST验证的开销所导致的性能影响。在某些实施例中,在长的空闲周期期间,CVST和PPST的组合可以刷新整个高速缓存106。对于低的主机工作负荷来说,从主机中减少的速率可以比写入增加的速率更快,而且这也可能导致刷新整个高速缓存。因此,在这样的情况下,高速缓存106可能从来不会接近全被占用,并且可能不需要运行后续的PPST或者CVST。
在某些实施例中,与其中验证到盘118的每次写入的情况相比,通过简化逻辑块地址和相关联的计数、重新排序有序列表110中的条目、以及将读取队列发送到盘118,验证处理是更有效的。某些实施例将重叠的写入组合成为单次读取并且将重新排序的读取作为队列进行发送,以允许盘驱动器通过优化对不同柱面的搜索以最大化给定时间内的读取数目,来进一步提高读取性能。
补充的实施例细节
所描述的技术可以实现为涉及软件、固件、微码和/或它们的任意组合的方法、设备或者制品。此处使用的术语“制品”是指程序指令、代码和/或逻辑,它们在电路(例如,集成电路芯片、可编程门阵列(PGA)、ASIC等)和/或计算机可读介质(例如,诸如硬盘驱动器、软盘、磁带之类的磁存储介质)、光存储设备(例如,CD-ROM、DVD-ROM、光盘等)、易失和非易失性存储器设备(例如,电可擦可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、固件、可编程逻辑等)中实现。可以由诸如处理器之类的机器访问和执行计算机可读介质中的代码。在某些实施例中,可以进一步通过传输介质或者经由网络从文件服务器访问其中构成实施例的代码。在此情况下,其中实现了所述代码的制品可以包含传输介质,诸如网络传输线、无线传输介质、通过空间、无线电波、红外信号等传播的信号。当然,本领域的技术人员将会认识到,可以进行许多修改而没有背离实施例的范围,而且该制品可以包含本领域已知的任何信息承载介质。例如,制品包含已经在其中存储了指令的存储介质,当这些指令由机器执行时导致执行操作。
图7说明了其中可以实现某些实施例的系统700的框图。在某些实施例中,可以依据系统700实现计算设备102和存储设备104。系统700可以包括电路702,其在某些实施例中可以包括处理器704。系统700还可以包括存储器706(例如,易失性存储器设备)和存储设备708。系统700的某些单元可以或者未必可以在计算设备102和存储设备104中的某些或者全部设备中找到。存储设备708可以包括非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储设备708可以包含内部存储设备、附加的存储设备和/或可网络访问的存储设备。系统700可以包括程序逻辑710,其包含可以载入到存储器706中并且由处理器704或者电路702执行的代码712。在某些实施例中,包括代码712的程序逻辑710可以存储在存储设备708中。在某些其它实施例中,可以在电路702中实现程序逻辑710。因此,虽然图7示出了与其它单元分离的程序逻辑710,但是该程序逻辑710可以在存储器706和/或电路702中实现。
某些实施例可以旨在提供一种用于由人或者自动化的处理集成计算机可读代码将计算指令部署到计算系统中的方法,其中允许该代码与计算系统相结合以执行所述实施例的操作。
图3-6中说明的至少某些操作可以并行以及顺序地执行。在替换实施例中,可以以不同的次序执行某些操作,或者修改或删除某些操作。
此外,为了说明的目的,已经以分离的模块描述了许多软件和硬件部件。这样的部件可以集成到更少数量的部件中,或者划分为更多数量的部件。另外,被描述为由特定部件执行的某些操作可以由其它部件执行。
图1-7中所示或者其中参考的数据结构和部件被描述为具有特定类型的信息。在替换实施例中,与附图中示出或者参考的那些数据结构和部件相比,可以与之不同地构造数据结构和部件,并且它们可以具有更少、更多或者不同的字段或者不同功能。因此,为了说明和描述的目的,已经给出了实施例的上述描述。它并不是穷举的,并且也不打算将实施例限制为所公开的精确形式。根据上述示教,许多修改和改变都是可能的。
Claims (28)
1、一种方法,包含:
接收将数据写入到存储介质中的请求;
将请求写入到存储介质中的数据存储在高速缓存中;
启动该数据到存储介质中的写入;以及
定期确定存储在高速缓存中的数据是否与写入到存储介质中的数据相同。
2、如权利要求1所述的方法,还包含:
响应于确定存储在高速缓存中的数据与写入到存储介质中的数据相同,从高速缓存中删除所存储的数据。
3、如权利要求1所述的方法,还包含:
响应于确定存储在高速缓存中的数据不同于写入到存储介质中的数据,对存储介质进行写保护;以及
生成错误,其指示至少一个到该存储介质的丢失写入。
4、如权利要求1所述的方法,其中,存储介质是盘,其中高速缓存具有比盘小的存储容量,其中与盘相比可以更可靠地将数据写入到高速缓存中,而且其中主机应用从高速缓存中而不是从存储介质中读取未验证的数据。
5、如权利要求1所述的方法,还包含:
确定高速缓存中的条目数是否超过阈值,其中该条目与经高速缓存的写入相对应;
合并条目中的写入地址,以生成列有合并的写入地址的列表;以及
对列有合并的写入地址的列表进行排序,其中在较低次序的合并写入地址之前,对较高次序的合并写入地址进行对到存储介质的写入错误的验证。
6、如权利要求5所述的方法,其中,超过阈值指示高速缓存被占用了超过百分之十。
7、如权利要求1所述的方法,还包含:
确定高速缓存中的条目数是否超过阈值,其中该条目与写入地址相对应;以及
验证与选定条目相对应的数据是否已经没有错误地写入到存储介质中了。
8、如权利要求7所述的方法,其中,超过阈值指示高速缓存被占用了超过百分之九十。
9、如权利要求7所述的方法,其中,验证是响应于确定允许全面验证自测试而执行的,而且其中如果不允许全面验证自测试,则执行持续问题自测试。
10、如权利要求1所述的方法,其中,以一种次序执行到存储介质中的写入,并且以一种不同的次序对到存储介质中的写入执行验证。
11、如权利要求1所述的方法,其中,如果存储在高速缓存中的数据不同于写入到存储介质中的数据,则检测到间断的写入错误。
12、如权利要求11所述的方法,其中,还会检测到持续的写入错误。
13、一种系统,包含:
存储器;
存储介质,连接到存储器;
高速缓存,连接到存储器;以及
处理器,连接到存储器,其中处理器可操作用于:
(i)接收将数据写入到存储介质中的请求;
(ii)将请求写入到存储介质中的数据存储在高速缓存中;
(iii)启动该数据到存储介质中的写入;以及
(iv)定期确定存储在高速缓存中的数据是否与写入到存储介质中的数据相同。
14、如权利要求13所述的系统,其中处理器还可操作用于:
响应于确定存储在高速缓存中的数据与写入到存储介质中的数据相同,从高速缓存中删除所存储的数据。
15、如权利要求13所述的系统,其中处理器还可操作用于:
响应于确定存储在高速缓存中的数据不同于写入到存储介质中的数据,对存储介质进行写保护;以及
生成错误,其指示至少一个到该存储介质的丢失写入。
16、如权利要求13所述的系统,其中,存储介质是盘,其中高速缓存具有比盘小的存储容量,其中与盘相比可以更可靠地将数据写入到高速缓存中,而且其中主机应用从高速缓存中而不是从存储介质中读取未验证的数据。
17、如权利要求13所述的系统,其中处理器还可操作用于:
确定高速缓存中的条目数是否超过阈值,其中该条目与经高速缓存的写入相对应;
合并条目中的写入地址,以生成列有合并的写入地址的列表;以及
对列有合并的写入地址的列表进行排序,其中在较低次序的合并写入地址之前,对较高次序的合并写入地址进行对到存储介质的写入错误的验证。
18、如权利要求17所述的系统,其中,超过阈值指示高速缓存被占用了超过百分之十。
19、如权利要求13所述的系统,其中处理器还可操作用于:
确定高速缓存中的条目数是否超过阈值,其中该条目与写入地址相对应;以及
验证与选定条目相对应的数据是否已经没有错误地写入到存储介质中了。
20、如权利要求19所述的系统,其中,超过阈值指示高速缓存被占用了超过百分之九十。
21、如权利要求19所述的系统,其中,验证是响应于确定允许全面验证自测试而执行的,而且其中如果不允许全面验证自测试,则执行持续问题自测试。
22、如权利要求13所述的系统,其中,以一种次序执行到存储介质中的写入,并且以一种不同的次序对到存储介质中的写入执行验证。
23、如权利要求13所述的系统,其中,如果存储在高速缓存中的数据不同于写入到存储介质中的数据,则检测到间断的写入错误。
24、如权利要求23所述的系统,其中,还检测到持续的写入错误。
25、一种系统,包含:
存储介质;
高速缓存,连接到该存储介质;
用于接收将数据写入到存储介质中的请求的装置;
用于将请求写入到存储介质中的数据存储在高速缓存中的装置;
用于启动数据到存储介质中的写入的装置;以及
用于定期确定存储在高速缓存中的数据是否与写入到存储介质中的数据相同的装置。
26、如权利要求25所述的系统,还包含:
用于响应于确定存储在高速缓存中的数据不同于写入到存储介质中的数据,而对存储介质进行写保护的装置;以及
用于生成错误的装置,其中错误指示至少一个到该存储介质的丢失写入。
27、如权利要求25所述的系统,还包含:
用于确定高速缓存中的条目数是否超过阈值的装置,其中该条目与经高速缓存的写入相对应;
用于合并条目中的写入地址以生成列有合并的写入地址的列表的装置;以及
用于对合并的写入地址列表进行排序的装置,其中在较低次序的合并写入地址之前,对较高次序的合并写入地址进行对到存储介质的写入错误的验证。
28、一种制品,其中,该制品能够导致执行操作,该操作包含任何一项先前的方法权利要求中的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/053,226 US7360112B2 (en) | 2005-02-07 | 2005-02-07 | Detection and recovery of dropped writes in storage devices |
US11/053,226 | 2005-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1818886A true CN1818886A (zh) | 2006-08-16 |
CN100485643C CN100485643C (zh) | 2009-05-06 |
Family
ID=36781337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100045915A Active CN100485643C (zh) | 2005-02-07 | 2006-02-06 | 检测和恢复存储设备中丢失的写入的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7360112B2 (zh) |
JP (1) | JP4988214B2 (zh) |
KR (1) | KR100763567B1 (zh) |
CN (1) | CN100485643C (zh) |
TW (1) | TWI365448B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104838365A (zh) * | 2012-12-13 | 2015-08-12 | 西部数据技术公司 | 用于配置可启动映像至外部驱动器上的方法和系统 |
CN106469119A (zh) * | 2015-08-10 | 2017-03-01 | 北京忆恒创源科技有限公司 | 一种基于nvdimm的数据写缓存方法及其装置 |
CN111007991A (zh) * | 2015-08-13 | 2020-04-14 | 北京忆恒创源科技有限公司 | 基于nvdimm分离读写请求的方法及其计算机 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7421535B2 (en) * | 2004-05-10 | 2008-09-02 | International Business Machines Corporation | Method for demoting tracks from cache |
US7360112B2 (en) * | 2005-02-07 | 2008-04-15 | International Business Machines Corporation | Detection and recovery of dropped writes in storage devices |
GB0507912D0 (en) * | 2005-04-20 | 2005-05-25 | Ibm | Disk drive and method for protecting data writes in a disk drive |
US7523319B2 (en) * | 2005-11-16 | 2009-04-21 | Lenovo (Singapore) Pte. Ltd. | System and method for tracking changed LBAs on disk drive |
JP4425904B2 (ja) * | 2006-12-21 | 2010-03-03 | 富士通株式会社 | ライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラム |
US8375177B2 (en) * | 2007-05-01 | 2013-02-12 | International Business Machines Corporation | Apparatus, system, and method for efficiently verifying writes |
US7752489B2 (en) * | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
US7793168B2 (en) * | 2007-08-23 | 2010-09-07 | International Business Machines Corporation | Detection and correction of dropped write errors in a data storage system |
US7793167B2 (en) * | 2007-08-23 | 2010-09-07 | International Business Machines Corporation | Detection and correction of dropped write errors in a data storage system |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US8140909B2 (en) * | 2008-02-22 | 2012-03-20 | International Business Machines Corporation | Efficient method to detect disk write errors |
US7908512B2 (en) * | 2008-03-05 | 2011-03-15 | International Business Machines Corporation | Method and system for cache-based dropped write protection in data storage systems |
JP5245472B2 (ja) * | 2008-03-13 | 2013-07-24 | 富士通株式会社 | 制御方法、ディスクアレイ装置 |
TW201111986A (en) * | 2009-09-29 | 2011-04-01 | Silicon Motion Inc | Memory apparatus and data access method for memories |
US8667326B2 (en) | 2011-05-23 | 2014-03-04 | International Business Machines Corporation | Dual hard disk drive system and method for dropped write detection and recovery |
US9798623B2 (en) * | 2012-05-11 | 2017-10-24 | Seagate Technology Llc | Using cache to manage errors in primary storage |
JP2014071740A (ja) * | 2012-09-28 | 2014-04-21 | Fujitsu Ltd | 情報処理装置、管理方法、及び管理プログラム |
US9141484B2 (en) | 2013-03-15 | 2015-09-22 | Seagate Technology Llc | Transiently maintaining ECC |
GB2514611A (en) | 2013-05-31 | 2014-12-03 | Ibm | Storage integrity validator |
US9639287B1 (en) | 2015-06-29 | 2017-05-02 | Western Digital Technologies, Inc. | Write command reporting |
KR102564774B1 (ko) * | 2018-09-18 | 2023-08-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법 |
US11080136B2 (en) | 2020-01-06 | 2021-08-03 | International Business Machines Corporation | Dropped write error detection |
US11796594B2 (en) | 2020-11-05 | 2023-10-24 | Schneider Electric It Corporation | PWM capture function for event analysis |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2546410B2 (ja) * | 1990-05-10 | 1996-10-23 | 日本電気株式会社 | 周辺制御装置 |
US5485439A (en) * | 1990-10-30 | 1996-01-16 | Matsushita Electric Industrial Co., Ltd. | Method for recording/reproducing information and apparatus therefor |
US5274799A (en) | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
CA2105085A1 (en) | 1991-03-05 | 1992-09-06 | Marvin Lautzenheiser | Cache memory system and method of operating the cache memory system |
US5379417A (en) | 1991-11-25 | 1995-01-03 | Tandem Computers Incorporated | System and method for ensuring write data integrity in a redundant array data storage system |
US5557770A (en) | 1993-03-24 | 1996-09-17 | International Business Machines Corporation | Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk |
US5632012A (en) | 1993-11-24 | 1997-05-20 | Storage Technology Corporation | Disk scrubbing system |
JPH07210327A (ja) * | 1994-01-25 | 1995-08-11 | Hitachi Ltd | ディスク装置用データベリファイ装置 |
US6412045B1 (en) | 1995-05-23 | 2002-06-25 | Lsi Logic Corporation | Method for transferring data from a host computer to a storage media using selectable caching strategies |
JP3020833B2 (ja) * | 1995-06-19 | 2000-03-15 | 株式会社東芝 | チェックポイント取得システム |
FI103440B1 (fi) * | 1995-11-02 | 1999-06-30 | Nokia Telecommunications Oy | Datan tallennuksen varmentaminen välimuistia käyttävälle nauha-asemalle |
JP2001142650A (ja) * | 1999-11-18 | 2001-05-25 | Nec Corp | アレイディスク制御方法及び装置 |
US6584589B1 (en) * | 2000-02-04 | 2003-06-24 | Hewlett-Packard Development Company, L.P. | Self-testing of magneto-resistive memory arrays |
US6658533B1 (en) | 2000-09-21 | 2003-12-02 | Intel Corporation | Method and apparatus for write cache flush and fill mechanisms |
US6928518B2 (en) * | 2001-11-01 | 2005-08-09 | Sun Microsystems, Inc. | Disk drive employing adaptive flushing of a write cache |
JP4012420B2 (ja) | 2002-03-12 | 2007-11-21 | 株式会社日立製作所 | 磁気ディスク装置及びディスク制御装置 |
JP4371724B2 (ja) * | 2003-07-03 | 2009-11-25 | 株式会社日立製作所 | 記憶システム及び記憶装置システム |
CN1264096C (zh) * | 2003-11-17 | 2006-07-12 | 中兴通讯股份有限公司 | 一种fifo存储器的数据处理方法 |
JP4156499B2 (ja) * | 2003-11-28 | 2008-09-24 | 株式会社日立製作所 | ディスクアレイ装置 |
US20060010173A1 (en) * | 2004-06-30 | 2006-01-12 | Kilday Roger W | Methods and systems for client-side, on-disk caching |
JP2006134064A (ja) * | 2004-11-05 | 2006-05-25 | Hitachi Ltd | 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法 |
US7596738B2 (en) * | 2004-11-17 | 2009-09-29 | Sun Microsystems, Inc. | Method and apparatus for classifying memory errors |
US7971001B2 (en) * | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
US7441081B2 (en) * | 2004-12-29 | 2008-10-21 | Lsi Corporation | Write-back caching for disk drives |
US7360112B2 (en) | 2005-02-07 | 2008-04-15 | International Business Machines Corporation | Detection and recovery of dropped writes in storage devices |
JP4017020B2 (ja) | 2007-07-20 | 2007-12-05 | 株式会社三洋物産 | 遊技機 |
-
2005
- 2005-02-07 US US11/053,226 patent/US7360112B2/en not_active Expired - Fee Related
-
2006
- 2006-01-06 KR KR1020060001670A patent/KR100763567B1/ko not_active IP Right Cessation
- 2006-01-26 JP JP2006017056A patent/JP4988214B2/ja active Active
- 2006-02-06 CN CNB2006100045915A patent/CN100485643C/zh active Active
- 2006-02-06 TW TW095103853A patent/TWI365448B/zh not_active IP Right Cessation
-
2007
- 2007-12-04 US US11/950,321 patent/US8108613B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104838365A (zh) * | 2012-12-13 | 2015-08-12 | 西部数据技术公司 | 用于配置可启动映像至外部驱动器上的方法和系统 |
CN104838365B (zh) * | 2012-12-13 | 2019-07-02 | 西部数据技术公司 | 用于配置可启动映像至外部驱动器上的方法和系统 |
CN106469119A (zh) * | 2015-08-10 | 2017-03-01 | 北京忆恒创源科技有限公司 | 一种基于nvdimm的数据写缓存方法及其装置 |
CN111007991A (zh) * | 2015-08-13 | 2020-04-14 | 北京忆恒创源科技有限公司 | 基于nvdimm分离读写请求的方法及其计算机 |
CN111007991B (zh) * | 2015-08-13 | 2024-01-26 | 北京忆恒创源科技股份有限公司 | 基于nvdimm分离读写请求的方法及其计算机 |
Also Published As
Publication number | Publication date |
---|---|
US20060179381A1 (en) | 2006-08-10 |
KR20060090166A (ko) | 2006-08-10 |
JP4988214B2 (ja) | 2012-08-01 |
US7360112B2 (en) | 2008-04-15 |
JP2006221623A (ja) | 2006-08-24 |
CN100485643C (zh) | 2009-05-06 |
US8108613B2 (en) | 2012-01-31 |
US20080091893A1 (en) | 2008-04-17 |
KR100763567B1 (ko) | 2007-10-04 |
TW200636687A (en) | 2006-10-16 |
TWI365448B (en) | 2012-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1818886A (zh) | 检测和恢复存储设备中丢失的写入 | |
US10372558B2 (en) | Storage device, an operating method of the storage device and an operating method of a computing system including the storage device and a host device | |
US10884914B2 (en) | Regrouping data during relocation to facilitate write amplification reduction | |
US10445016B2 (en) | Techniques for storage command processing | |
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及系统 | |
US10445200B2 (en) | Storage device having various recovery methods and recovery modes | |
KR101459861B1 (ko) | 스트라이프 기반 메모리 작동 | |
US7856528B1 (en) | Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system | |
CN102194527B (zh) | 半导体存储器装置 | |
US8560881B2 (en) | FLASH-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes | |
US10467094B2 (en) | Method and apparatus for performing data recovery in a raid storage | |
US10346245B2 (en) | Data storage system and data storage method | |
US20150339187A1 (en) | System and method of storing redundancy data | |
US20170116070A1 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
US10254981B2 (en) | Adaptive health grading for a non-volatile memory | |
US9740609B1 (en) | Garbage collection techniques for a data storage system | |
US9389792B1 (en) | Reducing read-after-write errors in a non-volatile memory system using an old data copy | |
CN109213693B (zh) | 存储管理方法、存储系统和计算机程序产品 | |
US10977181B2 (en) | Data placement in write cache architecture supporting read heat data separation | |
US20170115900A1 (en) | Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell | |
CN103336727A (zh) | Nand闪存存储设备及对其进行数据操作的方法 | |
CN108172261B (zh) | 由数据存储设备的解码期间的流水线延迟检测 | |
CN1253791C (zh) | 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 | |
US10901866B2 (en) | Failure detection and data recovery in a storage system | |
US11573893B2 (en) | Storage system and method for validation of hints prior to garbage collection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |