Patent Publication Number: US-8533157-B2

Title: Snapshot management apparatus and method, and storage system

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. application Ser. No. 11/285,203, filed Nov. 23, 2005, now U.S. Pat. No. 7,519,625 and which application relates to and claims priority from Japanese Patent Application No. 2005-279208, filed on Sep. 27, 2005, the entire disclosure of which is incorporated herein by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates to a snapshot management apparatus and method, and a storage system. This invention is preferably applied to, for example, a storage system designed to provide a large-scale snapshot environment by connecting a plurality of external storage apparatuses. 
     Conventionally, as one function of a NAS (Network Attached Storage) server or a disk array apparatus, there is a so-called “snapshot function” of retaining an image of a designated operational volume (that is a logical volume to or from which data is written or read into a host system) upon receiving a snapshot creation instruction. The snapshot function is used to restore the operational volume to the state it was in at a designated time when, for example, data is lost by human error or when the state of the file system at a particular time needs to be restored. 
     A snapshot that is the image of the operational volume retained by the snapshot function (sometimes referred to as “virtual volume”) is not the data of the entire operational volume at the time of receipt of the snapshot creation instruction, but is composed of the data of the current operational volume and difference data that is the difference between the operational volume at the time of receipt of the snapshot creation instruction and the current operational volume. Based on the difference data and the current operational volume data, the content of the operational volume is restored to the state it was in at the time of receipt of the snapshot creation instruction. Accordingly, the snapshot function has the advantageous effect of being able to maintain the image of the operational volume by using a smaller storage capacity than would be the case if the content of the entire operational volume were stored. 
     Lately, a method for maintaining snapshots of plural generations has been suggested (see JP-A-2004-342050). For example, JP-A-2004-342050 suggests managing snapshots of plural generations by using a mapping table that associates each block of an operational volume with each block of a difference volume that stores difference data of a snapshot of each generation. 
     Also in recent years, JP-A-2004-005370 discloses a method for effectively utilizing an old storage apparatus without remodelling it when a new storage apparatus is introduced. By combining the method disclosed in JP-A-2004-342050 and the method disclosed in JP-A-2004-005370, it has become possible to easily construct a larger-scale snapshot environment by using a plurality of external storage apparatuses. 
     However, by the snapshot management method disclosed in JP-A-2004-342050, a single mapping table is used to centrally manage all the snapshots. Accordingly, as the number of created snapshots increases, the scale of the mapping table becomes larger and the frequency of access to the mapping table by data write processing increases. There is also a problem of poor accessibility to the mapping table due to the expansion of the scale of the mapping table. 
     Where a mapping table is retained in a storage apparatus so that snapshots can be restored even after reactivation of a server, its disadvantage is that all the snapshots may be lost if a failure occurs in the storage apparatus. This problem tends to easily occur when an external storage apparatus connected via a network is used. The operation of the snapshot function can no longer be continued just because the storage apparatus retaining the mapping table becomes inaccessible due to line disturbance. 
     As a means of solving the above-described problem, there is a method for retaining, in a plurality of storage apparatuses, copies of a mapping table necessary to maintain snapshots. This method has the advantage of being able to continue the operation of the snapshot function even if a failure occurs at part of the storage apparatuses. 
     However, there is a problem in that the size of a mapping table is large in order to contain entries to cover all blocks of the operational volume, and therefore, a large storage capacity is required to retain a plurality of mapping tables. There is also the problem of synchronization of the processing for updating the mapping tables retained by the respective storage apparatuses. 
     By any of the methods described above, the mapping tables relevant to all the snapshots need to be accessed when data is written to the operational volume and the difference data is saved in the difference volume. Therefore, when many snapshots are retained, writing speed decreases due to overhead, thereby leaving the problem of the performance of the entire system deteriorating. 
     SUMMARY OF THE INVENTION 
     The present invention has been made in consideration of the above conventional art problems. This invention aims to provide a high-performance and highly-reliable snapshot management apparatus and method, and storage system. 
     In order to solve the above-described problem, according to one aspect of the present invention, there is provided a snapshot management apparatus for creating and managing a snapshot or snapshots of one or more generations, each snapshot being composed of an image of an operational volume at a specified time, wherein data from a host system is written to the operational volume and the data in the operational volume is read into the host system. The snapshot management apparatus includes: a volume setting unit for setting the operational volume in a storage area provided by a first storage apparatus and setting a difference volume in a storage area provided by a second storage apparatus; a difference data saving unit for saving, in the difference volume, difference data that is the difference between the operational volume at the time of creation of the relevant snapshot and the operational volume in its current state, in response to data writing to the operational volume; and a snapshot managing unit for creating a management table that stores management information for the snapshots, and managing each snapshot according to the management table. The snapshot managing unit creates the management table which is divided according to one or more snapshots; and if there is more than one management table, the second and any following management tables store specified inheritance information to inherit the content of the preceding management tables. 
     According to another aspect of this invention, there is provided a snapshot management method for creating and managing a snapshot or snapshots of one or more generations, each snapshot being composed of an image of an operational volume at a specified time, wherein data from a host system is written to the operational volume and the data in the operational volume is read into the host system. The snapshot management method includes: a first step of setting the operational volume in a storage area provided by a first storage apparatus and setting a difference volume in a storage area provided by a second storage apparatus; and a second step of saving, in the difference volume, difference data that is the difference between the operational volume at the time of creation of the relevant snapshot and the operational volume in its current state, in response to data writing to the operational volume, and of creating a management table that stores management information for the snapshots and manages each snapshot according to the management table. In the second step, the management table which is divided according to one or more snapshots is created; and if there is more than one management table, the second and any following management tables store specified inheritance information to inherit the content of the preceding management tables. 
     According to a further aspect of this invention, there is provided a storage system including a snapshot management apparatus, one or more first storage apparatuses, and one or more second apparatuses, wherein the snapshot management apparatus creates and manages a snapshot or snapshots of one or more generations, each snapshot being composed of an image of an operational volume at a specified time, wherein data from a host system is written to the operational volume and the data in the operational volume is read into the host system, and the snapshot management apparatus is connected to the first and second storage apparatuses respectively so that they are capable of freely communicating with each other. The snapshot management apparatus includes: a volume setting unit for setting the operational volume in a storage area provided by a first storage apparatus and setting a difference volume in a storage area provided by a second storage apparatus; a difference data saving unit for saving, in the difference volume, difference data that is the difference between the operational volume at the time of creation of the relevant snapshot and the operational volume in its current state, in response to data writing to the operational volume; and a snapshot managing unit for creating a management table that stores management information of the snapshots, and managing each snapshot according to the management table; and wherein the snapshot managing unit creates the management table which is divided according to one or more snapshots; and if there is more than one management table, the second and any following management tables store specified inheritance information to inherit the content of the preceding management tables. 
     In the snapshot management apparatus and method, and storage system of this invention, it is possible to save the difference data relating to the current snapshot and record its management information by accessing the latest management table. As a result, the scale of the management table can be kept to a desirable size regardless of the number of retained snapshots. Therefore, overhead caused by access to the management table can be reduced and it is thereby possible to effectively prevent a decrease in writing speed due to the overhead, as well as the resultant deterioration of the performance of the entire system. 
     Moreover, in the snapshot management apparatus and method, and storage system of this invention, each of the second and following management tables stores inheritance information to take over the content of the previous management table. Therefore, it is possible to manage the snapshots on a management table basis. Even if inconsistency in the current snapshot arises from, for example, line disturbance, the other snapshots managed by the other management tables can be protected from the influence of that inconsistency. 
     Accordingly, this invention can realize a high-performance and highly-reliable snapshot management apparatus and method, and storage system. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a conceptual diagram that explains a conventional snapshot management method. 
         FIG. 2  is a conceptual diagram that describes the outline of a snapshot management method according to an embodiment of this invention. 
         FIG. 3  is a conceptual diagram that describes the outline of the snapshot management method according to that embodiment. 
         FIG. 4  is a block diagram illustrating the configuration of a storage system according to the embodiment. 
         FIG. 5  is a conceptual diagram that explains a snapshot management program. 
         FIG. 6  is a chart that explains a CoW request management table. 
         FIG. 7  is a chart that explains an empty block management table. 
         FIG. 8  is a chart that explains a snapshot arrangement table. 
         FIG. 9  is a chart that explains a mapping table. 
         FIG. 10  is a chart that explains another mapping table. 
         FIG. 11  is a flowchart illustrating write processing. 
         FIG. 12  is a conceptual diagram that explains the write processing. 
         FIG. 13  is a conceptual diagram that explains the write processing. 
         FIG. 14  is a flowchart that explains difference volume switching processing. 
         FIG. 15  is a conceptual diagram explaining difference volume switching processing. 
         FIG. 16  is a conceptual diagram explaining difference volume switching processing. 
         FIG. 17  is a flowchart showing read processing. 
         FIG. 18  is a conceptual diagram that explains the read processing. 
         FIG. 19  is a flowchart showing snapshot creation processing. 
         FIG. 20  is a conceptual diagram that explains the snapshot creation processing. 
         FIG. 21  is a flowchart showing snapshot deletion processing. 
         FIG. 22  is a flowchart showing difference volume disconnection processing. 
         FIG. 23  is a conceptual diagram that explains the difference volume disconnection processing. 
         FIG. 24  is a flowchart showing difference volume activation processing. 
         FIG. 25  is a conceptual diagram that explains the difference volume activation processing. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     An embodiment of this invention will be described in detail with reference to the attached drawings. 
     (1) Outline of Snapshot Management Method According to this Embodiment 
     Unlike the conventional method of managing a plurality of snapshots V-VOL 1  to V-VOL 10  by using a single mapping table  1  as shown in  FIG. 1 , the snapshot management method according to an embodiment of this invention is characterized in that each mapping table  2 A,  2 B, or  2 C is divided into blocks in accordance with creation times of, for example, snapshots V-VOL 1  to V-VOL 10  and information in preceding mapping table(s)  2 A or/and  2 B is aggregated and retained in a new mapping table  2 B or  2 C. 
     Using the snapshot management method of this embodiment, it is possible to save difference data and record its management information by accessing the latest mapping table  2 C from among the mapping tables  2 A to  2 C with divided blocks, thereby preventing deterioration in writing performance. Moreover, using the snapshot management method of this embodiment, the number of retainable snapshots can be increased by adding the mapping tables  2 A to  2 C as necessary. Therefore, it is possible to easily realize an active expansion of operation scale. 
     Another feature of the snapshot management method according to this embodiment is provision of a plurality of difference volumes D-VOL 1  to D-VOL 3 , distribution of difference data obtained at the time of creation of snapshots V-VOL 1  to V-VOL 9  to difference volumes D-VOL 1  to D-VOL 3 , and storage of the distributed difference data in the difference volumes D-VOL 1  to D-VOL 3 . Accordingly, using the snapshot management method according to this embodiment, the difference data is distributed in snapshot units to the difference volumes D-VOL 1  to D-VOL 3 , and the respective mapping tables  2 A to  2 C are created for their corresponding difference volumes D-VOL 1  to D-VOL 3 , thereby enabling the management of the snapshots VOL-V 1  to VOL-V 9  in difference volume D-VOL 1  to D-VOL 3  units. 
     As a result, by the snapshot managing method according to this embodiment, correspondences between the difference volumes D-VOL 1  to D-VOL 3  and the snapshots V-VOL 1  to V-VOL 9  are clarified. Therefore, even if any of difference volumes D-VOL 1  to D-VOL 3 , becomes inaccessible due to a failure, the operation of the snapshot function can be continued by using the remaining difference volumes D-VOL 1 , D-VOL 2 , and/or D-VOL 3 . It is also possible to stop the operation of the difference volume(s) D-VOL 1 , D-VOL 2 , and/or D-VOL 3  storing old snapshots, any of V-VOL 1  to V-VOL 9 , which are not referenced, for the purposes of cost reduction and conservation, and to resume the operation of those difference volume(s) whenever necessary. 
     A storage system to which the snapshot managing method according to this embodiment is applied will be described below. In the following explanation, “P-VOL” represents an operational volume, “D-VOL” represents a difference volume, and “V-VOL” represents a snapshot. 
     (2) Configuration of Storage System According to this Embodiment 
       FIG. 4  shows a storage system  10  to which the snapshot managing method according to this embodiment is applied. In this storage system  10 , a plurality of client apparatuses  11  is connected to a NAS server system  13  via a front-end network  12 , and the NAS server system  13  is connected to a plurality of storage apparatuses  15  ( 15   1  to  15   n+m ) and an operation control apparatus  16  via a back-end network  14 . 
     The client apparatus  11 , as a host system, is a computer device equipped with information processing resources such as a CPU (Central Processing Unit) and memory, and is composed of, for example, a personal computer, a workstation, or a mainframe. The client apparatus  11  includes: information input devices (not shown in the drawing) such as a keyboard, a switch, a pointing device, and/or a microphone; and information output devices (not shown in the drawing) such as a monitor display and/or speakers. 
     The front-end network  12  is composed of, for example, a SAN (Storage Area Network), a LAN (Local Area Network), the Internet, public line(s), or private line(s). Communication between the client apparatuses  11  and the NAS server system  13  via the front-end network  12  is conducted according to Fiber Channel Protocol (FCP) when the front-end network  12  is a SAN, or according to Transmission Control Protocol/Internet Protocol (TCP/IP) when the front-end network  12  is a LAN. 
     The NAS server system  13  includes: a CPU  21 , memory  22 , a first network interface  23 , and a second network interface  24  that are mutually connected via buses  20 . The NAS server system  13  executes processing in order to provide a file sharing service and a snapshot service to the client apparatuses  11 . Various control programs for that purpose are stored in the memory  22 . The CPU  21  of the NAS server system  13  executes various processing according to the control programs stored in the memory  22 . 
     The first network interface  23  is the interface that performs protocol control during communication with the client apparatuses  11 . The first network interface  23  is equipped with a plurality of ports and is connected via any one of the ports to the front-end network  12 . The respective ports are given their own network addresses such as a World Wide Name (WWN) or an Internet Protocol (IP) address to identify themselves on the front-end network  12 . 
     The second network interface  24  is the interface that performs protocol control during communication with the storage apparatuses  15  and operation control apparatus  16  connected to the NAS server system  13 . Like the first network interface  23 , the second network interface  24  is equipped with a plurality of ports and is connected via any one of the ports to the back-end network  14 . The respective ports of the second network interface  24  are also given network addresses such as a WWN or IP address to identify themselves on the back-end network  14 . 
     Like the front-end network  12 , the back-end network  14  is composed of, for example, a SAN, a LAN, the Internet, or public or private lines. Communication between the NAS server system  13  and the respective storage apparatuses  15 , and between the NAS server system  13  and the operation control apparatus  16  is conducted via the back-end network  14  according to, for example, Fiber Channel Protocol (FCP) when the back-end network  14  is a SAN, or according to TCP/IP when the back-end network  14  is a LAN. 
     Each storage apparatus  15  is composed of: a plurality of disk units  30 , each of which stores data; and a controller  31  for controlling data input to and output from these disk units  30 . 
     Each disk unit  30  contains, for example, expensive disk devices such as SCSI (Small Computer System Interface) disks, or inexpensive disk devices such as SATA (Serial AT Attachment) disks or optical disks. The respective disk units  30  are operated by the controller  31  according to a RAID system. One or more logical volumes are set on physical storage areas provided by one or more disk units  30 . These logical volumes store data in blocks of predetermined size. 
     Each logical volume is given its own unique identifier (LUN: Logical Unit Number). In this embodiment, data input and output is conducted by designating, as an address, a combination of the above-mentioned identifier and a unique block number (LBA: Logical Block Address) assigned to each block. 
     In the storage system  10  according to this embodiment, some of the storage apparatuses  15  connected to the NAS server system  13  are used for the file sharing service. The storage areas provided by the respective storage apparatuses  15   1  to  15   n  for the file sharing service are virtualized by the NAS server system  13 . The NAS server system  13  CPU  21  defines one or more operational volumes P-VOL (see  FIG. 3 ) on the virtualized storage areas described above. The operational volume(s) store data from the client apparatuses  11 . The remaining storage apparatuses  15   n+1  to  15   n+m  are used for the snapshot service. The CPU  21  of the NAS server system  13  defines one difference volume D-VOL (see  FIG. 3 ) for each of the storage apparatuses  15   n+1  to  15   n+m  in the storage areas provided by the respective storage apparatuses  15   n+1  to  15   n+m . Difference data obtained at the time of creation of the relevant snapshots V-VOL (see  FIG. 3 ) is sequentially saved (or stored) in the corresponding difference volumes D-VOL (see  FIG. 3 ). 
     The controller  31  includes a network interface for communication with the NAS server system  13  via the back-end network  14 , a disk interface for communication with each disk unit  30 , and cache memory that temporarily retains data to be read from or written to the operational volumes P-VOL and the difference volumes D-VOL. The controller  31  controls data input and output between the NAS server system  13  and the disk units  30 . 
     The operation control apparatus  16  is a computer device equipped with information processing resources such as a CPU and memory, and is, for example, a personal computer, a workstation, or a mainframe. The operation control apparatus  16  executes control processing that operates or stops the operation of a designated storage apparatus  15  upon receiving an instruction from the NAS server system  13  via the back-end network  14 . 
     Now various control programs stored in the memory  22  of the NAS server system  13  will be described. As is clear from  FIG. 4 , the memory  22  of the NAS server system  13  stores control programs such as a file server program  40 , a data protection program  41 , a file system processing program  42 , and a snapshot management program  43 . 
     In response to a file access request from the client apparatus  11 , the file server program  40  issues a file or directory read processing request or write processing request to the file system processing program  42  and sends the result to the client apparatus  11 . 
     In response to a file or directory read processing request or write processing request from the file server program  40 , the file system processing program  42  issues, to the snapshot management program  43 , a data read request or data write request that designates the LUN of a logical volume (the operational volume P-VOL) storing the relevant file or directory, the LBA of the corresponding block, and the data size. The data protection program  41  requests the creation or deletion of the snapshots V-VOL, assignment of the difference volumes D-VOL, and change of connection state to the snapshot management program  43 . 
     The snapshot management program  43  is the program that: manages the difference volumes D-VOL storing difference data necessary to maintain the operational volume P-VOL, which stores a file system etc., and the snapshots V-VOL; and executes various processing such as processing in response to requests from the file system processing program  42  and the data protection program  41 , processing for maintaining the snapshots V-VOL, and processing for making the snapshots V-VOL available. The snapshot management program  43  is composed of: subprograms for starting the relevant processing in response to the respective requests; and the management tables used by these subprograms. 
       FIG. 5  shows the specific configuration of the snapshot management program  43 . As shown in  FIG. 5 , the snapshot management program  43  includes: a write processing subprogram  50 ; a read processing subprogram  51 , a snapshot creation subprogram  52 ; a snapshot deletion subprogram  53 ; a difference volume switching subprogram  54 ; a difference volume stop subprogram  55 ; a difference volume activation subprogram  56 ; a CoW (Copy on Write) request management table  57 ; an empty block management table  58 ; and a snapshot arrangement table  59 . 
     Of the above-listed subprograms, the write processing subprogram  50  is the program that executes processing for writing data to the operational volume P-VOL in response to a write request from the file system management program  42 . The read processing subprogram  51  executes processing for reading data from the operational volume P-VOL in response to a read request from the file system processing program  42 . In response to a request from the data protection program  41 , the snapshot creation subprograms  52  execute processing for creating a new snapshot V-VOL, while the snapshot deletion subprogram  53  executes processing for deleting an already created snapshot V-VOL. 
     The difference volume switching subprogram  54  switches the difference volume D-VOL to save difference data obtained upon creation of a snapshot V-VOL as described later in detail. The difference volume stop subprogram  55  stops the operation of the storage apparatuses  15   n+1  to  15   n+m  respectively retaining their corresponding difference volumes D-VOL, while the difference volume activation subprogram  56  activates the operation of such storage apparatuses  15   n+1  to  15   n+m . 
     The CoW request management table  57  is used to judge whether or not a CoW request (a request to save data, which is stored in the relevant block of the operational volume P-VOL, on the difference volume D-VOL) is made for each block of the operational volume P-VOL, at the time of data writing to the operational P-VOL. 
     As shown in  FIG. 6 , this CoW request management table  57  has CoW request fields  57 A associated with the respective blocks of the operational volume P-VOL. Each CoW request field  57 A stores “1” if a CoW request is made for the relevant block of the operational volume P-VOL. If no CoW request is made, the CoW request field  57 A stores “0.” Accordingly, in the initial state, each CoW request field  57 A stores “0.” The value stored in each CoW request field  57 A is equal to the result of a logical OR operation regarding the bits in a CoW bitmap of a mapping table  60  or  61  described later, corresponding to each block of the operational volume P-VOL. 
     The empty block management table  58  shows the usage state of the current difference volume D-VOL and is created for each difference volume D-VOL. As shown in  FIG. 7 , this empty block management table  58  has usage status fields  58 A associated with the respective blocks of the corresponding difference volume D-VOL. Each usage status field  58 A stores “1” if the relevant block of the corresponding difference volume D-VOL is empty, that is, if difference data is not yet saved in that block. If any difference data is already saved in that block, the usage status field  58 A stores “0.” Accordingly, in the initial state, each usage status field  58 A stores “1.” 
     The snapshot arrangement table  59  shows in which difference volume D-VOL the difference data of the snapshot V-VOL for each generation is stored. As shown in  FIG. 8 , this snapshot arrangement table  59  has difference volume number storage fields  59 A associated with the snapshots V-VOL for the respective generations. Each difference volume number storage field  59 A stores a difference volume number that is an ID number for the relevant difference volume D-VOL associated with the corresponding snapshot V-VOL. This difference volume number is a serial number given to each difference volume D-VOL. In the example of  FIG. 8 , first and second generation snapshot difference data is stored in the difference volume D-VOL with the number “1,” and the third generation snapshot difference data is stored in the difference volume D-VOL with the number “2.” 
       FIG. 9  shows a mapping table  60  for maintaining and managing the multiple-generation snapshots V-VOL, and the mapping table  60  stores management information for the snapshots V-VOL associated with the mapping table  60 . The mapping table  60  is created for each difference volume D-VOL (each storage apparatus  15   n+1  to  15   n+m ) and is stored in the relevant difference volume D-VOL. 
     The mapping table  60  has CoW bitmap fields  60 A and plural sets of block address fields  60 B corresponding to each block of the operational volume P-VOL. 
     Each CoW bitmap field  60 A stores a CoW bitmap that shows whether or not a CoW request is made for the relevant block of the corresponding operational volume P-VOL. The CoW bitmap consists of a plurality of bits which correspond to old-generation snapshots V-VOL, and are indicated in chronological order starting from the first bit on the left end indicating the oldest generation. If a CoW request is made for the snapshot V-VOL, the corresponding bit in the CoW bitmap is set to “1”; and if no CoW request is made, i.e., if the difference data for the relevant block is already saved in the difference volume D-VOL, the corresponding bit is set to “0.” For example, if a CoW request is made for the m th  snapshot V-VOL, the m th  bit counted from the left end in the CoW bitmap  60 A is set to “1.” 
     There are plural sets of block address fields  60 B that correspond to the respective snapshots V-VOL associated with their difference volumes D-VOL (storage apparatuses  15   n+1  to  15   n+m ). For example,  FIG. 9  shows that the 1 st  to m th  snapshots V-VOL are associated with the difference volumes D-VOL and that the difference data of these snapshots V-VOL is stored in their corresponding difference volumes D-VOL. 
     Each block address field  60 B stores the block address of the relevant block of the difference volume D-VOL where difference data of the snapshot V-VOL of the relevant generation corresponding to the relevant block of the operational volume P-VOL is saved. However, if the corresponding difference data is not yet saved, the code “NONE,” indicating that there is no save destination block address, is stored. 
     If there is a plurality of storage apparatuses  15   n+1  to  15   n+m  which provide difference volumes D-VOL, a mapping table  61  as shown in  FIG. 10 , contained in each of the second and any following storage apparatuses  15   n+1  to  15   n+m  has inheritance fields  61 C corresponding to the respective blocks of the operational volume P-VOL, in addition to the CoW bitmap fields  61 A and plural sets of block address fields  61 B. 
     The inheritance field  61 C is the field that stores specified inheritance information for inheriting the content of the previous mapping table  60  or  61 . If a “NONE” code is stored in the block address field  60 B or  61 B associated with the last snapshot V-VOL in the previous mapping table  60  or  61  (snapshot M in  FIG. 9  or snapshot N in  FIG. 10 ) (hereafter called “last block address field”), the block address of the relevant block of the difference volume D-VOL which stores the corresponding difference data as described below is stored as the inheritance information. 
     Specifically speaking, if a “NONE” code is stored in the last block address field  60 B or  61 B, i.e., if no difference data for the relevant block of the operational volume P-VOL is saved in the snapshot V-VOL, the same block address as the block address that was last stored in any corresponding block address field  61 B in the mapping table  61  (in any block address fields  61 C on the same row as the target inheritance field  61 C in  FIG. 10 ) is stored in the inheritance field  61 C; and if any block address other than the “NONE” code is stored in the last block address field  60  or  61 , the “NONE” code is stored in the inheritance field  61 C. 
     When the difference data for the block where the “NONE” code is stored in the last block field  60 B or  61 B in the previous mapping table  60  or  61  is to be read, the inheritance field  61 C is referred to. For example, in  FIG. 9  and  FIG. 10 , when the difference data for the block with the block address “2” of the “snapshot M” that is the last snapshot V-VOL of the mapping table  60  in  FIG. 9  is to be read, because the “NONE” code is stored in the last block field  60 B, the inheritance field  61 C of the mapping table  61  in  FIG. 10  that is the next mapping table is referred to. As a result, data is read from the block with the block address “100” of the difference volume D-VOL corresponding to this mapping table  61 . 
     (3) Various Processing Performed by the NAS Server System 
     The following processing executed by the CPU  21  ( FIG. 4 ) of the NAS server system  13  ( FIG. 4 ) in the storage system  10  ( FIG. 4 ) will be described below in detail: processing for writing data to the operational volume P-VOL; processing for reading data from the operational volume P-VOL; processing for creating a new snapshot V-VOL; processing for deleting the created snapshot V-VOL; difference volume D-VOL switching processing; difference volume D-VOL disconnection processing; and processing for connecting, or resuming the operation of, a stopped difference volume D-VOL. 
     (3-1) Data Write Processing 
     First, the details of processing executed by the CPU  21  for writing data to the operational volume P-VOL are described below. 
       FIG. 11  is a flowchart explaining a processing sequence executed by the NAS server system  13  CPU  21  when the NAS server system  13  having the configuration described above receives a request from the client apparatus  11  ( FIG. 4 ) to write data to the operational volume P-VOL.  FIG. 12  shows the storage system  10  in its initial state at a certain time point in time.  FIG. 13  shows a processing sequence for writing data to the operational volume P-VOL in response to a request from the client apparatus  11 . The CPU  21  executes this data write processing according to the write processing subprogram  50  ( FIG. 5 ) of the snapshot management program  43  ( FIG. 5 ). 
     When the CPU  21  receives a data write request, it starts the data write processing (SP 0 ) and first judges whether or not the value “1” is stored in the CoW request field  57 A in the CoW request management table  57  of the snapshot management program  43  ( FIGS. 5 and 6 ), corresponding to the block designated as the data write destination of the operational volume P-VOL (hereinafter referred to as the “data write destination block”) (SP 1 ). 
     If the judgment result is “NO” (SP 1 : NO), the CPU  21  proceeds to step SP 13 . On the other hand, if the judgment result in SP 1  is “YES” (SP 1 : YES), the CPU  21  refers to the empty block management table  58  of the snapshot management program  43  ( FIGS. 5 and 7 ) and then judges whether or not the currently used difference volume D-VOL (D 1  in  FIG. 13 ) has enough empty blocks to save the difference data stored in the data write destination block (SP 2 ). 
     If the judgment result is “YES” (SP 2 : YES), the CPU  21  stores “0” in the usage status field  58 A of the empty block management table  58  associated with the block in which the difference data in the difference volume D-VOL (SP 6 ) is to be saved (SP 6 ). The CPU  21  then sends the data in the data write destination block as the difference data, together with the data write request, to the corresponding storage apparatus  15   n+1  to  15   n+m , and has that storage apparatus copy (or save) the difference data to the corresponding block of the difference volume D-VOL (SP 7 ). 
     Next, the CPU  21  issues a read request to that relevant storage apparatus  15   n+1  to  15   n+m  to read the mapping table  60  or  61 , and has that storage apparatus read the mapping table  60  or  61  stored in the relevant difference volume D-VOL (SP 8 ). Subsequently, the CPU  21  updates the address in the block address field  60 B or  61 B of the mapping table  60  or  61 , corresponding to the current snapshot V-VOL—i.e., the block address field  60 B or  61 B corresponding to the data write destination block of the operational volume P-VOL—to the block address of the block of the difference volume D-VOL to which the difference data was copied in step SP 7  (SP 9 ). 
     In doing so, the CPU  21  refers to the corresponding CoW bitmap field  60 A or  61 A in the relevant mapping table  60 B or  61 B. If there is any preceding snapshot V-VOL that is older than the current snapshot V-VOL and whose corresponding bit in the CoW bitmap is “1”, the CPU  21  also updates the address in the block address field  60 B or  61 B of the mapping table  60  or  61 , corresponding to that snapshot V-VOL—i.e., the block address field  60 B or  61 B corresponding to the data write destination block of the operational volume P-VOL—to the block address of the block of the difference volume D-VOL to which the difference data was copied in step SP 7  (SP 9 ). 
     Next, the CPU  21  updates all the bits of the CoW bitmap in the mapping table  60  or  61 , corresponding to the data write destination block of the operational volume P-VOL, to “0” (SP 10 ), and writes the mapping table  60  or  61  back to the difference volume D-VOL where it originally belonged (SP 11 ). 
     Subsequently, the CPU  21  updates the bits stored in the relevant CoW request fields  57 A in the CoW request management table  57  in the snapshot management program  43 , to “0” (SP 12 ), and writes the write data to the corresponding block of the operational volume P-VOL (SP 13 ). Then the CPU  21  terminates the write processing (SP 14 ). 
     On the other hand, if the judgment result in step SP 2  is “NO” (SP 2 : NO), the CPU  21  judges whether or not the next storage apparatus  15   n+1  to  15   n+m  for the snapshot service exists (SP 3 ). If the judgment result is “NO” (SP 3 : NO), the CPU  21  executes error processing by, for example, making an error report to the client apparatus  11  that sent the data write request, and then terminates this data write processing (error termination) (SP 4 ). In this case, the operation of the snapshot V-VOL function can no longer be continued. 
     On the other hand, if the judgment result in step SP 3  is “YES” (SP 3 : YES), the CPU  21  switches from the currently used difference volume D-VOL (D 1  in  FIG. 13 ) to the next difference volume D-VOL (D 2  in  FIG. 13 ) via the sequences indicated in  FIGS. 14 and 15 , according to the difference volume switching subprogram  54  of the snapshot management program  43 . 
     Specifically speaking, if the judgment result in step SP 3  of the data write processing ( FIG. 11 ) is “YES”, the CPU  21  starts difference volume switching processing (SP 20 ) and first prepares the mapping table  61  in its initial state with the inheritance fields  61 C described above in  FIG. 10  (SP 21 ). 
     Next, the CPU  21  copies the values stored in the corresponding CoW request fields  57 A in the CoW request management table  57  to the respective first bits of the CoW bitmaps stored in all the CoW bitmap fields  61 A of the mapping table  61  (SP 22 ). 
     Subsequently, the CPU  21  stores that mapping table  61  in the difference volume D-VOL of the next storage apparatus  15   n+1  to  15   n+m  providing the snapshot service (SP 23 ) and then initializes the empty block management table  58  (SP 24 ). 
     Moreover, the CPU  21  sets the difference volume D-VOL of that storage apparatus  15   n+1  to  15   n+m  that stored the mapping table  61  in step SP 23 , as the difference volume D-VOL to be used next (SP 25 ) and then terminates this difference volume switching processing (SP 26 ). 
     The CPU  21  returns to the data write processing ( FIG. 11 ) and executes the processing of steps SP 6  to SP 14  as described above. Therefore, after the termination of the difference volume switching processing, the difference data will be saved in the newly switched difference volume D-VOL (D 2  in  FIG. 16 ) as shown in  FIG. 16 . 
     (3-2) Data Read Processing 
     The details of processing executed by the CPU  21  for reading data are explained below. 
       FIG. 17  is a flowchart showing the details of processing executed by the CPU  21  of the NAS server system  13  upon receiving a data read request.  FIG. 18  shows the processing sequence executed by the CPU  21  where the target read data is the data of a snapshot V-VOL. The CPU  21  executes this data read processing according to the read processing program  51  ( FIG. 5 ) of the snapshot management program  43  ( FIG. 5 ). 
     Specifically speaking, when the CPU  21  receives a data read request, it starts the processing for reading the data (SP 30 ) and first judges whether or not the request is made to read data from one of the snapshots V-VOL (SP 31 ). 
     If the judgment result is “NO” (SP 31 : NO), the CPU  21  proceeds to step SP 40 . On the other hand, if the judgment result is “YES” (SP 31 : YES), the CPU  21  then judges whether or not the relevant snapshot V-VOL is accessible based on, for example, its internal settings and the existence of any failure. (SP 32 ). 
     If the judgment result is “NO” (SP 32 : NO), the CPU  21  terminates this read processing abnormally (error termination) (SP 33 ). On the other hand, if the judgment result is “YES” (SP 32 : YES), the CPU  21  searches for the target difference volume by using the snapshot arrangement table  59  of the snapshot management program  43  ( FIG. 8 ) (SP 34 ). The CPU  21  then issues a request to read the mapping table  60  or  61  ( FIG. 9  or  FIG. 10 ) stored in the target difference volume V-VOL found by the above search, to the relevant storage apparatus  15   n+1  to  15   n+m  storing that difference volume V-VOL, and has that storage apparatus read the mapping table  60  or  61  (SP 35 ). 
     Subsequently, the CPU  21  judges whether or not the data stored in the block address field  60 B or  61 B of the mapping table  60  or  61  obtained as described above, corresponding to the block of the operational volume P-VOL storing the target data, is “NONE”. (SP 36 ). 
     If the judgment result is “NO” (SP 36 : NO), it means that the designated data is saved as the difference data in the difference volume D-VOL found as the result of the search in step SP 34 , at the time of creation of the relevant snapshot V-VOL. Therefore, the CPU  21  issues a data read request to the corresponding storage apparatus  15   n+1  to  15   n+m , and then has that storage apparatus read the data from the relevant block of the difference volume D-VOL with the block address stored in the above-mentioned block address field  60 B or  61 B (SP 37 ). 
     Then, the CPU  21  terminates this read processing (SP 41 ). 
     On the other hand, if the judgment result in step  36  is “YES” (SP 36 : YES), it means that the designated data is not saved in the difference volume D-VOL found as a result of the search in step SP 34 , at the time of creation of the relevant snapshot V-VOL. Therefore, the CPU  21  judges whether or not the next difference volume D-VOL exists (SP 38 ), for example, according to the snapshot arrangement table  59  ( FIG. 8 ) (SP 38 ). 
     If the judgment result is “YES” (SP 38 : YES), the CPU  21  changes the target difference volume D-VOL to the next difference volume D-VOL (SP 39 ) and then returns to step SP 35 . In the same way, the CPU  21  repeats the same processing until the judgment result becomes “NO” in step SP 36  or SP 38  (processing sequence: SP 35 →SP 36 →SP 38 →SP 39 →SP 35 ). 
     On the other hand, if the judgment result in step SP 38  is “NO” (SP 38 : NO), it means that no data was written by a user to the relevant block of the operational volume P-VOL where the corresponding data is stored, i.e., no data from the corresponding block of the operational volume P-VOL was saved, from the start of the creation of the corresponding snapshot V-VOL until the start of the creation start time of the current snapshot V-VOL. As a result, the CPU  21  issues a data read request to the corresponding storage apparatus  15   1  to  15   n  to read data from the corresponding block of the operational volume P-VOL, and has that storage apparatus read the data (SP 40 ). Then, the CPU  21  terminates this data read processing (SP 41 ). 
     The difference data read from the difference volume D-VOL in step  37  of this read processing and the data read from the operational volume P-VOL in step SP 40  will be sent to the corresponding client apparatus  11  later by the processing executed by the CPU  21  according to the file server program  40 . 
     (3-3) Snapshot Creation Processing 
       FIG. 19  is a flowchart showing the details of processing executed by the CPU  21  for creating a snapshot V-VOL and  FIG. 20  shows the sequence of this snapshot creation processing. The CPU  21  executes the snapshot creation processing according to the write processing subprogram  50  ( FIG. 5 ) of the snapshot management program  43  ( FIG. 5 ). 
     Specifically speaking, when the CPU  21  receives an instruction to create a snapshot V-VOL from the client apparatus  11 , it starts this snapshot creation processing (SP 50 ), and first issues a request to the relevant storage apparatus  15   n+1  to  15   n+m  storing the current difference volume D-VOL (D 1  in  FIG. 20 ) to read the mapping table  60  or  61  ( FIG. 9  or  10 ) and then has that storage apparatus read the mapping table  60  or  61  from the difference volume D-VOL (SP 51 ). 
     Next, the CPU  21  registers a new snapshot V-VOL in the empty fields of the read mapping table  60  or  61  (SP 52 ). Specifically speaking, the CPU  21  secures the block address fields  60 B or  61 B on the mapping table  60  or  61  by associating them with the respective blocks of the operational volume P-VOL. 
     The CPU  21  then sets all the bits, corresponding to the new snapshot V-VOL, of the CoW bitmaps stored in the respective CoW bitmap fields  60 A or  61 A in the mapping table  60  or  61 , to “1” (SP 53 ), and then sends this mapping table  60  or  61  to the corresponding storage apparatus  15   n+1  to  15   n+m , and has that storage apparatus write the mapping table  60  and  61  back to the difference volume D-VOL where it originally belonged (SP 54 ). 
     Subsequently, the CPU  21  sets the values stored in the respective CoW request fields  57 A of the CoW request management table  57  of the snapshot management program  43 , to “1” (SP 55 ) and then sets the difference volume number of the current difference volume D-VOL in the corresponding difference volume number field  59 A of the snapshot arrangement table  59  ( FIG. 8 ) of the snapshot management program  43  (SP 56 ). Then the CPU  21  terminates the snapshot creation processing (SP 57 ). 
     (3-4) Snapshot Deletion Processing 
       FIG. 21  is a flowchart showing the details of processing executed by the CPU  21  for deleting a snapshot. When the CPU  21  receives an instruction to delete a snapshot V-VOL from the client apparatus  11  ( FIG. 4 ), it executes the processing for deleting the designated snapshot V-VOL by following the processing sequence shown in this flowchart according to the snapshot deletion processing subprogram  53  ( FIG. 5 ) of the snapshot management program  43  ( FIG. 5 ). 
     Specifically speaking, when the CPU  21  receives an instruction to delete a snapshot V-VOL, it starts the snapshot deletion processing (SP 60 ) and first refers to the snapshot arrangement table  59  in the snapshot management program  43  ( FIG. 8 ) and detects the relevant difference volume D-VOL storing the difference data of the designated snapshot V-VOL (SP 61 ). 
     Next, the CPU  21  issues a request to read the mapping table  60  or  61  ( FIG. 9  or  FIG. 10 ), to the relevant storage apparatus  15   n+1  to  15   n+m  providing the detected difference volume D-VOL, and then has that storage apparatus read this mapping table  60  or  61  from the difference volume D-VOL (SP 62 ). Subsequently, the CPU  21  cancels the registration of the deletion target snapshot V-VOL from the mapping table  60  or  61  (SP 63 ). Specifically speaking, the CPU  21  deletes all the data concerning the deletion target snapshot V-VOL from the mapping table  60  or  61 . 
     Next, the CPU  21  sets the bits, corresponding to the deletion target snapshot V-VOL, in the respective CoW bitmaps stored in the CoW bitmap fields  60 A or  61 A of the mapping table  60  or  61 , to “0” (SP 64 ), and then sends the mapping table  60  or  61  to the corresponding storage apparatus  15   n+1  to  15   n+m , and has that storage apparatus write the mapping table  60  or  61  back to the difference volume D-VOL where it originally belonged (SP 65 ). 
     Then, the CPU  21  judges whether or not the next difference volume D-VOL newer than the above difference volume D-VOL exists, according to the snapshot arrangement table  59  (SP 66 ). If the deletion target snapshot V-VOL is not the newest one, the judgment result in step SP 66  is “YES” (SP 66 : YES). Accordingly, the CPU  21  issues a request to read the mapping table  61  to the relevant storage apparatus  15   n+1  to  15   n+m  storing that next difference volume D-VOL, and then has that storage apparatus read this mapping table  61  from the difference volume D-VOL (SP 67 ). 
     Subsequently, the CPU  21  updates the block addresses stored in the inheritance fields  61 C of this mapping table  61  as necessary (SP 68 ) and then sends this mapping table  61  to the corresponding storage apparatus  15   n+1  to  15   n+m  and has that storage apparatus write the mapping table  61  back to the difference volume D-VOL where it originally belonged (SP 69 ). Then, the CPU  21  repeats the same processing sequentially for any newer difference volumes D-VOL until all the related mapping tables  61  are updated (from SP 66  to SP 69  and then back to SP 66 ). 
     When all the related mapping tables  60  and  61  have been updated and the judgment result in step SP 66  becomes “NO” (SP 66 : NO), the CPU  21  updates the CoW request management table  57  and the empty block management table  58  of the snapshot management program  43  (SP 70 ). Specifically speaking, regarding the CoW request management table  57 , the CPU  21  implements a logical OR operation of all the bits of the CoW bitmap in each updated mapping table  60  or  61 , corresponding to each block of the operational volume P-VOL, and stores the results of the logical OR operation in the corresponding CoW request fields  57 A of the CoW request management table  57 . Concerning the empty block management table  58 , the CPU  21  changes the value stored in the usage status fields  58 A corresponding to the block of the difference volume D-VOL storing the difference data of the deletion target snapshot V-VOL from “0” to “1.” 
     Subsequently, the CPU  21  deletes the entry of the deletion target snapshot V-VOL from the snapshot arrangement table  59  (SP 71 ) and then terminates this snapshot deletion processing (SP 72 ). 
     (3-5) Difference Volume Disconnection Processing 
     In the storage system  10  according to this embodiment, if no access is made to a certain difference volume D-VOL for a certain period of time, or if a server administrator gives a disconnection instruction, or if any failure occurs, settings are made so that all the snapshots associated with the target difference volume D-VOL and any other preceding difference volumes D-VOL become inaccessible, and then the operation of the storage apparatuses  15   n+1  to  15   n+m  providing these difference volumes D-VOL is stopped. However, the operational volume P-VOL or the difference volume D-VOL where the current difference data is saved cannot be disconnected. 
       FIG. 22  is a flowchart showing the details of processing executed by the CPU  21  of the NAS server system for disconnecting a difference volume.  FIG. 23  shows the sequence of the difference volume disconnection processing. The CPU  21  executes the difference volume disconnection processing by following the sequence shown in this flowchart according to the difference volume stop subprogram  55  of the snapshot management program  43  ( FIG. 5 ). 
     Specifically speaking, when any difference volume D-VOL other than the current difference volume D-VOL enters a specified state where it could be disconnected (i.e., where the relevant storage apparatus  15   n+1  to  15   n+m  providing that difference volume D-VOL could have its operation stopped), for example, if no access is made to the difference volume D-VOL for a certain period of time, or if the server administrator gives a disconnection instruction, or if any failure occurs, the CPU  21  starts the difference volume disconnection processing (SP 80 ), selects the first entry of the snapshot arrangement table  59  ( FIG. 8 ) in the snapshot management program  43  (SP 81 ), and then makes internal settings so that the snapshot V-VOL of this entry becomes inaccessible (SP 82 ). 
     Subsequently, the CPU  21  judges whether or not the difference volume number of the difference volume D-VOL associated with the inaccessible snapshot V-VOL is larger than the difference volume number of the target difference volume D-VOL (SP 83 ). The “target difference volume D-VOL” means the difference volume D-VOL that is associated with the snapshot V-VOL not accessed for a certain period of time, or for which the server administrator instructed disconnection, or that is provided by the relevant storage apparatus  15   n+1  to  15   n+m  where the failure occurred. 
     If the judgment result is “NO” (SP 83 : NO), the CPU  21  selects the next entry on the snapshot management table  43  (SP 84 ) and then repeats the same processing sequence for this entry and any subsequent entries (from SP 82  to SP 84  and then back to SP 82 ). 
     When the internal settings have been made so that all the entries of the snapshots V-VOL from the first registered entry to the entry associated with the target difference volume D-VOL on the snapshot arrangement table  59  have become inaccessible and the judgment result in step SP 83  becomes “YES” (SP 83 : YES), the CPU  21  gives an instruction to the operation control apparatus  16  ( FIG. 4 ) to disconnect all the difference volumes D-VOL, from the difference volume D-VOL with the difference volume number “1” to the target difference volume D-VOL, i.e., to stop the operation of the respective storage apparatuses  15   n+1  to  15   n+m  providing these difference volumes D-VOL (SP 85 ). 
     As a result, the operation control apparatus  16  controls, and stops the operation of, these storage apparatuses  15   n+1  to  15   n+m . “To stop the operation” includes not only stopping by physical power-off, but also stopping by the disconnection of paths. For example, in a case where the storage apparatuses  15   n+1  to  15   n+m  are respectively placed in different chassis, their operation can be stopped by turning off the power for each chassis or by disconnecting their paths. Also, in a case where the respective storage apparatuses  15   n+1  to  15   n+m  are placed together in the same chassis and each storage apparatus is equipped with a power supply like a blade server, their operation can be stopped in the same way as where the storage apparatuses  15   n+1  to  15   n+m  are respectively placed in different chassis. If the storage apparatuses  15   n+1  to  15   n+m  are placed together in the same chassis and share the same power supply, they can be made inaccessible due to, for example, disconnection of paths. 
     Then the CPU  21  terminates the difference volume disconnection processing (SP 86 ). 
     (3-6) Difference Volume Activation Processing 
     In order to resume the operation of the difference volume D-VOL that was disconnected as described above in the situation where, for example, an access is made to the disconnected difference volume D-VOL or the server administrator instructs the resumption of the operation, the CPU  21  executes the difference volume activation processing, in the reverse processing sequence of the difference volume disconnection processing, by instructing the operation control apparatus  16  to activate the relevant difference volumes D-VOL to resume their operation, and then making settings so that the snapshots V-VOL associated with the target difference volume D-VOL become accessible. When any difference volume D-VOL newer than the target difference volume D-VOL is not in operation, the snapshots V-VOL remain inaccessible. 
       FIG. 24  is a flowchart explaining the details of processing executed by the CPU  21  of the NAS server system  13  regarding the difference volume activation processing.  FIG. 25  shows the sequence of the difference volume activation processing. The CPU  21  executes the difference volume activation processing by following the sequence shown in this flowchart according to the difference volume activation subprogram  56  of the snapshot management program  43  ( FIG. 5 ). 
     Specifically speaking, when the difference volume D-VOL disconnected as described above enters a specified state where it could be activated (i.e., where the relevant storage apparatus  15   n+1  to  15   n+m  providing that difference volume D-VOL could have its operation resumed), for example, if an access is made to the difference volume D-VOL, or if the server administrator gives an activation instruction, or if the relevant failure is solved, the CPU  21  starts the difference volume activation processing (SP 90 ) and first issues an instruction to the operation control apparatus  16  ( FIG. 4 ) to resume the operation of the target difference volume D-VOL (SP 91 ). 
     Next, the CPU  21  selects the last entry of the snapshot arrangement table  59  ( FIG. 8 ) in the snapshot management program  43  (SP 92 ) and judges whether or not the difference volume number of the difference volume D-VOL associated with the snapshot V-VOL of this entry is smaller than the target difference volume D-VOL (SP 93 ). 
     If the judgment result is “NO” (SP 93 : NO), the CPU  21  judges whether or not the difference volume D-VOL of the entry selected in step SP 92  is in operation (SP 94 ). If the judgment result is “YES” (SP 94 : YES), the CPU  21  makes internal settings so that the snapshot V-VOL of the entry selected in step SP 92  becomes accessible (SP 95 ). 
     Subsequently, the CPU  21  selects the next entry of the snapshot arrangement table  59  (SP 96 ) and then repeats the same processing sequence for this entry and any preceding entries (from SP 93  to SP 96  and then back to SP 93 ). 
     When the internal settings have been made so that all the entries of the snapshots V-VOL from the last registered entry to the entry associated with the target difference volume D-VOL on the snapshot arrangement table  59  have become accessible and the judgment result in step SP 93  thereby becomes “YES” (SP 93 : YES), or when the difference volume D-VOL of the entry selected in step SP 92  is not in operation and the judgment result in step SP 94  thereby becomes “NO” (SP 94 : NO), the CPU terminates the difference volume disconnection processing (SP 97 ). 
     (4) Advantageous Effects of this Embodiment 
     In the configuration described above, the NAS server system  13  sets one difference volume D-VOL for each storage apparatus  15   n+1  to  15   n+m  for the snapshot service, creates the mapping table  60  or  61  for each difference volume D-VOL, and manages the snapshots V-VOL associated with the corresponding difference volumes D-VOL according to these mapping tables  60  and  61 . 
     Therefore, in the storage system  10 , it is possible to save the difference data concerning the current snapshot V-VOL and record its management information by accessing the latest mapping table  60  or  61 . 
     As a result, in the storage system  10 , the scale of the individual mapping table  60  or  61  can be kept to a desirable size regardless of the number of retained snapshots. Therefore, overhead caused by access to the mapping tables can be reduced and it is thereby possible to effectively prevent a decrease in writing speed due to the overhead as well as the resultant deterioration in the performance of the entire system. 
     Moreover, in this storage system  10 , each of the second and any following management tables  61  has the inheritance fields  61 C to inherit the content of the previous mapping table  60  or  61 , and is designed to store the necessary information (block addresses) in the inheritance fields  61 C. Therefore, it is possible to manage the snapshots V-VOL on a mapping table basis. Even if inconsistency in the current snapshot V-VOL arises from, for example, line disturbance, the other snapshots managed by the other mapping tables  60  or  61  can be protected from the influence of that inconsistency. 
     Accordingly, even if this storage system  10  retains a multiplicity of snapshots, it can prevent deterioration in performance due to overhead caused by accesses to the mapping tables  60  and  61  and realize high reliability as a storage system. 
     (5) Other Embodiments 
     The above embodiment describes the case where the present invention is applied to the NAS server system  13 . However, this invention is not limited to that application, and can be applied to a wide variety of other snapshot management apparatuses for managing snapshots. 
     Moreover, the above embodiment describes the case where one difference volume D-VOL is set for each storage apparatus  15   n+1  to  15   n+m  for the snapshot service. However, this invention is not limited to those settings, and a plurality of difference volumes D-VOL may be set for each storage apparatus  15   n+1  to  15   n+m  and the mapping table  60  or  61  may be created for each of these difference volumes D-VOL. 
     Furthermore, the above embodiment describes the case where the operation of the storage apparatus  15   n+1  to  15   n+m  storing the relevant difference volume D-VOL is simply stopped at the time of the difference volume disconnection processing. However, this invention is not limited to that example, and a copy of the difference data in the difference volume D-VOL stored in the relevant storage apparatus  15   n+1  to  15   n+m  may be temporarily stored in the NAS server system  13  or other storage apparatus  15   n+1  to  15   n+m  that has not had its operation stopped. As a result, it is possible to reduce the number of storage apparatuses  15   n+1  to  15   n+m  that need to have their operation resumed when necessary. In this case, the copy of the difference data may be discarded after completion of referring to the snapshots V-VOL.