Storage system and data duplication method in storage system

By moving data from the second cache area of the source volume to a shared cache area during replication, the storage system efficiently manages data sharing and deletion, addressing inefficiencies in conventional volume replication methods.

JP2025158640AActive Publication Date: 2025-10-17HITACHI VANTARA LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2024061385
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-05
Publication Date
2025-10-17
Estimated Expiration
2044-04-05

AI Technical Summary

Technical Problem

Conventional volume replication methods in storage systems result in unnecessary data being stored in both the source and destination volumes, preventing the deletion of the source volume and inefficient use of storage resources.

Method used

Implement a storage system with multiple logical volumes, each having a first and second cache area, where data is moved from the second cache area of the source volume to a shared cache area during replication, associating data across volumes to enable efficient data sharing and deletion.

Benefits of technology

This approach balances I/O performance, operational efficiency, and ease of use by allowing data to be released from the storage system, optimizing resource utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025158640000001_ABST
    Figure 2025158640000001_ABST
Patent Text Reader

Abstract

To realize a balance of I / O performance, operational performance, and usability in a volume duplication function of a storage system.SOLUTION: A storage system creates a data sharing volume to share data stored on a duplication source volume with a duplication destination volume. The storage system then copies the data stored on the duplication source volume to the data sharing volume, and also transfers append data and metadata stored in a data sharing cache area of the duplication source volume to the data sharing cache area of the data sharing volume. Finally, the storage system copies the data stored on the duplication source volume to the duplication destination volume.SELECTED DRAWING: Figure 16
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a storage system and a data replication method in a storage system. [Background technology]

[0002] In recent years, the need for data utilization has increased, leading to more opportunities for data replication. Accordingly, volume replication functions have become increasingly important in storage systems. A typical implementation of volume replication functions has traditionally been the Redirect on Write (RoW) method (see, for example, Patent Document 1). The RoW method has the advantage of having little impact on I / O performance because it does not involve copying data during I / O. The RoW method is widely adopted in AFA (All Flash Array) devices.

[0003] The RoW method is a method of appending data. Appending is a data storage method in which, when data is written to a storage system, the old data stored before the write is not overwritten, but the write data is stored in a new area and the meta-information is rewritten to reference the data stored in the new area. When a copy of a volume is created, the meta-information of the source volume at that time is copied to the destination, and the destination volume can access the same data as the source volume by referencing the copied meta-information. When a volume is replicated, only the meta-information is copied, not the data, so the destination volume can be created instantly. As a result, the data of the source volume that is accessed by the destination volume is stored within the area managed by the source volume. [Prior art documents] [Patent documents]

[0004] [Patent Document 1] Japanese Patent Publication No. 2022-26812 Summary of the Invention [Problem to be solved by the invention]

[0005] When a destination volume is created from a source volume and the data in the destination volume is used for development or testing, the old data in the source volume may become unnecessary. Naturally, when a volume is no longer needed, a volume deletion operation is performed, and the data held by the volume to be deleted is released from the storage system. However, with conventional technology, because the data referenced by the destination volume is also stored in the area managed by the source volume, even if the data in the source volume is no longer needed, the source volume cannot be deleted, and the unnecessary data cannot be released from the storage system.

[0006] The present invention has been made in view of the above problems, and has as its object to achieve a balance between I / O performance, operational performance, and ease of use for the volume replication function in a storage system. [Means for solving the problem]

[0007] In order to achieve the above object, the present invention provides a storage system having a plurality of controllers and providing a plurality of logical volumes, each of which has a first cache area for storing data and a second cache area for compressing and storing data stored in the first cache area, and when replicating the logical volume, the controller moves the data stored in the second cache area of ​​the source logical volume to the second cache area of ​​the data-sharing logical volume, associates the data in the first cache area of ​​the source logical volume with the data moved to the second cache area of ​​the data-sharing logical volume, and associates the storage area of ​​the first cache area of ​​the destination logical volume, which is a replica of the source logical volume, with the storage area which is the second cache area of ​​the data-sharing logical volume and stores the data. [Effects of the Invention]

[0008] According to the present invention, it is possible to achieve a balance between I / O performance, operational performance, and ease of use for the volume replication function in a storage system. [Brief explanation of the drawings]

[0009] [Figure 1] 1 is a diagram illustrating an example of the configuration of an entire system including a storage system according to a first embodiment. [Figure 2] FIG. 2 is a diagram illustrating an example of a logical configuration in a storage system according to a first embodiment. [Figure 3] FIG. 2 is a diagram illustrating a detailed example of a logical configuration in the storage system according to the first embodiment. [Figure 4] FIG. 1 is a diagram for explaining the problem of prior art 1. [Figure 5] 2 is a diagram illustrating an example of a memory configuration and an example of programs and management information in the memory according to the first embodiment; FIG. [Figure 6] FIG. 10 is a diagram illustrating an example of a volume management table. [Figure 7] FIG. 10 is a diagram illustrating an example of the configuration of a cache area management table. [Figure 8] FIG. 10 is a diagram illustrating an example of the configuration of a directory table. [Figure 9] FIG. 10 is a diagram illustrating an example of the configuration of a mapping table. [Figure 10] FIG. 10 is a diagram illustrating an example of the configuration of a directory area allocation management table. [Figure 11] FIG. 10 is a diagram illustrating an example of the configuration of a replication volume generation management table. [Figure 12] FIG. 10 is a diagram illustrating an example of the configuration of a page conversion table. [Figure 13] FIG. 10 is a diagram illustrating an example of the configuration of a page allocation management table. [Figure 14] FIG. 10 is a diagram illustrating an example of the configuration of a sub-block management table. [Figure 15] 10 is a flowchart showing the processing steps of a volume creation process according to the first embodiment. [Figure 16]10 is a flowchart showing the processing steps of a volume replication process according to the first embodiment. [Figure 17] 10 is a flowchart illustrating a processing procedure for a directory copy process according to the first embodiment. [Figure 18] 10 is a flowchart showing the processing procedure of an additional write process according to the first embodiment. [Figure 19] 10 is a flowchart showing the processing procedure of a read process according to the first embodiment. [Figure 20] 10 is a flowchart showing the processing procedure of a front-end write process according to the first embodiment. [Figure 21] 10 is a flowchart showing the processing procedure of a back-end write process according to the first embodiment. [Figure 22] 10 is a flowchart showing the processing steps of a volume deletion process according to the first embodiment. [Figure 23] 10 is a flowchart showing the processing routine for volume-related resource release processing according to the first embodiment. [Figure 24A] FIG. 10 is a diagram for explaining a first effect of the first embodiment. [Figure 24B] FIG. 10 is a diagram for explaining a second effect of the first embodiment. [Figure 25] 10 is a flowchart showing the processing steps of a volume replication process according to the second embodiment. [Figure 26] 10 is a flowchart showing the processing procedure of a read process according to the second embodiment. [Figure 27] 10 is a flowchart showing the processing procedure of a front-end write process according to the second embodiment. [Figure 28] 10 is a flowchart showing the processing steps of a volume deletion process according to the second embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0010] In the following description, an "interface unit" may refer to one or more interfaces. These one or more interfaces may be one or more homogeneous communication interface devices (for example, one or more NICs (Network Interface Cards)), or two or more heterogeneous communication interface devices (for example, an NIC and an HBA (Host Bus Adapter)).

[0011] In the following description, a "memory unit" refers to one or more memories, typically a primary storage device. At least one memory in the memory unit may be a volatile memory or a non-volatile memory.

[0012] Furthermore, in the following explanation, a "PDEV unit" refers to one or more PDEVs, and may typically be an auxiliary storage device. "PDEV" refers to a physical storage device, and is typically a non-volatile storage device, such as an HDD (Hard Disk Drive) or SSD (Solid State Drive).

[0013] In the following description, a "storage unit" refers to at least one of a memory unit and at least a part of a PDEV unit (typically at least the memory unit).

[0014] In the following description, a "processor unit" refers to one or more processors. The at least one processor is typically a microprocessor such as a CPU (Central Processing Unit), but may also be another type of processor such as a GPU (Graphics Processing Unit). The at least one processor may be single-core or multi-core.

[0015] Furthermore, the at least one processor may be a processor in the broad sense, such as a hardware circuit (for example, a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) that performs part or all of the processing.

[0016] In the following explanation, information that produces an output for an input may be described using expressions such as "xxx table," but this information may be data of any structure, or may be a learning model such as a neural network that produces an output for an input. Therefore, an "xxx table" may be referred to as "xxx information."

[0017] Furthermore, in the following description, the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of two or more tables may be one table.

