Storage system and storage control method
By implementing pattern management and fingerprinting to identify and manage data chunks, the method reduces duplicate data transfers between backup storage systems, enhancing efficiency and optimizing storage and network resources.
Patent Information
- Application Number
- JP2023134810
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-08-22
- Publication Date
- 2024-12-10
- Estimated Expiration
- 2041-07-12
AI Technical Summary
Existing data backup methods transfer duplicate data between backup source and destination storage systems, leading to unnecessary data transfer and inefficiency.
A backup source storage system checks for data patterns to be transferred and registers them before sending data to the backup destination, avoiding duplicate transfers by using fingerprinting and pattern management to identify and manage data chunks.
This approach reduces the amount of data transferred by avoiding duplicate data copies, optimizing storage capacity and network bandwidth usage.
Smart Images

Figure 0007597875000001 
Figure 0007597875000002 
Figure 0007597875000003
Abstract
Description
[Technical field]
[0001] The present invention generally relates to backing up data between storage systems. [Background technology]
[0002] It is desirable to reduce the amount of data transferred when backing up data between storage systems. According to the technology disclosed in Patent Document 1, a backup server checks the duplication relationship of data to be backed up in a first storage device, and prevents the duplicate data in the first storage device from being transferred multiple times to a second storage device. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] WO2016 / 185573 Summary of the Invention [Problem to be solved by the invention]
[0004] In addition to or instead of the case where data is duplicated in the backup source storage system, there may be a case where data is duplicated between the backup source storage system and the backup destination storage system. Specifically, for example, any of the following cases may be considered. In addition to backups within the data center (which can be both on-device and off-device), backups to other data centers may be performed in preparation for disaster recovery. When backing up data within a data center, all restored data is copied to the other data center. -If a VOL pair between a volume (VOL) in the backup source storage system and a VOL in the backup destination storage system is accidentally deleted and then reconfigured, data will be copied between the VOLs again.
[0005] Even in cases where data overlaps between the backup source storage system and the backup destination storage system, it is desirable to avoid the transfer of duplicated data and thereby reduce the amount of transferred data. [Means for solving the problem]
[0006] A backup source storage system having a volume and a first storage device extracts data to be transferred to a backup destination storage system as a pattern from data written to the first storage device through the volume. Regardless of the logical address of a storage destination area in the backup source storage system of the data to be transferred, the backup source storage system determines whether or not the extracted pattern for the data to be transferred has been registered in the backup source storage system. If the determination result is false, the backup source storage system registers the extracted pattern in the backup source storage system and transfers the data to be transferred to the backup destination storage system. If the determination result is true, the backup source storage system does not transfer the data to be transferred. Effect of the Invention
[0007] It is possible to avoid transfer of duplicate data between the backup source storage system and the backup destination storage system. [Brief description of the drawings]
[0008] [Figure 1] 1 shows an example of the overall configuration of a system according to a first embodiment. [Diagram 2] 2 shows an example of the configuration of a storage system and a maintenance terminal. [Diagram 3] 1 illustrates an example of the configuration of a memory in a storage system. [Figure 4] 13 shows an example of the configuration of a pattern VOL table. [Diagram 5]1 shows an example of the configuration of a first pattern management table. [Figure 6] An example of a pattern VOL is shown below. [Figure 7A] 1 shows an overview of a comparative example 1 of the embodiment. [Figure 7B] 1 shows an overview of Comparative Example 2 of the embodiment. [Figure 8] 1 shows an overview of a first embodiment. [Figure 9A] 13 shows the flow of an initial copy process performed by an initial copy program in a primary storage system. [Figure 9B] An example of address alignment is shown below. [Figure 10] 13 shows the flow of a secondary copy process performed by a secondary copy program in a secondary storage system. [Figure 11] 13 shows the flow of write processing performed by an I / O program in the primary storage system. [Figure 12A] 13 shows the flow of a JNL creation process performed by a JNL creation program in a primary storage system. [Figure 12B] 13 shows the flow of a JNL transfer process performed by a JNL transfer program in a primary storage system. [Figure 13] 13 shows the flow of a pattern extraction process performed by a pattern extraction program in a primary storage system. [Figure 14] 13 shows the flow of a pattern registration process performed by a pattern registration program in the primary storage system. [Figure 15] 13 shows an example of the configuration of a second pattern management table. [Figure 16] 1 shows the flow of deduplication processing performed by a deduplication program. [Figure 17] 13 shows a flow of a pattern registration process performed by a pattern registration program. [Figure 18] 13 shows the flow of a pattern registration synchronization process performed by a pattern synchronization program in a primary storage system and a pattern registration program in a secondary storage system. [Figure 19]13 shows the flow of a pattern deletion process performed by a pattern deletion program in a primary storage system (or a secondary storage system). [Figure 20A] 13 shows an overview of an example of a case in which snapshot data is backed up in the second embodiment. [Figure 20B] 1 illustrates an example of the configuration of a memory in a storage system. [Figure 21] 13 shows an example of the configuration of a snapshot management table. [Figure 22] 13 shows an example of the configuration of a third pattern management table. [Figure 23] 13 shows the flow of a backup acquisition process performed by a backup acquisition program. [Figure 24] 13 shows the flow of a backup acquisition process performed by a backup acquisition program. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] In the following description, an "interface unit" may refer to one or more interface devices. The one or more interface devices may be at least one of the following: One or more I / O (Input / Output) interface devices. The I / O (Input / Output) interface devices are interface devices to at least one of the I / O devices and a remote display computer. The I / O interface device to the display computer may be a communications interface device. The at least one I / O device may be a user interface device, e.g., either an input device such as a keyboard and a pointing device, or an output device such as a display device. One or more communication interface devices. The one or more communication interface devices may be one or more homogeneous communication interface devices (e.g., one or more NICs (Network Interface Cards)) or two or more heterogeneous communication interface devices (e.g., a NIC and an HBA (Host Bus Adapter)).
[0010] In the following description, a "memory" refers to one or more memory devices, which are an example of one or more storage devices, and may typically be a primary storage device. At least one memory device in the memory may be a volatile memory device or a non-volatile memory device.
[0011] In the following description, a "persistent storage device" may be one or more persistent storage devices, which are an example of one or more persistent storage devices. A persistent storage device may typically be a non-volatile storage device (e.g., an auxiliary storage device), and more specifically, may be, for example, a hard disk drive (HDD), a solid state drive (SSD), a non-volatile memory express (NVME) drive, or a storage class memory (SCM).
[0012] Also, in the following description, "storage device" may be at least memory, including memory and persistent storage device.
[0013] Furthermore, in the following description, a "processor" may be one or more processor devices. The at least one processor device may typically be a microprocessor device such as a CPU (Central Processing Unit), but may also be other types of processor devices such as a GPU (Graphics Processing Unit). The at least one processor device may be a single-core or multi-core. The at least one processor device may be a processor core. The at least one processor device may also be a broader processor device such as a circuit that is a collection of gate arrays written in a hardware description language that performs part or all of the processing (e.g., an FPGA (Field-Programmable Gate Array), a CPLD (Complex Programmable Logic Device), or an ASIC (Application Specific Integrated Circuit)).
[0014] In the following description, information that provides an output for an input may be described using expressions such as "xxx table," but the information may be data of any structure (for example, structured data or unstructured data), or may be a neural network that generates an output for an input, or a learning model such as a genetic algorithm or random forest. Therefore, the "xxx table" may be referred to as "xxx information." 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.
[0015] In addition, in the following description, processing may be described with a "program" as the subject, but since a program is executed by a processor to perform a defined process using a storage device and / or an interface device as appropriate, the subject of the process may also be the processor (or a device or system having the processor). A program may be installed in a device such as a computer from a program source. The program source may be, for example, a program distribution server or a computer-readable recording medium (e.g., a non-transitory recording medium). 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.
[0016] Moreover, a "volume" (VOL) is a logical storage area. A volume may be a real volume (RVOL) or a virtual volume (VVOL). An "RVOL" may be a VOL based on a storage device, and a "VVOL" may be a volume that complies with capacity virtualization technology (typically Thin Provisioning).
[0017] Furthermore, the "storage system" may be a system equipped with a plurality of storage devices and a controller that performs I / O of data for the plurality of storage devices, or may be a system including one or more physical computers. In the latter system, for example, the one or more physical computers may be constructed as SDx (Software-Defined anything) by each of the one or more physical computers executing a specific software. As SDx, for example, SDS (Software-Defined Storage) or SDDC (Software-Defined Datacenter) can be adopted.
[0018] In addition, in the following description, when describing elements of the same type without distinguishing between them, common reference symbols will be used, and when describing elements of the same type with distinction between them, reference symbols will be used.
[0019] Several embodiments will be described below. [First embodiment]
[0020] FIG. 1 shows an example of the overall configuration of a system according to the first embodiment.
[0021] A primary host 100A is connected to a primary storage system 200A via a network 220A (e.g., a front-end network). A secondary host 100B is connected to a secondary storage system 200B via a network 220B (e.g., a front-end network). The primary storage system 200A and the secondary storage system 200B are connected via a network 220C (e.g., a back-end network). Two or more of the networks 220A to 220C may be common, or at least one of the networks 220A to 220C may be a dedicated line.
[0022] The primary site (a site including the primary host 100A and the primary storage system 200A) and the secondary site (a site including the secondary host 100B and the secondary storage system 200B) may be geographically separated. The primary host 100A is a computer having an interface device 51A, a memory 52A, and a CPU (Central Processing Unit) 53A. The secondary host 100B is a computer having an interface device 51B, a memory 52B, and a CPU 53B. The primary host 100A may be a virtual device (for example, a VM (Virtual Machine) or a container). Similarly, the secondary host 100B may be a virtual device. Furthermore, the primary host 100A may be a virtual device and may be provided in the primary storage system 200A, and similarly, the secondary host 100B may be a virtual device and may be provided in the secondary storage system 200B (that is, at least one of the storage systems 200A and 200B may be a so-called hyper-converged storage system). Also, the secondary host 100B may not be present. Also, for example, when the distance between the storage systems 200A and 200B is short, the primary host 100A may be connected to the secondary storage system 200B in addition to the primary storage system 200A. The secondary host 100B may be connected to the primary storage system 200A in addition to the secondary storage system 200B. Either or both of the storage systems 200A and 200B may be systems installed in a collocation, or may be systems on a cloud that provides cloud computing services (storage services).
[0023] The primary host 100A executes software that executes business processing (for example, a DBMS (DataBase Management System)) and sends a data write request to the primary storage system 200A. The primary storage system 200A stores the data in accordance with the write request. Remote copying is performed between the storage systems 200A and 200B. That is, the secondary storage system 200B receives data from the primary storage system 200A and stores the received data. Disaster recovery is performed when a failure occurs in the primary host 100A or the primary storage system 200A. This allows the secondary host 100B to continue the business processing of the primary host 100A by utilizing the data in the secondary storage system 200B. The remote copy system is a system that includes the storage systems 200A and 200B.
[0024] There is a maintenance terminal 270 connected to network 220C. The maintenance terminal 270 communicates with at least one of storage systems 200A and 200B for the maintenance or management of storage system 200. The maintenance terminal 270 may be connected to network 220A and maintain primary storage system 200A. Also, another maintenance terminal 270 may be connected to network 220B and maintain storage system 200B.
[0025] The primary storage system 200A is an example of a backup source storage system. The secondary storage system 200B is an example of a backup destination storage system. For one primary storage system 200A, there is one or more secondary storage systems 200B.
[0026] FIG. 2 shows an example of the configuration of the storage system 200 and the maintenance terminal 270. As shown in FIG.
[0027] The storage system 200 includes a drive group (a plurality of drives 218) and a redundant controller 210 that performs data I / O for the drive group. The drives 218 are an example of a persistent storage device. The drive group may configure one or more RAID (Redundant Array of Independent (or Inexpensive) Disks) groups. A volume (VOL) 26 is provided based on the drive group.
[0028] The controller 210 includes a FE-IF (front-end interface) 211, a BE-IF (back-end interface) 214, an M-IF (management interface) 215, a memory 213, and a processor 212 connected thereto. The IFs 211, 214, and 215 are examples of interface devices.
[0029] The FE-IF 211 is an interface device that communicates with the host 100. The FE-IF 211 may have multiple ports (for example, a Fibre Channel port, an iSCSI port). A remote copy path (a path through which the data to be transferred passes) may be a path that includes a port of the FE-IF 211 of the primary storage system 200A and a port of the FE-IF 211 of the secondary storage system 200B. An interface device for remote copy may be provided separately from the FE-IF 200.
[0030] The BE-IF 214 is an interface device that communicates with each drive 218 .
[0031] The M-IF 215 is an interface device that communicates with the maintenance terminal 270. A port of the M-IF 215 may be included in the path of the remote copy in place of a port of the FE-IF 211.
[0032] The memory 213 stores programs and data. The memory 213 may have, for example, a cache memory area in which data is temporarily stored. The processor 212 executes the programs stored in the memory 213.
[0033] The maintenance terminal 270 is a computer equipped with an IF 275, an I / O unit 274, a memory 272, and a CPU 271 connected thereto. The IF 275 is an interface device having a port connected to the network 220. The I / O unit 274 is a user interface device such as a keyboard, a pointing device, and a display device. The memory 272 stores programs (e.g., a maintenance program 273) and data. The CPU 271 performs maintenance of the storage system 200 by executing the maintenance program 273. For example, the CPU 271 that executes the maintenance program 273 may receive information (e.g., information indicating the distance between the storage systems 200A and 200B, or information indicating the required multiplicity described below) from a user via the I / O unit 274, and set the received information in the storage system 200 via the IF 275.
[0034] FIG. 3 shows an example of the configuration of the memory 213.
[0035] The memory 213 includes a management area 221 , a program area 222 , and a cache memory area 223 .
[0036] The management area 221 stores management information. The management information includes a pattern VOL table 2210, a pattern management table 2211A and / or 2211B, and a pair table 2213. The tables 2210 and 2211 will be described later. The pair table 2213 is a table for managing the relationship between the copy source and copy destination of remote copy. The pair table 2213 includes, for each VOL pair, the ID of the PVOL (primary volume), the ID of the SVOL (secondary volume), and the ID of the storage system 200 that is the copy partner. The pair table 2213 may also manage pair states for managing the pause state, normal, abnormal, etc. of the copy process. Some tables may not be necessary depending on the functions not required for the storage system 200. Other tables may be provided instead of or in addition to some tables. Tables required for typical remote copy processing, deduplication processing, and data storage processing are omitted. For example, these include sequence numbers to be assigned to journals (described later), a mapping table that associates logical addresses with physical addresses, and management tables for volumes and the storage capacity of the system.
[0037] Programs are stored in the program area 222. The stored programs include, for example, an initial copy program 2221 for performing an initial copy of data in the PVOL, a secondary copy program 2222 for storing transferred data, an I / O program 2223 for performing data I / O to the PVOL (or SVOL) in response to an I / O request from the host, a JNL creation program 2224 for creating a JNL (journal), a JNL transfer program 2225 for transferring the JNL, a pattern extraction program 2226 for extracting a pattern, a pattern registration program 2227 for registering a pattern, a pattern deletion program 2229 for deleting a pattern, a pattern synchronization program 2230 for synchronizing patterns, and a deduplication program 2231 for deduplication. Some of the programs may not be necessary depending on the functions not required for the storage system 200. Also, other programs may be present in place of or in addition to some of the programs.
[0038] The cache memory area 223 temporarily stores data (typically data input / output to / from the drive 218).
[0039] The storage system 200 having this memory 213 can function as either or both of the primary storage system 200A and the secondary storage system 200B. For example, if this storage system 200 has a PVOL but no SVOL (a VOL that constitutes a VOL pair with the PVOL and is a copy destination VOL), this storage system 200 functions as the primary storage system 200A. If this storage system 200 has no PVOL but has an SVOL, this storage system 200 functions as the secondary storage system 200B. If this storage system 200 has an SVOL in a first VOL pair and a PVOL in a second VOL pair, this storage system 200 functions as both the primary storage system 200A and the secondary storage system 200B.
[0040] In this embodiment, an example of backup is synchronous remote copy and / or asynchronous remote copy. With synchronous remote copy, a response to a write request is returned when remote copy of write target data associated with the write request has been performed. With asynchronous remote copy, a response to a write request is returned regardless of whether remote copy of write target data associated with the write request has been performed.
[0041] FIG. 4 shows an example of the configuration of the pattern VOL table 2210.
[0042] The backup destination storage system already has data, and data candidates for which transfer to the backup destination storage can be avoided are managed as patterns. The backup destination storage system is sometimes called the copy destination storage system. The pattern VOL table 2210 includes information such as a destination storage system ID 501 and a VOL number 502 for each destination storage system of the storage system 200. The destination storage system ID 501 indicates the ID of the destination storage system. The VOL number 502 indicates the identification number of the pattern VOL. The identification number of the VOL is the identification number of the VOL in the storage system having the pattern VOL table 2210. In other words, the VOL number 502 in the pattern VOL table 2210 of the source storage system is the identification number of the pattern VOL of the source storage system. In this embodiment, the ID and the identification number are examples of identification information. Although an example of management for each destination storage system has been shown, a pattern VOL may be provided for each part of the destination storage system. For example, this may be for each logical division unit or capacity pool.
[0043] A "pattern VOL" is a VOL in which a pattern is stored, and is an offline VOL (a VOL that is not provided to a host) that is not specified in an I / O request. A "pattern" is data transferred from the primary storage system 200A to the secondary storage system 200B. "Transferred data" is typically the uncompressed data itself read from a VOL, but it is sufficient if the contents of the transferred data can be identified. A pattern is typically the transferred data, but may also be data held by the destination storage. For example, data such as all bits being 0 or all bits being 1 may be managed in advance as a pattern by the source and destination.
[0044] Data that has already been transferred to the first secondary storage system 200B does not need to be transferred to the first secondary storage system 200B again, but if the same data is data to be copied and has not been transferred to the second secondary storage system 200B, the data needs to be transferred to the second secondary storage system 200B. Therefore, as illustrated in FIG. 4, in this embodiment, when multiple secondary storage systems 200B are connected to the primary storage system 200A, the primary storage system 200A manages a pattern VOL (that is, a registered pattern) for each of the multiple secondary storage systems 200B. This makes it possible to determine which data needs or does not need to be transferred to which secondary storage system 200B. The pattern VOL is an example of a logical storage area. When the logical storage area is an area in the memory 213, information indicating an address in the memory 213 may be adopted instead of the VOL number 502.
[0045] FIG. 5 shows an example of the configuration of the pattern management table 2211A.
[0046] The pattern management table 2211A includes information such as a fingerprint value 601, a validity flag 602, and a pattern address 603 for each pattern.
[0047] The fingerprint value 601 is the fingerprint value of the pattern, for example a hash value. The fingerprint value is an example of identification information, and may be other identification information. It is not necessary for the identification information to be generated from data. The validity flag 602 indicates whether the pattern is valid or invalid (for example, at a certain trigger such as during registration of the pattern, the validity flag 602 of the pattern is set to "OFF" (invalid)). The pattern address 603 indicates the address of the storage area of the pattern (the address of the area in the pattern VOL).
[0048] The pattern management table 2211A may exist for each secondary storage system 200B, or may be common to a plurality of secondary storage systems 200B and record the ID of the secondary storage system 200B that has already been designated as the transfer destination for each pattern. Also, instead of or in addition to being stored in the memory 213, the pattern management table 2211A may be stored in the pattern VOL to which this table 2211A corresponds. The pattern address 603 is not necessarily required. For example, if an address on the pattern VOL is fixedly associated with the record of this table, the address where the pattern data is stored can be identified.
[0049] FIG. 6 shows an example of a pattern VOL26X in which a data body that is a pattern is stored.
[0050] Pattern VOL26X (and each of PVOL and SVOL) is composed of multiple contiguous chunk areas. A "chunk area" is a chunk-sized logical area in which data chunks are stored, and is an example of a logical area of a predetermined size in a VOL. A "data chunk" is an example of data of a predetermined size. A "chunk size" is, for example, a unit size for deduplication (e.g., 4KB). A chunk-sized pattern (i.e., a pattern as a data chunk) is written to pattern VOL26X. According to the example shown in FIG. 6, patterns A, B, and C are stored in pattern VOL26X.
[0051] As described above, the "pattern VOL" is an example of a logical storage area. The logical storage area may be provided in the memory 213.
[0052] FIG. 7A shows an overview of a comparative example 1 of the embodiment.
[0053] The primary storage system has PVOL7P, and the secondary storage system has SVOL7S which configures a VOL pair with PVOL7P. There are two data chunks A in PVOL7P. In other words, data chunk A is duplicated in PVOL7P.
[0054] For this reason, when a copy instruction is issued for PVOL7P, data chunk A is transferred twice from the primary storage system to the secondary storage system.
[0055] FIG. 7B shows an overview of Comparative Example 2 of the embodiment.
[0056] The primary storage system has PVOL17P, and the secondary storage system has SVOL17S which forms a VOL pair with PVOL17P. PVOL17P and SVOL17S each contain data chunks B and C. In other words, data chunks B and C are duplicated between PVOL17P and SVOL17S, respectively.
[0057] For this reason, when a copy instruction is issued for PVOL17P, data chunks B and C are transferred from the primary storage system to the secondary storage system, even though data chunks B and C are present in SVOL17S.
[0058] FIG. 8 shows an overview of this embodiment.
[0059] The primary storage system 200A comprises PVOL26P, pattern VOL26XP, and a storage area (hereinafter, physical storage area) 80P based on a drive group (an example of a first storage device). The secondary storage system 200B comprises SVOL26S, which configures a VOL pair with PVOL26P, pattern VOL26XS, and a physical storage area 80S based on a drive group (an example of a second storage device). Each of the physical storage areas 80P and 80S may be, for example, a capacity pool configured with one or more VOLs. Data is written to the physical storage area 80P through PVOL26P, and data is written to the physical storage area 80S through SVOL26S. In addition, remote copy is applied to PVOL26P and SVOL26S, and PVOL26P and SVOL26S configure a VOL pair.
[0060] The primary storage system 200A has a deduplication program 2231A, and the secondary storage system 200B has a deduplication program 2231B. The deduplication program 2231A performs deduplication by associating (pointing) multiple chunk areas in which the same data is stored in one or multiple VOLs 26 to one physical area (an area in the physical storage area 80) in which the data exists. According to the example shown in Figure 8, in the primary storage system 200A, the deduplication program 2231A associates two chunk areas in which data A is stored in VOL 26P with one physical area in which data A exists. Data stored in chunks is sometimes called data chunks.
[0061] Here, assume that a copy instruction (for example, an initial copy instruction) has been given for PVOL26P, and thus data chunk A in PVOL26P has been set as a transfer target to the secondary storage system 200B (a copy target to SVOL26S). The primary storage system 200A extracts the data chunk A to be transferred as pattern A, and determines whether the extracted pattern A has been registered in pattern VOL26XP. Since pattern A has not been registered here, the determination result is false. In this case, the primary storage system 200A registers the extracted pattern A in pattern VOL26XP, and transfers the data chunk A to be transferred to the secondary storage system 200B. In this way, the data chunk once transferred to the secondary storage system 200B is registered as a pattern in pattern VOL26XP. When the secondary storage system 200B receives data chunk A from the primary storage system 200A, it extracts data chunk A as pattern A, registers the pattern A in pattern VOL26XS, and stores the data chunk A in SVOL26S (stores the data chunk A in the physical storage area 80S via SVOL26S). In the primary storage system 200A, the registration of pattern A may include association between the address of the storage destination area of the data chunk A as pattern A and the address of the registration destination area of pattern A (for example, an area in pattern VOL26XP). Similarly, in the secondary storage system 200B, the registration of pattern A may include association between the address of the storage destination area of the data chunk A as pattern A and the logical address of the registration destination area of pattern A (for example, an area in pattern VOL26XS). The "storage destination area" in this paragraph may be a physical area in the physical storage area 80, or may be a logical area in a logical volume.
[0062] After that, suppose that data chunk A stored in another chunk in PVOL26P is again set as a transfer target to the secondary storage system 200B. The primary storage system 200A extracts the data chunk A as pattern A, but pattern A has already been registered in pattern VOL26XP. Therefore, the above-mentioned judgment result is true. In this case, the primary storage system 200A does not transfer the data chunk A to be transferred. This makes it possible to avoid transfer between the storage systems 200A and 200B of data A that is duplicated between the storage systems 200A and 200B.
[0063] Specifically, the primary storage system 200A transmits the fingerprint value (FP value) of pattern A to the secondary storage system 200B in place of the data chunk A to be transferred. In this way, by transferring a fingerprint value having a smaller data size than the data chunk A in place of the data chunk A, remote copy can be realized.
[0064] When the secondary storage system 200B receives the fingerprint value from the primary storage system 200A, it identifies pattern A from pattern VOL26XS based on the fingerprint value, reads data A from pattern VOL26XS, and writes it to the destination area of SVOL26S. Alternatively, it associates a chunk area (destination area for remote copy) in SVOL26S with the physical area (physical area in physical storage area 80S) in which data chunk A exists. In this way, it is possible to avoid transferring the data body from pattern VOL26XS to SVOL26S within the secondary storage system. In this way, copying of data A to SVOL26S is achieved without transferring data chunk A.
[0065] In the primary storage system 200A, the data chunk A written to the physical storage area 80P through PVOL26P and the pattern A registered in the pattern VOL26XP overlap. Therefore, the registration of the pattern A means that the deduplication program 2231A associates the registration destination chunk area of the pattern A (the chunk area in the pattern VOL26XP) with the physical area (the physical area in the physical storage area 80P) in which the data chunk A written to the physical storage area 80P through PVOL26P exists. Therefore, the registered pattern in the pattern VOL26XP is a data chunk existing in the physical area associated with the registration destination chunk area of the pattern. This allows a pattern to be registered every time a data chunk not registered as a pattern is transferred, but it is possible to avoid consuming the storage capacity of the physical storage area 80P even if a pattern is registered. In other words, deduplication of data between PVOL26P and the pattern VOL26XP is realized.
[0066] Similarly, in the secondary storage system 200B, it is also possible to realize deduplication between data chunk A written to the physical storage area 80S via SVOL26S and pattern A registered in pattern VOL26XS. That is, deduplication is realized by the deduplication program 2231B associating the registration destination chunk area of pattern A (chunk area in pattern VOL26XS) with the physical area in which data chunk A exists (physical area in physical storage area 80S).
[0067] Fig. 9A shows the flow of initial copy processing performed by the initial copy program 2221 in the primary storage system 200A. "Initial copy" refers to copying all data in PVOL 26P to SVOL 26S. Furthermore, the processing shown in Fig. 9A may be common to synchronous remote copying and asynchronous remote copying.
[0068] The initial copy program 2221 receives a copy instruction for PVOL26P (S100), and sets an entry having a predetermined pair state, PVOL ID, SVOL ID, and copy destination storage system ID for the VOL pair of PVOL26P and SVOL26S in the pair table 2213 (S101). Note that in S101, the secondary storage system 200B having the copy destination SVOL26S is identified, and therefore, a pattern VOL26XP corresponding to the secondary storage system 200B is identified from the pattern VOL table 2210, and also a pattern management table 2211A corresponding to the secondary storage system 200B is identified. Also, if there is no pattern VOL26XP or pattern VOL table 2210 entry corresponding to the identified secondary storage system 200B, a new one is created.
[0069] The initial copy program 2221 reads data that is to be copied in this initial copy process but has not yet been read from the PVOL 26P, and treats the read data as one or more data chunks (S102).
[0070] The initial copy program 2221 selects one unselected data chunk from the one or more data chunks obtained in S102 (S103), and calculates a fingerprint value of the selected data chunk (S104). The initial copy program 2221 searches the pattern management table 2211A for a fingerprint value 601 that matches the fingerprint value calculated in S104 (S105). The initial copy program 2221 determines whether or not a matching fingerprint value 601 is found as a result of S105, and whether or not the validity flag 602 corresponding to the fingerprint value 601 is "ON" (S106).
[0071] If the determination result of S106 is false (S106: NO), the initial copy program 2221 transfers a copy request associated with the data body to the secondary storage system 200B (S109), and causes the pattern registration program 2227 in the primary storage system 200A to execute pattern registration processing (S110). The "data body" referred to here is the entire data chunk or a part thereof (described in detail later). The pattern synchronization program 2230 may be executed immediately after S110.
[0072] If the determination result of S106 is true (S106: YES), the initial copy program 2221 reads the pattern from the logical area (area in pattern VOL 26XP) indicated by the pattern address 603 corresponding to the matching fingerprint value 601, and compares the pattern with the data chunk selected in S103 to confirm a match (S107). After that, the initial copy program 2221 transfers a copy request associated with the matching fingerprint value to the secondary storage system 200B (S108). In this way, if there is a matching pattern, the transfer target is a fingerprint value of a smaller size than the data chunk, so the amount of data transferred can be reduced. The copy request may also include various information stored in typical remote copy processing. For example, the storage address of the data to be transferred in PVOL or SVOL. In step S107, the data chunk and the pattern are compared, but this comparison is not necessarily required. For example, it may be determined that the data chunk and the pattern are also the same if the hash values are the same.
[0073] After S108 or S110, the initial copy program 2221 judges whether or not all of the one or more data chunks obtained in S102 were selected in S103 (S111). If the judgment result in S111 is false (S111: NO), the process returns to S103.
[0074] If the determination result of S111 is true (S111: YES), the initial copy program 2221 determines whether or not S102 has been performed for all data to be copied (S112). If the determination result of S112 is false (S112: NO), the process returns to S102. If the determination result of S112 is true (S112: YES), the process ends.
[0075] As described above, a "chunk" is a unit of data from which the deduplication program 2231 performs deduplication. In this embodiment, for example, the chunk size is 4 KB. Deduplication is achieved by dividing an area from the beginning of PVOL 26P into 4 KB units and checking the duplication relationship. Since the registered patterns and the data stored in PVOL 26P are deduplicatable, the amount of data consumed for storing the patterns can be reduced. Specifically, capacity consumption can be reduced by dividing the data read in S102 into one or more data chunks and registering each data chunk as a pattern.
[0076] In addition, if the starting address of the data read in S102 is different from the starting address of the chunk, or if the end address of the data read in S102 is different from the end address of the chunk, the initial copy program 2221 sets the starting address of the pattern extracted from the data read in S102 as the starting address of the chunk.
[0077] 9B, if the first address of the data 97 read in S102 is different from the first address of the deduplication unit 96, the initial copy program 2221 may skip S104 and S105 and perform S109 for the data 95 from the first address of the data 97 read in S102 to the first address of the deduplication unit 96. Specifically, for example, if the deduplication unit size is 4 KB and the data read in S102 is data from 3 KB to 15 KB from the start of PVOL 26P, 4 KB of data from 5 KB to 8 KB and 4 KB of data from 9 KB to 12 KB can be deduplication-free, so S104 and S105 may be performed. On the other hand, the 2 KB of data from 3 KB to 4 KB is not aligned with the deduplication unit, so S104 and S105 may be skipped and S109 may be performed. As for the 3 KB data body from the 13th KB to the 15th KB, the deduplication unit and data size are not consistent, so S104 and S105 may be skipped and S109 may be performed.
[0078] Furthermore, the pattern registration process of S110 may be performed when the pattern registration is normally completed in the secondary storage system 200B, which is the copy destination. For example, after S109, when the initial copy program 2221 receives a report of the completion of the pattern registration from the secondary storage system 200B (specifically, the notification of S206 in the case of S201: YES in FIG. 10 described later), S110 may be performed. This prevents a difference in the pattern registration status between the storage systems 200A and 200B, and can avoid the occurrence of a situation in which, for example, the primary storage system 200A transfers a pattern as a data chunk, but the pattern does not exist in the secondary storage system 200B.
[0079] Fig. 10 shows the flow of secondary copy processing performed by the secondary copy program 2222 in the secondary storage system 200B. The processing shown in Fig. 10 may be common to synchronous remote copying and asynchronous remote copying.
[0080] The secondary copy program 2222 receives a copy request associated with the fingerprint value transferred in S108 of FIG. 9A or the data body transferred in S109 of FIG. 9A (S200).
[0081] If the data body is associated with the copy request received in S200 (S201: YES), the secondary copy program 2222 stores the data body in an address (logical area in SVOL26S) representing the copy destination address included in the copy request (S207). After that, the secondary copy program 2222 causes the pattern registration program 2227 in the secondary storage system 200B to execute a pattern registration process (S208). After that, the secondary copy program 2222 reports the completion of the copy request received in S200 to the secondary storage system 200B (S206). Note that S208 may be omitted and the primary storage system 200A may periodically transfer the registered pattern to the secondary storage system 200B, and the secondary storage system 200B may register the transferred pattern in the pattern VOL26XS. However, as in this embodiment, the pattern registration process is performed when the data body is received, so that the transfer amount can be efficiently reduced. In other words, when a request to transfer the same data occurs between the secondary copy program 2222 and the pattern synchronization program 2230 (a program that operates separately from the transfer of the data body), the data body will be transferred because the pattern has not been registered. However, by executing the pattern registration process together with the transfer of the data body, it is possible to eliminate the unnecessary transfer of the data body due to the pattern not being registered.
[0082] If a fingerprint value is associated with the copy request received in S200 (S201: NO), the secondary copy program 2222 searches the pattern management table 2211A for a fingerprint value 601 that matches the fingerprint value (S202). The secondary copy program 2222 determines whether or not a matching fingerprint value 601 is found as a result of S202, and whether the validity flag 602 corresponding to the fingerprint value 601 is "ON" (S203).
[0083] If the determination result of S203 is false (S203: NO), the secondary copy program 2222 requests the primary storage system 200A to transfer the data body (S209). When the secondary copy program 2222 receives the data body from the primary storage system 200A in response to the request, S207 and S208 are carried out.
[0084] If the determination result of S203 is true (S203: YES), the secondary copy program 2222 reads the pattern from the logical area (area in pattern VOL 26XS) pointed to by the pattern address 603 corresponding to the matching fingerprint value 601, and stores the data chunk as the pattern in the area indicated by the address information associated with the copy request (area in SVOL 26S) (S205). After that, the secondary copy program 2222 reports the completion of the copy request received in S200 to the secondary storage system 200B (S206).
[0085] It should be noted that in S205, by performing deduplication, the logical area in which the data chunks are stored may be associated with the physical area in which the data chunks exist.
[0086] Also, even if there is a matching fingerprint value 601, there may be cases where the pattern cannot be read due to a failure in the pattern VOL26XS, etc. In this case, the determination result in S203 becomes false, and S209 may be performed.
[0087] 11 shows the flow of write processing carried out by the I / O program 2223 in the primary storage system 200A. This is the flow when synchronous remote copy is adopted.
[0088] The I / O program 2223 receives a write request specifying PVOL 26P from, for example, the primary host 100A (S301), and writes data associated with the write request to PVOL 26P (S302). Thereafter, the I / O program 2223 executes S103 to S111 of Fig. 9A, and reports the completion of the write request received in S301 to, for example, the primary host 100A (S303).
[0089] 12A shows the flow of JNL creation processing carried out by the JNL creation program 2224 in the primary storage system 200A. This is the flow when asynchronous remote copy is adopted.
[0090] The JNL creation program 2224 receives a copy instruction for PVOL26P (S400), and sets an entry having a predetermined pair state, PVOL ID, SVOL ID, and copy destination storage system ID for the VOL pair of PVOL26P and SVOL26S in the pair table 2213 (S401). The JNL creation program 2224 creates a JNL including the data stored in PVOL26P (S402), and stores the JNL in a predetermined storage area (for example, a JNL VOL not shown) (S403). S402 and S403 are performed for all data in PVOL26P (S404).
[0091] Furthermore, each time the I / O program 2223 receives a write request that specifies the PVOL 26P, a JNL may be created and stored for the data accompanying that write request.
[0092] 12B shows the flow of the JNL transfer process carried out by the JNL transfer program 2225 in the primary storage system 200A. This is the flow when asynchronous remote copy is adopted.
[0093] The JNL transfer program 2225 receives, for example, a JNL transfer request (a JNL read request) from the secondary storage system 200B (S411), and selects the JNL to be transferred (S412). The JNL is selected according to information (for example, a sequence number) that indicates the order in which data is written. After S412, the JNL transfer program 2225 executes S103 to S112 in FIG. 9A.
[0094] The process performed by the secondary storage system 200B upon receiving the JNL may be the process shown in Fig. 10. The secondary copy program 2222 may temporarily store the received JNL in a specified storage area (for example, a JNL VOL, not shown), and then write the data in the JNL to SVOL26S. In that case, the secondary copy program 2222 may execute S201 to S209 in Fig. 10.
[0095] 13 shows the flow of pattern extraction processing performed by the pattern extraction program 2226 in the primary storage system 200A. According to this flow, pattern registration processing can be performed at a time and by a method different from pattern extraction by the initial copy processing or write processing.
[0096] The pattern extraction program 2226 acquires a physical address, which is the address of a physical area in the physical storage area 80P (S500). The pattern extraction program 2226 checks the number of overlaps, which is the number of logical areas associated with the physical area represented by the physical address (S501). The number of overlaps may be registered in a table (not shown) for each physical address, for example, and the table may be shared by multiple programs including the deduplication program 2231, allowing each of those programs to specify the number of overlaps for each physical address.
[0097] If the number of overlaps exceeds 1, the pattern extraction program 2226 causes the pattern registration program 2227 to execute a pattern registration process (S503).
[0098] According to the process shown in Fig. 13, a data chunk with a large number of overlaps is extracted as a pattern, and the pattern is registered. Data with a large number of overlaps is likely to be transferred to the secondary storage system multiple times. For this reason, although the condition in this example is that the number of overlaps exceeds 1, other conditions may also be used. The pattern synchronization program 2230 may be executed immediately after S503.
[0099] Fig. 14 shows the flow of pattern registration processing carried out by the pattern registration program 2227 in the primary storage system 200A. This pattern registration processing is implemented in, for example, S110 in Fig. 9A, S208 in Fig. 10, or S503 in Fig. 13.
[0100] The pattern registration program 2227 searches the pattern management table 2211A for a fingerprint value 601 that matches the fingerprint value of the pattern (data chunk) to be registered (S600).
[0101] If there is a matching fingerprint value 601 (S601: YES), it means that another data chunk is registered as a pattern with the same fingerprint value. That is, a fingerprint value collision (different data chunks have the same fingerprint value) has occurred. In this case, the pattern registration program 2227 sets the valid flag 602 corresponding to the matching fingerprint value 601 to "OFF" (that is, the registered pattern is "invalid") (S602). The pattern registration program 2227 determines an address for the pattern VOL 26XP (S603), and stores the pattern to be registered in the logical area (area in the pattern VOL 26XP) of the determined address (S604). At that time, the pattern registration program 2227 changes the address indicated by the pattern address 603 corresponding to the matching fingerprint value 601 to the address determined in S603. The old pattern may be deleted from the pattern VOL. That is, as a result, the registered pattern is replaced with another pattern. In addition, in S602, by setting the validity flag 602 to "OFF", the data chunk that corresponds to the fingerprint value where the collision occurred and that is newly stored in PVOL 26P is transferred to the secondary storage system 200B. This makes it possible to prevent a situation in which there is a new data chunk in the primary storage system 200A, but the data chunk is not transferred and the old data chunk is maintained in the secondary storage system 200B, resulting in garbled data. In the above description, the old pattern (the pattern that was registered before the start of this process) is replaced with the new pattern. However, the old pattern may be continuously used without registering a new pattern. In this case, 602, S603 and S604 are skipped. Also, when a collision occurs, a different identifier may be generated and registered for the new pattern. In this case, in the pattern search process, it is necessary to separately search for a pattern stored with a different identifier. Also, two patterns may be registered with the same identifier, and a data structure or information may be added that allows it to be determined that two patterns have been registered during pattern search.
[0102] If there is no matching fingerprint value 601 (S601: NO), the pattern registration program 2227 determines the address for the pattern VOL26XP (S605), and stores the pattern to be registered in the logical area of the determined address (area in the pattern VOL26XP) (S605). Next, the pattern registration program 2227 judges whether the pattern to be registered has already been registered in the copy destination (secondary storage system 200B) (S606). For example, if the completion of registration of the pattern of the data body is reported in S206 and the primary storage system 200A receives the report, the judgment result of S606 becomes true. Note that the pattern stored in S604 and S605 and the data chunk from which the pattern was extracted are subjected to deduplication processing by the deduplication function. Since the deduplication processing is performed on a chunk-by-chunk basis, the data from which the pattern was extracted and the storage start position in the chunk are aligned and stored in S603 and S605. In the above description, since the processing is performed on the chunk in S103, the pattern may be stored from the beginning of the chunk.
[0103] If the determination result in S606 is true (S606: YES), the pattern registration program 2227 registers the fingerprint value of the pattern to be registered, the validity flag "ON", and the address confirmed in S605 in the pattern management table 2211A.
[0104] If the determination result of S606 is false (S606: NO), the pattern registration program 2227 registers the fingerprint value of the pattern to be registered, the validity flag "OFF", and the address confirmed in S605 in the pattern management table 2211A. The reason for the validity flag "OFF" is to allow the transfer of the data chunk as the pattern. That is, since there is no pattern at the copy destination, even if the secondary storage system 200B receives the fingerprint value, it cannot obtain the data chunk to be stored in SVOL26S from the pattern. Furthermore, in storing the pattern in S604 and S605, the pattern may be stored in the pattern VOL, or the physical area containing the data chunk from which the pattern was extracted may be associated with the area in which the pattern is stored (the area in pattern VOL26XP).
[0105] Incidentally, an upper limit may be set on the number of patterns that can be registered for at least one pattern VOL26X. For example, since a pattern is a data chunk written to a physical area via PVOL26P, the pattern itself does not consume capacity, but information such as a fingerprint value, a valid flag, and a pattern address does consume capacity. Due to such capacity consumption restrictions (or other reasons), an upper limit may be set on the number of patterns that can be registered.
[0106] Regarding the pattern VOL26X in which an upper limit is set on the number of patterns that can be registered, for example, the description with reference to FIGS. 15 to 17 is applied.
[0107] FIG. 15 shows an example of the configuration of the pattern management table 2211B.
[0108] In this embodiment, there is one or both of a pattern management table 2211A (a table corresponding to pattern VOL26X with no upper limit on the number of patterns that can be registered) and a pattern management table 2211B (a table corresponding to pattern VOL26X with an upper limit on the number of patterns that can be registered).
[0109] According to the pattern management table 2211B, for each pattern, in addition to the fingerprint value 601, the validity flag 602, and the pattern address 603, there is a number of overlaps 1501. For each pattern, the number of overlaps 1501 is the number of logical areas associated with the physical area in which the data chunk as the pattern exists. If there is an upper limit to the number of patterns that can be registered, a data chunk with a large number of overlaps is preferentially registered as a pattern, thereby improving the effect of reducing the amount of data transferred. Indicators other than the number of overlaps may be adopted. For example, the indicators may be the data transfer avoidance record, the data transfer avoidance prediction, the amount of physical capacity consumed for storing the pattern, the time elapsed since the pattern was registered, the time elapsed since the last time it was used (referenced) as a pattern, the I / O frequency (access frequency) of the data chunk as a pattern, and the like. One or more of these indicators may be combined to be used as an indicator.
[0110] FIG. 16 shows the flow of the de-duplication process performed by the de-duplication program 2231.
[0111] The deduplication program 2231 calculates the fingerprint value of the target data chunk (S700), and searches for a data chunk with the same fingerprint value as the calculated fingerprint value (S701). If such a data chunk is found, the deduplication program 2231 acquires the physical address of the physical area in which such data chunk exists (S702), and reads the data chunk from the physical area (S703). The deduplication program 2231 compares the target data chunk with the data chunk read in S703, and confirms that they match (S704). The deduplication program 2231 updates a pointer to associate the chunk in which the target data chunk is stored with the physical area identified in S702 (S705).
[0112] If the deduplication program 2231 determines that the target data chunk has not been registered as a pattern (S706: NO), the pattern registration program 2227 may execute a pattern registration process (S707).
[0113] Fig. 17 shows the flow of pattern registration processing performed by the pattern registration program 2227 when there is an upper limit to the number of patterns that can be registered. This pattern registration processing is performed, for example, in S707 in Fig. 16. Differences from the processing shown in Fig. 14 will be mainly explained.
[0114] If S601: YES, S800 is performed instead of S604. That is, the pattern registration program 2227 stores the pattern to be registered in the logical area (area in pattern VOL 26XP) of the address determined in S603, and registers the number of overlaps 1501 for the physical area associated with the logical area in the pattern management table 2211B (S800).
[0115] If S601: NO, S801 to S806 are performed instead of S605 to S608. That is, the pattern registration program 2227 identifies the registered pattern with the least number of overlaps based on the pattern management table 2211B (S801). The pattern registration program 2227 determines whether the number of overlaps identified in S801 is less than the number of overlaps of the pattern to be registered (S802).
[0116] If the determination result of S802 is true (S802: YES), the registered pattern with the least number of overlaps is replaced with the pattern to be registered. Specifically, the pattern registration program 2227 deletes the registered pattern with the least number of overlaps from the pattern VOL 26X (S803). A new pattern is stored in the area where the deleted pattern was stored. The pattern registration program 2227 determines whether the pattern to be registered has already been registered in the copy destination (secondary storage system 200B) (S804).
[0117] If the determination result in S804 is true (S804: YES), the pattern registration program 2227 registers the fingerprint value of the pattern to be registered, the number of duplicates, the validity flag "ON", and the address of the pattern deleted in S803 in the pattern management table 2211B (S805).
[0118] If the determination result in S804 is false (S804: NO), the pattern registration program 2227 registers the fingerprint value of the pattern to be registered, the number of duplicates, the validity flag "OFF", and the address of the pattern deleted in S803 in the pattern management table 2211B (S806).
[0119] According to the example shown in Fig. 17, whether or not to replace a pattern is determined based on the magnitude of the overlap number, but whether or not to replace a pattern may be determined based on information other than the overlap number instead of or in addition to the overlap number. For example, a registered pattern to be replaced by the pattern to be registered (i.e., a registered pattern to be deleted) may be determined based on at least one of the data transfer avoidance record, data transfer avoidance prediction, the amount of physical capacity consumed for storing the pattern, the elapsed time since the pattern was registered, the elapsed time since the pattern was last used (referenced), and the I / O frequency (access frequency) of the data chunk as the pattern. This is expected to preferentially register registered patterns that contribute to reducing the amount of transferred data.
[0120] Also, after S601: NO, S801 may be performed if the number of registered patterns has reached the upper limit. In other words, if the number of registered patterns has not reached the upper limit, the process illustrated in FIG. 14 may be performed.
[0121] FIG. 18 shows the flow of pattern registration synchronization processing carried out by the pattern synchronization program 2230 in the primary storage system 200A and the pattern registration program 2227 in the secondary storage system 200B.
[0122] The pattern synchronization program 2230 searches for the validity flag 602 "OFF" (S900), and transfers the pattern corresponding to the found validity flag 602 "OFF" to the secondary storage system 200B (S901). In the secondary storage system 200B, the pattern registration program 2227 executes a pattern registration process (S902). For example, the pattern registration process shown in FIG. 14 is executed. The pattern registration program 2227 in the secondary storage system 200B reports the completion of the pattern registration process shown in FIG. 14 to the primary storage system 200A.
[0123] The pattern synchronization program 2230 receives a notification of the completion of the pattern registration process from the secondary storage system 200B (S903), and sets the validity flag 602 found in S900 to "ON" (S904).
[0124] Furthermore, in S902, the validity flag 602 "ON" may be registered in the secondary storage system 200B. Alternatively, the validity flag 602 "OFF" is registered in S902, but the validity flag 602 "ON" is notified from the primary storage system 200A to the secondary storage system 200B in S904, and the validity flag 602 may be changed from "OFF" to "ON" in the secondary storage system 200B which has received the notification.
[0125] Furthermore, when the pattern synchronization program 2230 receives a fingerprint value as a parameter, the process shown in FIG. 18 may be performed on the pattern of that fingerprint value.
[0126] FIG. 19 shows the flow of the pattern deletion process performed by the pattern deletion program 2229 in the primary storage system 200A (or the secondary storage system 200B).
[0127] The pattern deletion program 2229 acquires a logical address (pattern address indicated by the pattern management table 2211A) for the pattern VOL 26X (S1000), and checks the number of overlaps of the pattern corresponding to the acquired logical address (S1001).
[0128] If the number of overlaps is 1 (an example of a predetermined number of overlaps) (S1002: YES), the pattern deletion program 2229 determines whether the capacity of the physical storage area 80P (or 80S) is depleted (free capacity is below a certain capacity) (S1003).
[0129] If the determination result in S1003 is true (S1003: YES), the pattern deletion program 2229 deletes the pattern corresponding to the logical address acquired in S1000 (and the record corresponding to that pattern in the pattern management table) (S1006).
[0130] If the determination result of S1003 is false (S1003: NO), the pattern deletion program 2229 determines whether a predetermined time has passed since the pattern corresponding to the logical address acquired in S1000 was registered (or last used) (S1004). If the determination result of S1004 is true (S1004: YES), S1006 may be executed. If the determination result of S1004 is false (S1004: NO), S1000 may be executed for the same or a different logical address after a certain time has passed.
[0131] A pattern may be deleted if at least one of S1002, S1003, and S1004 is satisfied, or if one or more conditions are satisfied for that pattern instead of or in addition to at least one of S1002, S1003, and S1004.
[0132] In this way, patterns can be efficiently deleted, and the capacity of the pattern management table 2211A or 2211B can be appropriately reduced. For example, when the number of overlaps of a registered pattern is 1, this means that the only logical area associated with the physical area in which the data chunk of that pattern exists is the logical area in pattern VOL 26X, but in this case, since the data chunk will not be a transfer target via PVOL 26P, it is preferable to delete the pattern. [Second embodiment]
[0133] The second embodiment will be described below, focusing mainly on the differences from the first embodiment, and explanations of the points in common with the first embodiment will be omitted or simplified.
[0134] FIG. 20A shows an overview of an example of a case in which a backup of snapshot data is performed.
[0135] The storage system 200X is an example of a backup source storage system. The configuration of the storage system 200X may be the same as the above-mentioned storage system 200A or 200B. The storage system 200X acquires a snapshot VOL26K, which is a snapshot of VOL26B (an example of a target VOL).
[0136] The data in snapshot VOL26K is called "snapshot data." Snapshot data includes data as the difference between snapshot VOL26K and its comparison source VOL, instead of or in addition to data in the comparison source (previous) VOL of snapshot VOL26K (for example, initial VOL26B or previous (for example, immediately preceding) snapshot VOL26K). Data as the difference may be managed in chunk units (deduplication units), or in units smaller or larger than chunk units. A difference is data in which data in the comparison source VOL and the snapshot data differ. For example, when writing occurs to a snapshot, the written data is managed as the difference. Furthermore, when volume 26B is updated after the snapshot is created, the data before the update is managed as difference data.
[0137] Although the type of the backup destination storage system does not matter, in this embodiment, the backup destination storage system is the object storage system 200Y. The object storage system 200Y may be a public cloud object storage service or an object storage product that provides an object storage interface. The storage product may be installed in another data center or may be installed in the same data center as the storage system 200X. If an object is associated with one file, the present technology can also be applied to a NAS (Network Attached Storage) configuration that is a file storage. According to this embodiment, snapshot data is backed up to the object storage system 200Y. FIG. 20A shows an example in which a snapshot is obtained once a day and data is backed up to the object storage system 200Y. Specifically, it is as follows. The storage system 200X stores data stored in the base VOL 26B as of December 1st in the object storage system 200Y as a data object. Generally, the ratio of VOLs to objects is assumed to be 1:N (N is an integer equal to or greater than 1), so multiple data objects 3000 are shown in Fig. 20A. However, the ratio of VOLs to objects may be 1:1. The snapshot VOL26K1 taken on December 2 holds only the differential data that occurred between December 1 and December 2. Only this differential data is stored in the object storage system 200Y. The snapshot VOL26K2 taken on December 3 holds only the differential data that occurred between December 2 and December 3. Only this differential data is stored in the object storage system 200Y.
[0138] In the above example, the snapshot is taken once a day, but the frequency of data transfer to the object storage system 200Y may be the same as or different from the frequency of snapshots. For example, a portion of the snapshot data that is detected as no longer being referenced may be transferred to the object storage system 200Y.
[0139] In this way, by transferring only differential data rather than all of the data in snapshot VOL 26K, the amount of data transferred can be reduced.
[0140] According to this embodiment, when the storage system 200X detects that the differential data A as of December 3 is the one to be transferred, the storage system 200X detects that the differential data A is the same as the differential data A previously transferred to the object storage system 200Y, and can avoid transferring the differential data A to the object storage system 200Y again, thereby further reducing the amount of data to be transferred.
[0141] FIG. 20B shows an example of the configuration of the memory 213 of the storage system 200X.
[0142] The management information in the management area 221 includes a pattern VOL table 2210, a pattern management table 2211C, and a snapshot management table 2215.
[0143] Programs stored in the program area 222 include, for example, an I / O program 2223, a pattern extraction program 2226, a pattern registration program 2227, a pattern deletion program 2229, a pattern synchronization program 2230, and a deduplication program 2231, as well as a backup acquisition program 2232 for acquiring a backup and a program 2233 for deleting a backup.
[0144] FIG. 21 shows an example of the configuration of the snapshot management table 2215.
[0145] The snapshot management table 2215 is a table for managing data transferred to the object storage for each snapshot. That is, tables for realizing a typical snapshot function in the storage system 200X are omitted. For example, it is a table for managing the storage location of the data of the snapshot 26K1. This table manages the storage address of the differential data for each chunk of the snapshot 26K1 and the address of the volume 26B which is the snapshot source. The snapshot management table 2215 includes information such as the snapshot acquisition time 2101, the chunk number 2102, and the object key 2103 for each snapshot acquired. When the snapshot creation trigger and the transfer trigger to the object storage are different triggers, the snapshot management table 2215 may manage the transfer status to the object storage. For example, it manages the transfer completed, not transferred, being transferred, etc.
[0146] Snapshot acquisition time 2101 indicates the time when the snapshot was acquired. Chunk number 2102 indicates the identification number of the data chunk that has been made into a data object. Object key 2103 is a key (identification information) for accessing the data object. One or more chunk numbers and object keys are managed for a snapshot. The chunk number may be any information that can identify a chunk, and may be address information, etc.
[0147] In the example shown in Figure 21, the ratio of data chunks (deduplication units) to data objects is 1:1, but the ratio of data chunks to data objects may be 1:N (N is an integer greater than or equal to 1) or M:1 (M is an integer greater than or equal to 1).
[0148] FIG. 22 shows an example of the configuration of the pattern management table 2211C.
[0149] The pattern management table 2211A includes, for each pattern, a fingerprint value 601, a validity flag 602, a pattern address 603, and an object key 2201. That is, in this embodiment, the data chunk to be transferred is stored as a data object in the object storage system 200Y, and an object key for the data object as the data chunk is associated with the pattern as the data chunk.
[0150] FIG. 23 shows the flow of the backup acquisition process performed by the backup acquisition program 2232.
[0151] The backup acquisition program 2232 receives a snapshot transfer instruction to the object storage (S2300). This instruction specifies the target snapshot. For the specified snapshot VOL26K, differential data between the comparison source VOL (the most recent snapshot) is identified (S2301). The backup acquisition program 2232 divides the identified differential data into data chunks (S2303). This program specifies a snapshot that has already been created. However, this program may also create a new snapshot and transfer the difference between the new snapshot and the comparison source VOL.
[0152] The backup acquisition program 2232 selects one unselected data chunk from the one or more data chunks obtained in S2303 (S2304), and calculates a fingerprint value of the selected data chunk (S2305). The backup acquisition program 2232 searches the pattern management table 2211C for a fingerprint value 601 that matches the fingerprint value calculated in S2305 (S2306). The backup acquisition program 2232 determines whether a matching fingerprint value 601 is found as a result of S2306, and whether the validity flag 602 corresponding to the fingerprint value 601 is "ON" (S2307).
[0153] If the determination result of S2307 is false (S2307: NO), the backup acquisition program 2232 generates an object key for the data chunk selected in S2304 (S2311) and transfers (stores) the data chunk to the object storage system 200Y (S2312). The backup acquisition program 2232 registers a pattern as the data chunk in the pattern VOL26X (S2313). At that time, the backup acquisition program 2232 registers the fingerprint value calculated in S2305, the valid flag "ON", the object key generated in S2311, and the pattern address of the pattern registration destination area in the pattern management table 2211C. Next, the backup acquisition program 2232 updates the snapshot management table (S2310). The chunk number of the chunk transferred to the object storage and the object key generated in S2311 are stored.
[0154] If the determination result in S2307 is true (S2307: YES), the backup acquisition program 2232 reads the pattern from the logical area (area in pattern VOL26X) pointed to by the pattern address 603 corresponding to the matching fingerprint value 601, and compares the pattern with the data chunk selected in S2304 to confirm a match (S2308). Thereafter, the backup acquisition program 2232 acquires the object key 2201 corresponding to the matching fingerprint value 601 (S2309), and registers the object key (and the chunk number of the data chunk selected in S2304) in the snapshot management table 2215 in association with the time of this snapshot acquisition (S2310). In other words, if the determination result in S2307 is true, the backup acquisition program 2232 acquires the object key from the pattern management table 2211C and stores it in the snapshot management table. This makes it possible to transfer the data chunk to the object storage system 200Y without transferring the data chunk as at least a part of the differential data.
[0155] After S2310, the backup acquisition program 2232 judges whether or not all of the one or more data chunks obtained in S2303 were selected in S2304 (S2314). If the judgment result in S2314 is false (S2314: NO), the processing returns to S2304.
[0156] FIG. 24 shows the flow of the backup deletion process performed by the backup deletion program 2233.
[0157] The backup deletion program 2233 receives a snapshot deletion instruction (S2400), and identifies all data objects (all object keys) corresponding to the acquisition time of the snapshot designated in the instruction from the snapshot management table 2215 (S2401).
[0158] The backup deletion program 2233 selects one unselected data object from the data objects identified in S2401 (S2302). The backup deletion program 2233 determines whether or not the data object selected in S2302 is referenced by another snapshot VOL (a snapshot VOL other than the snapshot VOL to be deleted) (S2403).
[0159] If the determination result of S2403 is false (S2403: NO), the backup deletion program 2233 sends an object deletion instruction specifying the object key of the data object to the object storage system 200Y. In response to this instruction, the data object identified by the specified object key is deleted from the object storage system 200Y. In other words, a data object that is not referenced in another snapshot can be deleted from the object storage system 200Y.
[0160] If the result of the determination in S2403 is true (S2403: YES), or after S2404, the backup deletion program 2233 determines whether or not all of the data objects identified in S2401 were selected in S2402 (S2405). If the result of the determination in S2405 is false (S2405: NO), the process returns to S2402.
[0161] If the determination result at S2405 is true (S2405: YES), the backup deletion program 2233 deletes the snapshot VOL26X corresponding to the snapshot acquisition time specified in the instruction received at S2400 (S2406).
[0162] In any of the above embodiments, the backup source storage system (storage system 200A or 200X) extracts data to be transferred to the backup destination storage system (storage system 200B or 200Y) as a pattern. The backup source storage system determines whether or not the extracted pattern for the data to be transferred has been registered in the backup source storage system, regardless of the storage destination logical address (e.g., the logical address for PVOL26P) in the backup source storage system of the data to be transferred. If the result of this determination is false, the backup source storage system registers the extracted pattern in the backup source storage system and transfers the data to be transferred to the backup destination storage system. On the other hand, if the result of this determination is true, the backup source storage system does not transfer the data to be transferred.
[0163] Although some embodiments have been described, these are merely examples for explaining the present invention, and the scope of the present invention is not limited to these embodiments. The present invention can be implemented in various other forms. [Explanation of symbols]
[0164] 200A: Primary storage system, 200B: Secondary storage system
Claims
1. A backup source storage system that communicates with a backup destination storage system via a network and has a primary volume, a first storage device, and a controller, the backup destination storage system has a secondary volume that forms a volume pair with the primary volume, The controller is configured to register a pattern of data, and manages identification information of the registered pattern for each registered pattern; the backup destination storage system is configured to register a pattern of data registered in the backup source storage system, and the backup destination storage system and the backup source storage system each manage identification information of the registered pattern for each registered pattern; When transferring data to the backup destination storage system in order to back up the data, the controller (A) Extracting data to be transferred as a pattern; (B) determining in the backup source storage system whether or not the extracted pattern has been registered with respect to the data to be transferred, regardless of the logical address of the storage destination area of the data to be transferred; (C) if the determination result of (B) is false, the backup destination storage system transfers the data to be transferred to the backup destination storage system in order to store the data to be transferred in the secondary volume; (D) if the determination result of (B) is true, the data and pattern to be transferred are not transferred, and the backup destination storage system reads out a pattern corresponding to the identification information of the registered pattern, and in order to store the data as the read out pattern in a storage destination area of the secondary volume, the identification information of the registered pattern for which the determination result of (B) is true is transferred to the backup destination storage system. Storage system.
2. In the above (C), if the determination result of (B) is false, the extracted pattern is registered, and the backup destination storage system stores the data to be transferred in the secondary volume, and transfers the data to be transferred to the backup destination storage system in order to register the data to be transferred in the backup destination storage system as the pattern. The storage system according to claim 1 .
3. A logical storage area in which patterns are registered; In (C), the registration of the extracted pattern means associating a logical area in the logical storage area, in which the extracted pattern is to be registered, with a physical area in the first storage device, in which the data to be transferred exists; The registered pattern in the logical storage area is data present in a physical area associated with the logical area in which the pattern is registered. The storage system according to claim 2.
4. the controller performs deduplication by associating two or more logical areas, into which the same data is written, among a plurality of logical areas each having a predetermined size constituting the primary volume, with one physical area into which the data is written; aligning the address of the data to be transferred with the address of a logical area, and extracting data as a pattern for each size of the logical area; The storage system according to claim 3.
5. the controller stores pattern management information which is management information relating to a pattern; the pattern management information indicates, for each registered pattern in the logical storage area, an address of the logical storage area in which the pattern is registered, and whether data of the registered pattern exists in the backup destination storage system, i.e., whether the registered pattern is valid or invalid; The determination in (B) is a determination as to whether the extracted pattern matches any registered pattern, and a determination as to whether the registered pattern matching the extracted pattern is valid. The storage system according to claim 3.
6. In (C), registering the extracted pattern means associating a logical area of the registration destination of the extracted pattern with a physical area in the first storage device in which the data to be transferred exists; In (A), when a number of duplicates of the data to be transferred is higher than a predetermined threshold, the controller extracts the data to be transferred as a pattern; the controller is configured to perform deduplication in a case where data having two or more different logical areas in the backup source storage system as write destinations is duplicated, by associating the two or more logical areas with a physical area in which the data exists; The number of duplicates of the data to be transferred is the number of logical areas associated with the physical area in which the data exists. The storage system according to claim 2.
7. In the first storage device, a physical area in which the data to be transferred exists is associated with one or more logical areas, each of which is a write destination of the data or a registration destination of a pattern of the data; when there is a physical area to which a registered pattern is registered but to which a data write destination logical area is not associated, the controller deletes the registered pattern as data present in the physical area. The storage system according to claim 1 .
8. In the first storage device, a physical area in which the data to be transferred exists is associated with one or more logical areas, each of which is a write destination of the data or a registration destination of a pattern as the data; There is an upper limit to the number of patterns that can be registered in the backup source storage system, The controller determines a registered pattern to be deleted based on at least one of the following, and deletes the determined registered pattern. The overlap number is the number of logical areas associated with the physical area in which the data as the registered pattern is stored. - The time elapsed since the registered pattern was registered, - the time since the registered pattern was last used, - Frequency of access to data as a registered pattern, The storage system according to claim 1 .
9. the controller manages, for each registered pattern, whether the registered pattern is valid or invalid, which is determined by whether data of the registered pattern exists in the backup destination storage system; When the controller updates a valid registered pattern but data as the updated registered pattern is not transferred to the backup destination storage system, the controller invalidates the registered pattern; The controller transfers the invalid registered pattern to the backup destination storage system. The storage system according to claim 1 .
10. the primary volume is a target snapshot volume, which may be one or more snapshot volumes, each of which is a snapshot of a specified volume; The data to be transferred is data representing the difference between the target snapshot volume and a comparison source volume. The storage system according to claim 1 .
11. the backup destination storage system is an object storage system; the controller manages, for each registered pattern, an object key which is a key for accessing a data object as the registered pattern; (C), the controller generates an object key for the data to be transferred, associates the generated object key with a logical area of the target snapshot volume corresponding to the data to be transferred, and transfers the data to be transferred to the backup destination storage system; In (D), the controller associates an object key of the registered pattern for which the determination result in (B) is true with a logical area of the target snapshot volume corresponding to the data to be transferred. The storage system according to claim 10.
12. (C), when a pattern as the data to be transferred is registered in the backup destination storage system, the controller registers the extracted pattern. The storage system according to claim 2.
13. the backup destination storage system identifies a pattern managed in the backup destination storage system from the identification information from the controller; the backup destination storage system associates a logical area in the secondary volume with a physical area in which the data of the specified pattern exists, or copies the data of the specified pattern to the secondary volume; The storage system according to claim 1 .
14. When a plurality of backup destination storage systems are connected to the controller, the controller manages the registered pattern for each of the plurality of backup destination storage systems. The storage system according to claim 1 .
15. One or both of the backup source storage system and the backup destination storage system are systems on a cloud. The storage system according to claim 1 .
16. The data pattern is registered in association with a fingerprint value or a hash value, a pattern in the data is searched for using the fingerprint value or the hash value; When the same fingerprint value or hash value is registered for a different pattern, the controller invalidates the fingerprint value or hash value. The storage system according to claim 1 .
17. In order to back up data, the data patterns are registered in the backup source storage system, and when the data is transferred to the backup destination storage system, which manages the identification information of the registered patterns for each registered pattern, (A) A backup source storage system having a primary volume and a first storage device, configured to register data patterns and configured to manage identification information of the registered patterns for each registered pattern, extracts data to be transferred as a pattern, (B) determining in the backup source storage system whether or not the extracted pattern has been registered with respect to the data to be transferred, regardless of the logical address of the storage destination area of the data to be transferred; (C) if the determination result of (B) is false, the data to be transferred is transferred to the backup destination storage system, and the backup destination storage system transfers the data to be transferred to the backup destination storage system so that the data to be transferred is stored in a secondary volume that constitutes a volume pair with the primary volume; (D) if the determination result of (B) is true, the data and pattern to be transferred are not transferred, and the backup destination storage system reads out a pattern corresponding to the identification information of the registered pattern, and in order to store the data as the read out pattern in a storage destination area of the secondary volume, the identification information of the registered pattern for which the determination result of (B) is true is transferred to the backup destination storage system. The backup method includes the steps of:
Citation Information
Patent Citations
Storage subsystem
JP2009181148A
Backup system
JP2013178665A
Storage system
JP2016134133A
Storage control apparatus, storage control program, and storage system
JP2016212551A
File backup, file backup device, program and recording medium
JP2016537752A
