Patent Publication Number: US-7917802-B2

Title: Write omission detector, write omission detecting method, and computer product

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a technology for detecting occurrence of write omission in a storage medium divided into a plurality of blocks. 
     2. Description of the Related Art 
     In a commonly used storage medium (for example, a disk) that is divided into a plurality of blocks, occurrence of a write omission prevents updating of data that is stored in each block and causes obsolete data to remain in the block. A cause of occurrence of the write omission is explained specifically with respect to  FIG. 11 . When a head carries out a write process to write updated data to the block that stores therein obsolete data, the head runs into dust particles etc. and data is not written to the block, thus causing obsolete data to remain in the block. The head running into the dust particles causes vibrations. Due to this, unreadable data (in other words, unrecovered read error) is written to adjacent blocks. 
     To take care of such a write omission, a write omission detecting method is carried out to detect the write omission. For example, a conventional write omission detecting method is disclosed in Japanese Patent Laid-open Application No. 2006-252530. In the conventional write omission detecting method, a history block, which stores therein updated data, is included for each block on the disk. When writing the updated data to the disk, a new updated status is stored in the history block and also stored in a memory of a central processing unit (CPU). Write omission is detected based on comparison of the updated status stored in the history block and the updated status stored in the memory. 
     However, in the conventional technology, because a process to detect the write omission is carried out after carrying out the write process, when carrying out the write process, detection of the write omission in all the blocks takes a significant time, which deteriorates the processing performance. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to at least partially solve the problems in the conventional technology. 
     According to an aspect of the present invention, a write omission detector that detects write omission in a storage medium that is divided into a plurality of blocks includes a block detection unit that detects an error block that is a block that includes a read error; and a write-omission detecting unit that detects a write omission block based on comparison of data in blocks that are within a predetermined range from the error block and data in blocks inside a redundant storage medium. 
     According to another aspect of the present invention, a method of detecting write omission in a storage medium that is divided into a plurality of blocks includes first detecting including detecting an error block that is a block that includes a read error; and second detecting including detecting a write omission block based on comparison of data in blocks that are within a predetermined range from the error block and data in blocks inside a redundant storage medium. 
     According to still another aspect of the present invention, a computer-readable recording medium stores therein a computer program that causes a computer to realize the above method. 
     The above and other objects, features, advantages and technical and industrial significance of this invention will be better understood by reading the following detailed description of presently preferred embodiments of the invention, when considered in connection with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic for explaining an overview and a salient feature of a device adaptor according to a first embodiment of the present invention; 
         FIG. 2  is a block diagram of a RAID device according to the first embodiment; 
         FIG. 3  is a block diagram of the device adaptor according to the first embodiment; 
         FIG. 4  is a schematic for explaining an example of error content; 
         FIG. 5  is a schematic for explaining a write omission detecting process; 
         FIG. 6  is a schematic for explaining a diagnosis skip in the write omission detecting process; 
         FIG. 7  is a schematic for explaining a recovery process; 
         FIG. 8  is a flowchart of a process operation performed by the device adaptor according to the first embodiment; 
         FIG. 9  is a flowchart of a write omission detecting process operation performed by the device adaptor according to the first embodiment; 
         FIG. 10  is a block diagram of a computer that executes a write omission detecting program; and 
         FIG. 11  is a schematic for explaining the write omission phenomenon. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Exemplary embodiments of the present invention are explained in detail below with reference to the accompanying drawings. An example in which the present invention is incorporated in a device adaptor is explained below. 
     In the following embodiments, an overview, a salient feature, a structure, and a process flow of a device adaptor according to a first embodiment of the present invention are sequentially explained, and effects of the first embodiment are explained in the end. As shown in  FIGS. 1 to 11 , the device adaptor is referred to as Device Adaptor (DA). 
     First, an overview and a salient feature of the device adaptor according to the first embodiment are explained with reference to  FIG. 1 . 
     A device adaptor  10  is used as a write omission detector according to the first embodiment. In disks  30 , which are divided into a plurality of blocks, the device adaptor  10  detects a write omission that prevents updating of data stored in each block and causes obsolete data to remain in the block. The device adaptor  10  prevents deterioration in the processing performance while detecting the write omission. A Redundant Arrays of Inexpensive Disks (RAID) device  1  having a redundant structure includes the device adaptor  10  and disks  30   a  and  30   b.    
     The device adaptor  10 , which controls the disks  30  that include a storage area divided into the blocks, detects a block that includes a read error (see ( 1 ) of  FIG. 1 ). To explain with reference to  FIG. 1 , during a disk reply at the time of reading data from the disk  30   b , the device adaptor  10  detects a block that includes an unrecovered read error that indicates that the block is an unreadable block. As shown in  FIG. 1 , the disk  30   b , which includes the block that includes the detected unrecovered read error, is called “suspect disk” as a disk that is likely to include the write omission. 
     Next, the device adaptor  10  detects the write omission in the blocks that are within a predetermined range from the block that includes the detected read error (see ( 2 ) of  FIG. 1 ). To be specific, the device adaptor  10  reads data of the blocks that are in the vicinity of the block that includes the unrecovered read error in the suspect disk  30   b . Next, the device adaptor  10  reads from the redundant disk  30   a , data of the block corresponding to the block that includes the unrecovered read error (block “B” in the example shown in  FIG. 1 ), compares the read data to the data read from the suspect disk  30   b , and detects the write omission. In other words, if the data of the redundant disk  30   a  and the data of the suspect disk  30   b  differ, the device adapter  10  determines that the block that stores the data includes the write omission and carries out a recovery process. 
     Due to this, when carrying out the write process, the device adaptor  10  detects the write omission without detecting write omissions in all the blocks. Thus, similarly as the main salient feature mentioned earlier, the device adaptor  10  can prevent deterioration of the processing performance while detecting the write omission. 
     An example of a hardware structure of the RAID device  1  which uses the DA  10  shown in  FIG. 1  is explained next with reference to  FIG. 2 . As shown in  FIG. 2 , the RAID device  1  is connected to a server  2 . 
     The RAID device  1  includes the DA  10 , a controller module (CM)  20  that carries out control to transfer data to a router (RT)  40 , the disks  30  that store therein data, the RT  40  that relays data, and a channel adapter (CA)  50  that controls the connection between the RAID device  1  and the server  2 . The DA  10  includes a CPU  110 , a fiber channel (FC)  120  that carries out a serial transfer, and a buffer  130  that temporarily stores therein data. The CM  20  includes a CPU  210 , and a cache memory  220  that stores therein read data and write data. 
     Upon receiving a read request or a write request from the server  2 , the RAID device  1  stores the read data or the write data in the cache memory  220  of the CM  20  via the RT  40 . Based on the stored read data or the write data, the DA  10  carries out reading or writing to the disks  30 . 
     The structure of the device adaptor  10  shown in  FIG. 1  is explained with reference to  FIG. 3 . As shown in  FIG. 3 , the device adaptor  10  includes a CM control interface  11 , a disk control interface  12 , a controller  13 , and a storage unit  14 . The device adaptor  10  is connected to the CM  20  and the disks  30 . A process of each component is explained next. 
     The CM control interface  11  controls communication related to various types of data that is transacted between the device adaptor  10  and the connected CM  20 . To be specific, the CM control interface  11  receives from the cache memory  220  of the CM  20 , the write data, the read data, or redundant data that is explained later. 
     The disk control interface  12  controls communication related to various types of data that is transacted between the device adaptor  10  and the connected disks  30 . To be specific, the disk control interface  12  transceives data related to read or write between the device adaptor  10  and the disks  30 . 
     The storage unit  14  stores therein data and programs that are necessary for various processes performed by the controller  13 . Especially, the storage unit  14  includes a buffer  14   a  that is closely related to the present invention. The buffer  14   a  temporarily stores therein data that is read from the disks  30 . 
     The controller  13  includes an internal memory for storing programs that regulate various process sequences and necessary data. The controller  13  uses the programs and the data to execute the processes. Especially, the controller  13  includes an error detecting unit  13   a , a write omission-detecting unit  13   b , and a recovery unit  13   c  that are closely related to the present invention. The error detecting unit  13   a  corresponds to “block detection unit” that is described in claims, and the write omission-detecting unit  13   b  corresponds to “write-omission detecting unit” that is described in claims. 
     The error detecting unit  13   a  detects a block that includes the read error. To be specific, if an error occurs during the disk reply at the time of reading data from the disks  30 , the error detecting unit  13   a  determines whether the error is an unrecovered read error. If the error is an unrecovered read error, the error detecting unit  13   a  notifies the later explained write omission-detecting unit  13   b  to carry out a write omission detecting process in the periphery of the block that includes the unrecovered write error. If the error is not an unrecovered read error, the error detecting unit  13   a  notifies the later explained recovery unit  13   c  to execute a recovery process according to the error content. 
     An error detecting process is explained in detail with reference to  FIG. 4 . As shown in  FIG. 4 , upon occurrence of an error such as the errors indicated in (a) of  FIG. 4 , the error detecting unit  13   a  determines that the error is not an unrecovered read error. Upon occurrence of an error such as the errors indicated in (b) of  FIG. 4 , the error detecting unit  13   a  determines that the error is an unrecovered read error. In other words, the error detecting unit  13   a  determines whether the error has occurred due to a cause that is highly likely to result in occurrence of the write omission (for example, dust floating inside the disk etc.). 
     Returning to  FIG. 3 , the write omission-detecting unit  13   b  detects the write omission in the blocks that are within the predetermined range that is set by a not shown input unit from the block that includes the detected unrecovered read error. To be specific, upon receiving the notification to carry out the write omission detecting process from the error detecting unit  13   a , the write omission-detecting unit  13   b  retrieves the cache memory  220  of the CM  20 . Next, the write omission-detecting unit  13   b  determines whether a preceding block is already diagnosed. 
     If the preceding block is not already diagnosed, the write omission-detecting unit  13   b  reads from the cache memory  220 , data of the block in the redundant disk  30   a  corresponding to the preceding block in the suspect disk  30   b , and reads from the buffer  14   a , data of the preceding block in the suspect disk  30   b . If the preceding block is already diagnosed, the write omission-detecting unit  13   b  reads from the cache memory  220 , data of the block in the redundant disk  30   a  corresponding to a succeeding block in the suspect disk  30   b  and reads from the buffer  14   a , data of the succeeding block in the suspect disk  30   b.    
     Next, the write omission-detecting unit  13   b  determines whether the read data of the redundant disk  30   a  matches with the read data of the suspect disk  30   b . If the data of the redundant disk  30   a  does not match with the data of the suspect disk  30   b , the write omission-detecting unit  13   b  notifies the later explained recovery unit  13   c  that the block includes the write omission. If the data of the redundant disk  30   a  matches with the data of the suspect disk  30   b , the write omission-detecting unit  13   b  notifies the recovery unit  13   c  that the block does not include the write omission. 
     The write omission detecting process is explained by way of a specific example with reference to  FIGS. 5 and 6 . As shown in  FIG. 5 , the write omission-detecting unit  13   b  reads from the retrieved cache memory  220  of the CM  20 , data of the block in the redundant disk  30   a  corresponding to the preceding block (data “B” in the example shown in  FIG. 5 ) and reads data of the preceding block from the buffer  14   a  of the DA  10  (data “Old” in the example shown in  FIG. 5 ). Next, the write omission-detecting unit  13   b  determines whether the read data of the redundant disk  30   a  matches with the read data of the suspect disk  30   b . If the read data of the redundant disk  30   a  does not match with the read data of the suspect disk  30   b , the write omission-detecting unit  13   b  determines that the block that stores the data includes the write omission. 
     As shown in  FIG. 6 , if a block within a diagnosis range cannot be read due to the read error (a block “D” in the example shown in  FIG. 6 ), the write omission-detecting unit  13   b  executes a diagnosis skip to remove the block from a detection target without determining whether the data of the redundant disk  30   a  matches with the data of the suspect disk  30   b . If the disks  30  are in a degenerate state and the redundant disk  30   a  does not exist, because the write omission detecting process cannot be carried out, several blocks in the vicinity of the block having the unrecovered read error are likely to include obsolete data. Due to this, an error reply is returned in response to a read request to the blocks. 
     Returning to  FIG. 3 , the recovery unit  13   c  carries out recovery of data and restores normalcy. To be specific, upon receiving the notification from the error detecting unit  13   a  to execute the recovery process according to the error content for an error other than the unrecovered read error, the recovery unit  13   c  executes the recovery process according to the error content. Further, upon receiving the notification that the block includes the write omission, the recovery unit  13   c  updates the block that includes the write omission in the suspect disk  30   b  to the corresponding block of the redundant disk  30   a.    
     After updating the block that includes the write omission or after receiving the notification that the block does not include the write omission, the recovery unit  13   c  determines whether the succeeding block is already diagnosed. If the succeeding block is not already diagnosed, the recovery unit  13   c  notifies and instructs the write omission-detecting unit  13   b  to carry out a diagnosis of the succeeding block. If the succeeding block is already diagnosed; the recovery unit  13   c  carries out the recovery process of error Logical Block Address (LBA) that indicates the block that includes the unrecovered read error. 
     The recovery process is explained by way of a specific example with reference to  FIG. 7 . As shown in  FIG. 7 , if data of the preceding block “B” in the suspect disk  30   b  is “Old” due to the write omission, the recovery unit  13   c  reads data “B” of the preceding block in the redundant disk  30   a , and updates the read data “B” as data of the preceding block of the suspect disk  30   b . In a method to carry out recovery, because the redundant disk  30   a  exists, the suspect disk  30   b  can be treated as a failed disk, thereby losing redundancy and resulting in the degenerated state. 
     The process performed by the device adaptor  10  according to the first embodiment is explained with reference to  FIG. 8 .  FIG. 8  is a flowchart of a process operation performed by the device adaptor  10  according to the first embodiment. 
     As shown in  FIG. 8 , upon occurrence of an error during the disk reply at the time of reading data from the disks  30  (Yes at step S 101 ), the error detecting unit  13   a  of the device adaptor  10  determines whether the error is the unrecovered read error (step S 102 ). If the error is the unrecovered read error (Yes at step S 102 ), the error detecting unit  13   a  notifies the write omission-detecting unit  13   b  to carry out the write omission detecting process in the periphery of the block that includes the unrecovered read error. 
     If the error is not the unrecovered read error (No at step S 102 ), the error detecting unit  13   a  notifies the recovery unit  13   c  to carry out the write omission detecting process in the periphery of the block that includes the unrecovered read error, and instructs the write omission-detecting unit  13   b  to carry out the recovery process that is explained later (step S 103 ). Upon receiving the notification from the error detecting unit  13   a  to execute the recovery process according to the error content for an error other than the unrecovered read error, the recovery unit  13   c  carries out the recovery process according to the error content (step S 104 ). 
     The write omission detecting process performed by the device adaptor  10  according to the first embodiment is explained next with reference to  FIG. 9 .  FIG. 9  is a flowchart of a write omission detecting process operation performed by the device adaptor  10  according to the first embodiment. 
     As shown in  FIG. 9 , upon receiving the notification from the error detecting unit  13   a  to carry out the write omission detecting process, the write omission-detecting unit  13   b  of the device adaptor  10  retrieves the cache memory  220  of the CM  20  (step S 201 ). Next, the write omission-detecting unit  13   b  determines whether the preceding block is already diagnosed (step S 202 ). If the preceding block is not already diagnosed (No at step S 202 ), the write omission-detecting unit  13   b  reads from the cache memory  220 , data of the block in the redundant disk  30   a  corresponding to the preceding block of the suspect disk  30   b  (step S 203 ) and reads from the buffer  14   a , data of the preceding block of the suspect disk  30   b  (step S 204 ). 
     If the preceding block is already diagnosed (Yes at step S 202 ), the write omission-detecting unit  13   b  reads from the cache memory  220 , data of the block in the redundant disk  30   a  corresponding to the succeeding block of the suspect disk  30   b  (step S 205 ) and reads from the buffer  14   a , data of the succeeding block of the suspect disk  30   b  (step S 206 ). Next, the write omission-detecting unit  13   b  determines whether the read data of the redundant disk  30   a  matches with the read data of the suspect disk  30   b  (step S 207 ). If the read data of the redundant disk  30   a  does not match with the read data of the suspect disk  30   b  (No at step S 207 ), the write omission-detecting unit  13   b  notifies the later explained recovery unit  13   c  that the block includes the write omission. 
     Upon receiving from the write omission-detecting unit  13   b  the notification that the block includes the write omission, the recovery unit  13   c  updates the block that includes the write omission in the suspect disk  30   b  to the corresponding block of the redundant disk  30   a  (step S 208 ). Further, if the read data of the redundant disk  30   a  matches with the read data of the suspect disk  30   b  (Yes at step S 207 ), the write omission-detecting unit  13   b  notifies the recovery unit  13   c  that the block does not include the write omission. 
     After updating the block that includes the write omission (step S 208 ) or after receiving the notification that the block does not include the write omission (Yes at step S 207 ), the recovery unit  13   c  determines whether the succeeding block is already diagnosed (step S 209 ). If the succeeding block is not already diagnosed (No at step S 209 ), the recovery unit  13   c  notifies and instructs the write omission-detecting unit  13   b  to diagnose the succeeding block and the write omission detecting process moves to step S 202 . If the succeeding block is already diagnosed (Yes at step S 209 ), the recovery unit  13   c  carries out the recovery process of error LBA that indicates the block that includes the unrecovered read error (step S 210 ). 
     The device adaptor  10  detects the block that includes the read error and detects the write omission in the blocks that are within the predetermined range from the detected block. Due to this, when carrying out the writing process, the write omission is detected without detecting the write omission in all the blocks. Thus, deterioration in the processing performance can be prevented while detecting the write omission. 
     According to the first embodiment, the predetermined range is received, the predetermined range is set, and the write omission is detected in the blocks that are within the set predetermined range. As a result, the predetermined range is set randomly without necessitating a processing load to dynamically change the predetermined range and the write omission can be detected more easily. 
     According to the first embodiment, if a block within the predetermined range is unreadable, the block is removed from the detection target. Thus, by detecting only the blocks within the predetermined range, the write omission scan be detected more easily. 
     According to the first embodiment, data of the detected block that includes the write omission is updated to data of the corresponding block in the redundant disk. Thus, the data of the block that includes the write omission can be normalized. 
     The embodiment of the present invention is explained. However, various modifications may be made other than the specific details and representative embodiments shown and described herein. Other embodiments included in the present invention are explained below as a second embodiment of the present invention. 
     (1) Write Omission Detection Range 
     A prior set detection range of the write omission is explained in the first embodiment. However, the present invention is not to be thus limited and the detection range of the write omission can also be changed dynamically. 
     To be specific, the device adaptor  10  determines the detection range of the write omission (in other words, a range that indicates a number of blocks for detecting the write omission from the block that includes the unrecovered read error) according to any one or more of a number of heads that carry out read/write, a rotating speed of the heads, a disk vendor, and a type of the disk. When carrying out the write omission detecting process, the device adaptor  10  detects the write omission within the determined detection range. 
     Thus, the predetermined range is determined according to any one or more of the number of heads that carry out read/write, the rotating speed of the heads, the disk vendor, and the type of the disk and the write omission is detected in the blocks that are within the predetermined range. Thus, dynamically changing the predetermined range without fixing the predetermined range enables to detect the write omission further appropriately. 
     (2) Diagnosis Skip 
     In the first embodiment, if a block within the diagnosis range cannot be read due to the read error, the block is removed from a write omission detection target. However, if a block within the diagnosis range cannot be read due to the read error, the write omission can also be detected in an adjoining block of the block. For example, if the device adaptor  10  detects a block which includes an unrecovered read error and cannot read a succeeding block of the block that includes the unrecovered read error, the device adaptor  10  treats a further succeeding block as the write omission detection target and detects the write omission. 
     Thus, if a block within the predetermined range cannot be read, the write omission is detected in the adjoining block of the block. Due to this, apart from the blocks within the predetermined range, the write omission is also detected in blocks that are outside the predetermined range but are highly likely to include the write omission, thus enabling to further precisely detect the write omission. 
     (3) System Structure etc. 
     The constituent elements of the device illustrated are merely conceptual and may not necessarily physically resemble the structures shown in the drawings. For instance, the device need not necessarily have the structure that is illustrated. The device as a whole or in parts can be broken down or integrated either functionally or physically in accordance with the load or how the device is to be used. For example, the error detecting unit  13   a  and the write omission-detecting unit  13   b  can be integrated. Further, the process functions performed by the apparatus are entirely or partially realized by a CPU or a program executed by the CPU or by a hardware using wired logic. 
     All the automatic processes explained in the present embodiment can be, entirely or in part, carried out manually. Similarly, all the manual processes explained in the present embodiment can be entirely or in part carried out automatically by a known method. The sequence of processes, the sequence of controls, specific names, and data including various parameters can be changed as required unless otherwise specified. 
     (4) Computer Programs 
     Each process explained in the embodiment can be realized by executing a prior formulated computer program on a computer. An example of the computer, which executes the computer program that includes functions similar to the embodiment mentioned earlier, is explained next.  FIG. 10  is a block diagram of the computer that executes a write omission detecting program. 
     As shown in  FIG. 10 , a computer  600  as the write omission detecting program includes a CM control interface  610 , a disk control interface  620 , a Read Only Memory (ROM)  630 , a CPU  640 , and a Random Access Memory (RAM)  660  that are connected by a bus  650 . 
     As shown in  FIG. 10 , the ROM  630  prior stores therein a device adaptor that exhibits functions similar to the functions explained the embodiment mentioned earlier, in other words, an error detecting program  631 , a write omission detecting program  632 , and a recovery program  633 . Similarly as each component of the device adaptor  10  shown in  FIG. 3 , the error detecting program  631 , the write omission detecting program  632 , and the recovery program  633  can be appropriately integrated or broken down. 
     The CPU  640  reads from the ROM  630  and executes the error detecting program  631 , the write omission detecting program  632 , and the recovery program  633 , thus causing the error detecting program  631 , the write omission detecting program  632 , and the recovery program  633  to function as an error detecting process  641 , a write omission detecting process  642 , and a recovery process  643  respectively. The error detecting process  641 , the write omission detecting process  642 , and the recovery process  643  correspond to the error detecting unit  13   a , the write omission-detecting unit  13   b , and the recovery unit  13   c  respectively that are shown in  FIG. 3 . 
     The CPU  640  reads data from a not shown disk, stores the read data in a buffer  661  of the RAM  660 , and executes various processes based on the data that is stored in the RAM  660 . 
     According to an embodiment of the present invention, when carrying out a write process, because a write omission is detected without detecting the write omission in all the blocks, deterioration in the processing performance can be prevented while detecting the write omission. 
     According to an embodiment of the present invention, the write omission can be detected more easily and more precisely. Moreover, data of a block that includes the write omission can be normalized. 
     Although the invention has been described with respect to a specific embodiment for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art that fairly fall within the basic teaching herein set forth.