[0018] In the following explanation, processing may be described using the "program" as the subject. The program is executed by the processor unit to perform a predetermined process using a storage unit and / or an interface unit as appropriate, so the subject of the process may be the processor unit (or a device such as a controller that has the processor unit).

[0019] The program may be installed in a device such as a computer, or may be stored in, for example, a program distribution server or a computer-readable (e.g., non-transitory) recording medium. Also, in the following description, two or more programs may be realized as one program, or one program may be realized as two or more programs.

[0020] In the following description, a "computer system" refers to a system including one or more physical computers. A physical computer may be a general-purpose computer or a dedicated computer. A physical computer may function as a computer that issues I / O (Input / Output) requests (e.g., a host computer), or as a computer that performs data I / O in response to I / O requests (e.g., a storage device).

[0021] That is, the computer system may be at least one of a host system, which is one or more host computers that issue I / O requests, and a storage system, which is one or more storage devices that perform data I / O in response to the I / O requests. One or more virtual computers (e.g., VMs (Virtual Machines)) may be executed on at least one physical computer. The virtual computer may be a computer that issues I / O requests, or a computer that performs data I / O in response to the I / O requests.

[0022] Furthermore, the computer system may be a distributed system configured with one or more (typically, a plurality of) physical node devices. A physical node device is a physical computer.

[0023] Furthermore, when a physical computer (e.g., a node device) executes predetermined software, SDx (Software-Defined anything) may be constructed on the physical computer or a computer system including the physical computer. For example, SDS (Software Defined Storage) or SDDC (Software-Defined Datacenter) may be adopted as SDx.

[0024] For example, a storage system as an SDS may be constructed by running software having a storage function on a physical general-purpose computer.

[0025] Furthermore, at least one physical computer (for example, a storage device) may run one or more virtual computers as a host system and a virtual computer as a storage controller of the storage system. The storage controller is typically a device that inputs and outputs data to and from the PDEV unit in response to an I / O request.

[0026] In other words, such at least one physical computer may have both the functionality as at least part of a host system and the functionality as at least part of a storage system.

[0027] Furthermore, a computer system (typically a storage system) may have a redundant configuration group. The redundant configuration may be a configuration with multiple node devices, such as erasure coding, RAIN (Redundant Array of Independent Nodes), and inter-node mirroring, or may be a configuration with a single computer (for example, a node device), such as one or more RAID (Redundant Array of Independent (or Inexpensive) Disks) groups as at least a part of a PDEV unit.

[0028] In the following description, a "dataset" is a logical block of electronic data as seen from a program such as an application program, and may be, for example, any of a record, a file, a key-value pair, and a tuple.

[0029] Furthermore, in the following description, identification numbers are used as identification information for various objects, but other types of identification information (for example, identifiers including alphabetic characters or symbols) may also be used.

[0030] In addition, in the following description, when describing elements of the same type without distinguishing between them, reference symbols (or common symbols among the reference symbols) may be used, and when describing elements of the same type with distinction between them, the identification numbers (or reference symbols) of the elements may be used.

[0031] For example, when describing a "page," which is a unit of storage area, without making any particular distinction, it will be written as "page 312." When describing individual pages with distinction, the page number will be used to describe them as "page #0" or "page #1," or the reference number will be used to describe them as "page 312-0" or "page 312-1." [Example]

[0032] A first embodiment of the present invention will be described below with reference to FIGS.

[0033] 1 is a diagram showing an example of the configuration of an entire system including a storage system 100 according to Example 1. The storage system 100 has a plurality of PDEVs 120 (or one PDEV) 120, and a storage controller 110 connected to the PDEVs 120.

[0034] The storage controller 110 has an SI / F 114, an MI / F 115, a PI / F 113, a memory 112, and a processor 111. The SI / F 114, the MI / F 115, and the PI / F 113 are examples of an interface unit. The memory 112 is an example of a storage unit.

[0035] The SI / F 114 is a communication interface device that mediates the exchange of data between the server system 102 and the storage controller 110. The SI / F 114 is connected to the server system 102 via an FC (Fibre Channel) network 104.

[0036] The server system 102 sends an I / O request (write request or read request) to the storage controller 110, specifying the access destination (for example, a logical volume number such as a LUN (Logical Unit Number) or a logical address such as an LBA (Logical Block Address)).

[0037] The MI / F 115 is a communication interface device that mediates the exchange of data between the management system 103 and the storage controller 110. The management system 103 is connected to the MI / F 115 via an IP (Internet Protocol) network 105.

[0038] The network 104 and the network 105 may be the same communication network. The management system 103 manages the storage system 100.

[0039] The PI / F 113 is a communication interface device that mediates the exchange of data between a plurality of PDEVs 120 and the storage controller 110. A plurality of PDEVs 120 (or one) are connected to the PI / F 113.

[0040] The memory 112 stores programs executed by the processor 111 and data used by the processor 111. The processor 111 executes the programs stored in the memory 112. In this embodiment, for example, the set of the memory 112 and the processor 111 is duplicated.

[0041] 2 is a diagram showing an example of a logical configuration within a storage system 100 according to the first embodiment. The storage system 100 is a storage system that uses a RoW (Redirect on Write) method when creating a destination volume. The storage system 100 has, as its logical configuration, a source volume 200, a destination volume 201, a data sharing volume 202, and a Pool 205.

[0042] The source volume 200 is a logical volume provided to a host device (such as the server system 102). The source volume 200 stores write data and reads and transfers data to the host device based on read / write requests from the host device. The destination volume 201 is a copy volume of the source volume 200 created by a RoW volume replication function, and is provided to the host device. The destination volume 201 can also be read from and written to by the host device.

[0043] The data sharing volume 202 is a logical volume for storing data shared by the source volume 200 and the destination volume 201. One data sharing volume 202 is associated with one or more combinations of source volumes 200 and destination volumes 201 that have a volume replication relationship.

[0044] The Pool 205 is a logical storage area based on one or more RAID groups. The Pool 205 is made up of a plurality of pages 212-i (i=0, 1, . . . n-1). A RAID group is a space for a RAID group made up of a plurality of PDEVs 120.

[0045] Each of the source volume 200 and the destination volume 201 has a cache area 203 and a data shared cache area 204. The cache area 203 is a cache area for temporarily storing data, into which data is written by a front-end write program 513 (FIG. 5) described later. The data shared cache area 204 is a cache area into which data in the cache area 203 is compressed and then stored again by a back-end write program 514 (FIG. 5) described later. The data shared cache area 204 allows data to be shared among multiple volumes by being referenced by the destination volume 201, etc.

[0046] An example of writing to the source volume 200 will be shown below.

[0047] When the storage controller 110 receives a write request from the server system 102, it compresses the write target dataset C. Then, the storage controller 110 appends dataset C', which is the compressed version of dataset C, to page 212-1 allocated to the data sharing volume 202 corresponding to the source volume 200.

[0048] In this embodiment, the data sets A', B', C', and D' shown in FIGS. 2, 3, and 4 are examples of append data relating to updates of data stored in a logical volume.

[0049] The pages 212 are allocated to the data sharing volume 202 from the pool 205. The total capacity of the allocated pages 212 is the capacity used by the storage system 100. In other words, the pages 212 are pages 212 allocated to the data sharing volume 202 corresponding to the source volume 200, in other words, pages 212 allocated indirectly to the source volume 200.

[0050] The compressed data set C' is stored in an appended manner in page 212-1. A page allocated to the data sharing volume 202 (a page indirectly allocated to the source volume 200) can be called a "shared page."

[0051] In the following explanation, the area in page 212-1 occupied by the compressed data set C' is referred to as a "sub-block 213." Multiple sub-blocks 213 are stored in page 212. Read and write processes in response to read and write requests from the server system 102 are performed in sub-block units. If all of the sub-blocks 213 in page 212 are unnecessary invalid data, the capacity of the storage system 100 can be secured by releasing the storage area in page units.

[0052] The meta information 211 is a table that manages the storage addresses of the sub-blocks 213 in the shared pages that correspond to the logical data blocks 210 of the source volume 200 and the destination volume 201. The meta information 211 is stored in a meta information area in the data shared cache area 204. After the compressed data set C' is appended, the reference address in the meta information 211 that corresponds to the logical address of the logical data block "C" 210-1 is updated to the append address of the compressed data set C' in the shared page 212-1. This makes it possible to manage the data written to the source volume 200.

[0053] Fig. 3 is a diagram showing a detailed example of the logical configuration in the storage system 100 according to the embodiment 1. Fig. 3 shows an example of the logical configuration in which meta-information 211 that manages the relationship between the logical data blocks 210 of the source volume 200 and the destination volume 201 and the storage destination addresses of the sub-blocks 213 in the shared page is described in detail.

