1. Technical Field
This disclosure relates to data recovery in memory storage systems. More particularly, the disclosure relates to systems and methods for recovering metadata in a disk drive system.
2. Description of the Related Art
Updating file systems to reflect changes to files and directories may require multiple separate write operations. As a result, interruptions may occur between write operations, such as a power failure or system crash, leaving data structures in an intermediate or invalid state. Journaling, and various other techniques, attempt to provide more accurate and/or efficient recovery from a system failure event. Journaling file systems keep track of changes to be made in a journal before committing them to the main file system. There is a need for more efficient and/or effective methods of data recovery in disk drives, such as shingled disk drives.
Systems and methods that embody the various features of the invention will now be described with reference to the following drawings, in which:
While certain embodiments are described, these embodiments are presented by way of example only, and are not intended to limit the scope of protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the scope of protection.
Overview
A disk drive may contain one or more translation tables that contain translation information mapping logical addresses used by a host system to access a disk drive to physical locations or addresses in the disk drive. For example, the host can access the disk drive (e.g., to store and/or retrieve data) as a linear array of logical block addresses (LBA's), and the disk drive can utilize a translation table to map the logical block addresses to physical locations on a magnetic disk where host data is stored. Translation tables can be used by the disk drive to locate host data stored in the drive. In addition, the disk drive can be configured to store metadata information used by the disk drive to keep track of locations where host data is stored. For example, metadata for a particular track can include the mapping of logical addresses for which host data is stored on the track to physical addresses where host data is stored. Typically, the host system does not use metadata information. Instead, metadata information is used by the disk drive to locate host data stored in the disk drive. In an embodiment of a system including a shingled disk drive, at least two tables are maintained, namely a translation table and a shingled zone table.
Translation information may be saved at regular time intervals to avoid data loss due to system failure. If interruption occurs between saving events, some translation information may be lost. Therefore, the drive may not be able to locate and access logical addresses that were written after the last successful save.
In some embodiments of the present invention, metadata information stored in nonvolatile storage regions (e.g., tracks, sectors, etc.), are utilized to store translation information that can be recovered after a system failure, such as an unexpected power loss. Metadata information is also referred to as Write Logs (“WL's”) in this disclosure. In an embodiment, a WL is associated with a portion of host data stored on the track on which the WL is also stored. Locating and interpreting stored WL's provides a mechanism for reconstructing translation tables following a system failure.
System Overview
In one embodiment, the disk 102 comprises a plurality of servo sectors 240-24N that define the plurality of data tracks 10. The controller 14 processes the read signal to demodulate the servo sectors 240-24N into a position error signal (PES). The PES is filtered with a suitable compensation filter to generate a control signal 26 applied to a voice coil motor (VCM) 110 which rotates the actuator arm 4 about a pivot in order to position the head 104 radially over the disk 102 in a direction that reduces the PES. The servo sectors 240-24N may comprise any suitable position information, and in one embodiment, as is shown in
Storage system 220 can store data communicated by the host system 210. That is, the storage system 220 can act as memory storage for the host system 210. To facilitate this function, the controller 230 can implement a logical interface. The logical interface can present to the host system 210 the memory of storage system 220 as a set of logical addresses (e.g., contiguous address) where data can be stored. Internally, the controller 230 can map logical addresses to various physical memory addresses in the magnetic media 264.
In an embodiment where the memory 260 comprises a shingled drive, the storage system 220 uses a translation table containing known addresses within the memory 260 where host data is stored. In an embodiment, system 200 accomplishes recovery of lost translation information by identifying metadata information stored in non-volatile memory 260 that is valid but absent from the translation table containing known addresses within the memory 260 where host data is stored. In one embodiment, controller 230 includes a translation table manager 232 that may control storage and/or recovery of metadata in accordance with one or more embodiments disclosed herein. Recovered metadata content may be presented to the translation table manager 232 for inclusion in a database of known physical locations in the nonvolatile memory 260 where host data is stored (e.g., the translation table). If the translation table is missing any translation information due to, for example, an unexpected power interruption, the presented information recovered from the metadata may be used to recover such missing translation information
Metadata Storage
In one embodiment, metadata portions, referred to herein as write-logs (“WL's”) for convenience, are labeled or characterized using one or more identifiers in order to provide a mechanism for identifying valid WL's. One or more identifiers may provide information indicating whether a WL exists within one or more translation tables, or whether it exists within a range of valid records stored within one or more translation tables. In an embodiment, the one or more identifiers are sequence numbers that relate to one or more identifiers of another WL.
In an embodiment, GSN 312 (i.e., “global sequence number”) is an identifier that is unique across sub-sections (e.g., “zones”) within a given partition of a memory storage system (e.g., magnetic media 264). GSN 312 may be only unique within the partition in which it resides. In an embodiment, LSN 314 (i.e., “local sequence number”) is an identifier that is local with respect to a subsection, or zone, in which it resides. For example, LSN 314 may be only unique within a single zone. In an embodiment, PSN 316 (i.e., “physical sector number”) identifies another WL. For example, PSN 316 may identify a GSN of a previously recorded WL. Alternatively, PSN 316 may be referred to as, among possibly other things, “PGSN,” or “previous global sequence number,” relating to the source of its contents, which may be a GSN assigned to a previously recorded WL. In an embodiment, the GSN and/or LSN are implemented as incrementing or decrementing values. These values may provide a relative point of creation between WL's. In certain embodiments, the combination of the GSN and LSN can provide for sequential ordering of WL's created within a given partition.
In an embodiment, different types of WL's may be utilized for logging transactions in a disk drive, such as a shingled disk drive. For example, as shown in
The embodiment depicted in
The embodiment depicted in
As described above, one or more of the WL's shown in
A Halftrack PSN may point to a Header WL at the head of the track on which the Halftrack WL is located. This relationship is shown in
Metadata Recovery
Process 500 may further include calculating the physical location of a next Header WL. This step is performed at block 506. If it is determined, at block 510, that this Header WL is valid, it is added to the list of recovered WL's at block 508, and the process 500 continues calculating addresses and determining the validity of Header WL's until an invalid Header WL is found. Determining whether a given Header WL is valid may involve reading one or more identifiers stored in the WL and determining whether the one or more identifiers contain an expected value. Determining that there are no additional Header WL's to recover may involve reading ahead a certain number of tracks, or WL's, in order to confirm invalidity. In an embodiment, determining that any WL's following the WL that is the subject of a validity determination at block 510 are relics, based on comparisons between certain identifiers, such as GSN, LSN, and/or PSN identifiers, indicates that there are no further Header WL's to recover. In an embodiment, no further Header WL's are recovered, and the recovery process 500 is at least temporarily terminated, in response to a memory buffer shortage, which may result in an inability to store recovered WL's in local memory.
Once the latest valid Header WL has been found (e.g., an invalid Header WL has been read at block 510), the process 500 may terminate, or may turn to the recovery of a Halftrack and/or Footer WL's lying within the track headed by the latest valid Header WL. This step is shown at block 512.
Once the latest Header has been found, a Halftrack WL is read at block 608 that is located on the track of the latest valid Header. At block 610, it is determined whether the Halftrack WL is valid. If the Halftrack WL is not valid, the process 600 includes searching for a Footer WL in at least a portion of one half of the track on which the Halftrack is located, such as in the first half of the track, as shown in block 612. This may be desirable based on a determination that, because not enough host data was saved on the track to merit storing a Halftrack WL associated with such data, the Footer is likely located in a position between the Header WL and where the Halftrack WL would have been saved. In an embodiment, if it is determined that the Halftrack WL is valid, the at least a portion of the other half of the track is searched, such as the latter half of the track, for example.
Once the Footer is located at either block 612 or 614, recovery in the current zone is complete. Determination of whether additional zones are to be interrogated is made at block 620. If so, the process 600 proceeds to a next zone and performs at least one or more steps of the process again in connection with the next zone. Block 618 indicates this progression.
When all zones of interest have been interrogated, it may be desirable to sequentially order recovered WL's. This may be desirable in certain disk drive system embodiments that implement a data storage routine that alternates, or jumps, between zones when storing host data. In such cases, it is desirable to identify disk drive locations that store host data that was written last. In other words, these disk drive locations store last and valid copies of host data.
Translation tables containing translation information mapping logical addresses used by a host system to access a disk drive to physical locations or addresses in the disk drive may require recovery or restoration following certain system failure events. A disk drive can be configured to store metadata information that aids in the recovery of translation information. For example, metadata for a particular track can include the mapping of logical addresses for which host data is stored on the track to physical addresses where host data is stored. Translation information may be saved at regular intervals of time to avoid data loss due to system failure. If, for example, interruption occurs between saving events, metadata recovery according to one or more embodiments disclosed herein may provide for at least partial recovery of lost data.
In some embodiments of the present invention, metadata portions, or write-logs (“WL's”), in nonvolatile storage regions, or sectors, are utilized to store translation information that can be recovered after a system failure, such as an unexpected power loss. In an embodiment, a WL is associated with a portion of data stored on the track on which the WL is also stored. Locating and interpreting, stored WL's provides a mechanism for reconstructing translation tables following a system failure. Performance improvements can thereby be attained.
Other Variations
Those skilled in the art will appreciate that in some embodiments, other types of metadata recovery can be implemented. In addition, the actual steps taken in the processes shown in
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the protection. For example, the various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware. Also, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5450560 | Bridges et al. | Sep 1995 | A |
5574882 | Menon et al. | Nov 1996 | A |
5613066 | Matsushima et al. | Mar 1997 | A |
5680538 | Jones et al. | Oct 1997 | A |
5696921 | Holt | Dec 1997 | A |
6092231 | Sze | Jul 2000 | A |
6202121 | Walsh et al. | Mar 2001 | B1 |
6324604 | Don et al. | Nov 2001 | B1 |
6339811 | Gaertner et al. | Jan 2002 | B1 |
6501905 | Kimura | Dec 2002 | B1 |
6574774 | Vasiliev | Jun 2003 | B1 |
6675281 | Oh et al. | Jan 2004 | B1 |
6732124 | Koseki et al. | May 2004 | B1 |
6772274 | Estakhri | Aug 2004 | B1 |
6829688 | Grubbs et al. | Dec 2004 | B2 |
6886068 | Tomita | Apr 2005 | B2 |
6895468 | Rege et al. | May 2005 | B2 |
6901479 | Tomita | May 2005 | B2 |
6920455 | Weschler | Jul 2005 | B1 |
6967810 | Kasiraj et al. | Nov 2005 | B2 |
6970987 | Ji et al. | Nov 2005 | B1 |
7155448 | Winter | Dec 2006 | B2 |
7343517 | Miller et al. | Mar 2008 | B2 |
7406487 | Gupta et al. | Jul 2008 | B1 |
7408731 | Uemura et al. | Aug 2008 | B2 |
7412585 | Uemura | Aug 2008 | B2 |
7472223 | Ofer | Dec 2008 | B1 |
7486460 | Tsuchinaga et al. | Feb 2009 | B2 |
7490212 | Kasiraj et al. | Feb 2009 | B2 |
7509471 | Gorobets | Mar 2009 | B2 |
7529880 | Chung et al. | May 2009 | B2 |
7539924 | Vasquez et al. | May 2009 | B1 |
7549021 | Warren, Jr. | Jun 2009 | B2 |
7590816 | Shinohara et al. | Sep 2009 | B2 |
7594067 | Torabi | Sep 2009 | B2 |
7603530 | Liikanen et al. | Oct 2009 | B1 |
7617358 | Liikanen et al. | Nov 2009 | B1 |
7620772 | Liikanen et al. | Nov 2009 | B1 |
7631009 | Patel et al. | Dec 2009 | B1 |
7647544 | Masiewicz | Jan 2010 | B1 |
7669044 | Fitzgerald et al. | Feb 2010 | B2 |
7685360 | Brunnett et al. | Mar 2010 | B1 |
7831750 | Sampathkumar | Nov 2010 | B2 |
7840878 | Tang et al. | Nov 2010 | B1 |
7860836 | Natanzon et al. | Dec 2010 | B1 |
7876769 | Gupta et al. | Jan 2011 | B2 |
7885921 | Mahar et al. | Feb 2011 | B2 |
7903659 | Sindhu et al. | Mar 2011 | B2 |
7996645 | New et al. | Aug 2011 | B2 |
8006027 | Stevens et al. | Aug 2011 | B1 |
8214684 | Hetzler et al. | Jul 2012 | B2 |
20020049886 | Furuya et al. | Apr 2002 | A1 |
20030123701 | Dorrell et al. | Jul 2003 | A1 |
20030220943 | Curran et al. | Nov 2003 | A1 |
20040019718 | Schauer et al. | Jan 2004 | A1 |
20040109376 | Lin | Jun 2004 | A1 |
20040139310 | Maeda et al. | Jul 2004 | A1 |
20050069298 | Kasiraj et al. | Mar 2005 | A1 |
20050071537 | New et al. | Mar 2005 | A1 |
20050144517 | Zayas | Jun 2005 | A1 |
20050193035 | Byrne | Sep 2005 | A1 |
20060090030 | Ijdens et al. | Apr 2006 | A1 |
20060112138 | Fenske et al. | May 2006 | A1 |
20060117161 | Venturi | Jun 2006 | A1 |
20060181993 | Blacquiere et al. | Aug 2006 | A1 |
20070174582 | Feldman | Jul 2007 | A1 |
20070204100 | Shin et al. | Aug 2007 | A1 |
20070226394 | Noble | Sep 2007 | A1 |
20070294589 | Jarvis et al. | Dec 2007 | A1 |
20080098195 | Cheon et al. | Apr 2008 | A1 |
20080104308 | Mo et al. | May 2008 | A1 |
20080168243 | Bychkov et al. | Jul 2008 | A1 |
20080183955 | Yang et al. | Jul 2008 | A1 |
20080183975 | Foster et al. | Jul 2008 | A1 |
20080195801 | Cheon et al. | Aug 2008 | A1 |
20080209144 | Fujimoto | Aug 2008 | A1 |
20080250200 | Jarvis et al. | Oct 2008 | A1 |
20080256287 | Lee et al. | Oct 2008 | A1 |
20080256295 | Lambert et al. | Oct 2008 | A1 |
20080270680 | Chang | Oct 2008 | A1 |
20080307192 | Sinclair et al. | Dec 2008 | A1 |
20090019218 | Sinclair et al. | Jan 2009 | A1 |
20090055620 | Feldman et al. | Feb 2009 | A1 |
20090063548 | Rusher et al. | Mar 2009 | A1 |
20090070529 | Mee et al. | Mar 2009 | A1 |
20090119353 | Oh et al. | May 2009 | A1 |
20090144493 | Stoyanov | Jun 2009 | A1 |
20090150599 | Bennett | Jun 2009 | A1 |
20090154254 | Wong et al. | Jun 2009 | A1 |
20090164535 | Gandhi et al. | Jun 2009 | A1 |
20090164696 | Allen et al. | Jun 2009 | A1 |
20090193184 | Yu et al. | Jul 2009 | A1 |
20090198952 | Khmelnitsky et al. | Aug 2009 | A1 |
20090204750 | Estakhri et al. | Aug 2009 | A1 |
20090222643 | Chu | Sep 2009 | A1 |
20090235042 | Petrocelli | Sep 2009 | A1 |
20090240873 | Yu et al. | Sep 2009 | A1 |
20090271581 | Hinrichs, Jr. | Oct 2009 | A1 |
20100011275 | Yang | Jan 2010 | A1 |
20100208385 | Toukairin | Aug 2010 | A1 |
20100235678 | Kompella et al. | Sep 2010 | A1 |
20100281202 | Abali et al. | Nov 2010 | A1 |
20100318721 | Avila et al. | Dec 2010 | A1 |
20110138145 | Magruder et al. | Jun 2011 | A1 |
20110167049 | Ron | Jul 2011 | A1 |
20110197035 | Na et al. | Aug 2011 | A1 |
Number | Date | Country |
---|---|---|
2009102425 | Aug 2009 | WO |
Entry |
---|
Amer, Ahmed et al. (May 2010) “Design Issue for a Shingled Write Disk System” 26th IEEE Symposium on Massive Storage Systems and Technologies: Research Track. |
Rosenblum, Mendel and Ousterhout, John K. (Feb. 1992), “The Design and Implementation of a Log-Structured File System.” ACM Transactions on Computer Systems, vol. 10, Issue 1, pp. 26-52. |
Rosenblum, “The Design and Implementation of a Log-structured File System”, EECS Department, University of California, Berkeley, Technical Report No. UCB/CSD-92-696, Jun. 1992. |
Garth Gibson and Milo Polte, “Directions for Shingled-Write and Two-Dimensional Magnetic Recording System Architectures: Synergies with Solid-State Disks”, Parallel Data Lab, Carnegie Mellon Univ., Pittsburgh, PA, Tech. Rep. CMU-PDL-09-014 (2009). |
Denis Howe, “Circular Buffer Definition”, 2010, The Free On-Line Dictionary of Computing, pp. 1-3, http://dictionary.reference.com/browse/circular+buffer. |
The PC Guide, “Logical Block Addressing (LBA)”, Sep. 2, 2000, pp. 1-2, http://web.archive.org/web/2000090203261 2/http://www.pcguide.com/ref/hdd/bios/modesLBA-c. html. |
Robert Hinrichs, “Circular Buffer”, Sep. 11, 2002, pp. 1-22, http://www.codeproject. com/Articles/2880/Circular-Buffer. |
Margaret Rouse, “Logical Block Addressing (LBA)”, Apr. 2005, pp. 1-16, http://searchcio-midmarket.techtarget.com/definition/logical-block-addressing. |