Patent Publication Number: US-7725666-B2

Title: Micro-journaling of data on a storage device

Description:
FIELD OF THE INVENTION 
     Embodiments of the present invention are related to the field of data storage. 
     BACKGROUND OF THE INVENTION 
     Hard disk drives are used in almost all computer system operations. In fact, most computing systems are not operational without some type of hard disk drive to store the most basic computing information such as the boot operation, the operating system, the applications, and the like. In general, the hard disk drive is a device which may or may not be removable, but without which the computing system will generally not operate. 
     The basic hard disk drive model was established approximately 50 years ago and resembles a phonograph. That is, the hard drive model includes a storage disk or hard disk that spins at a substantially constant rotational speed. An actuator arm or slider is utilized to reach out over the disk. The arm has a head-gimbal-assembly (HGA) composed of a suspension, flexure and a slider carrying the read/write components. 
     In operation, the hard disk is rotated at a set speed via a spindle motor assembly having a central drive hub. Additionally, there are tracks evenly spaced at known intervals across the disk. When a request for a read of a specific portion or track is received, the actuator and servo-system of the hard drive aligns the head, via the arm, over the specific track location and the head reads the information from the disk. In the same manner, when a request for a write of a specific portion or track is received, the hard disk aligns the head, via the arm, over the specific track location and the head writes the information to the disk. 
     In the past, sectors of 512 bytes were the smallest individual storage units available on a hard disk drive. However, as the capacity of hard disk drives has grown, it has become increasingly inefficient to implement storage in 512 byte sectors. As a result, recent trends in hard disk drive technology have implemented larger sectors (e.g., 4096 bytes). However, the file systems of older operating systems may not be compatible with these larger sectors. Thus, to be backward compatible with these-older file systems, the larger sectors are divided into “logical blocks” of 512 bytes. 
     Because the sector is the smallest individual unit to which data can be written to, the newer hard disk drives are limited to writing an entire 4096 byte sector, even if less than the entire 4096 byte capacity of the sector is being modified. Thus, when working with older file systems, when one logical block is being modified, the entire sector is read into memory, the data in one or more logical blocks is modified, and the data is re-written over the original data in that sector. Typically, this process is managed transparently by the hard disk drive so that the hard disk drive appears, to the host system, to be composed of 512 byte sectors. 
     However, this opens a potential data integrity problem if the re-write operation is not completed due to, for example, a sudden power loss of the host system. More specifically, if only part of the original data in the sector has been overwritten prior to the power loss, the entire sector is invalid and the original data in the sector may be irretrievably lost. Additionally, there may be no way to determine that the original data was affected by the power loss. This is particularly problematic in an unaligned write operation (e.g., a write operation in which only a portion of the original data is being overwritten). While current systems provide for the recovery of data when the data being written to a sector comprises entirely new data (e.g., an aligned write operation), they do not provide data recovery in an unaligned write operation. 
     SUMMARY OF THE INVENTION 
     Embodiments of the present invention recite a method of preserving data on a hard disk drive. In one embodiment, a copy of data is read from at least one sector of a hard disk drive and stored in a memory location of the hard disk drive. At least a portion of the data in the memory location of the hard disk drive is then replaced to create a modified copy of data. A copy of the modified copy of data is then stored in a non-volatile memory location of the hard disk drive. Finally, the data from the at least one sector is replaced with the modified copy of data. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the present invention and, together with the description, serve to explain the principles of the invention. Unless specifically noted, the drawings referred to in this description should be understood as not being drawn to scale. 
         FIGS. 1A and 1B  show components of a hard disk drive in accordance with embodiments of the present invention. 
         FIG. 2  is a flowchart of a method for preserving data on a hard disk drive in accordance with embodiments of the present invention. 
         FIG. 3  is a block diagram showing the storage of data in sectors of a hard disk drive in accordance with embodiments of the present invention. 
         FIG. 4  shows an exemplary flow of data in accordance with embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings. While the present invention will be described in conjunction with the following embodiments, it will be understood that they are not intended to limit the present invention to these embodiments alone. On the contrary, the present invention is intended to cover alternatives, modifications, and equivalents which may be included within the spirit and scope of the present invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, embodiments of the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention. 
     With reference now to  FIG. 1A , a schematic drawing of one embodiment of a magnetic hard disk file or drive  100  for a computer system is shown. Drive  100  has a lower housing or base  113  containing a disk pack having at least one media or magnetic disk  102 . It is noted that an upper housing (not shown) is typically coupled with housing  113  during normal operation of hard disk drive  100 . The disk or disks  102  are rotated (see arrows  141 ) by a spindle motor assembly having a central drive hub  117 . An actuator comprising a plurality of parallel actuator arms  105  (one shown) in the form of a comb that is movably or pivotally mounted to base  113  about a pivot assembly  123 . A controller (not shown) is also mounted to base  113  for selectively moving the comb of arms  105  relative to disk  102 . 
     In the embodiment shown, each arm  105  has extending from it at least one cantilevered load beam and suspension  106 . A magnetic read/write transducer or head is mounted on a slider  101  and secured to a flexure that is flexibly mounted to each suspension  106 . The read/write heads magnetically read data from and/or magnetically write data to disk  102 . The level of integration called the head gimbal assembly (HGA) is head and the slider  101 , which are mounted on suspension  106 . The slider  101  is usually bonded to the end of suspension  106 . The head is typically pico size (approximately 1245×1000×300 microns) and formed from ceramic or intermetallic materials. The head also may be of “femto” size (approximately 850×700×230 microns) and is pre-loaded against the surface of disk  102  (in the range two to ten grams) by suspension  106 . 
     Suspensions  106  have a spring-like quality, which biases or urges the air-bearing surface of the slider  101  against the disk  102  to cause the slider  101  to fly at a precise distance from the disk. A voice coil magnet assembly  104  is mounted to a lower housing  113  and is also mounted to arms  105  opposite the head gimbal assemblies. Movement of the voice coil magnet assembly  104  by the controller moves the head gimbal assemblies along radial arcs across tracks on the disk  102  until the read/write transducer is positioned above the desired data track. The head gimbal assemblies operate in a conventional manner and typically move in unison with one another, unless drive  100  uses multiple independent actuators (not shown) wherein the arms can move independently of one another. 
     Drive  100  also comprises drive electronics card  140  which is used as an integrated controller in accordance with embodiments of the present invention. In  FIG. 1B , a bus  142  is coupled with a processor  143 . Processor  143  is for controlling the operation of hard disk drive  100 . For example, processor  143  may be used for controlling the spindle motor used to rotate hard disks  102 , control the actuator which positions arms  105 , manage all read and write operations, implement power management and geometry translation, optimize multiple requests, manage internal cache and pre-fetch operations, etc. Processor  143  may be communicatively coupled with a non-volatile memory  144  (e.g., a flash memory device), a non-volatile read only memory (ROM)  145  for storing information and instructions used by processor  143 , and a volatile memory  148 . It is noted that in embodiments of the present invention, ROM  145  may comprise a flash memory device. Alternatively, in embodiments of the present invention, the information and instructions typically stored in ROM  145  may be stored in non-volatile memory  144 . Typically, volatile memory  148  may be used to cache data which is being written to, or read from, hard disk(s)  102 . 
     Data is read and written to hard disk(s)  102  via an input/output interface (e.g., I/O  146 ) which is typically coupled to bus  142  via a read amplification circuit (not shown). A second input/output interface (e.g., I/O  147 ) is coupled with bus  142  and conveys data and instructions to and from a host computer system (not shown) to which hard disk drive  100  is coupled. 
       FIG. 2  is a flowchart of a method  200  for preserving data on a hard disk drive in accordance with embodiments of the present invention. It is noted that method  200  describes a read-modify-write operation which is performed by a single hard disk drive (e.g.,  100 ). In step  210  of  FIG. 2 , a copy of data that is read from at least one sector of a hard disk drive is stored in a memory location of the hard disk drive. For the purposes of the present invention, the term “sector” refers to the smallest contiguous unit of space on a hard disk which is accessed by the hard disk drive. Typically, the copy of data read from the hard disk is stored in volatile memory  148 . However, in embodiments of the present invention, the memory location where the copy of data is stored may be upon the hard disk itself, or another memory location of hard disk drive  100  (e.g., non-volatile memory  144 ). Additionally, multiple locations of hard disk  102  may be reserved for storing copies of the data. This is advantageous in that the data is stored in a location that is physically proximate to the original data. 
     In step  220  of  FIG. 2 , at least a portion of the data in the memory location of the hard disk drive is replaced to create a modified copy of the data. Typically, the host computer system to which hard disk drive  100  is coupled sends the data, for modifying the original copy of data, to hard disk drive  100 . In embodiments of the present invention, processor  143  replaces at least a portion of the data stored in volatile memory with the data sent by the host computer to create the modified copy of data. 
     In step  230  of  FIG. 2 , a copy of the modified copy of data is stored in a non-volatile memory location of the hard disk drive. In embodiments of the present invention, prior to overwriting the original data in the data sector, the modified data is stored in a non-volatile memory location of the hard disk drive  100 . In one embodiment, this comprises saving the modified data from volatile memory  148  to a data location of hard disk  102  that is separate from the data sectors where the original data is located. As described above, in embodiments of the present invention, multiple locations of hard disk  102  may be reserved for storing copies of the modified data. This is advantageous in that the modified data is stored in a location that is physically proximate to the original data. In another embodiment of the present invention, the modified data created in step  220 , it is automatically stored in non-volatile memory  144 . 
     In step  240  of  FIG. 2 , the original data stored in the at least one sector of the hard disk drive is replaced with the modified copy of data. In embodiments of the present invention, upon storing a copy of the modified data in a non-volatile memory location of hard disk drive  100  as described above with reference to step  230 , an overwrite process of the originally accessed data is initiated. Thus, a copy of the modified data stored in volatile memory  148  will then be written to the at least one sector at which the original data was stored. In embodiments of the present invention, when the modified data is successfully written into the sector previously accessed in step  210  above, the copy of data that is stored in the non-volatile memory location is either marked as being an invalid copy of data, or it is erased from that location. 
     In operation, if a power outage or re-boot of the host computer system occurs, it is possible to quickly recover the modified data stored in non-volatile memory and use it to overwrite the data copied in step  210 . For example, in one embodiment of the present invention, when power is restored, all of the possible alternate locations in which a modified copy may be stored are checked to verify that the modified data in each of those locations was correctly transferred to the correct corresponding primary location (e.g., thus overwriting to the original data sectors). If, for example, the modified data still exists, or is not marked as an invalid copy, it will then be written over the data in the original data sectors. Alternatively, if the original data sectors cannot be read, it is assumed that power to hard disk drive  100  was interrupted during the overwrite operation and the modified data is then used to overwrite the original data sectors. 
     Embodiments of the present invention advantageously facilitate writing data to hard disk drives in that they store modified data used in a data overwrite prior to overwriting the original data. Thus, if power to the hard disk drive is interrupted, particularly in an unaligned write operation, it is possible to complete the write operation as soon as power is restored. As will be described in greater detail below, while current systems provide for the recovery of data when the data being written to a sector comprises entirely new data (e.g., an aligned write operation), they do not provide data recovery in an unaligned write operation. 
     In conventional hard disk drives, the use of volatile memory as a read/write cache means that data stored therein will be lost if, for example, the computer system loses power. Thus, if part of the sector has already been overwritten in an unaligned write operation, when the power outage occurs the cached data is lost and there is no provision with conventional systems to recover, or restore, the partially overwritten sector. Additionally, there may be no way to detect the data loss at all. 
     By using non-volatile memory to store a copy of the data, embodiments of the present invention provide a system for recovering and restoring the original data in a sector which may be damaged as described above. Additionally, because the copy of data is marked as invalid, or erased, only after the modified data is written into the sector, embodiments of the present invention utilize the stored copy of data to indicate whether the modified has been successfully written to the sector. 
     Referring now to  FIG. 3 , in embodiments of the present invention, data is stored on hard disk(s)  102  in sectors (e.g.,  310 ,  320 ,  330 ,  340 , and  350 ). In earlier implementations, a sector was typically 512 bytes in size. However, as discussed above, due to the larger capacities of hard disk drives, using sectors this small is now inconvenient. Thus, in embodiments of the present invention a sector (e.g.,  310 ,  320 ,  330 ,  340 , and  350 ) may be, but is not limited to, a size of 4096 bytes. 
     As described above, because some prior file systems cannot work with sectors larger than 512 bytes, each of the sectors (e.g.,  310 ,  320 ,  330 , and  340 ) may be divided into a plurality of logical data sectors (e.g.,  310   a ,  310   b ,  310   c ,  310   d ,  310   e ,  310   f ,  310   g ,  310   h ) which are 512 bytes in order to be backward compatible with these file systems. As an example, even if the data in logical data sector  310   f  is the only data to be modified, the entire sector (e.g.,  310 ) still must be read before the data in logical data sector  310   f  is modified, Then, the entire sector  310 , including the modified data of logical data sector  310   f , is written over the original data stored in sector  310 . This is known as an unaligned write because rather than overwriting all of the data in sector  310  (e.g., beginning with logical data sector  310   a  and all of the other logical data sectors), only a portion of the data (e.g., logical data sector  310   f ) is overwritten. It is noted that an unaligned write operation could comprise more than one logical data sector (e.g., logical data sectors  310   f ,  310   g , and  310   h  of sector  310 ) and may be performed upon more than one sector (e.g., sectors  310  and  330 ) depending upon the amount of data which has been modified from the original data. For example, if data in sectors  310 ,  320 , and  330  are modified, it may occur that only some of the logical data sectors in sectors  310  and  330  are modified (e.g., an unaligned write operation) while all of the intervening logical data sectors in sector  320  are modified. 
     If a power outage, or other interruption, occurs when overwriting the original data in sector  310  with the modified data, there is no provision in conventional systems to recover or restore the data (either the original data or the modified data) because it is typically cached in a volatile memory device of the hard disk drive. However, in embodiments of the present invention, because a copy of the original data from sector  310  is stored in non-volatile memory  144 , it can be used to restore the original data in sector  310  after power is restored to the host computer system. 
       FIG. 4  shows an exemplary flow of data in accordance with embodiments of the present invention. Initially, the original data  401  comprising sectors  310 ,  320 , and  330  is stored on hard disk  102 . As shown in  FIG. 4 , in event  405  a copy  403  of data  401  is buffered in volatile memory  148  in response to a read command. In event  410 , data  402  for modifying the original data is received by hard disk drive  110  via bus  142  and is also cached in volatile memory  148 . Processor  143  also receives a command to modify or replace at least some of the original data  401  with the data  402 , thus creating a modified copy of data  404  comprising sectors  310 ′,  320 ′, and  330 ′. Processor  143  also receives a command to replace the original data  401  with the modified data  404 . In the present embodiment, the data in sectors  310  and  330  is only partially overwritten (e.g., an unaligned write operation) when modified data  404  replaces original data  401 . 
     In one embodiment of the present invention, in response to the command to overwrite original data  401 , a copy  408  of the modified data (e.g., sectors  310 ′,  320 ′ and  330 ′) is stored at an alternative location of hard disk  102  as shown in  FIG. 4  at event  420 . Alternatively, in event  425 , copy  408 ′ of the modified data may be stored in non-volatile memory  144 . It is noted that in embodiments of the present invention, additional information, such as the location of hard disk  102  to which the modified data will be written (e.g., sectors  310 ,  320 , and  330 ) may also be included with copy  408  and/or  408 ′. 
     In a successful overwrite operation (e.g.,  430  of  FIG. 4 ), modified data  404  is then stored on hard disk  102  in the physical location of original data  401 , thus overwriting the original data  401  as shown in event  425 . Alternatively, the modified data of copies  408  or  408 ′ may be accessed and used to overwrite data  401 . Upon successfully writing over original data  401 , the modified data  408 ′ (e.g., in non-volatile memory  144 , or copy  408  on hard disk  102 ) is marked as being an invalid copy of sectors  310 ,  320 , and  330 . Alternatively, copies  408 ′ or copy  408  may be erased from non-volatile memory  144  or hard disk  102  respectively upon successfully writing modified data  404  over original data  401 . 
     If, however, power to the host computer system is interrupted when original data  401  is being overwritten by modified data  403 , the data in sectors  310 ,  320 , and  330  may be lost or damaged. In embodiments of the present invention, copy  408  or  408 ′ will therefore not be marked as an invalid copy and/or erased from hard disk  102  or non-volatile memory  144  respectively. Upon restoring power to the host computer system, processor  143  checks all of the possible alternate locations in which a modified copy of data (e.g.,  408  and/or  408 ′) may be stored to verify that the modified data in each of those locations was correctly transferred to the correct corresponding primary location (e.g., sectors  310 ,  320 , and  330 ) where original data  401  is stored. If the modified copy of data still exists, or is not marked as invalid, it is then written to data sectors  310 ,  320 , and  330 . Alternatively, upon restoring power to the host computer system, processor  143  checks data  401  and, if the data therein cannot be read, modified data  408  or  408 ′ is written to these data sectors. 
     The preferred embodiment of the present invention, micro-journaling of data on a storage device, is thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the following claims.