[0054] The meta information 211 is made up of a directory table 301 and a mapping table 302. The directory table 301 and mapping table 302 are stored at the beginning of the data sharing cache area 204. In Fig. 3, the relationship between the logical data block 210 and the sub-block 213 in the shared page is closed within the same data sharing volume 202, and volume replication is not performed.

[0055] The directory table 301 is a table that converts an address in the cache area 203 of the logical data block 210-i (i=0, 1) into an address in the data shared cache area 204 where the mapping table 302 is stored.

[0056] A mapping table 302 is placed between the directory table 301 and the additional write area 303. A mapping table 302 exists for each data sharing volume 202. The mapping table 302 is a table that converts addresses in the mapping table 302 into addresses in the additional write area 303.

[0057] In this way, information required for accessing the write area 303 of the shared data cache area 204 from the cache area 203 is managed with the directory table 301 as the first layer and the mapping table 302 as the second layer.

[0058] Multiple directory tables 301 can be managed in the shared data cache area 204. When a volume replication operation is performed, only the directory table 301 is copied for the replication destination volume, and the directory table 301-1 for the replication destination volume is also managed in the same shared data cache area 204 and can be referenced from the replication destination volume. This allows the logical data block 210-i (i=0, 1) of the replication destination volume 201 to access the sub-block 213 in the shared page 212-1 of the shared data volume 202 via the directory table 301 and mapping table 302.

[0059] The problems with the conventional technology will be explained using Fig. 4. Fig. 4 is a diagram for explaining the problems with the conventional technology. Fig. 4 shows the configuration after a destination volume 201 is created from a source volume 200, and datasets C 210-2 and D 210-3 are written to datasets A and C that have been replicated to the destination volume 201.

[0060] When a volume is replicated, the directory table 301, which is the meta information 211 of the first hierarchical level, is copied for the replication destination volume 201. Therefore, the replication destination volume 201 references the copied directory table 301, and references the sub-block 213 in the data shared cache area 204-0 of the replication source volume 200 from the replication destination volume 201.

[0061] The source volume 200 provides the server system 102 with a dataset A 210-0 and a dataset B 210-1. The destination volume 201 provides the server system 102 with a dataset C 210-2 and a dataset D 210-3.

[0062] At this time, when dataset A 210-0 and dataset B 210-1 of the source volume 200 are no longer needed, a deletion operation is performed on the source volume 200. By performing the deletion operation, dataset A' and dataset B', which are the compressed data of dataset A 210-0 and dataset B 210-1, are deleted and released from Pool 205.

[0063] However, the data set C' and data set D' of the destination volume 201 are also stored in the data shared cache area 204, which is the management area of ​​the source volume 200. This causes a problem in that the source volume 200 cannot be deleted, and unnecessary data sets cannot be released from the storage system 100.

[0064] An embodiment for solving the above-mentioned problems will be described with reference to Fig. 5 to Fig. 24. Fig. 5 is a diagram illustrating an example of the configuration of the memory 112 and the programs and management information in the memory 112 according to the first embodiment.

[0065] The memory 112 includes memory areas called a local memory 500, a cache memory 501, and a shared memory 503. At least one of these memory areas may be an independent memory. The local memory 500 is used by the processor 111 that belongs to the same set as the memory 112 that includes the local memory 500.

[0066] The local memory 500 stores a volume creation program 510, a volume replication program 511, a read program 512, a front-end write program 513, a back-end write program 514, and a volume deletion program 515. These programs will be described later.

[0067] The cache memory 501 temporarily stores data sets that are written to or read from the PDEV 120 .

[0068] The shared memory 502 is used by both a processor 111 that belongs to the same group as the memory 112 that includes this shared memory 502, and a processor 111 that belongs to a different group. Management information is stored in the shared memory 502. The management information includes a volume management table 520, a cache area management table 521, a directory area allocation management table 522, and a replication volume generation management table 523. The management information also includes a page translation table 524, a page allocation management table 525, and a sub-block management table 526. These tables will be described later with reference to the figures.

[0069] 6 is a diagram showing an example of the configuration of a volume management table 520. The volume management table 520 is a table for managing volumes such as the source volume 200, the destination volume 201, and the data sharing volume 202. The volume management table 520 has columns for VOL#600, attribute 601, data sharing VOL#602, number of shared destination VOLs 603, directory#604, VOL capacity 605, and Pool#606.

[0070] VOL#600 is a number identifying a volume. Attribute 601 is the type of volume identified by VOL#600, and includes "SMPL," which indicates a source, destination, or VOL with no replication relationship, and "shared," which is a data sharing volume. Data sharing VOL#602 is a number identifying a destination volume or a data sharing volume in which data from the source volume is stored. Number of shared destination VOLs 603 is the total number of source volumes 200 and destination volumes 201 that reference the data sharing volume 202 (or store data in the data sharing volume 202). Directory#604 is a number identifying a directory table assigned to the source volume 200 or destination volume 201. For example, in FIG. 6, the destination volume 201 with VOL#1 stores data in a volume with data sharing VOL#3, and the data sharing volume 202 with VOL#3 assigns a directory table# of 0.

[0071] The VOL capacity 605 is the capacity of the volume identified by VOL# 600. The Pool# 606 is the number of the Pool from which the volume identified by VOL# 600 is extracted.

[0072] 7 is a diagram showing an example of the configuration of the cache area management table 521. The cache area management table 521 is a table for managing the cache area 203 and the data shared cache area 204 used by volumes such as the source volume 200, the destination volume 201, and the data shared volume 202. The cache area management table 521 has columns for VOL#700, cache area#701, and type 702.

[0073] VOL#700 is a number that identifies a volume. Cache area#701 is a number that identifies a cache area used by a volume. Type 702 identifies whether the cache area is a normal cache area 203 or a data shared cache area 204. Type 702 is set to "shared" for the data shared cache area 204, and to "normal" for the normal cache area 203.

[0074] 8 is a diagram showing an example of the configuration of a directory table 301-i (i=0, 1, 2). The directory table 301 for the source volume, the directory table 301 for the destination volume, and the directory table 301 for the data sharing volume have the same configuration. One entry in each directory table 301 corresponds to data in units of the granularity (for example, 256 KB) of the logical data of the source volume 200 and the destination volume 201.

[0075] The directory table 301 has an address in a VOL 800 and a reference address (address in a mapping area) 801. In the case of the directory table 301-0 for the source volume 200, the address in a VOL 800 is the logical address at which the target data is stored in the source volume 200. In the case of the directory table 301-1 for the destination volume 201, the address in a VOL 800 is the logical address at which the target data is stored in the destination volume 201.

[0076] The referenced address (address in mapping area) 801 is pointer information to the mapping table 302. The referenced address (address in mapping area) 801 corresponds to the address in mapping area 900 of the mapping table 302 associated with the directory table 301.

[0077] 9 is a diagram showing an example of the configuration of the mapping table 302. The mapping table 302 has an address 900 in the mapping area, a reference address (address in the additional write area) 901, and a capacity 902 after compression.

[0078] The address in the mapping area 900 is the reference address (address in the mapping area) 801 of the directory table 301 associated with the mapping table 302. The reference address (address in the appending area) 901 is an address in the appending area 303 where the target data is stored. The compressed capacity 902 is the amount of data after compression when the target data of the source volume 200 or the destination volume 201 is stored in the appending area 303.

[0079] 10 is a diagram showing an example of the configuration of the directory area allocation management table 522. The directory area allocation management table 522 is a table for managing which volume the directory #1000 is allocated to by associating it with the allocation destination VOL #1001.

[0080] 11 is a diagram showing an example of the configuration of the replication volume generation management table 523. The replication volume generation management table 523 manages the latest generation of the replication destination volume for each replication source VOL# of the replication source volume 200. The replication volume generation management table 523 has a replication source VOL#1100, latest generation #1101, generation #1102, replication destination VOL#1103, and status 1104. The replication volume generation management table 523 manages, for example, 1024 generations (generation #1102=0 to 1023) for each replication source #VOL1100.

[0081] In the replication volume generation management table 523, the latest generation #1101 is incremented each time a replication volume is created for each replication source VOL #1100, and the replication destination VOL #1103 corresponding to the latest generation #1101 and the status 1104 are updated. The status 1104 can be a COPY status, in which a replication destination volume is being created (volume replication processing), or a NULL status, in which case the volume replication processing is complete.

[0082] 12 is a diagram showing an example of the configuration of the page translation table 524. The page translation table 524 is set for each volume, such as the source volume 200 and the data sharing volume 202. The page translation table 524 holds information relating to the relationship between an area in the data sharing volume 202 (for example, page 212-0) and page 212-2, for example.

