Abstract:
Provided is a method of managing differential snapshots in a storage system, the storage system having a disk drive and a disk controller, the differential snapshot management method including the steps of: providing a storage area of the disk drive as a plurality of logical volumes including an operational volume and a differential volume; storing a time of update for each block in the operational volume; and judging, upon reception of a request to write in a block included in the operational volume, whether to copy data of the block in which requested data is to be written in accordance with the received write request to the differential volume, based on the time of update of the block in which requested data is to be written and a time of creation of the differential snapshot. Accordingly, it is possible to manage the differential snapshot without using a bitmap.

Description:
CLAIM OF PRIORITY 
       [0001]    The present application claims priority from Japanese patent application P2007-51365 filed on Mar. 1, 2007, the content of which is hereby incorporated by reference into this application. 
       BACKGROUND 
       [0002]    This invention relates to a storage system having a disk drive and a disk controller, and more particularly, to a technique of managing differential snapshots. 
         [0003]    In recent years, storage systems have a snapshot function in order to protect data preserved in an operational volume. The snapshot function creates a snapshot of an operational volume at a specific point in time. Well-known snapshot functions are the full-copy snapshot function and the differential snapshot function. 
         [0004]    The differential snapshot function is disclosed in JP 2004-342050 A according to which a storage system stores, in a differential volume, differential data between data in an operational volume and a differential snapshot. The storage system combines differential data preserved in the differential volume with data in the operational volume to provide a differential snapshot. 
       SUMMARY 
       [0005]    The differential snapshot function disclosed in JP 2004-342050 A needs a bitmap which indicates whether or not differential data has been copied. The storage system judges whether to copy differential data by referring to the bitmap. 
         [0006]    A problem of the disclosed differential snapshot function is that an increase in count of blocks included in the operational volume increases the capacity taken up by the bitmap. Another problem is that the bitmap has to be updated each time a snapshot is created or removed. 
         [0007]    This invention has been made in view of the above problems, and it is therefore an object of this invention to provide a differential snapshot management method that does not use a bitmap. 
         [0008]    According to an exemplary embodiment of this invention, there is provided a method of managing differential snapshots in a storage system coupled to a host computer, the storage system having a disk drive for storing data, and a disk controller for controlling data input and output to and from the disk drive, the differential snapshot management method comprising the steps of: providing a storage area of the disk drive as a plurality of logical volumes including an operational volume for storing data requested by the host computer to be written, and a differential volume for storing differential data between data in the operational volume and a differential snapshot of the operational volume; storing, as a time of update, for each block included in the operational volume, one of a time at which data is written last time in the block and a time at which data is copied from the block to the differential volume last time; and judging, upon reception of a request to write in the block included in the operational volume, whether to copy data from the block in which requested data is to be written to the differential volume, based on the time of update of the block in which requested data is to be written and a time of creation of the differential snapshot. 
         [0009]    According to the representative mode of this invention, it is possible to manage a differential snapshot without using a bitmap. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The present invention can be appreciated by the description which follows in conjunction with the following figures, wherein: 
           [0011]      FIG. 1  is a block diagram showing a configuration of a computer system according to the embodiment of this invention; 
           [0012]      FIG. 2  is a configuration diagram of the snapshot creation time table which is preserved in the storage controller according to the embodiment of this invention; 
           [0013]      FIG. 3  is a configuration diagram of the used block management table which is preserved in the storage controller according to the embodiment of this invention; 
           [0014]      FIG. 4  is a configuration diagram of the differential data management table which is preserved in the storage controller according to the embodiment of this invention; 
           [0015]      FIG. 5  is a flow chart for the process of the snapshot operation starting program which is executed by the storage controller according to the embodiment of this invention; 
           [0016]      FIG. 6  is a flow chart for the process of the snapshot creating program which is executed by the storage controller according to the embodiment of this invention; 
           [0017]      FIG. 7  is a flow chart for the process of the operational volume accessing program which is executed by the storage controller according to the embodiment of this invention; 
           [0018]      FIG. 8  is a flow chart for the process of the snapshot accessing program which is executed by the storage controller according to the embodiment of this invention; 
           [0019]      FIG. 9  is a flow chart for the process of the snapshot removing program which is executed by the storage controller according to the embodiment of this invention; 
           [0020]      FIG. 10  is a flow chart for the process of the snapshot operation ending program which is executed by the storage controller according to the embodiment of this invention; 
           [0021]      FIG. 11  is a block diagram showing the configuration of a computer system according to the modification example of the embodiment of this invention; and 
           [0022]      FIG. 12  is a configuration diagram of the Network Attached Storage (NAS) server in the computer system according to the modification example of the embodiment of this invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0023]    An embodiment of this invention will be described below with reference to the accompanying drawings. 
         [0024]      FIG. 1  is a block diagram showing a configuration of a computer system according to the embodiment of this invention. 
         [0025]    The computer system has a storage system  1 , a host computer  2 , and a management console  3 . The storage system  1  is connected to the host computer  2  and the management console  3 . A Fibre Channel, for example, is used to connect the storage system  1  to the host computer  2 . 
         [0026]    The host computer  2  is a computer having a CPU, a memory, and an interface. The host computer  2  requests to read and write data from and to an operational volume  18 , which is provided by the storage system  1 . 
         [0027]    The management console  3  is a computer having a CPU, a memory, and an interface. The management console  3  is operated by an administrator of the storage system  1 . The management console  3  sends information entered by the administrator to the storage system  1 . The management console  3  also outputs information received from the storage system  1 . 
         [0028]    The storage system  1  has a storage controller  10  and a disk drive. The storage controller  10  reads and writes data from and to the disk drive. The storage controller  10  also provides a storage area of the disk drive as one or more logical volumes (LUs) to the host computer  2 . The storage controller  10  provides the operational volume  18  and a differential volume  19  as the logical volumes to the host computer  2 . 
         [0029]    The operational volume  18  preserves data requested by the host computer  2  to be written. 
         [0030]    The differential volume  19  preserves differential data between data in the operational volume  18  and a snapshot which is managed by the storage system  1 . Snapshots in the embodiment of this invention are differential snapshots. 
         [0031]    In other words, the differential volume  19  preserves differential data copied from the operational volume  18  as a result of data write in the operational volume  18 . The operational volume  18  and the differential volume  19  where differential data copied from the operational volume  18  is preserved are therefore managed as a pair.  FIG. 1  shows only one pair composed of the operational volume  18  and the differential volume  19 , but there may be more than one pair in the storage system  1 . 
         [0032]    The storage controller  10  has a processor  11 , a memory  12 , an interface  15 , and a clock  16 . 
         [0033]    The processor  11  performs various processes by executing a program preserved in the memory  12 . The memory  12  preserves a program executed by the processor  11 , information needed by the processor  11 , and the like. 
         [0034]    Specifically, the memory  12  preserves a snapshot operation starting program  121 , a snapshot creating program  122 , an operational volume accessing program  123 , a snapshot accessing program  124 , a snapshot removing program  125 , a snapshot operation ending program  126 , a time control program  127 , a snapshot creation time table  131 , a used block management table  132 , and a differential data management table  133 . 
         [0035]    The snapshot operation starting program  121  is executed when an instruction to start snapshot operation is received from the management console  3 . The snapshot operation starting program  121  performs a necessary process to start snapshot operation. The process performed by the snapshot operation starting program  121  will be described in detail with reference to  FIG. 5 . 
         [0036]    The snapshot creating program  122  is executed when an instruction to take a snapshot is received from the management console  3 . The snapshot creating program  122  creates a snapshot. The process performed by the snapshot creating program  122  will be described in detail with reference to  FIG. 6 . 
         [0037]    The operational volume accessing program  123  is executed when a request to access the operational volume  18  is received from the host computer  2 . An access request is a read request or a write request. The operational volume accessing program  123  reads or writes data from or in the operational volume  18  as requested by the received access request. The process performed by the operational volume accessing program  123  will be described in detail with reference to  FIG. 7 . 
         [0038]    The snapshot accessing program  124  is executed when a request to access a snapshot managed by the storage system  1  is received from the host computer  2 . The snapshot accessing program  124  reads or writes data from or in the snapshot as requested by the received access request. The process performed by the snapshot accessing program  124  will be described in detail with reference to  FIG. 8 . 
         [0039]    The snapshot removing program  125  is executed when an instruction to remove a snapshot is received from the management console  3 . The snapshot removing program  125  removes a snapshot managed by the storage system  1 . The process performed by the snapshot removing program  125  will be described in detail with reference to  FIG. 9 . 
         [0040]    The snapshot operation ending program  126  is executed when an instruction to cease snapshot operation is received from the management console  3 . The snapshot operation ending program  126  performs a necessary process to stop snapshot operation. The process performed by the snapshot operation ending program  126  will be described in detail with reference to  FIG. 10 . 
         [0041]    The time control program  127  manages time employed in the storage system  1 . Specifically, the time control program  127  advances the time whenever an interruption from the clock  16  is detected. For example, in the case where an interruption from the clock  16  occurs every millisecond, the time control program  127  advances the time by 1 millisecond each time an interruption from the clock  16  is detected. 
         [0042]    The time control program  127  may manage the time on a smaller time frame than the interval of interruption from the clock  16 . For instance, with the use of an operational clock of the processor  11 , the time control program  127  can manage time on a nanosecond basis even when an interruption from the clock  16  occurs every millisecond. 
         [0043]    The snapshot creation time table  131  shows a time at which a snapshot managed by the storage system  1  is created. Details of the snapshot creation time table  131  will be described with reference to  FIG. 2 . 
         [0044]    The used block management table  132  shows, for each block contained in the differential volume  19 , whether the block is in use or not. A block is the minimum unit of storage area for reading or writing data. In short, data is read or written on a block basis. Details of the used block management table  132  will be described with reference to  FIG. 3 . 
         [0045]    The differential data management table  133  shows which block preserves differential data between data in the operational volume  18  and a snapshot managed by the storage system  1 . Details of the differential data management table  133  will be described with reference to  FIG. 4 . 
         [0046]    The interface  15  is connected to the host computer  2  and the management console  3 . The clock  16  is hardware that manages time. The clock  16  causes an interruption at given intervals. 
         [0047]      FIG. 2  is a configuration diagram of the snapshot creation time table  131  which is preserved in the storage controller  10  according to the embodiment of this invention. 
         [0048]    The snapshot creation time table  131  contains a snapshot number  1311  and a time of creation  1312 . 
         [0049]    The snapshot number  1311  indicates an identifier unique to each snapshot managed by the storage system  1 . 
         [0050]    The time of creation  1312  indicates a time at which a snapshot that is identified by the snapshot number  1311  of the field is created. In the case where a snapshot identified by the snapshot number  1311  of the field has not been created, “Null” is stored as the time of creation  1312 . 
         [0051]    The snapshot creation time table  131  holds as many fields as the maximum count of snapshots that can be managed by the storage system  1 . When the storage system  1  is capable of managing S snapshots, for example, the snapshot creation time table  131  holds S fields. 
         [0052]      FIG. 3  is a configuration diagram of the used block management table  132  which is preserved in the storage controller  10  according to the embodiment of this invention. 
         [0053]    The used block management table  132  contains a block number  1321  and an in use/out of use flag  1322 . 
         [0054]    The block number  1321  indicates an identifier unique to each block contained in the differential volume  19 . 
         [0055]    The in use/out of use flag  1322  indicates whether or not there is differential data preserved in a block that is identified by the block number  1321  of the field. For instance, when there is differential data preserved in a block that is identified by the block number  1321  of the field, “1” is stored as the in use/out of use flag  1322 , whereas “0” is stored as the in use/out of use flag  1322  when there is no differential data preserved in a block that is identified by the block number  1321  of the field. 
         [0056]    The used block management table  132  holds as many fields as the count of blocks contained in the differential volume  19 . When the differential volume  19  contains P blocks, for example, the used block management table  132  holds P fields. 
         [0057]      FIG. 4  is a configuration diagram of the differential data management table  133  which is preserved in the storage controller  10  according to the embodiment of this invention. 
         [0058]    The differential data management table  133  contains a block number  1331 , a time of update  1332 , and a snapshot number  1333 . 
         [0059]    The block number  1331  indicates an identifier unique to each block contained in the operational volume  18 . The snapshot number  1333  indicates an identifier unique to each snapshot managed by the storage system  1 . 
         [0060]    Each box  1334  in the differential data management table  133  indicates the actual storage location of data of a block, which is contained in a snapshot identified by the snapshot number  133  of the same field as the box  1334 , identified by the block number  1331  of the same record as the box  1334 . 
         [0061]    Specifically, when it is a block in the operational volume  18  that preserves data of a block, which is contained in a snapshot identified by the snapshot number  1333  of the same field as this box  1334 , identified by the block number  1331  of the same record as the box  1334 , “Null” is written in this box  1334 . On the other hand, when it is a block in the differential volume  19  that preserves data of a block, which is contained in a snapshot identified by the snapshot number  1333  of the same field as this box  1334 , identified by the block number  1331  of the same record as the box  1334 , an identifier unique to the block that preserves the data is written in this box  1334 . 
         [0062]    The time of update  1332  indicates a time at which any of the boxes  1334  of the record is updated last time. In other words, the time of update  1332  indicates the last time at which data of a block that is identified by the block number  1331  of the record is copied to the differential volume  19 . Alternatively, the time of update  1332  may indicate a time at which data of a block in the operational volume  18  that is identified by the block number  1331  of the record is updated last time. 
         [0063]    The differential data management table  133  holds as many fields as the maximum count of snapshots that can be managed by the storage system  1 . When the storage system  1  is capable of managing S snapshots, for example, the differential data management table  133  holds S fields. 
         [0064]    The differential data management table  133  holds as many records as the count of blocks contained in the operational volume  18 . When the operational volume  18  contains N blocks, for example, the differential data management table  133  holds N records. 
         [0065]      FIG. 5  is a flow chart for the process of the snapshot operation starting program  121  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0066]    The processor  11  in the storage controller  10  executes the snapshot operation starting program  121  upon receiving an instruction to start snapshot operation from the management console  3 . A snapshot operation starting instruction designates which operational volume  18  is to start snapshot operation and which differential volume  19  is to preserve differential data copied from this operational volume  18 . 
         [0067]    First, the processor  11  in the storage controller  10  manages, as a pair, the operational volume  18  and the differential volume  19  that are designated in the snapshot operation starting instruction. 
         [0068]    Next, the processor  11  in the storage controller  10  initializes the used block management table  132  ( 1211 ). Specifically, the processor  11  in the storage controller  10  stores “0” as the in use/out of use flag  1322  of every field in the used block management table  132 . 
         [0069]    The initialized used block management table  132  holds as many fields as the count of blocks contained in the differential volume  19  that is designated in the snapshot operation starting instruction. 
         [0070]    The processor  11  in the storage controller  10  then initializes the snapshot creation time table  131  ( 1212 ). Specifically, the processor  11  in the storage controller  10  stores “Null” as the time of creation  1312  of every field in the snapshot creation time table  131 . 
         [0071]    The initialized snapshot creation time table  131  holds as many fields as the maximum count of snapshots that can be managed by the storage system  1 . 
         [0072]    The processor  11  in the storage controller  10  next initializes the differential data management table  133  ( 1213 ). Specifically, the processor  11  in the storage controller  10  stores “Null” in every box  1334  in the differential data management table  133 . 
         [0073]    The initialized differential data management table  133  holds as many fields as the maximum count of snapshots that can be managed by the storage system  1 . The initialized differential data management table  133  holds as many records as the count of blocks contained in the operational volume  18  that is designated in the snapshot operation starting instruction. 
         [0074]    The processor  11  in the storage controller  10  then ends the process of the snapshot operation starting program  121 . 
         [0075]      FIG. 6  is a flow chart for the process of the snapshot creating program  122  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0076]    The processor  11  in the storage controller  10  executes the snapshot creating program  122  upon receiving an instruction to create a snapshot from the management console  3 . A snapshot creating instruction instructs to take a snapshot of the operational volume  18  that has started snapshot operation. Also, a snapshot creating instruction specifies the snapshot number of a snapshot that is to be created in response to the instruction. 
         [0077]    First, the processor  11  in the storage controller  10  chooses from the snapshot creation time table  131  a field whose snapshot number  1311  matches the snapshot number specified in the snapshot creating instruction. Next, the processor  11  in the storage controller  10  stores, as the time of creation  1312  of the chosen field, the time of creation of the snapshot instructed to be created ( 1221 ). For example, the processor  11  in the storage controller  10  stores the current time or a time at which the snapshot creating instruction is received as the time of creation  1312  of the chosen field. 
         [0078]    The processor  11  in the storage controller  10  then ends the process of the snapshot creating program  122 . 
         [0079]    In the case of a storage system having a snapshot function that uses a bitmap to judge whether or not specific differential data needs to be copied, the processor  11  in the storage controller  10  has to set a bitmap in creating a snapshot. The embodiment of this invention, on the other hand, merely requires the processor  11  in the storage controller  10  to store, in creating a snapshot, the time of creation of the snapshot in the snapshot creation time table  131 . The embodiment of this invention thus cuts short the time necessary to create a snapshot. The processor  11  in the storage controller  10  can accordingly create a snapshot at short intervals. 
         [0080]      FIG. 7  is a flow chart for the process of the operational volume accessing program  123  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0081]    The processor  11  in the storage controller  10  executes the operational volume accessing program  123  upon receiving a request to access the operational volume  18  from the host computer  2 . The access request specifies the block number of a block to be accessed. 
         [0082]    First, the processor  11  in the storage controller  10  judges whether or not the received access request is a write request ( 1231 ). 
         [0083]    When the access request is a read request, the processor  11  in the storage controller  10  reads, out of the operational volume  18 , data requested to be read ( 1236 ). Next, the processor  11  in the storage controller  10  sends the read data to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the operational volume accessing program  123 . 
         [0084]    When the access request is a write request, the processor  11  in the storage controller  10  chooses from the differential data management table  133  a record whose block number  1331  matches the block number specified in the access request. From the chosen record, the processor  11  in the storage controller  10  extracts the time of update  1332 . 
         [0085]    The processor  11  in the storage controller  10  judges whether or not every time of creation  1312  in the snapshot creation time table  131  precedes the extracted time of update  1332  ( 1232 ). 
         [0086]    When every time of creation  1312  in the snapshot creation time table  131  precedes the extracted time of update  1332 , there is no need to copy differential data. The processor  11  in the storage controller  10  therefore writes, in the operational volume  18 , data requested to be written ( 1236 ). Thereafter, the processor  11  in the storage controller  10  sends a write completion notification to the host computer  2  which is the sender of the access request. 
         [0087]    In the case where the time of update  1332  of the differential data management table  133  indicates the last time data of the block is updated, the processor  11  in the storage controller  10  updates the time of update  1332  of the differential data management table  133 . 
         [0088]    Specifically, the processor  11  in the storage controller  10  chooses from the differential data management table  133  a record whose block number  1331  matches the block number specified by the access request. The processor  11  in the storage controller  10  stores the current time as the time of update  1332  of the chosen record. 
         [0089]    The processor  11  in the storage controller  10  then ends the process of the operational volume accessing program  123 . 
         [0090]    When the time of update  1332  precedes even one time of creation  1312  in the snapshot creation time table  131 , differential data needs to be copied. 
         [0091]    Then the processor  11  in the storage controller  10  chooses a field in the used block management table  132  that has “0” as the in use/out of use flag  1322 . The processor  11  in the storage controller  10  stores “1” as the in use/out of use flag  1322  of the chosen field. Next, the processor  11  in the storage controller  10  extracts the block number  1321  from the chosen field. The processor  11  in the storage controller  10  identifies, as an unused block in the differential volume  19 , the block identified by the extracted block number  1321  ( 1233 ). 
         [0092]    To the identified unused block, the processor  11  in the storage controller  10  next copies data of the block to be accessed which is identified by the block number specified in the access request ( 1234 ). 
         [0093]    Next, the processor  11  in the storage controller  10  selects every field in the snapshot creation time table  131  whose time of creation  1312  is after the extracted time of update  1332 . From each of the fields selected, the processor  11  in the storage controller  10  extracts the snapshot number  1311 . 
         [0094]    The processor  11  in the storage controller  10  then updates the differential data management table  133  ( 1235 ). 
         [0095]    Specifically, the processor  11  in the storage controller  10  chooses a record in the differential data management table  133  whose the block number  1331  matches the block number specified by the access request. The processor  11  in the storage controller  10  stores the current time as the time of update  1332  of the chosen record. 
         [0096]    From the chosen record of the differential data management table  133 , the processor  11  in the storage controller  10  chooses the box  1334  whose snapshot number  1333  matches the extracted snapshot number  1311 . The processor  11  in the storage controller  10  stores the extracted block number  1321  in the chosen box  1334 . The processor  11  in the storage controller  10  thus stores, in the box  1334  that is associated with a snapshot created after the time of update of the block to be accessed, the identifier of a block to which differential data is copied. 
         [0097]    The processor  11  in the storage controller  10  next writes in the operational volume  18  data requested to be written ( 1236 ). Thereafter, the processor  11  in the storage controller  10  sends a write completion notification to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the operational volume accessing program  123 . 
         [0098]      FIG. 8  is a flow chart for the process of the snapshot accessing program  124  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0099]    The processor  11  in the storage controller  10  executes the snapshot accessing program  124  upon receiving a request to access a snapshot from the host computer  2 . The access request specifies the snapshot number of a snapshot to be accessed and the block number of a block to be accessed. 
         [0100]    First, the processor  11  in the storage controller  10  chooses from the differential data management table  133  a record whose block number  1331  matches the block number specified by the access request. From the chosen record of the differential data management table  133 , the processor  11  in the storage controller  10  chooses the box  1334  whose snapshot number  1333  matches the snapshot number specified in the access request. 
         [0101]    The processor  11  in the storage controller  10  next judges whether or not a value stored in the chosen box  1334  is “Null”, thereby judging whether or not the differential volume  19  is storing data of the block to be accessed ( 1241 ). 
         [0102]    When the value of the chosen box  1334  is not “Null”, it means that the differential volume  19  is storing data of the block to be accessed. Then the processor  11  in the storage controller  10  judges whether or not the received access request is a write request ( 1246 ). 
         [0103]    When the access request is a read request, the processor  11  in the storage controller  10  reads, out of the differential volume  19 , data requested to be read ( 1248 ). Next, the processor  11  in the storage controller  10  sends the read data to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the snapshot accessing program  124 . 
         [0104]    When the access request is a write request, the processor  11  in the storage controller  10  judges whether or not any one of the boxes  1334  in the chosen record shares the same value with the chosen box  1334 , thereby judging whether or not other snapshots than the snapshot to be accessed are using the block to be accessed ( 1247 ). 
         [0105]    When any one of the boxes  1334  in the chosen record shares the same value with the chosen box  1334 , it means that other snapshots as well as the snapshot to be accessed are using the block to be accessed. Then the processor  11  in the storage controller  10  proceeds to Step  1243 . 
         [0106]    When the chosen record has no box  1334  that shares the same value with the chosen box  1334 , it means that only the snapshot to be accessed is using the block to be accessed. Then the processor  11  in the storage controller  10  writes data in a block that is identified by the chosen box  1334  out of blocks contained in the differential volume  19  ( 1248 ). Thereafter, the processor  11  in the storage controller  10  sends a write completion notification to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the snapshot accessing program  124 . 
         [0107]    On the other hand, when the value of the chosen box  1334  is “Null”, it means that the operational volume  18  is storing data of the block to be accessed. Then the processor  11  in the storage controller  10  judges whether or not the received access request is a write request ( 1242 ). 
         [0108]    When the access request is a read request, the processor  11  in the storage controller  10  reads, out of the operational volume  18 , data requested to be read ( 1245 ). The processor  11  in the storage controller  10  sends the read data to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the snapshot accessing program  124 . 
         [0109]    When the access request is a write request, the processor  11  in the storage controller  10  chooses a field in the used block management table  132  that has “0” as the in use/out of use flag  1322 . The processor  11  in the storage controller  10  stores “1” as the in use/out of use flag  1322  of the chosen field. The processor  11  in the storage controller  10  next extracts the block number  1321  from the chosen field. The processor  11  in the storage controller  10  identifies, as an used block in the differential volume  19 , the block identified by the extracted block number  1321  ( 1243 ). 
         [0110]    Next, the processor  11  in the storage controller  10  updates the differential data management table  133  ( 1244 ). 
         [0111]    Specifically, the processor  11  in the storage controller  10  chooses a record in the differential data management table  133  that has, as the block number  1331 , the block number specified by the access request. The processor  11  in the storage controller  10  stores the current time as the time of update  1332  of the chosen record. 
         [0112]    From the chosen record of the differential data management table  133 , the processor  11  in the storage controller  10  chooses the box  1334  that has, as the snapshot number  1333 , the snapshot number specified by the access request. The processor  11  in the storage controller  10  stores the extracted block number  1321  in the chosen box  1334 . 
         [0113]    The processor  11  in the storage controller  10  next writes, in the identified unused block, data requested to be written ( 1245 ). Thereafter, the processor  11  in the storage controller  10  sends a write completion notification to the host computer  2  which is the sender of the access request. The processor  11  in the storage controller  10  then ends the process of the snapshot accessing program  124 . 
         [0114]      FIG. 9  is a flow chart for the process of the snapshot removing program  125  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0115]    The processor  11  in the storage controller  10  executes the snapshot removing program  125  upon receiving an instruction to remove a snapshot from the management console  3 . A snapshot removing instruction specifies the snapshot number of a snapshot instructed to be removed. 
         [0116]    First, the processor  11  in the storage controller  10  updates the snapshot creation time table  131  ( 1251 ). 
         [0117]    Specifically, the processor  11  in the storage controller  10  chooses from the snapshot creation time table  131  a field whose the snapshot number  1311  matches the snapshot number specified by the snapshot removing instruction. The processor  11  in the storage controller  10  stores “Null” as the time of creation  1312  of the chosen field. 
         [0118]    The processor  11  in the storage controller  10  next sets “0” to a variable B, which is used in the subsequent process ( 1252 ). 
         [0119]    The processor  11  in the storage controller  10  chooses from the differential data management table  133  a record whose block number  1331  matches the variable B. From the chosen record of the differential data management table  133 , the processor  11  in the storage controller  10  chooses the box  1334  whose the snapshot number  1333  matches the snapshot number specified by the snapshot removing instruction. 
         [0120]    The processor  11  in the storage controller  10  judges whether or not a value stored in the chosen box  1334  is “Null”, thereby judging whether or not the differential volume  19  is storing data of a block that is identified by the variable B. 
         [0121]    When the chosen box  1334  has a value “Null”, it means that the operational volume  18  is storing data of the block that is identified by the variable B. Then the processor  11  in the storage controller  10  proceeds directly to Step  1256 . 
         [0122]    When the chosen box  1334  does not have a value “Null”, it means that the differential volume  19  is storing data of the block that is identified by the variable B. Then the processor  11  in the storage controller  10  judges whether or not any one of the boxes  1334  in the chosen record shares the same value with the chosen box  1334 . 
         [0123]    When other boxes  1334  in the chosen record share the same value as the chosen box  1334 , it means that other snapshots than the snapshot to be removed are using data of the block that is identified by the variable B. Then the processor  11  in the storage controller  10  proceeds directly to Step  1255 . 
         [0124]    When no box  1334  in the chosen record shares the same value as the chosen box  1334 , it means that only the snapshot to be removed is using data of the block that is identified by the variable B. Then the processor  11  in the storage controller  10  updates the used block management table  132  ( 1254 ). 
         [0125]    Specifically, the processor  11  in the storage controller  10  chooses from the used block management table  132  a field whose block number  1321  matches the block number stored in the chosen box  1334 . The processor  11  in the storage controller  10  stores “0” as the block number  1321  of the chosen field. 
         [0126]    The processor  11  in the storage controller  10  next updates the differential data management table  133  ( 1255 ). Specifically, the processor  11  in the storage controller  10  stores “Null” in the chosen box  1334 . 
         [0127]    Next, the processor  11  in the storage controller  10  judges whether or not a value obtained by subtracting “1” from the count of blocks in the operational volume  18  is equal to the variable B ( 1256 ). 
         [0128]    When the two values are different from each other, it means that the processor  11  in the storage controller  10  has not executed Step  1253  to Step  1255  for one of the blocks contained in the operational volume  18 . The processor  11  in the storage controller  10  therefore adds “1” to the variable B ( 1257 ), and returns to Step  1253  to execute Step  1253  to Step  1256 . 
         [0129]    When the two values are equal to each other, it means that the processor  11  in the storage controller  10  has executed Step  1253  to Step  1255  for every block contained in the operational volume  18 . The processor  11  in the storage controller  10  then ends the process of the snapshot removing program  125 . 
         [0130]      FIG. 10  is a flow chart for the process of the snapshot operation ending program  126  which is executed by the storage controller  10  according to the embodiment of this invention. 
         [0131]    The processor  11  in the storage controller  10  executes the snapshot operation ending program  126  upon receiving an instruction to cease snapshot operation from the management console  3 . A snapshot operation ending instruction designates which operational volume  18  is to stop snapshot operation. 
         [0132]    First, the processor  11  in the storage controller  10  deletes the used block management table  132  ( 1261 ). 
         [0133]    Next, the processor  11  in the storage controller  10  deletes the snapshot creation time table  131  ( 1262 ). 
         [0134]    Thereafter, the processor  11  in the storage controller  10  deletes the differential data management table  133  ( 1263 ). 
         [0135]    The processor  11  in the storage controller  10  then ends the process of the snapshot operation ending program  126 . 
         [0136]    According to the embodiment of this invention, the storage controller  10  judges whether to copy differential data by comparing the time of creation  1312  in the snapshot creation time table  131  against the time of update  1332  in the differential data management table  133 . In other words, the storage controller  10  judges whether to copy differential data by comparing the time at which data is copied from the block last time against the time of creation of a snapshot. Alternatively, the storage controller  10  compares the time at which data of the block is updated last time against the time of creation of a snapshot to judge whether differential data needs to be copied or not. 
         [0137]    The storage controller  10  according to the embodiment of this invention therefore stores a time at which data of a block is updated last time or a time at which data is copied from a block last time, but does not have to store a bitmap which is used in judging whether to copy differential data. 
         [0138]    For instance, a bitmap takes up as large a storage capacity as indicated by a value (bit) that is calculated by multiplying the count of blocks in the operational volume  18  by the maximum count of snapshots that can be managed by the storage system  1 . The embodiment of this invention, on the other hand, merely requires a storage capacity indicated by a value (bit) that is calculated by multiplying a storage capacity necessary for storage of one piece of time data by the maximum count of snapshots that can be managed by the storage system  1 . The storage capacity necessary for storage of one piece of time data is, for example, 64 bits. 
         [0139]    In short, the embodiment of this invention reduces the storage capacity used in judging the necessity of copying differential data. 
         [0140]    Another advantage of the embodiment of this invention is that, in creating a snapshot, the storage controller  10  merely needs to store the time of creation of the snapshot, whereas in a storage system that uses a bitmap to judge whether to copy differential data, the storage controller  10  has to set a bitmap in creating a snapshot. The embodiment of this invention thus simplifies the process of creating a snapshot. The storage controller  10  according to the embodiment of this invention can therefore create a snapshot at short intervals. 
         [0141]    Described next is a modification example of the embodiment of this invention. 
         [0142]    In the modification example of the embodiment of this invention, a NAS server performs various processes instead of the storage controller  10 . 
         [0143]      FIG. 11  is a block diagram showing the configuration of a computer system according to the modification example of the embodiment of this invention. 
         [0144]    The computer system of the modification example has a storage system  1 , a host computer  2 , a management console  3 , and a NAS server  5 . The storage system  1  is connected to the NAS server  5  and the management console  3 . For example, a Fiber Channel is used to connect the storage system  1  to the NAS server  5 . The NAS server  5  is connected to the host computer  2  via a Local Area Network (LAN) or the like. 
         [0145]    The storage system  1 , the host computer  2 , and the management console  3  in  FIG. 11  are the same as those of the computer system shown in  FIG. 1 , and their descriptions will be omitted. However, a memory  12  of the storage system  1  in the modification example does not preserve the snapshot operation starting program  121 , the snapshot creating program  122 , the operational volume accessing program  123 , the snapshot accessing program  124 , the snapshot removing program  125 , the snapshot operation ending program  126 , the time control program  127 , the snapshot creation time table  131 , the used block management table  132 , and the differential data management table  133 . 
         [0146]    The NAS server  5  provides a file sharing service to the host computer  2 . For instance, the NAS server  5  receives a file access request and converts the received file access request into a block access request. The NAS server  5  sends the block access request obtained by the conversion to the storage system  1 . Details of the NAS server  5  will be described with reference to  FIG. 12 . 
         [0147]      FIG. 12  is a configuration diagram of the NAS server  5  in the computer system according to the modification example of the embodiment of this invention. 
         [0148]    The NAS server  5  has a processor  51 , a memory  52 , a network interface  55 , a storage interface  56 , and a clock  57 . 
         [0149]    The processor  51  executes a program preserved in the memory  52  to perform various processes. The memory  52  preserves a program executed by the processor  51 , information needed by the processor  51 , and the like. 
         [0150]    Specifically, the memory  52  preserves a snapshot operation starting program  121 , a snapshot creating program  122 , an operational volume accessing program  123 , a snapshot accessing program  124 , a snapshot removing program  125 , a snapshot operation ending program  126 , a time control program  127 , a snapshot creation time table  131 , a used block management table  132 , a differential data management table  133 , a file access process program  521 , and a file system process program  522 . 
         [0151]    The snapshot operation starting program  121 , the snapshot creating program  122 , the operational volume accessing program  123 , the snapshot accessing program  124 , the snapshot removing program  125 , the snapshot operation ending program  126 , the time control program  127 , the snapshot creation time table  131 , the used block management table  132 , and the differential data management table  133  that are preserved in the memory  52  are the same as those preserved in the memory  12  of the storage system  1  shown in  FIG. 1 . The descriptions on the programs and tables will not be repeated here. 
         [0152]    The file access process program  521  provides a file sharing service to the host computer  2 . A file sharing protocol such as Network File System (NFS) or Common Internet File System (CIFS) is employed between the NAS server  5  and the host computer  2 . 
         [0153]    The file system process program  522  provides data preserved in the storage system  1  to the host computer  2  as a file. For example, the file system process program  522  converts a file access request into a block access request. 
         [0154]    The network interface  55  is connected to the host computer  2  via a LAN or the like. The storage interface  56  is connected to the storage system  1  via a Fibre Channel or the like. The clock  57  is hardware that manages time. The clock  57  also causes an interruption at given intervals. 
         [0155]    The NAS server  5  in the modification example of the embodiment of this invention has a configuration shown in  FIG. 12 . The NAS server  5  thus executes the processes shown in  FIGS. 5 to 10  in place of the storage controller  10 . 
         [0156]    While the present invention has been described in detail and pictorially in the accompanying drawings, the present invention is not limited to such detail but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.