[0083] For example, the page translation table 524 has an entry for each area in the data sharing volume 202. Each entry stores information such as an address in VOL 1200, an allocation flag 1201, and a page # 1202. The following explanation will be given taking one area (called the "target area") as an example.

[0084] The address in VOL 1200 is information about the logical address (for example, the first logical address) of the target area. The allocation flag 1201 is information about whether page 212-2 is allocated to the target area ("allocated") or not ("unassigned"). The page # 1202 is information about the number of page 212-2 allocated to the target area.

[0085] 13 is a diagram showing an example of the configuration of the page allocation management table 525. The page allocation management table 525 is set for each pool 205. The page allocation management table 525 holds information regarding the relationship between a page 212-2 and its allocation destination. For example, the page allocation management table 525 has an entry for each page 212-2.

[0086] Each entry stores information such as a page #1300, an allocation flag 1301, an allocation destination VOL #1302, and an address within the allocation destination VOL 1303. The following explanation takes one page 212 (called the "target page") as an example. The page #1300 is information about the number of the target page. The allocation flag 1301 is information about whether the target page is allocated ("allocated") or not ("unassigned").

[0087] The allocation destination VOL# 1302 is information on the number of the allocation destination VOL (data sharing volume 202) of the target page. The allocation destination VOL address 1303 is information on the logical address (for example, the first logical address) of the area in the allocation destination VOL of the target page.

[0088] 14 is a diagram showing an example of the configuration of the sub-block management table 526. The sub-block management table 526 is set for each volume, such as the source volume 200 and the data sharing volume 202. The sub-block management table 526 holds information about the sub-blocks 213. For example, the sub-block management table 526 has an entry for each sub-block 213.

[0089] Each entry stores information such as a page # 1400, an address within the page 1401, a sub-block size 1402, a referrer address 1403, and an allocation flag 1404. Below, an explanation will be given taking one sub-block 313 (referred to as a "target sub-block") as an example.

[0090] Page #1400 is information about the number of page 212-0 that contains the target sub-block. In-page address 1401 is information about the logical address of the target sub-block in page 212-0. Sub-block size 1402 is information about the size of the target sub-block (the size of the compressed data set stored in the target sub-block).

[0091] The referencing address 1403 is address information referencing the target sub-block. The referencing address of the sub-block 213 of the data sharing volume 202 in Fig. 3 is an address within the cache area 203 of the data sharing volume 202. The allocation flag 1404 is information indicating whether the target sub-block is allocated ("allocated") or not allocated ("unassigned"), in other words, whether the target sub-block is in use or unused.

[0092] (Volume Creation Process According to First Embodiment) 15 is a flowchart showing the processing steps of the volume creation processing according to Example 1. The volume creation processing is executed by the volume creation program 510 in response to an instruction from the management system 103.

[0093] First, in step S1500, the volume creation program 510 checks whether a cache area 203 and a data shared cache area 204 that satisfy the specified conditions (volume capacity, etc.) remain (can be secured) in the storage system 100. If it is determined in step S1500 that they can be secured (Yes in step S1501), the volume creation program 510 proceeds to step S1502. On the other hand, if it is determined in step S1500 that they cannot be secured (No in step S1501), the volume creation program 510 ends the volume creation process.

[0094] Next, in step S1502, the volume creation program 510 allocates the cache area determined to be reservable in step S1501 to the volume to be created. In the cache area management table 521, the volume creation program 510 updates the cache area # of VOL#700 corresponding to the volume to be created with the allocated cache area #, and sets the type 702 to either normal or shared.

[0095] Next, in step S1503, the volume creation program 510 adds and updates the volume management table 520 with volume information including the attributes, data sharing VOL#, directory#, capacity, and Pool# created by this volume creation program.

[0096] (Volume replication process according to the first embodiment) 16 is a flowchart showing the processing steps of volume replication processing according to the first embodiment. The volume replication processing is processing for replicating data of the source volume 200 to the destination volume 201. In the RoW method, user data is not copied, but the directory table 301-0 for the source volume, which manages data storage destination addresses, is copied to the directory table 301-1 for the destination volume. The directory table 301-1 for the destination volume is then referenced from the destination volume. This makes it possible to reference the data in the source volume 200, making it appear as if the data has been copied to the destination volume 201. The volume replication processing is executed by the volume replication program 511-1 in response to an instruction from the management system 103.

[0097] First, in step S1600, the volume replication program 511-1 receives the source VOL# of the source volume 200. Next, in step S1601, the volume replication program 511-1 references the volume management table 520 to confirm whether the attribute 601 corresponding to the source volume 200 is "SMPL", indicating that no volume replication operation has been performed yet. If the attribute of the source volume is SMPL (step S1601: Yes), the volume replication program 511-1 transitions the process to step S1602. On the other hand, if the attribute of the source volume 200 is not SMPL (step S1601: No), the volume replication program 511-1 transitions the process to 1603-2. If the attribute of the source volume 200 is not SMPL, this corresponds to the case of additional replication, such as the creation of a time-series snapshot.

[0098] In the processing from step S1602 onwards, in order to solve the problems of the conventional technology, a process is carried out to transfer the data sharing cache area 204 in which the data referenced by the source volume 200 and the destination volume 201 is stored to the data sharing volume.

[0099] In step S1602, the volume replication program 511-1 uses the volume creation program 510 to create the shared data volume 202 to which the shared data cache area 204 is to be transferred. When the shared data volume is created, the attribute 601 in the volume management table 520 is set to "shared", just like the volume whose VOL# 600 is 3.

[0100] In step S1603-1, the volume replication program 511-1 copies the directory table 301 of the source volume to the directory table 301 reserved for the data sharing volume. Details of step S1603-1 will be described later with reference to FIG.

[0101] Next, in step S1604, the volume replication program 511-1 temporarily suspends I / O processing in order to perform the next step S1605 of replacing the shared data cache area 204. The volume replication program 511-1 then disables the read program 512-1 and backend write program 514 that access the shared data cache area 204.

[0102] Next, in step S1605, the volume replication program 511-1 swaps the data shared cache area 204-0 in which data of the source volume 200 is stored with the data shared cache area 204-2 of the data shared volume. The volume replication program 511-1 updates the cache area management table 521 so that, among the cache areas corresponding to VOL#700 of the source volume 200, the cache area #701 whose type 702 is "shared" is swapped with the type 702. This swap is performed between the cache area #701 whose type 702 is "shared" and the type 702 among the cache areas corresponding to VOL#700 of the data shared volume 202. As a result, the data shared caches of the source volume 200 and the data shared volume 202 are swapped, and the data stored in the source volume 200 is transferred to the data shared volume 202.

[0103] Since the data stored in the source volume 200 has been moved to the data shared volume 202 in step S1605, it is necessary to access the data shared cache area 204 of the data shared volume 202 when writing to or reading from the source volume 200. In step S1606, the volume replication program 511-1 updates the data shared VOL#602 of the entry in the volume management table 520 corresponding to the source volume 200 and the data shared volume 202 to VOL#600 of the data shared volume.

[0104] In step S1607, since steps S1605 and S1606, which are processes related to cache area replacement, are completed, the volume replication program 511-1 resumes the I / O processing that was stopped in step S1604. Finally, in step S1603-2, the volume replication program 511-1 copies the directory table 301 from the source volume 200 to the destination volume 201. This makes it possible for the destination volume 201 to access the data in the data sharing volume 202 that is referenced by the source volume 200.

[0105] (Directory copy process according to the first embodiment) Fig. 17 is a flowchart showing the processing steps of the directory copy processing according to the embodiment 1. Fig. 17 shows details of each directory copy processing executed in step S1603-1 and step S1603-2 in Fig. 16. Below, the directory copy processing executed in step S1603-1 in Fig. 16 will be described with the volume replication program 511-1 as the processing subject.

[0106] First, in step S1700, the volume replication program 511-1 determines whether there is dirty data that has not been destaged in the replication target source volume 200 in the cache area 203. If there is dirty data that has not been destaged to the replication source volume 200 (step S1700 Yes), the volume replication program 511-1 proceeds to step S1701. On the other hand, if there is no dirty data (step S1700 No), the volume replication program 511-1 proceeds to step S1702.

[0107] In step S1702, the volume replication program 511-1 performs processing to add unreflected dirty data to the directory table 301, and updates the directory table 301. Details of step S1701 will be described later with reference to FIG.

[0108] Next, in step S1702, the volume replication program 511-1 obtains the capacity and directory number of the source volume 200 from the volume management table 520. Next, in step S1703, the volume replication program 511-1 checks whether an area for the directory table 301 for the destination volume, which is a replication of the source volume 200, can be secured in the source volume 200. If the area for the directory table 301 for the destination volume can be secured (step S1704 Yes), the volume replication program 511-1 proceeds to step 1705, and if it cannot be secured (step S1704 No), this volume replication process is terminated.

[0109] Next, in step S1705, the volume replication program 511-1 allocates a directory # for the destination volume by referencing the directory area allocation management table 522, and updates the allocation destination VOL # of the allocated directory #. Next, in step S1706, the volume replication program 511-1 updates the volume management table 520 with information about the destination volume, including the attributes, data sharing VOL #, directory #, capacity, and Pool # created in this volume replication process. The volume replication program 511-1 also increments the number of shared destination VOLs 602 in the entry in the volume management table 520 that corresponds to the data sharing volume 202 corresponding to the source volume 200. Note that in step S1603-1 of Figure 16, the volume replication program 511-1 increments the number of shared destination VOLs 602 in the entry in the volume management table 520 that corresponds to the source volume 200 itself.

[0110] Next, in step S1707, the volume replication program 511-1 increments the latest generation #1101 corresponding to the source volume 200 by +1. The volume replication program 511-1 also sets the destination VOL#1104 and the status 1104=COPY to update the replication volume generation management table 523. The destination VOL#1104 corresponds to the VOL# in the volume management table 520.

[0111] Next, in step S1708, the volume replication program 511-1 instructs the storage controller 110 to perform a directory copy. Next, in step S1709, the volume replication program 511-1 receives the directory copy instruction of step S1708 and copies the directory table 301-0 of the source volume to the directory area secured in step S1705. The directory table 301-1 created by copying is referenced in I / O processing of the created destination volume.

[0112] (Additional writing process according to the first embodiment) 18 is a flowchart showing the processing steps of the append process according to the embodiment 1. The append process is the following process: Data stored in the cache area 203 of the storage system by the front-end write program 513 is compressed, transferred to the shared data cache area 204, and appended. Then, the directory table 301 and the mapping table 302 are updated so as to refer to the appended data.

[0113] Fig. 18 shows details of each append process executed in step S1701 in Fig. 17, step S2004 in Fig. 20, and step S2101 in Fig. 21. Below, the append process executed in step S1701 in Fig. 17 will be explained with the volume replication program 511-1 as the processing subject.

[0114] In step S2004 of FIG. 20, the front-end write program 513-1 is the processing subject, and in step 2101 of FIG. 21, the back-end write program 514 is the processing subject.

[0115] First, in step S1800, the volume replication program 511-1 identifies dirty data. Next, in 1801, the volume replication program 511-1 references the replication volume generation management table 523 to determine whether the source volume 200 has a replication destination volume 201 in the COPY state. If the source volume 200 has a replication destination volume 201 in the COPY state, the volume replication program 511-1 may be running another volume replication program 511-1 and performing directory copy. Therefore, the volume replication program 511-1 proceeds to step S1802. If the source volume 200 does not have a replication destination volume 201 in the COPY state (step S1801: No), the volume replication program 511-1 proceeds to step S1804. On the other hand, if the source volume 200 has a replication destination volume 201 in the COPY state (step S1801: Yes), the volume replication program 511-1 proceeds to step S1802.

[0116] In step S1802, the volume replication program 511-1 determines whether the directory copy corresponding to the logical address (LBA) of the dirty data to be appended has been completed. If appending is carried out before the directory copy is completed, the directory table to be copied will be updated by another volume replication program 511-1, making it impossible to perform the directory copy and therefore volume replication. If the directory copy has been completed (Yes in step S1802), the volume replication program 511-1 proceeds to step S1804. On the other hand, if the directory copy has not been completed (No in step S1802), the volume replication program 511-1 flushes and copies the directory information of the area (step S1803). The flush copy is a process of pinpoint copying only the directory information of the area to be appended when appending an area that has not been copied in the copy process in step S1709 of FIG. 17.

[0117] Next, in step S1804, the volume replication program 511-1 compresses the dirty data identified in step S1800. Next, in step S1805, the volume replication program 511-1 determines whether there is free space in the shared page 212-0 of the data shared cache area 204, which is the transfer destination of the compressed data. If there is free space (step S1805 Yes), the volume replication program 511-1 proceeds to step S1807, and if there is no free space (step S1805 No), it allocates a new append page from the Pool 205 (step S1806). Next, in step S1807, the volume replication program 511-1 copies the compressed dataset compressed in step S1804 to the append area 303 of the data shared volume 202 corresponding to the source volume 200.

[0118] Next, in step S1808, the volume replication program 511-1 stores the storage location in the append area copied in step S1807 in an unused entry among the entries in the mapping table 302 of the data sharing volume 202. An unused entry is an entry in which the reference address (address in the append area) 901 is not set. In other words, the address of the copy destination append area is set in the reference address (address in the append area) 901.

[0119] Next, in step S1809, the volume replication program 511-1 sets the address in the mapping area 900 of the mapping information created in step S1808 to the reference address (address in the mapping area) 801 of the directory table 301. The entry of the directory table 301 to which the address in the mapping area 900 is set is an entry corresponding to the logical address of the relevant data (an LBA accessible from the host device).

[0120] Next, in step S1810, the volume replication program 511-1 destages the dirty data that was copied to the write area in step S1807, and stores the data in the drive.

[0121] (Reading process according to the first embodiment) 19 is a flowchart showing the processing steps of the read process related to Example 1. The read process is executed by the read program 512-1 in response to a read request from the host device.

[0122] First, in step S1900, the read program 512-1 obtains the address in the source volume 200 or the destination volume 201 of the data targeted by the read request from the server system 102. Next, in step S1901, the read program 512-1 determines whether the targeted data of the read request is a cache hit. If the targeted data of the read request is a cache hit (step S1901 Yes), the read program 512-1 proceeds to step S1905, and if it is not a cache hit (step S1901 No), the read program 512-1 proceeds to step S1902.

[0123] Next, in step S 1902 , the read program 512 - 1 refers to the volume management table 520 and acquires the directory # 604 corresponding to the source volume 200 or the destination volume 201 .

[0124] Next, in step S1903, the read program 512-1 acquires the reference address (address in the mapping area) 801. The read program 512-1 acquires the reference address 801 based on the directory #604 acquired in step S1902 and the address in the source volume 200 / destination volume 201 acquired in step S1900. The read program 512-1 references the directory table 301-0 for the source volume if the target data of the read request is data in the source volume 200. Furthermore, the read program 512-1 references the directory table 301-1 for the destination volume if the target data is data in the destination volume 201.

[0125] Next, in step S1904, the read program 512-1 acquires the referenced address (address in the append area) 901. The read program 512-1 references the mapping table 302 of the data sharing volume 202, and acquires the referenced address 901 based on the referenced address (address in the mapping area) acquired in step S1903.

[0126] Next, in step S1905, the read program 512-1 stages the data stored in the address in the append area of ​​the data sharing volume 202 identified in step S1904 in the cache area 203 while decompressing the data.

[0127] Next, in step S1906, the read program 512-1 transfers the data that was cache hit in step S1901 or the data that was staged in step S1905 to the host device.

[0128] (Front-end write processing according to the first embodiment) Fig. 20 is a flowchart showing the processing steps of front-end write processing related to Example 1. Front-end write processing is processing in which, when a write request is received from a host device, write data is written to the cache area 203 of the storage system in synchronization with the write request. On the other hand, back-end write processing described in Fig. 21 is processing in which write data (dirty data) in the cache area 203 is transferred to the append area 303 of the data shared cache area and stored in the drive. Front-end write processing is executed by the front-end write program 513-1 when a write request for the source volume 200 or the destination volume 201 is received from the host device.

[0129] First, in step S2000, the front-end write program 513-1 determines whether the target data of the write request from the host device is a cache hit. If the target data of the write request is a cache hit (step S2000 Yes), the front-end write program 513-1 proceeds to step S2002, and if it is not a cache hit (step S2000 No), it proceeds to step S2001. In step S2001, the front-end write program 513-1 reserves a cache area in the cache memory 501.

[0130] In step S2002, the front-end write program 513-1 determines whether the target data that was cache hit in step S2000 is dirty data. If the target data that was cache hit in step S2000 is dirty data (step S2002 Yes), the front-end write program 513-1 proceeds to step S2003. On the other hand, if the data is not dirty data (step S2002 No), the front-end write program 513-1 proceeds to step S2005.

[0131] In step S2003, the front-end write program 513-1 determines whether the WR (WRight) generation # of the dirty data determined in step S2002 matches the generation # of the target data of the write request. The WR generation # is held in cache data management information (not shown). The generation # of the target data of the write request is acquired from the latest generation #1101 in FIG. 11. In step S2003, the dirty data of the target data (dirty data) of the most recently replicated destination volume 201 is updated with the target data of the write request before the append process is performed, thereby preventing the data in the destination volume 201 from being overwritten. If the WR generation # and the latest generation # match (step S2003 Yes), the front-end write program 513-1 proceeds to step S2005. If the WR generation # and the latest generation # do not match (step S2003 No), the front-end write program 513-1 proceeds to step S2004.

[0132] In step S2004, the front-end write program 513-1 executes the append process described with reference to Fig. 18. In step S2004, dirty data of the WR generation # that does not match the latest generation # is written to the append area and destaged from the cache memory 501.

[0133] In step S2005, the front-end write program 513-1 performs an append process on the cache area secured in step S2001 or on the dirty data that requires appending.The front-end write program 513-1 then writes the target data of the write request to the cache area that is now able to generate dirty data again.In step S2005, if the data write to the cache area of ​​the source logical volume after creating the destination logical volume is a write that updates data, the updated data is stored while the data before the update remains.

[0134] In step S2006, the front-end write program 513-1 sets the WR generation # of the cache data written to the cache memory 501 in step S2005 to the latest generation # compared in step S2003. In step S2007, the front-end write program 513-1 returns a normal response (Good response) to the host device.

[0135] 21 is a flowchart showing the processing steps of backend write processing according to Example 1. The backend write processing is processing in which, when data (dirty data) that has not been reflected in the append area 303 of the data shared cache area 204 is present in the cache area 203, the unreflected data is written to the append area 303. The backend write processing is performed synchronously or asynchronously with the frontend processing. The backend write processing is executed by the backend write program 514.

[0136] First, in step S2100, the backend write program 514 determines whether there is dirty data in the cache area 203. If there is dirty data in the cache area 203 (step S2100 Yes), the backend write program 514 proceeds to step S2101, and if there is no dirty data (step S2100 No), the backend write program 514 terminates this backend write processing. In step S2101, the backend write program 514 executes the append processing described in FIG. 18.

[0137] (Volume Deletion Process According to Example 1) 22 is a flowchart illustrating the processing steps of the volume deletion processing according to the example 1. The volume deletion processing is executed by the volume deletion program 515-1 in response to an instruction from the management system 103.

[0138] First, in step S2200, the volume deletion program 515-1 receives the deletion target VOL# that is the deletion target. Next, in step S2201-1, the volume deletion program 515-1 executes processing to release related resources related to the deletion target volume. Details of this related resource release processing will be described later with reference to FIG. 23.

[0139] After the volume to be deleted is deleted in step S2201-1, it is determined in step S2022 whether the data shared volume also needs to be deleted. In step S2022, the volume deletion program 515-1 refers to the volume management table 520 to confirm whether a data shared volume corresponding to the volume to be deleted exists. If a data shared volume 202 corresponding to the volume to be deleted exists, the volume deletion program 515-1 confirms whether the number of shared destination VOLs for the data shared volume 202 is one. If the number of shared destination VOLs for the data shared volume is one, there is only one source volume or destination volume referenced during I / O to the data shared volume, and therefore there is no need to leave a data shared volume for sharing data among multiple volumes. Therefore, in order to delete the data shared volume, the processing from step S2204 onwards is performed to return the data shared cache area 204 held by the data shared volume to one source volume 200 or destination volume 201.

[0140] In step S2204, the volume deletion program 515-1 temporarily suspends I / O processing in order to perform the next step S2205 of replacing the shared data cache area 204. The volume deletion program 515-1 then disables the read program 512-1 and backend write program 514 that access the shared data cache area 204.

[0141] Next, in step S2205, the volume deletion program 515-1 swaps the data shared cache area 204 of the last remaining source volume 200 or destination volume 201 with the data shared cache area 204 of the data shared volume 202. In the cache area management table 521, the volume deletion program 515-1 swaps the cache area #701 and type 702 of the last remaining volume with the cache area #701 and type 702 corresponding to the VOL# of the data shared volume 202. As a result, the data shared cache areas 204 of the data shared volume 202 and the last remaining volume are swapped, and the data stored in the last remaining source volume 200 or destination volume 201 is transferred to the data shared volume 202.

[0142] In step S2205, the data stored in the data shared volume 202 is moved to the last remaining source volume 200 or destination volume 201. For this reason, when writing to or reading from the source volume 200 or destination volume 201, it is necessary to access the data shared cache of the volume itself (the source volume 200 or the destination volume 201) rather than the data shared volume 202. In step S2206, the volume deletion program 515-1 updates the data shared VOL#602 of the entry corresponding to the data shared volume 202 in the volume management table 520 to VOL#600 of the entry corresponding to the last remaining volume.

[0143] Next, in step S2207, since steps S2205 and S2206, which are processes related to cache area replacement, are completed, the volume deletion program 515-1 resumes the I / O processing that was stopped in step S2204. Finally, in step S2201-2, the volume deletion program 515 executes a process to release related resources related to the data sharing volume 202 that are no longer needed.

[0144] (Volume-related resource release process according to the first embodiment) Fig. 23 is a flowchart showing the processing steps of the volume-related resource release processing according to the embodiment 1. Fig. 23 shows details of each volume-related resource release processing executed in step S2201-1 and step S2201-2 of Fig. 22. Below, the volume-related resource release processing executed in step S2201-1 of Fig. 22 will be explained with the volume deletion program 515 as the processing subject.

[0145] First, in step S2300, the volume deletion program 515-1 receives the VOL# of the volume to be deleted. Next, in step S2301, the volume deletion program 515-1 obtains the directory # of the volume to be deleted from the volume management table 520. Next, in step S2302, the volume deletion program 515-1 deletes the directory table 301 corresponding to the directory # obtained in step S2301.

[0146] Next, in step S2303, the volume deletion program 515-1 determines whether the mapping table 302 can be deleted (that is, whether the volume to be deleted is a volume that does not have a destination volume 201). If the mapping area can be deleted (step S2303 Yes, the volume to be deleted does not have a destination volume 201), the volume deletion program 515-1 proceeds to step S2304. On the other hand, if the mapping area cannot be deleted (2303 No, the volume to be deleted has a destination volume 201), the volume deletion program 515-1 proceeds to step S2305. In step S2304, the volume deletion program 515-1 deletes the mapping table 302 that was referenced from the directory table 301.

[0147] Next, in step S2305, the volume deletion program 515-1 deletes the entries of the cache area # and type 702 of VOL# 700 corresponding to the volume to be deleted, and then releases the cache area 203 and the data shared cache area 204 from the volume to be deleted.

[0148] Next, in step S2306, the volume deletion program 515-1 determines whether the volume to be deleted is the source volume 200 or the destination volume 201 (i.e., a volume with a replication relationship). If the volume to be deleted is the source volume 200 or the destination volume 201 (Yes in step S2306), the volume deletion program 515-1 proceeds to step S2307. On the other hand, if the deleted volume is a volume with no replication relationship (the attribute 601 in the volume management table 520 is "SMPL") (No in step S2306), the volume deletion program 515-1 proceeds to step S2308.

[0149] In step S2307, if the volume to be deleted is the source volume 200, the volume deletion program 515-1 deletes multiple entries corresponding to the source VOL#1100 from the replication volume generation management table 523. On the other hand, if the volume to be deleted is the destination volume 201, the volume deletion program 515-1 deletes only the entry corresponding to the source VOL#1100 in which the source VOL#1103 to be deleted is set.

[0150] Finally, in step S2308, the volume deletion program 515-1 deletes the entry for the volume corresponding to the volume to be deleted from the volume management table 520.

[0151] (Modification of Example 1) In this embodiment, when the volume replication process (FIG. 16) is executed, the append data in the append area 303 of the source volume 200 and the meta information 211 in the meta information area are transferred to the data sharing volume 202 (steps S1602 to S1607). However, this is not limiting, and the timing of the transfer may be a volume operation such as deleting the source volume. In this case, steps S1602 to S1607 in FIG. 16 are executed when the volume deletion process (FIG. 22) and the volume-related resource release process (FIG. 23) are executed.

[0152] (Effects of Example 1) Next, the effects of the first embodiment will be described with reference to FIGS. 24A and 24B.

[0153] Figure 24A shows a first effect of Example 1. Figure 24A shows the logical configuration when data in the source volume 200 is replicated to the destination volume 201 by the volume replication program 511-1, and shows how the processing of the volume replication program 511-1 progresses from time T0 to time T3.

[0154] When a volume replication operation is performed at time T0, the volume deletion program 515 determines that the source volume 200 is a volume in the SMPL state with no replication relationship. Therefore, a data shared volume 202 is created to store data shared between the source and destination volumes (time T1). Thereafter, at time T2, the directory table 301-1 of the source volume 200 is copied to the directory table 301-2 for the data shared volume. Then, the data shared cache area 304-0 of the source volume 200 and the data shared cache area 304-2 of the data shared volume 202 are swapped. This makes it possible to manage the data shared between the source volume and destination volume in the data shared volume.

[0155] Thereafter, at time T3, the volume deletion program 515 copies the directory table of the source volume to the directory table for the destination volume, thereby making it possible to access the data in the data sharing volume (the same data as the source volume) from the destination volume as well.

[0156] At time T3, the data accessed by the source volume 200 and the destination volume 201 is stored in the data sharing volume 202. This makes it possible to perform a volume deletion operation on both the source volume and the destination volume, and to release unnecessary data from each volume from the storage system 100.

[0157] FIG. 24B shows a second effect of the first embodiment. As shown in FIG. 24B, in this embodiment, one data shared volume 202 is created for each group of volumes having a replication relationship between a source volume and a destination volume. Therefore, in a multi-controller system in which the storage system 100 is configured with multiple storage controllers 110, migration between storage controllers 110 is possible for each group of volumes having a replication relationship. For example, if the I / O load on source volume #1 increases, causing a high load on storage controller #1 (CTL #1), this may affect other volumes, such as source volume #4, belonging to storage controller #1. Therefore, the group of volumes having a replication relationship, including a volume with a high load, is migrated to storage controller #2 (CTL #2), which has a low I / O load. This reduces the imbalance in I / O load between storage controllers and makes it possible to suppress a decrease in storage system I / O performance. [Example]

[0158] A second embodiment of the present invention will be described below with reference to FIGS.

[0159] In the first embodiment, when a volume is copied for the first time, the data shared cache area 204-0 of the source volume 200 is swapped with the data shared cache area 204-2 of the data shared volume. Also, when the source volume 200 or the destination volume 201 is deleted, if the source volume 200 or the destination volume 201 becomes the last one, the data shared cache area of ​​the last volume is swapped with that of the data shared volume 202. In the second embodiment, the cache area 203 and the data shared cache area 204 are swapped as a set both when copying a volume and when deleting a volume.

[0160] (Volume replication process according to the second embodiment) Fig. 25 is a flowchart showing the processing steps of volume replication processing according to Example 2. Compared with Example 1, the volume replication processing according to Example 2 only differs from Example 1 in that steps S1605 and S1606 by the volume replication program 511-1 are changed to steps S2505 and S2506. Also, steps S2500, S2501, S2502, S2503, S2504, and S2507 in Fig. 25 are the same as steps S1600, S1601, S1602, S1603, S1604, and S1607 in Fig. 16, respectively.

[0161] In step S2505, the volume replication program 511-2 swaps the cache areas 203-0, 203-2 and the data shared cache areas 204-0, 204-2 between the source volume 200 and the data shared volume 202. The volume replication program 511-2 also swaps and updates the cache area # 701 and type 702 corresponding to the VOL# of the source volume 200 and the data shared volume 202 in the cache area management table 521.

[0162] Next, in step S2506, the volume replication program 511-2 updates the volume management table 520. In the second embodiment, since the cache area 203 has also been swapped, it is necessary to swap the directory #'s referenced by the source volume 200 and the data shared volume 202 during I / O. The volume replication program 511-2 updates the data shared VOL#602 of the entry corresponding to the source volume 200 and the data shared volume 202 in the volume management table 520 to VOL#600 of the data shared volume. The volume replication program 511-2 also updates the directory #604 of the source volume 200 and the data shared volume 202 in the volume management table 520 so that they are also swapped. Steps 2507 and after are the same as steps 1607 and after in FIG. 16.

[0163] (Reading process according to Example 2) 26 is a flowchart showing the processing steps of the read process related to the embodiment 2. Steps S2600, S2601, and S2602 are added to the steps in the embodiment 1.

[0164] In the second embodiment, the volume replication program 511-2 copies the directory table 301 from the source volume 200 to the data shared volume 202 (step S2503-1). Then, the directory # is swapped together with the swapping of the data shared cache area 204 (step S2506). Therefore, after the swapping, the directory table 301 for the data shared volume, which was the directory copy destination before the swapping, will be accessed at the time of I / O in the source volume 200. If no write is made to the source volume 200 during the directory copy processing in step S2503-1, the directory tables 301 of the source volume 200 and the data shared volume 202, which is the copy destination, will be in the same state.

[0165] However, if data is written to the source volume 200 during directory copy processing, the entries in the latest directory table 301 updated by the write processing cannot be copied to the directory table 301 for the data shared volume, which is the copy destination. This could result in the directory table 301 becoming outdated. The volume replication program 511-2 could copy the directory table 301 again, but if the write frequency is high, multiple copies would be necessary, lengthening the volume replication time. For this reason, the volume replication program 511-2 does not recopy the latest directory table 301. In other words, after swapping the cache area and directory #, the read program 512-2 and front-end write program 513-2 copy the latest directory table once. This reduces the time required for volume replication.

[0166] In the added process, before performing the read process of the source volume after the directory # has been swapped, the latest directory table information is pre-fetched and copied, and then the read process is performed.

[0167] 19. Also, steps S2603, S2604, S2605, S2607, S2608, and S2609 in FIG. 26 are the same as steps S1900, S1901, S1902, S1903, S1904, S1905, and S1906 in FIG.

[0168] First, in step S2600, the read program 512-2 references the replication volume generation management table 523 to determine whether the volume to be read processed is a replication source volume 200 in COPY status. If the replication source volume 200 is in COPY status, there is a possibility that the directory table 301 has not been copied, so the process proceeds to step S2601. If the replication destination volume is in COPY status (step S2600 Yes), the read program 512-2 proceeds to step S2601, and if the replication source volume is in COPY status (step S2600 No), the process proceeds to step S2603.

[0169] Next, in step S2601, the read program 512-2 determines whether the directory copy corresponding to the logical address (LBA) of the read processing target is complete. If the read processing proceeds before the directory copy is complete, old data will be read into the host device. If the directory copy is complete (Yes in step S2601), the read program 512-2 proceeds to step S2603. On the other hand, if the directory copy is not complete (No in step S2601), the read program 512-2 preemptively copies the directory information of the area (directory information preemptive copy) (step S2602). Directory information preemptive copy is a process that pinpoints and copies only the directory information of the area to be read when reading an area that has not been copied in the copy processing in step S1709 of Figure 17. Steps S2603 and subsequent steps are the same as steps S1900 and subsequent steps in Figure 19.

[0170] (Front-end write processing according to the second embodiment) FIG. 27 is a flowchart showing the processing steps of the front-end write processing according to the second embodiment. Steps S2700, S2701, and S2702 are added to the processing according to the first embodiment. As with the read program 512-2, the added processing of the front-end write program 513-2 pre-emptively copies the latest directory table 01 information before performing the front-end write processing of the source volume after the directory # has been swapped. Therefore, steps S2700 to S2702 in FIG. 27 are the same as steps S2600 to S2602 in FIG. 26, respectively. Furthermore, steps S2703 to S2710 in FIG. 27 are the same as steps S2000 to S2007 in FIG. 20, respectively.

[0171] (Volume Deletion Process According to Example 2) 28 is a flowchart showing the processing steps of a volume deletion process according to the embodiment 2. Compared to the embodiment 1, the volume deletion process according to the embodiment 2 adds step S2804 of a directory copy process. In addition, steps S2205 and S2206 of the volume replication program 511-1 are changed to steps S2806 and S2807.

[0172] In the second embodiment, since the directory # must also be replaced when the cache area 203 is replaced, it is necessary to perform a directory copy process before replacing the directory # to update it to the latest state.

[0173] 22. Also, steps S2800, S2801, S2802, S2803, S2805, and S2808 in FIG. 28 are the same as steps S2200, S2201, S2202, S2203, S2204, and S2207 in FIG.

[0174] In step S2804 following step S2803, the volume deletion program 515-2 copies the directory table corresponding to the last remaining source or destination volume to the directory table corresponding to the data sharing volume, updating it to the latest state. The details of step S2803 are the same as step S1603 in Figure 17.

[0175] In step S2806, the volume deletion program 515-2 swaps the cache area 203 and the data shared cache area 204 between the data shared volume 202 and the last remaining source volume 200 or destination volume 201. The volume deletion program 515-2 also swaps the corresponding cache area #701 and type 702 in the cache area management table 521 between the data shared volume 202 and the last remaining source volume 200 or destination volume 201.

[0176] Since the data stored in the data shared volume has been moved to the last remaining source volume 200 or destination volume 201 in step S2806, it is necessary to access its own data shared cache area 204 when writing or reading.

[0177] In step S2807, the volume deletion program 515-2 updates the data shared volume 202 and the data shared VOL#602 of the last remaining source volume 200 or destination volume 201 in the volume management table 520. As a result of the update, the data shared VOL#602 becomes VOL#600 of the last remaining source volume 200 or destination volume 201. The volume deletion program 515-2 also swaps and updates the directory #604 of the data shared volume 202 and the last remaining source volume 200 or destination volume 201 in the volume management table 520. Steps from S2808 onwards are the same as steps S2207 and after in Figure 22.

[0178] (Effects of the Example) (1) In the above-described first embodiment, a data sharing volume 202 is created to share the data of the source volume 200, and the data of the source volume 200 is transferred to the data sharing volume 202. When the source volume 200 or the destination volume 201 is deleted, the data in the cache area 203 and the data sharing cache area 204 of the volume to be deleted is transferred to the data sharing volume 202, so the volume to be deleted can be deleted.

[0179] (2) In the first embodiment described above, data transfer is performed when the source volume 200 is replicated for the first time to create the destination volume 201 and when a replication relationship is established between the source volume 200 and the destination volume 201. This makes it possible to operate the source volume 200 and the destination volume 201 at any time after the replication relationship between the source volume 200 and the destination volume 201 is established and data is transferred.

[0180] (3) In the second embodiment described above, if the source volume 200 or destination volume 201 accessing the data sharing volume 202 is the last logical volume due to volume deletion, the data sharing volume 202 transfers data to the last volume. Then, the data sharing volume 202 is deleted. This makes it possible to delete the data sharing volume 202 that is no longer needed and improve resource utilization efficiency.

[0181] (4) In the first embodiment described above, data is transferred and received by switching the relationship between the data shared cache area 204 and the logical volume in the cache area management table 521. The logical volume is one of the source volume 200, the destination volume 201, and the data shared volume 202. This allows quick switching between volumes of only the data shared cache area in which the compressed data referenced from the directory table or mapping table is stored.

[0182] (5) In the second embodiment described above, when transferring or receiving data, the cache area management table 521 switches the relationship between the cache area 203 and the data shared cache area 204 as a set and the volumes, thereby transferring or receiving data. This allows each volume to take over the cache data stored in the cache area 203, which is provided as an area accessible to the host device (server system 102), thereby increasing the cache hit rate.

[0183] (6) In the first embodiment described above, before swapping the relationship between the cache area 203 and the data shared cache area 204 as a set and the volumes, the directory table 301 is copied to the swap destination volume of the cache area 203. As a result, by copying the directory to the directory area corresponding to the cache area swap destination volume accompanying the swapping of the cache area, the host device can access the same data even after the cache areas are swapped.

[0184] (7) Furthermore, in the above-described first embodiment, even if data is written to an area where copying has been completed during the copying process of the directory table 301 and the directory table 301 is updated, the copying is completed without recopying the directory table 301. As a result, even if a situation occurs during the copying of the directory table 301 where data is written to the volume from which the directory table 301 is copied and the directory table is not the latest, the volume replication process can be quickly completed by not retrying the copying process.

[0185] (8) In the second embodiment described above, if the latest directory table 301 of the I / O target area has not been copied after the cache area 203 and the data shared cache area 204 are swapped between volumes, a directory prefetch copy is performed before the I / O processing is performed. In this way, in the volume replication processing, instead of retrying the directory copy processing and immediately terminating the directory copy processing, the latest directory table 301 is copied before the I / O processing is triggered. This allows access to the same data as before the cache swap even after the cache area swap.

[0186] The present invention is not limited to the above-described embodiment, but includes various modifications. For example, although only one storage system 100 is shown in FIG. 1, a cluster configuration consisting of multiple storage systems may be used, or a storage system may be located on a cloud. The above-described embodiment has been described in detail to clearly explain the present invention, and is not necessarily limited to a system that includes all of the described configurations. In addition, not only can the configurations be deleted, but replacement or addition of configurations is also possible.

[0187] Furthermore, the above-described configurations, functions, processing units, processing means, etc. may be partially or entirely implemented in hardware, for example, by designing them as integrated circuits. The present invention can also be realized by software program code that implements the functions of the embodiments. In this case, a recording medium on which the program code is recorded is provided to a computer, and a processor included in the computer reads the program code stored in the recording medium. In this case, the program code itself read from the recording medium implements the functions of the above-described embodiments, and the program code itself and the recording medium on which it is stored constitute the present invention. Examples of recording media for providing such program code include flexible disks, CD-ROMs, DVD-ROMs, hard disks, solid-state drives (SSDs), optical disks, magneto-optical disks, CD-Rs, magnetic tapes, non-volatile memory cards, and ROMs.

[0188] Furthermore, the program code that realizes the functions described in this embodiment can be implemented in a wide range of program or script languages, such as assembler, C / C++, perl, Shell, PHP, and Java (registered trademark).

[0189] In the above-described embodiment, the control lines and information lines are those that are considered necessary for the explanation, and not all control lines and information lines are necessarily shown in the product. All components may be interconnected. [Explanation of symbols]

[0190] 100: Storage system, 102: Server system, 103: Management system, 110: Storage controller, 111: Processor, 112: Memory, 120: PDEV, 200: Source volume, 201: Destination volume, 202: Data sharing volume, 203: Cache area, 204: Data sharing cache area, 205: Pool, 210: Logical data block, 211: Meta information, 212: Page, 213: Sub-block, 301: Directory table, 302: Mapping table.

Claims

1. A storage system having a plurality of controllers and providing a plurality of logical volumes, each of the logical volumes has a first cache area for storing data and a second cache area for compressing and storing the data stored in the first cache area; When replicating the logical volume, the controller moving the data stored in the second cache area of ​​the source logical volume to the second cache area of ​​the data-sharing logical volume, and associating the data in the first cache area of ​​the source logical volume with the data moved to the second cache area of ​​the data-sharing logical volume; A storage area of ​​the first cache area of ​​the destination logical volume, which is a copy of the source logical volume, is associated with a storage area of ​​the second cache area of ​​the data sharing logical volume, which stores the data. A storage system comprising:

2. 2. The storage system according to claim 1, The controller If the data-sharing logical volume does not exist for the source logical volume, the data-sharing logical volume is created. A storage system comprising:

3. 2. The storage system according to claim 1, After the destination logical volume is created, when data is written to the first cache area of ​​the source logical volume, the data is compressed and stored in the second cache area of ​​the data sharing logical volume without being associated with the destination logical volume. A storage system comprising:

4. 4. The storage system according to claim 3, When a data write to the first cache area of ​​the source logical volume after the creation of the destination logical volume is a write that updates data, the updated data is stored while the data before the update is left as it is. A storage system comprising:

5. 5. The storage system according to claim 4, The controller When the deletion of the source logical volume results in the logical volume accessing the data sharing logical volume being limited to one destination logical volume, The data stored in the second cache area of ​​the data-sharing logical volume is moved to the destination logical volume, and the data-sharing logical volume is deleted. A storage system comprising:

6. 6. The storage system according to claim 5, Deleting data from the second cache area of ​​the data sharing logical volume that is referenced only from the source logical volume to be deleted A storage system comprising:

7. 2. The storage system according to claim 1, The controller data movement between the second cache area of ​​the logical volume and the second cache area of ​​the data-sharing logical volume is performed by swapping the second cache area of ​​the logical volume with the second cache area of ​​the data-sharing logical volume; When the second cache area is replaced, directory information indicating the relationship between the logical volume associated with the second cache area and the first cache area is also replaced. A storage system comprising:

8. 8. The storage system according to claim 7, When the second cache area and the directory information are exchanged, data input / output to the second cache area is stopped. A storage system comprising:

9. A data replication method in a storage system having a plurality of controllers and providing a plurality of logical volumes, comprising: each of the logical volumes has a first cache area for storing data and a second cache area for compressing and storing the data stored in the first cache area; When the controller replicates the logical volume, moving the data stored in the second cache area of ​​the source logical volume to the second cache area of ​​the data-sharing logical volume, and associating the data in the first cache area of ​​the source logical volume with the data moved to the second cache area of ​​the data-sharing logical volume; A storage area of ​​the first cache area of ​​the destination logical volume, which is a copy of the source logical volume, is associated with a storage area of ​​the second cache area of ​​the data sharing logical volume, which stores the data. A data replication method comprising the steps of:

Citation Information

Patent Citations

  • Storage controller and storage control method

    JP2020047036A

  • Storage system performing remote replication

    JP2020052464A

  • Storage system and volume duplication method

    JP2021092915A

  • Storage system and data duplication method in storage system

    JP2023118859A

  • Storage system and restore method for storage system

    JP2023179097A