WO2018055686A1 - Information processing system - Google Patents

Information processing system Download PDF

Info

Publication number
WO2018055686A1
WO2018055686A1 PCT/JP2016/077790 JP2016077790W WO2018055686A1 WO 2018055686 A1 WO2018055686 A1 WO 2018055686A1 JP 2016077790 W JP2016077790 W JP 2016077790W WO 2018055686 A1 WO2018055686 A1 WO 2018055686A1
Authority
WO
WIPO (PCT)
Prior art keywords
journal
storage device
volume
data
ssd
Prior art date
Application number
PCT/JP2016/077790
Other languages
French (fr)
Japanese (ja)
Inventor
正義 大原
貴彦 武田
孝 坂口
陽介 加藤
憲亮 成田
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/077790 priority Critical patent/WO2018055686A1/en
Publication of WO2018055686A1 publication Critical patent/WO2018055686A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention relates to a volume copy technology between storage apparatuses.
  • RAID Redundant Array of Independent (or Inexpensive) Disks
  • Patent Document 1 discloses a data processing system that stores data from a host computer in a plurality of storage systems. In the data processing system disclosed in Patent Document 1, a data replication process is performed by a storage system.
  • journal is information including update data and an identifier (for example, update time) indicating the data update order.
  • identifier for example, update time
  • the journal is information including update data and an identifier (for example, update time) indicating the data update order.
  • primary storage system when update data is written to the volume (primary volume), a journal is created and stored in the journal volume.
  • secondary storage system when a journal created in the primary storage system is acquired, the updated data is reflected in the secondary storage system volume (secondary volume) according to the identifier such as the update time included in the journal.
  • An information processing system includes a primary system having a first processor, a first memory, and a plurality of primary storage devices, a second processor, a second memory, and writing to the primary storage device. And a secondary system having a plurality of secondary storage devices for storing replicated data.
  • Each of the primary storage device and the secondary storage device has one or more volumes and a journal volume.
  • the first processor receives a write command including a time stamp, it creates a journal creation command including the write data and the time stamp.
  • the primary storage device that has sent the primary storage device and received the journal creation command stores the write data in the volume, writes the write data and information about the write position of the write data, the sequence number and time stamp managed by the primary storage device Is created and stored in the journal volume.
  • the second processor When the second processor acquires a plurality of journals stored in journal volumes of a plurality of primary storage devices, the second processor determines a journal that can be transmitted to the secondary storage device based on a time stamp included in each of the journals. A journal restore command is created based on the determined contents of the journal and issued to the secondary storage device. The secondary storage device that has received the journal restore command stores the write data included in the journal restore command in the volume of the secondary storage device.
  • the load of remote copy processing can be distributed to a plurality of CPUs, enabling performance improvement and ensuring data consistency.
  • FIG. 1 is a configuration diagram of an information processing system including a storage system according to an embodiment of the present invention. It is a block diagram of SSD. 1 is a logical configuration diagram of a storage system. It is a conceptual diagram which shows the relationship between a RAID group and a logical volume. It is an example of a pair management table. It is a figure explaining the outline
  • FIG. 10 is a part of a flow of journal transmission processing from the primary storage apparatus to the secondary storage apparatus in the storage system according to the second embodiment.
  • FIG. 10 is a conceptual diagram illustrating a logical page to physical page mapping method in the SSD according to the third embodiment.
  • FIG. 10 is a configuration diagram of an information processing system according to a fourth embodiment.
  • program may be used as the subject, but precisely, the program is executed by a CPU (processor) to perform a predetermined process. However, to prevent the explanation from becoming redundant, the program may be described as the subject. Therefore, in the following description, the process described with the program as the subject actually means that the CPU executes the process. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium.
  • the computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
  • “Volume” refers to a storage area provided by a target device such as a storage device or storage device to a device (referred to as an initiator or a requester) that issues a request to the target device, such as a host or storage controller. It means (memory space). Also, the storage apparatus according to the embodiment described below creates one logical volume using volumes provided from a plurality of storage devices, and provides this logical volume to a requester such as a host. be able to. This logical volume is referred to herein as a “logical volume” or “logical device”.
  • Remote copy means a process of creating a copy of a storage device volume in a volume of another storage device.
  • the storage apparatus has a function of performing remote copy.
  • the storage apparatus receives write data for the volume from the host, the storage apparatus writes the write data to each volume of the two storage apparatuses.
  • volume in which data is stored from the host is called “primary volume” or “P-VOL”.
  • a volume in which a copy of data written to the primary volume is stored is called a “secondary volume” or “S-VOL”.
  • a pair of a primary volume and a secondary volume is called a “volume pair” or “pair”.
  • the host computer writes data a to the first primary volume (referred to as P-VOL1) at time t1, and subsequently writes the second primary volume (referred to as P-VOL2) data b at time t2 (t2> t1). Assume that data is written and data c is written to P-VOL1 at time t3 (t3> t2).
  • the pair volume of P-VOL1 is called S-VOL1
  • the pair volume of P-VOL2 is called S-VOL2.
  • the secondary storage device operates to write data c to S-VOL 1 after first writing data a to S-VOL 1 and subsequently writing data b to S-VOL 2, P-VOL 1 and S Data consistency across the -VOL1 pair and the P-VOL2 and S-VOL2 pair is guaranteed.
  • the storage apparatus can guarantee data consistency across a plurality of volume pairs.
  • a set of volume pairs controlled so as to guarantee data consistency is called a “consistency group”.
  • the consistency group may be abbreviated as “CTG”.
  • FIG. 1 shows a configuration of an information processing system (computer system) including a storage system according to an embodiment of the present invention.
  • the information processing system includes a storage device 1a, a storage device 1b connected to the storage device 1a, one or more hosts 2, and a host 2 '.
  • the storage device 1 a is connected to the host 2 via a storage area network (SAN) 3.
  • the host 2 is a computer that executes an application program used by a user, and operates as a requester that issues an I / O request to the storage apparatus 1a.
  • the host 2 is a general-purpose computer such as a main frame or a personal computer.
  • An application program or the like executed on the host 2 issues an I / O request such as a read command or a write command to a volume (logical volume) provided by the storage apparatus 1a.
  • the host 2 ' is a computer similar to the host 2, and is connected to the storage apparatus 1b via the SAN 3'.
  • the host 2 ′ and the storage device 1 b are so-called standby computer systems, and are used when the host 2 or the storage device 1 a stops operating due to a failure or the like.
  • the copy manager 6 is the same computer as the host 2 and is connected to the storage apparatus 1a via the SAN 3.
  • the copy manager 6 is a computer for issuing a control instruction related to the remote copy function described later, but is not an essential device in the computer system according to the first embodiment.
  • the copy manager 6 will be described in a second embodiment described later.
  • SAN 3 is a network composed of, for example, fiber channel cables and fiber channel switches.
  • the storage device 1a is connected to the storage device 1b via a wide area network (WAN) 4.
  • WAN wide area network
  • the storage apparatus 1a and the storage apparatus 1b may be connected via the SAN 3.
  • the combination of the storage device 1a and the storage device 1b connected by the WAN 4 is referred to as a “storage system”.
  • the storage device 1a includes a storage controller (hereinafter also abbreviated as “controller”) 10 and a disk unit 11 including a plurality of storage devices.
  • the storage controller 10 includes a CPU 12 that executes control such as I / O processing performed in the storage apparatus 1a, a memory 13, a front-end interface (FE I / F) 14 that is a data transfer interface with the host 2 and the storage apparatus 1b, It has a back-end interface (BE I / F) 15 and a management I / F 16 that are data transfer interfaces with the disk unit 11, and these are interconnected via an internal switch 17.
  • the number of each component, such as CPU12 and FE I / F14 is not limited to the number shown by FIG.
  • the disk unit 11 is equipped with a plurality of storage devices for storing write data from the host 2, and each storage device is connected to the storage controller 10 via the BE I / F 15.
  • the storage device is, for example, an SSD 21 that uses a nonvolatile semiconductor memory such as a flash memory as a storage medium, or an HDD 22 that uses a magnetic disk as a storage medium.
  • a case where all the storage devices mounted on the disk unit 11 are SSDs 21 will be described unless otherwise specified.
  • BE I / F 15 has at least an interface controller and a transfer circuit.
  • the interface controller is a component for converting a protocol (SAS in one example) used by the storage device 20 into a communication protocol (PCI-Express as an example) used in the storage controller 10.
  • the transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device.
  • FE I / F 14 has at least an interface controller and a transfer circuit, similarly to BE I / F 15.
  • the interface controller of the FE I / F 14 is for converting the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. belongs to.
  • the CPU 12 performs various controls of the storage device 1a.
  • the memory 13 is used to store programs executed by the CPU 12 and various management information of the storage device 1a used by the CPU 12.
  • the memory 13 is also used for temporarily storing I / O target data for the storage device.
  • the storage area in the memory 13 used for temporarily storing the I / O target data for the storage device is referred to as “cache”.
  • the memory 13 is composed of a volatile storage medium such as DRAM or SRAM, but as another embodiment, the memory 14 may be composed of a non-volatile memory.
  • the storage device 1b is a device having the same components as the storage device 1a (the internal configuration is not shown in FIG. 1). However, the number of components (CPU 12 and the like) does not have to be the same as that of the storage device 1a.
  • the storage device 1a and the storage device 1b are not distinguished from each other and are described as “storage device 1”.
  • a management host may also be connected to the storage device 1b.
  • the management host may be a different terminal from the management host 5 connected to the storage apparatus 1a, or the management host 5 connected to the storage apparatus 1a may be connected to the secondary storage. Also good.
  • FIG. 2 is a diagram illustrating a configuration example of the SSD 21.
  • the SSD 21 includes an SSD controller 200 and a plurality of FM chips 206.
  • the SSD controller 200 includes a processor (CPU) 201, an upstream I / F 202, a downstream I / F 203, and a memory 204, which are interconnected via an internal connection switch 205.
  • the upstream I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10.
  • the upstream I / F 202 is connected to the BE I / F 15 of the storage controller 10 via a transmission line (SAS link or PCI link).
  • the downstream I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 206.
  • the CPU 201 performs processing related to various commands coming from the storage controller 10.
  • the memory 204 stores various management information such as a control program 1500 that is a program for controlling the SSD 21, a logical physical conversion table 1400, a physical page management table 1450, and sequence number management information 1170.
  • a part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 206.
  • an area used as a buffer in the area of the memory 204 is referred to as a “buffer area”.
  • a volatile memory such as a DRAM is used.
  • a nonvolatile memory may be used for the memory 202.
  • FM chip 206 is a non-volatile semiconductor memory chip such as a NAND flash memory. As is well known, reading / writing of data in the flash memory is performed for each area of a predetermined size (for example, 8 KB) called a page in a set of a plurality of cells. Data erasure is performed for each block which is a set of pages.
  • a predetermined size for example, 8 KB
  • SSD is a storage device using a semiconductor memory, particularly a nonvolatile semiconductor memory, and means a device having the same form factor as an HDD.
  • SSD is used as a word meaning an entire storage device including a plurality of flash memories and a controller for controlling them, and the external shape and the like are limited to general HDD and SSD form factors. It is not something.
  • the nonvolatile semiconductor memory used for the SSD is a magnetoresistive memory such as MRAM (Magnetoretic Random Access Memory), a resistance variable memory ReRAM (Resistivity Random Access Memory), and a ferroelectric memory.
  • MRAM Magnetic Random Access Memory
  • ReRAM Resistivity Random Access Memory
  • ferroelectric memory ferroelectric memory
  • Various semiconductor memories such as a certain FeRAM (Ferroelectric random access memory) may be used.
  • At least the I / O program 101 and the journal transmission program 102 are executed in the storage controller 10 of the storage apparatus 1a, and at least the journal read program 151 and the destage program 152 are executed in the storage controller 10 of the storage apparatus 1b.
  • the storage device 1a also has management information of a pair management table 300, primary journal management information 600, and JVOL management table 800.
  • the secondary storage device 1b has a pair management table 300, secondary journal management information 650, and a JVOL management table 800. These pieces of information are stored in the memory 13.
  • the storage device 1a may be configured to be able to execute programs (journal read program 151 and destage program 152) executed by the storage device 1b in addition to the programs described above.
  • the storage apparatus 1b may be configured to be able to execute programs (I / O program 101 and journal transmission program 102) executed by the storage apparatus 1a in addition to the programs described above.
  • the storage apparatus 1a executes the I / O program 101 and the journal transmission program 102
  • the storage apparatus 1b executes the journal read program 151 and the destage program 152.
  • the SSD 21 installed in the storage apparatus 1 has a function of providing one or more volumes to the storage controller 10.
  • the volume that the SSD 21 provides to the storage controller 10 is referred to as a “physical volume”.
  • the storage apparatus 1a illustrated in FIG. 3 has at least three SSDs 21.
  • these three SSDs 21 are represented as SSD 21a-1, SSD 21a-2, and SSD 21a-3, respectively.
  • the storage apparatus 1b has at least three SSDs 21.
  • These three SSDs 21 are represented as SSD 21b-1, SSD 21b-2, and SSD 21b-3, respectively.
  • the objects 210-1, 211-1, 212-1, 213-1 shown in FIG. 3 are physical volumes formed by the SSD 21a-1, and objects 210-2, 211-2, 212-2, Reference numeral 213-2 is a physical volume formed by the SSD 21a-2, and objects 210-3, 211-3, 212-3, and 213-3 are physical volumes formed by the SSD 21a-3.
  • the SSD 21b-1, SSD 21b-2, and SSD 21b-3 included in the storage apparatus 1b can define a plurality of physical volumes.
  • Objects 210-1 ′, 211-1 ′, 212-1 ′, and 213-1 ′ are physical volumes formed by the SSD 21b-1, and objects 210-2 ′, 211-2 ′, 212-2 ′, and 213.
  • ⁇ 2 ′ is a physical volume formed by the SSD 21b-2
  • objects 210-3 ′, 211-3 ′, 212-3 ′, and 213-3 ′ are physical volumes formed by the SSD 21b-3.
  • the number of physical volumes formed by each SSD 21 is arbitrary, and is not limited to the number shown in FIG. Also, the number of users and the capacity of the physical volumes formed by each SSD 21 can be determined by the user (the administrator of the storage apparatus 1). In this embodiment, an example will be described in which the physical volumes 211-1, 211-2, 211-3 and the physical volumes 211-1 ', 211-2', 211-3 'have the same capacity. Also, the physical volumes 212-1, 212-2, 212-3, 212-1 ′, 212-2 ′, 212-3 ′ have the same capacity, and the physical volumes 212-1, 212-2, 212 are also the same. ⁇ 3, 212-1 ′, 212-2 ′, and 212-3 ′ have the same capacity.
  • the storage controller 10 operates a plurality of physical volumes provided by the SSD 21 as RAID (Redundant Array of Independent (or Independent) Disks).
  • RAID Redundant Array of Independent (or Independent) Disks
  • a physical volume group operated as RAID is called a RAID group.
  • the storage controller 10 of the storage device 1a forms a RAID group using one physical volume provided by each of the SSDs 21a-1, 21a-2, 21a-3.
  • the storage apparatus 1a forms one RAID group using the physical volumes 211-1, 211-2, and 211-3, and uses the physical volumes 212-1, 212-2, and 212-3 to One RAID group is formed, and further, one RAID group is formed using the physical volumes 213-1, 213-2, and 213-3.
  • the storage apparatus 1b forms one RAID group from a plurality (three in this case) of physical volumes.
  • the storage controller 10 manages the storage space on the physical volume by dividing it into a plurality of fixed-size storage areas called stripe blocks (for example, 64 KB).
  • stripe blocks for example, 64 KB.
  • each of a plurality of rectangular boxes in the physical volumes 212-1, 212-2, 212-3 represents a stripe block.
  • redundant data generated using data is stored in the RAID group in addition to data.
  • a stripe block in which data is stored is called a “data stripe”
  • a stripe block in which redundant data is stored is called a “parity stripe”.
  • the stripe blocks described as “P” such as (P0) and (P1) represent parity stripes
  • the stripe blocks described as “D” such as 0 (D) are data Represents a stripe.
  • data located at the head of the other physical volumes (211-1 and 211-2) in the RAID group Redundant data is generated by performing an operation such as exclusive OR (XOR) on the data stored in the stripe (0 (D), 1 (D)).
  • XOR exclusive OR
  • a parity stripe and a set of data stripes used to generate redundant data stored in the parity stripe (for example, in the above example, a set of parity stripe (P0) and data stripes 0 (D) and 1 (D)) ) Is called a “striped line”.
  • each stripe block belonging to one stripe line has the same location (address) in the storage space of the physical volume (21-1 to 211-3 in the example of FIG. 4). ). Further, the storage controller 10 forms a RAID group using one physical volume provided by each SSD 21. In other words, each physical volume belonging to the RAID group must be provided from a different SSD 21. This is because when one of the SSDs 21 fails and becomes inaccessible, the storage controller 10 uses the data (or redundant data) stored in the remaining SSDs 21 to cause the failed SSD 21. This is because the data stored in the disk must be restored.
  • the storage controller 10 further provides the host 2 with one or more logical storage spaces formed using the RAID group area.
  • a logical storage space provided to the host 2 is called a “logical volume”.
  • FIG. 4 shows the relationship between the RAID groups formed from the physical volumes 211-1, 211-2, 211-3 and logical volumes.
  • a logical volume is a storage space that is formed using only data stripes in an area within a RAID group.
  • the storage controller 10 performs processing for converting the address included in the write command into the address of the physical volume.
  • the storage controller 10 performs address conversion. By doing so, it is recognized that the data write position designated by the host 2 corresponds to the first data stripe (0 (D)) on the physical volume 211-1, and data is written to the recognized position. Further, the storage controller 10 has a physical volume (that is, physical volume 211-3) in which the parity stripe (P0) belonging to the same stripe line as the data stripe 0 (D) exists, and a position of the parity stripe (P0) (that is, physical volume 211). -3 at the beginning). Thereafter, the storage controller 10 generates redundant data to be written to the parity stripe (P0) according to the RAID technology, and writes the redundant data to the parity stripe (P0).
  • the storage apparatus 1 performs remote copy using a journal. Since remote copy using a journal is a function disclosed in, for example, Patent Document 1 (or US Patent Application Publication No. 2005/0073887), only the outline of the portion related to the present invention will be described below. .
  • the remote copy function is a function for creating a copy (mirror copy) of data in the volume of the storage apparatus 1a in the volume of the storage apparatus 1b.
  • a copy of data written to the volume of the storage device 1b can be created in the volume of the storage device 1a by the remote copy function.
  • the storage device 1a may be referred to as “primary storage device 1a”
  • the storage device 1b may be referred to as “secondary storage device 1b”.
  • the physical volume of the primary storage apparatus 1a that is the replication source is called a primary volume (P-VOL), and the physical volume of the storage apparatus 1b that is the replication destination of the P-VOL data is the secondary volume.
  • P-VOL primary volume
  • S-VOL volume
  • the S-VOL in which the P-VOL copy data is stored is called a “paired volume” with the P-VOL, or the “pair volume” of the P-VOL (in contrast, the S-VOL copy).
  • the P-VOL in which the original data is stored may also be referred to as a volume having a pair relationship with the S-VOL).
  • the physical volumes 211-1, 212-1, 212-1, 211-2, 212-2, 213-2, which the SSDs 21a-1, 21a-2, 21a-3 of the primary storage apparatus 1a have. 211-3, 212-3, 213-3 are P-VOLs, and physical volumes 211-1 ', 212-1', 213-1 included in the SSDs 21b-1, 21b-2, 21b-3 of the secondary storage system 1b. ', 211-2', 212-2 ', 213-2', 211-3 ', 212-3', 213-3 'are S-VOLs.
  • the description will be made on the assumption that among these physical volumes, physical volumes having the same reference number are in a pair relationship. For example, the physical volume 211-1 and the physical volume 211-1 'are in a pair relationship.
  • journal volume a volume for temporarily storing copy data is used. This volume is called a journal volume.
  • each SSD 21 provides a journal volume 210 to the storage controller 10 in addition to the physical volume (211-1 etc.) used as the P-VOL and S-VOL described above.
  • objects 210-1, 210-2, 210-3, 210-1 ', 210-2', 210-3 ' are journal volumes.
  • the journal volume may be abbreviated as “JVOL”.
  • the flow of copy processing by remote copy in the storage apparatus 1 is as follows.
  • the storage controller 10 of the primary storage device 1a transmits a journal creation command to the SSD 21 having the P-VOL.
  • the contents of the journal creation command will be described later.
  • the SSD 21 has a function of creating a journal.
  • the SSD 21 Upon receiving the journal creation command, the SSD 21 stores write data in the P-VOL, creates a journal, and stores the journal in the JVOL. Since the SSD 21 creates a journal, the SSD 21 cannot write data to the P-VOL or JVOL that other SSDs 21 have.
  • the SSD 21a-1 can store a journal in the JVOL 210-1, and can only write to the P-VOL 211-1, 212-1 and 213-1.
  • the journal stored in the JVOL of the primary storage apparatus 1a is transmitted to the secondary storage apparatus 1b via the WAN 4.
  • the SSD 21 of the secondary storage device 1b has a function of analyzing the contents of the journal and reflecting the data contained in the journal (a copy of the data stored in the P-VOL) in the S-VOL.
  • the secondary storage device 1b uses this function to reflect the received journal data in the S-VOL.
  • the process of reflecting journal data in the S-VOL is referred to as “journal restore process” or simply “restore process”.
  • a journal created by one SSD 21 of the primary storage apparatus 1a is transmitted to one SSD 21 of the secondary storage apparatus 1b.
  • the relationship between the SSDs 21 of the primary storage apparatus 1a and the secondary storage apparatus 1b will be described with reference to FIG.
  • the primary storage device 1a has three SSDs 21 (21a-1, 21a-2, 21a-3), and the secondary storage device 1b has three SSDs 21 (21b-1, 21b-2, 21b-3).
  • a journal created by the SSD 21a-1 is transmitted to the SSD 21b-1
  • a journal created by the SSD 21a-2 is transmitted to the SSD 21b-2
  • the journal created by the SSD 21a-3 is transmitted to the SSD 21b-3, so that the P-VOL copy of the SSD 21a-1 of the primary storage device 1a is stored in the physical volume of the SSD 21b-1.
  • the SSD 21 having the P-VOL (and journal volume) is called “primary SSD”, and the SSD 21 of the secondary storage device 1b to which the journal created by the primary SSD is transmitted is called “secondary SSD”. Further, the SSD 21 of the secondary storage device 1b to which the journal created by the primary SSD is transmitted may be referred to as an SSD having a pair relationship with the primary SSD (or a pair SSD of the primary SSD). Conversely, a primary SSD that transmits a journal stored in the secondary SSD may also be referred to as an SSD that is paired with the secondary SSD (or a secondary SSD of the secondary SSD). The number of primary SSDs and the number of secondary SSDs are equal.
  • FIG. 5 shows a configuration example of the pair management table 300 managed by the storage controller 10.
  • the pair management table 300 is a table for managing information about volume pairs, and both the storage apparatuses 1 a and 1 b have this pair management table 300.
  • One row of the pair management table 300 represents information about one volume pair.
  • Information set in the pair management table 300 can be set from the management host 5 (or host 2) by a user (an administrator of the storage apparatus 1). For example, when the user sets information from the management host 5 connected to the primary storage apparatus 1a, the same information is set in both the pair management table 300 of the primary storage apparatus 1a and the pair management table 300 of the secondary storage apparatus 1b. .
  • the pair number 301 is an identification number assigned to the volume pair.
  • the status 303 is information indicating the status of the volume pair (information indicating whether data replication is normally performed).
  • PDKC # 304 is a serial number of the storage apparatus 1 in which the P-VOL exists in the volume pair, and P-VOL # 305 is an identifier of the P-VOL.
  • SDKC # 306 is the serial number of the storage apparatus 1 in which S-VOL exists in the volume pair, and S-VOL # 307 is the identifier of S-VOL.
  • the identification of the SSD 21 in which the physical volume exists is added to the physical volume identifier such as P-VOL or S-VOL.
  • the physical volume identifier such as P-VOL or S-VOL.
  • a number is included will be described.
  • the identifier of the physical volume it is possible to identify which SSD 21 the physical volume exists in.
  • a value obtained by connecting two numerical values with a colon (:) is used. Of the two values connected by a colon, the value on the left represents the identification number of the SSD 21.
  • the value on the right side is an identification number assigned to each of the plurality of physical volumes defined in the SSD 21, and this may be a unique number in the SSD 21.
  • an identification number assigned to each physical volume (a numerical value on the right side of the colon among the physical volume identifiers) may be referred to as an “internal identification number”.
  • the internal identification number assigned to the journal volume is set to 00, and an example in which an integer value of 01 or more is used as the internal identification number of other physical volumes will be described.
  • the P-VOL # 305 of the volume pair whose pair number 301 is “2” is “01:02”. This means that the P-VOL exists in the SSD 21 with the identification number “01” among the SSDs 21 in the primary storage (storage device 1a), and the internal identification number assigned to this P-VOL. Means “02”.
  • the format of the physical volume identifier described above is merely an example, and formats other than those described above may be used for the physical volume identifier.
  • the SSD 21 with the identification number x is denoted as “SSD # x” (x is a numerical value such as 01).
  • the assigned P-VOL (or S-VOL) with the internal identification number y is expressed as “P-VOL # y” (or “S-VOL # y”) (y is a numerical value such as 01) Is).
  • a set of volume pairs for which data consistency is guaranteed may be abbreviated as a consistency group (CTG).
  • CTG consistency group
  • the storage apparatus 1 can manage a plurality of CTGs, and each CTG is assigned a unique identification number. This identification number is called a CTG number, and the CTG number may be written as CTG #.
  • the column CTG # 302 of the pair management table 300 stores the CTG # of the CTG to which the volume pair belongs. Volume pairs having the same value stored in the CTG # 302 belong to the same CTG, and the storage device 1 is controlled to ensure data consistency.
  • one physical volume is selected from each SSD 21 to form a RAID group.
  • CTGs must be formed so that each physical volume belonging to a RAID group always belongs to the same CTG. Further, physical volumes belonging to the same SSD 21 also belong to the same CTG.
  • the physical volumes 211-1, 211-2, 211-3 of the storage apparatus 1a belong to the same RAID group. Therefore, the physical volumes 211-1, 211-2, 211-3 and their paired volumes (physical volumes 211-1 ', 211-2', 211-3 ') belong to the same CTG. Further, since the physical volumes 211-1, 212-1 and 213-1 belong to the same SSD 21, they belong to the same CTG.
  • the SSD 21 creates a journal.
  • the storage controller 10 of the storage device 1a issues a command for instructing the SSD 21 to create a journal.
  • the SSD 21 includes a command (referred to as a “journal creation command”) for instructing journal creation in addition to commands (read command and write command) supported by known storage devices such as HDDs. Supports a command for instructing restore processing (called “journal restore command”). Details of the journal creation command and the journal restore command will be described later.
  • the journal creation command includes write data to be stored in the P-VOL and information necessary for creating a journal.
  • the SSD 21 Upon receiving the journal creation command, the SSD 21 creates a journal according to the contents of the command and stores it in the journal volume, and also stores write data in the P-VOL.
  • the format of the journal stored in the journal volume 210 will be described with reference to FIG.
  • the journal includes “journal data” that is write data from the host 2 and management information of the journal data.
  • the management information of the journal data is called “management information” or “JNCB”.
  • the size of management information is a fixed length, and the size of journal data varies depending on the length of write data written from the host 2.
  • journal data and management information are stored in different areas.
  • An area in which journal data is stored is called a write data area 720
  • an area in which management information is stored is called a management information area 710.
  • the head address of the management information area 710 is called “management information area head address”
  • the head address of the write data area 720 is called “write data area head address”.
  • the management information area 710 and the write data area 720 are used like a kind of ring buffer. Journal data is written sequentially from the start address of the write data area. When journal data is written up to the end of the write data area 720 (end address of the journal volume), the storage apparatus 1 writes the journal from the beginning of the write data area 720 again. The same applies when the storage device 1 writes JNCB, and the JNCB is written sequentially from the start address of the management information area in the order in which it was created, and until the end of the management information area 710 (the address immediately before the start address of the write data area) Is written, the storage apparatus 1 again writes JNCB from the start address of the management information area.
  • the format of management information (JNCB) will be described.
  • the JNCB includes SEQ # 701, Timestamp 702, VOL # 703, S-VOL # 703 ', LBA704, Length705, and pointer 706.
  • Each journal is given a number indicating the order in which the journals were created.
  • the number assigned to this journal is called a “sequence number”.
  • the sequence number may be abbreviated as “SEQ #”.
  • a sequence number starting from 0 is used as the sequence number. That is, SEQ # of the journal created first is 0, and journals created thereafter are sequentially 1, 2, 3,. . . Are assigned consecutive numbers.
  • SEQ # 701 is an area for storing a sequence number.
  • the SEQ 21 assigned to each journal is determined by the SSD 21.
  • Timestamp 702 is the time at which the storage apparatus 1 a receives write data from the host 2, and this information is given from the host 2. Details will be described later.
  • VOL # 703, LBA 704, and Length 705 are information for specifying the write data write position from the host 2.
  • VOL # 703 and LBA 704 represent the position (address) on the P-VOL
  • Length 705 represents the data length of the write data. That is, the write data from the host 2 is written in a continuous area starting from the address specified by the LBA 704 on the physical volume specified by the VOL # 703. The length of data to be written is equal to Length 705.
  • the S-VOL # 703 stores the identification number of the P-VOL pair volume (that is, the physical volume that is paired with the physical volume specified by the VOL # 703).
  • the pointer 706 is information indicating a position on the journal volume where journal data is written, and is an LBA on the journal volume 210.
  • the journal data is written in a continuous area starting from the position specified by the pointer 706, and the length of the written data is equal to Length 705. Since such information is included in the JNCB, the storage controller 10 can recognize where the journal data is stored in the journal volume by reading the JNCB and examining its contents.
  • the data written at the position specified by VOL # 703 and LBA 704 and the data written at the position specified by pointer 706 are both the same data (that is, the write data included in the journal creation command). is there).
  • the journal creation command 750 includes an operation code (Opcode) 751, Timestamp 752, VOL # 753, S-VOL # 753 ', LBA754, JLBA755, CBLBA756, Length757, and write data 758.
  • Opera code Opcode
  • the operation code (Opcode) 751 is information indicating the type of command, and information indicating the journal creation command is stored in the Opcode 751 of the journal creation command.
  • the SSD 21 performs journal creation processing when the Opcode 751 of the command received from the storage controller 10 is a code representing a journal creation command.
  • the write data 758 is write data that the storage controller 10 requests to write, and the SSD 21 writes the data included in the write data 758 to the P-VOL and journal volume.
  • Timestamp 752 is the time when the storage apparatus 1a receives the write data from the host 2.
  • the write command issued from the host 2 to the storage apparatus 1 includes time (time when the write command is issued).
  • the storage controller 10 creates a journal creation command in which the time included in the write command is stored in the Timestamp 752 and transmits it to the SSD 21.
  • the SSD 21 creates the JNCB, the SSD 21 stores the value included in the Timestamp 752 in the Timestamp 702.
  • VOL # 753 and LBA754 are information on the write data write destination position (position on the P-VOL). That is, VOL # 753 is the identifier of the physical volume to which the write data is written, and LBA754 is the LBA on the physical volume specified by VOL # 753.
  • the SSD 21 stores the data stored in the write data 758 in the P-VOL.
  • S-VOL # 753 ' is an identifier of S-VOL (a pair volume of physical volumes specified by VOL # 753). Note that VOL # 753 also includes the identification number of the SSD 21 in which the P-VOL exists. Similarly, the S-VOL # 753 'includes the identification number of the SSD 21 in which the S-VOL exists.
  • JLBA 755 represents an address on the journal volume
  • journal data is written in a continuous area starting from the address specified in JLBA 755.
  • CBLBA 756 represents a write destination address of JNCB. This address is an address on the journal volume.
  • Length 757 is the data length of the write data (data included in the write data 758).
  • Timestamp 752 VOL # 753, S-VOL # 753 ', LBA754, JLBA755, and Length757 are JNCB's Timestamp702, VOL # 703, S-VOL # 703', LBA704g, th 706L, th 706L Stored in
  • FIG. 8 is a diagram showing the JVOL management table 800 in the present embodiment.
  • the JVOL management table 800 is stored in the memory 13 of the primary storage apparatus 1a and secondary storage apparatus 1b.
  • the JVOL management table 800 is a table for managing information about the journal volume (JVOL) of the SSD 21.
  • the JVOL management table 800 includes DEV # 801, a management information area head address 802, a write data area head address 803, and a JNCB latest address 804. , JNCB oldest address 805 and write data latest address 806.
  • the identification number of the SSD 21 is stored in the DEV # 801, and each row of the JVOL management table 800 represents information on the JVOL in the SSD21 specified by the identification number stored in the DEV # 801.
  • Management information area start address 802, write data area start address 803, JNCB latest address 804, JNCB oldest address 805, and write data latest address 806 represent addresses on the journal volume shown in FIG. That is, the management information area head address 802 stores the LBA (Logical Block Address) at the head of the management information area of the JVOL.
  • the write data area start address 803 stores the start LBA of the JVOL write data area.
  • the JNCB latest address 804 stores the location (LBA) where the JNCB should be stored when a new journal is stored in the JVOL.
  • the storage controller 10 issues a journal creation command, it adds the JNCB size to the JNCB latest address 804.
  • the latest write data address 806 holds the leading LBA used for storing write data (journal data) when a new journal is stored.
  • the JNCB oldest address 805 stores the first LBA of the area where the oldest (the smallest SEQ #) JNCB is stored among the JNCBs of the journals remaining in the journal volume. The meaning of the JNCB oldest address 805 will be described with reference to FIG.
  • the journal stored in the journal volume of the primary storage apparatus 1a is transmitted to the secondary storage apparatus 1b after a while. Therefore, the JNCB oldest address 805 of the JVOL management table 800 of the primary storage device 1a represents the address where the oldest journal JNCB is stored among the journals not yet transmitted to the secondary storage device 1b.
  • the journal stored in the journal volume of the secondary storage device 1b is reflected in the S-VOL by performing journal restore processing. Therefore, the JNCB oldest address 805 of the JVOL management table 800 of the secondary storage device 1b represents the address where the oldest JNCB of the journals that have not been restored is stored.
  • JNCB oldest address 805 means that JNCB may be written.
  • the area from the management information area head address to the JNCB oldest address and the area from the JNCB latest address to the write data area head address mean that the JNCB is writable.
  • the management information area of the journal volume included in the SSD 21 with the identification number 1 is from the beginning (LBA0) of the journal volume to the position 1299, and the journal data area starts from the position of the LBA 1300 of the journal volume. It is an area.
  • FIG. 9 shows an example of primary journal management information 600 and secondary journal management information 650.
  • the primary journal management information 600 is a table for managing information about journals generated by the SSD 21 having P-VOL
  • the secondary journal management information 650 is information about journals stored in the SSD 21 having S-VOL. It is a table for management.
  • the primary storage apparatus 1a has only P-VOL
  • the secondary storage apparatus 1b has only S-VOL. Therefore, the primary journal management information 600 has only the primary storage apparatus 1a.
  • the secondary journal management information 650 is stored only in the secondary storage device 1b (stored only in the memory 13 of the secondary storage device 1b) (stored only in the memory 13 of the primary storage device 1a).
  • Each row (record) of the primary journal management information 600 stores information about the journal created by each SSD 21.
  • DEV # 601 is an identification number of the SSD 21. For example, when the DEV # 601 in a row in the primary journal management information 600 is x (x is a numerical value such as 01), the SSD 21 (SSD #) having the identification number x is included in that row. Information about the journal created in x) is stored.
  • Latest SEQ # 604 is the newest (largest) sequence number among the sequence numbers assigned to the journal created by the SSD 21. This information is transmitted from the SSD 21 to the storage apparatus 1 when the SSD 21 creates a journal. Transferred SEQ # 605 stores the newest (largest) sequence number among the sequence numbers created in the primary SSD and assigned to the journal that has been transmitted to the secondary SSD. The primary storage apparatus 1a updates the transferred SEQ # 605 every time a journal is transmitted to the secondary storage apparatus 1b.
  • the latest SEQ # 604 in the row where DEV # 601 is x is referred to as “latest SEQ # 604 in SSD # x”
  • the transferred SEQ # 605 in which DEV # 601 is in the row of x is “ This is called “transferred SEQ # 605 of SSD # x”.
  • Each row of the secondary journal management information 650 stores information about the journal received by the storage device 1 (in this embodiment, the secondary storage device 1b) having the SSD 21 with the identification number stored in the DEV # 651. Is done.
  • Received SEQ # 654 is the newest (largest) sequence number among the sequence numbers assigned to the journal received by the secondary storage system 1b.
  • the time stamp (Timestamp 702) included in the JNCB of the journal with the latest Timestamp 702 among the journals received by the secondary storage device 1b is stored. This is the same as the time stamp (Timestamp 702) included in the JNCB of the journal with the received SEQ # 654.
  • Reflected SEQ # 656 is the newest (largest) sequence number among the sequence numbers of journals received by the secondary storage apparatus 1b and restored in the S-VOL of the secondary SSD.
  • the restored T / S 658 stores the time stamp (Timestamp 702) included in the JNCB of the journal having the reflected SEQ # 656.
  • the received SEQ # 654, the reflected SEQ # 656, the arrived T / S657, and the restored T / S658 in the row where DEV # 651 is x are respectively shown. These are referred to as “SSD # x received SEQ # 654”, “SSD # x reflected SEQ # 656”, “SSD # x arrived T / S657”, and “SSD # x restored T / S658”.
  • FIG. 10 is a configuration example of the logical-physical conversion table 1400.
  • the SSD 21 forms one or more physical volumes and journal volumes and provides them to the storage controller 10.
  • the SSD 21 employs a flash memory as a storage medium.
  • the minimum access (read / write) unit of the flash memory (FM chip 206) is a page (physical page).
  • the size of the physical page is, for example, 8 KB. Therefore, the SSD 21 manages the storage area of the physical volume and the storage area of the journal volume that the SSD 21 provides to the storage controller 10 by dividing the storage area into the same size as the physical page. An area having the same size as the physical page is called a “logical page”. Then, the SSD 21 maps one physical page to one logical page.
  • the logical / physical conversion table 1400 is a table for managing the mapping between logical pages and physical pages.
  • the SSD 21 manages each physical page in all the FM chips 206 included in the SSD 21 by assigning a unique number in the SSD 21. This number is called a physical page number (or physical page #). Further, the SSD 21 according to the present embodiment manages each logical page in the SSD 21 by assigning a unique identification number in the SSD. This identification number is called a logical page number (logical page #).
  • the logical-physical conversion table 1400 stores block # and physical page # information of a physical page mapped to a certain logical page for each logical page.
  • the logical-physical conversion table 1400 has columns of VOL # 1401, LBA1402, logical page # 1403, status 1404, and physical page # 1405, as shown in FIG.
  • Each record of the logical-physical conversion table 1400 stores information on the logical page specified by the logical page # 1403.
  • VOL # 1401 is an identification number of a physical volume or journal volume
  • LBA1402 is an address on the physical volume specified by VOL # 1401.
  • the identification number of the journal volume is defined as “00”, and a value other than “00” is used as the identifier of the physical volume other than the journal volume.
  • the logical page # 1403 stores the identification number (logical page number) of the logical page assigned to the address on the physical volume (or journal volume) specified by VOL # 1401 and LBA1402. Note that the correspondence between the set of VOL # 1401 and LBA1402 and the logical page # 1403 is determined in advance and does not change in the middle.
  • the physical page # 1405 stores the identification number (physical page number) of the physical page mapped (allocated) to the logical page specified by the logical page # 1403.
  • the status 1404 stores information indicating whether a physical page is mapped to a logical page. No physical page is mapped to the logical page of the SSD 21 in the initial state. “Unallocated” is stored in the status 1404 of the logical page to which the physical page is not mapped (in this case, NULL (invalid value) is stored in the physical page # 1405 corresponding to the logical page).
  • the SSD 21 when the SSD 21 receives from the storage controller 10 a write command (or journal creation command) for requesting data writing to a logical page with a logical page number n, first, a physical page in which the write target data is not used (data has not yet been written). (A physical page that has not been written) is written (assuming p is the page number of the physical page in which the write target data is written). The SSD 21 stores the page number p in the physical page # 1405 in the row where the logical page # 1403 is n. At this time, the SSD 21 stores “allocation” in the status 1404 of the row in which the logical page # 1403 is n. As a result, the physical page is mapped to the logical page to be written. In the following description, the expression “mapping a physical page to a logical page” means that the SSD 21 performs the processing described here.
  • VOL # 1401 is “00”
  • LBA1402 is “0x0010”
  • logical page # 1403 is 1
  • physical page # 1405 is 20, and status 1404 is “allocation”. Therefore, in the logical-physical conversion table 1400 in FIG. 10, the physical page with the physical page number 20 is mapped to the logical page with the logical page number 1, and the logical page with the logical page number 1 is the journal. This represents an area corresponding to an area starting from LBA 0x0010 of the volume (an area equal to the logical page size).
  • the SSD 21 receives an update (overwrite) request for a certain logical page from the storage controller 10, the SSD 21 updates the physical data (new physical page) different from the physical page in which the pre-update data is written (referred to as the old physical page). Stored in a page). Then, the physical page number of the new physical page is stored in the physical page # 1405 corresponding to the logical page to be updated. Then, the old physical page is in a state in which the mapping is released (this state is managed by a physical page management table 1450 described later).
  • FIG. 11 is a diagram for explaining the configuration of the physical page management table.
  • the physical page management table 1450 is a table for managing the state of the physical page, and each row (record) stores information about the physical page in the SSD 21.
  • the physical page management table 1450 has columns of block # 1451, physical page # 1452, and status 1453.
  • the physical page # 1452 and the status 1453 are the same information as the physical page # 1405 and the status 1404 of the logical-physical conversion table 1400, respectively. That is, when a physical page is mapped to a logical page, the physical page number of the physical page is stored in the physical page # 1405 of the logical-physical conversion table 1400, and “assignment” is stored in the status 1404. At the same time, “assignment” is also stored in the status 1453 (in the physical page management table 1450) of the physical page mapped to the logical page.
  • Block # 1451 is the identification number of the block to which the physical page belongs.
  • “unallocated” is stored in the status 1453 of the physical page that has been unmapped.
  • a physical page whose status 1453 is “unallocated” cannot be overwritten, and reclamation processing is performed at an appropriate timing.
  • “unused” is stored in the status 1453 of the physical page that has not yet been written.
  • a physical page whose status 1453 is “unused” is used as the physical page mapped to the logical page.
  • the SSD 21 has a function of creating a journal, and the created journal includes a sequence number.
  • the SSD 21 records the latest (maximum) sequence number among the sequence numbers assigned to the journal created by the SSD 21 in the memory 204. This information is called sequence number management information and is stored in the memory 204.
  • the SSD 21 When creating the journal, the SSD 21 stores a value obtained by adding 1 to the value stored in the sequence number management information 1170 in the SEQ # 701 of the newly created journal. After creating the journal, the SSD 21 stores the value of SEQ # 701 of the created journal in the sequence number management information 1170, thereby updating the contents of the sequence number management information 1170.
  • FIG. 12 shows the flow of processing (write processing) performed when the primary storage apparatus 1a receives a write command from the host 2.
  • the alphabet “S” attached before the reference number means “step”.
  • Step 1001 to Step 1005 and Step 1011 to Step 1013 are executed.
  • Steps 1051 to 1057 are processes executed by the CPU 201 of the SSD 21 in the primary storage apparatus 1a.
  • Step 1001 When the I / O program 101 receives a write command and write data from the host 2, it stores the write data in the cache.
  • Step 1002 The I / O program 101 performs address conversion processing of the write destination address (logical volume address) included in the received write command, so that the write data write destination physical volume and its physical volume Ask for the address.
  • write destination address logical volume address
  • Step 1003 The I / O program 101 refers to the pair management table 300 to determine whether the physical volume to which the write data is written, identified in step 1002, is a pair volume. If the physical volume to which the write data is written is not a pair volume (step 1003: N), the I / O program 101 performs a normal write process and ends the process. Since the processing in this case is publicly known, description thereof is omitted here. On the other hand, if the physical volume to which the write data is written is a pair volume (step 1003: Y), then step 1004 is performed.
  • Step 1004 The I / O program 101 creates redundant data (parity) using the write data.
  • parity redundant data
  • the I / O program 101 reads the pre-update data and the pre-update parity from the SSD 21 and then creates the parity.
  • Step 1005 The I / O program 101 issues a journal creation command shown in FIG. 7 to the SSD 21 having the write destination physical volume of write data and the SSD 21 having the parity write destination physical volume.
  • step 1005 the I / O program 101 issues a journal creation command to a plurality of SSDs 21.
  • the processing performed in each SSD 21 that has received the journal creation command is the same, in the following description, the processing performed in one SSD 21 that has received the journal creation command will be described.
  • Step 1051 The SSD 21 that has received the journal creation command issued by the storage controller 10 in Step 1005 determines the sequence number of the journal to be created. As described above, the SSD 21 determines a value obtained by adding 1 to the value stored in the sequence number management information 1170 as the sequence number of a newly created journal.
  • Step 1053 The SSD 21 writes data to the physical volume (P-VOL) specified by the journal creation command.
  • the SSD 21 obtains the logical page # 1403 of the logical page corresponding to the position specified by the VOL # 753 and LBA754 of the journal creation command by referring to the logical / physical conversion table 1400. Subsequently, the SSD 21 refers to the physical page management table 1450, selects an unused physical page, and writes data to the selected physical page.
  • the SSD 21 stores the physical page # of the physical page in which data is written in the physical page # 1405 corresponding to the previously obtained logical page # 1403, so that it is specified by the VOL # 753 and LBA754 of the journal creation command.
  • a physical page is mapped to a logical page corresponding to a position.
  • Step 1054 The SSD 21 writes data to the journal volume. This process is the same as that described in step 1053. That is, the SSD 21 writes data to an unused physical page, and maps the physical page on which the data has been written to a logical page on the journal volume (a logical page corresponding to the position specified by JLBA 755).
  • the data written to the physical volume (P-VOL) in step 1053 is the same as the data written to the journal volume in step 1054, and is the write data 758 included in the journal creation command.
  • the SSD 21 that has received the journal creation command is the SSD 21 that stores the write data received from the host 2
  • the write data 758 includes the write data received from the host 2.
  • the SSD 21 that has received the journal creation command may be the SSD 21 that stores the parity created in step 1004. In that case, the write data 758 includes the parity created in step 1004.
  • Step 1055 The SSD 21 creates a JNCB. Since the contents included in JNCB have already been described with reference to FIG. 6 above, description thereof is omitted here.
  • Step 1056 The SSD 21 writes JNCB to the journal volume. This processing is also the same as that described in step 1054 and the like.
  • Step 1057 After writing the JNCB to the journal volume, the SSD 21 stores the value of SEQ # 701 of the created JNCB in the sequence number management information 1170, and then returns a response to the storage controller 10 that the journal creation processing has been completed. To do.
  • the response returned to the storage controller 10 includes at least the sequence number determined in step 1051.
  • the SSD 21 may remove the write data 758 from the journal creation command received from the storage controller 10 in step 1051 and return the information with the added sequence number to the storage controller 10 instead.
  • the I / O program 101 restarts the processing from step 1011.
  • the I / O program 101 receives a response from all the SSDs 21 that issued the journal creation command in step 1005 (the SSD 21 that stores the write data received from the host 2 and the SSD 21 that stores the parity). Execute the process.
  • Step 1011 The I / O program 101 extracts the sequence number from the response received from the SSD 21, and stores the extracted sequence number in the latest SEQ # 604 of the primary journal management information 600.
  • Step 1013 The I / O program 101 returns a response to the effect that the write process is completed to the host 2, and ends the process.
  • journal transmission processing when a journal is transmitted from the primary storage apparatus 1a to the secondary storage apparatus 1b will be described with reference to FIG.
  • the secondary storage device 1b periodically issues a journal read command (sometimes abbreviated as RDJNL command) to the primary storage device 1a.
  • This processing is performed by the CPU 12 of the secondary storage device 1b executing the journal read program 151.
  • the journal transmission program 102 is executed, whereby the primary storage apparatus 1a reads the journal stored in the journal volume of the SSD 21 in the primary storage apparatus 1a, Transmit to device 1b.
  • the journal is periodically transmitted from the primary storage apparatus 1a to the secondary storage apparatus 1b.
  • FIG. 13 shows the flow of processing performed when the secondary storage apparatus 1b issues one journal read command.
  • the journal read command is created for each SSD 21, for example, when the secondary storage device 1b has n secondary SSDs (n is an integer of 1 or more), the secondary storage device 1b has n journal read commands. Is issued to the primary storage apparatus 1a. When n journal read commands are issued, these processes do not need to be performed sequentially, and n processes may be executed in parallel (n processes in FIG. 13 are executed in parallel). .
  • Step 1101 The journal read program 151 creates a journal read command and sends it to the primary storage device 1a.
  • the journal read command includes the identification number of the SSD 21 of the primary storage device 1a.
  • the secondary storage device 1b (journal read program 151) refers to the pair management table 300 to identify all the identification numbers of the SSDs 21 that are paired with the secondary SSD of the secondary storage device 1b, and journal read for each of these SSDs 21. Issue a command.
  • the primary storage device 1a that has received the journal read command reads the journal from the journal volume of the SSD 21 with the identification number specified by the journal read command and returns it to the secondary storage device 1b (steps 1201 to 1210).
  • Step 1201 When the journal transmission program 102 receives a journal read command from the secondary storage device 1b, it identifies the SSD 21 specified by the journal read command.
  • the identification number of the SSD 21 specified here is “x” (x is a numerical value such as 01).
  • the journal transmission program 102 specifies the SEQ # of the journal to be read first from the journal volume by referring to the transferred SEQ # 605 of the SSD # x from the primary journal management information 600 (transferred SEQ # 605). The value obtained by adding 1 to the value of is the SEQ # of the journal to be read).
  • the journal transmission program 102 prepares a variable R, and substitutes the SEQ # of the journal specified here into the variable R.
  • Step 1203 The journal transmission program 102 compares the latest SEQ # 604 of SSD # x with the value of the variable R, and determines whether the variable R is the latest SEQ # 604 or less. If the variable R is less than or equal to the latest SEQ # 604 (step 1203: Y), the journal transmission program 102 next executes step 1204. If the variable R is not less than or equal to the latest SEQ # 604 (step 1203: N), then Step 1210 is performed.
  • Step 1205 The journal transmission program 102 obtains the address of the journal volume in which the JNCB of the journal to be read is stored.
  • the size of the JNCB is a fixed length, and the JNCB is stored in order of the sequence number from the beginning of the management information area of the journal volume. Therefore, the address where the JNCB of the read target journal is stored can be obtained by simple calculation.
  • the journal transmission program 102 reads JNCB from the obtained journal volume address.
  • the journal transmission program 102 reads the JNCB by issuing a read command to the SSD 21 (SSD # x) in which the journal to be read is stored.
  • the JNCB read from the SSD 21 is temporarily stored in the cache.
  • Step 1207 The journal transmission program 102 analyzes the contents of the JNCB read in Step 1205 and refers to the JNCB pointer 706 to identify the address where the journal data is stored. Then, the journal transmission program 102 reads journal data from the journal volume by using the obtained journal data address. When reading, the journal transmission program 102 may issue a read command to the SSD #x as in step 1205. The read journal data is temporarily stored in the cache.
  • the maximum transfer journal amount is a value that can be set by the user (the administrator of the storage apparatus 1). For example, the user can set the maximum transfer journal amount from the management host 5 to the storage apparatus 1.
  • step 1210 If the total amount of journal data read from the journal volume exceeds the maximum transfer journal amount (step 1208: Y), step 1210 is performed next. On the other hand, when the total amount of journal data read from the journal volume is equal to or less than the maximum transfer journal amount (step 1208: N), the journal transmission program 102 adds 1 to the variable R (step 1209), and again from step 1203. Process.
  • Step 1210 The journal transmission program 102 transmits the journal (journal data and JNCB) read in the processing up to step 1209 to the secondary storage device 1b and updates the transferred SEQ # 605 of the SSD # x ( The largest sequence number among the sequence numbers of the transmitted journal is stored in the transferred SEQ # 605 of the SSD # x), and the processing is terminated.
  • Step 1105 The journal read program 151 that has received the journal from the primary storage apparatus 1a stores the journal in the cache of the secondary storage apparatus 1b.
  • Step 1107, Step 1108: The journal read program 151 refers to the JNCB of each journal received in Step 1105, and the SSD # x arrived T / S657 (in the secondary journal management information 650) in the Timestamp 702 included in each JNCB. It is determined whether there is a newer one (stored) (step 1107). If there is a JNCB that includes a Timestamp 702 that is newer than the T / S657 that has arrived for the SSD # x (Step 1107: Y), the journal read program 151 determines that the Timestamp 702 that is the latest among the Timestamp 702 included in each JNCB is the arrival of the SSD # x.
  • the arrived T / S657 is updated (step 1108), and the process is terminated. If there is no JNCB that includes a Timestamp 702 that is newer than the arrived T / S657 of SSD # x (step 1107: N), the journal read program 151 ends the process without performing step 1108.
  • the journal restoration process is performed by the CPU 12 of the secondary storage device 1b executing the destage program 152.
  • the secondary storage device 1b periodically executes journal restore processing.
  • the journal restore process is a process executed for each CTG.
  • FIG. 14 the flow of processing when the destage program 152 executes journal restore processing for a specific one CTG (for example, CTG with CTG # being “n”, hereinafter referred to as “CTG # n”). explain.
  • Step 1301 The destage program 152 refers to the arrived T / S 657 (plural) of the row in which the CTG # 652 is n among the rows in the secondary journal management information 650, and refers to the plurality of arrived T / S 657.
  • the oldest time among the times stored in is identified.
  • the time specified here is called a “restorable time stamp”.
  • Steps 1302 to 1305 are performed for each SSD 21 in CTG # n.
  • Step 1302 The destage program 152 selects one SSD 21 that has not yet undergone the processing from step 1302 among the SSDs 21 belonging to CTG # n.
  • the identification number of the SSD 21 selected here is “x” will be described.
  • the destage program 152 specifies all the journals that should be reflected in the SSD # x by referring to the JNCB of the journal that has arrived at the cache of the secondary storage device 1b.
  • Step 1303 The destage program 152 determines whether there is a journal before the timestamp that can be restored by the Timestamp 702 among the identified journals. If there is a journal that matches this condition (step 1303: Y), the destage program 152 executes step 1304. If there is no journal that matches this condition (step 1303: N), the destage program 152 next executes step 1306.
  • Step 1304 The destage program 152 creates a journal restore command and issues it to the SSD #x in order to restore each journal specified in step 1303.
  • FIG. 7 shows the format of the journal restore command.
  • the journal restore command is used for the storage controller 10 to cause the SSD 21 to perform journal restore processing.
  • the SSD 21 according to the present embodiment supports a journal restore command in addition to the journal creation command described above.
  • the journal restore command 850 includes an operation code (Opcode) 851, VOL # 852, LBA853, JLBA854, CBLBA855, Length856, JNCB857, and journal data 858.
  • Opcode 851 is information indicating the type of command, similar to Opcode 751 of the journal creation command.
  • VOL # 852 and LBA853 are information regarding the write data write destination position. Specifically, VOL # 852 is the write data write destination physical volume (S-VOL) identification number, and LBA853 is the SVOL (identification number). Is the LBA on the VOL # 852 physical volume).
  • JLBA 854 and CBLBA 855 represent addresses on the journal volume
  • JLBA 854 represents the journal data write destination address
  • CBLBA 855 represents the JNCB write destination address
  • Length 856 represents the length of journal data.
  • the JNCB 858 and journal data 859 store the JNCB and journal data, respectively.
  • the destage program 152 creates a journal restore command for each journal and issues it to the SSD #x. Further, when issuing a plurality of journal restore commands, the destage program 152 creates a journal restore command in order from the journal with the smallest SEQ # 701 and issues it to the SSD #x. As a result, the order in which each data written in the P-VOL is reflected in the S-VOL is the same as the order in which the data is written in the P-VOL.
  • Step 1353 The SSD #x returns response information to the effect that the restore processing is completed to the storage controller 10 of the secondary storage device 1b.
  • the above is the description of the journal restore process performed by the SSD 21.
  • the format of the response information returned by SSD # x is shown in FIG.
  • the response information includes SEQ # 881, Timestamp 882, and Length 883.
  • SEQ # 881 and Timestamp 882 include SEQ # 701 and Timestamp 702 that were included in the JNCB of the journal that SSD # x has restored.
  • Length 883 is the journal data length of the journal for which SSD # x has performed the restore process.
  • Step 1305 When the response information from the SSD #x arrives at the storage controller 10 of the secondary storage device 1b, the destage program 152 executes the SEQ that includes the reflected SEQ # 656 value of the secondary journal management information 650 in the response information. The value of # 881 is rewritten, and the value of restored T / S 658 is rewritten to the value of Timestamp 882 included in the response information.
  • the destage program 152 updates the JNCB latest address 804 and the write data latest address 806 of the JVOL management table 800. Specifically, the destage program 152 updates the contents of the write data latest address 806 by adding the value of Length 883 included in the response information to the value of the write data latest address 806. The destage program 152 is updated by adding the JNCB size to the JNCB latest address 804.
  • Step 1306 The destage program 152 ends the process when all the SSDs 21 belonging to the CTG # n have been processed up to the step 1305 (step 1306: Y). If there is an SSD 21 that has not been processed up to step 1305 yet, the destage program 152 performs the processing from step 1302 again.
  • journal restore process In the journal restore process described above, only the journal having the Timestamp 702 before the restoreable time stamp is the target of the restore process. The reason for this will be outlined with reference to FIG.
  • elements 7001, 7002, 7003, and 7004 represent journal groups that are already stored in the cache of the secondary storage device 1b.
  • a plurality of boxes described in FIG. 15 each represent a journal, and a numerical value such as “15:00” described in the journal represents a time stamp included in the journal.
  • journal group in the element 7001 is a journal to be stored in the SSD # 1.
  • journal groups in the elements 7002, 7003, and 7004 are journals to be stored in the SSDs # 2, # 3, and # 4, respectively. All of SSD # 1 to SSD # 4 belong to the same CTG.
  • the newest time stamp among the journals to be stored in the SSD # 1 is “15:00”, and the latest time stamp among the journals to be stored in the SSD # 2 is “15: 02 ”, the latest time stamp among the journals to be stored in SSD # 3 is“ 15:03 ”, and the latest time stamp among the journals to be stored in SSD # 4 is“ 15:04 ”.
  • the time stamps listed here are stored in the arrived T / S 657 of each SSD 21 in the secondary journal management information 650.
  • the time stamp is the time when the write command is issued from the host 2 to the primary storage device 1a
  • the journal data included in each journal is written to the P-VOL at the time indicated by the time stamp. Means that. When these journal data are written (reflected) in the S-VOL of the secondary storage device 1b, data consistency can be guaranteed if they are written in the order of the time indicated by the time stamp.
  • the secondary storage device 1 b includes a journal that includes a time stamp after 15:00 among journals to be stored in the SSDs # 2, # 3, and # 4. However, among the journals to be stored in the SSD # 1, there is no journal including a time stamp later than 15:00. However, since journal transmission processing from the primary storage device 1a to the secondary storage device 1b is performed for each SSD 21, a journal including a time stamp later than 15:00 (to be stored in SSD # 1) (Journal) may arrive. For example, as shown in FIG. 15, a journal with a time stamp of 15:01 may exist in the SSD 21 of the primary storage device 1a in an untransmitted state to the secondary storage device 1b (7001 ′). ).
  • the secondary storage device 1b performs a time stamp.
  • the 15:03 journal (SSD # 3 journal) and the 15:04 time stamp (SSD # 3 journal) are reflected in the S-VOL, but the 15:01 time stamp is S- The state is not reflected in the VOL.
  • the journal with a time stamp of 15:03 (SSD # 3 journal) and the journal with a time stamp of 15:04 (SSD # 3 journal) are reflected in the S-VOL.
  • the state reflected in the S-VOL is in a data consistent state, if all the journals that have arrived at the secondary storage system 1b in the state of FIG. 15 are restored, the data consistency is guaranteed. become unable.
  • the process of step 1301 described above is performed to identify the arrival time stamp of the journal to be stored in each SSD 21 in the CTG. Further, the time stamp of the oldest time among the identified arrival time stamps is determined as a restoreable time stamp.
  • the arrived T / S657 of SSD # 1 is “15:00”
  • the arrived T / S657 of SSD # 2 is “15:02”
  • the arrived T / S657 of SSD # 3 is At “15:03”
  • the arrived T / S657 of SSD # 4 is “15:04”.
  • the oldest time is the arrival T / S657 (that is, 15:00) of SSD # 1.
  • the secondary storage system 1b treats only journals with a time stamp of 15:00 or earlier as restore processing targets. As a result, even if a failure occurs after the restore process, each S-VOL belonging to the CTG is in a state where data consistency is guaranteed.
  • the storage device (SSD) included in the primary storage apparatus performs journal creation processing, so the processing load on the storage controller can be reduced.
  • the storage controller needs to write write data to the storage device (P-VOL) and write a journal to the storage device (journal volume).
  • the journal creation command and the write data need only be transmitted once to the storage device, so that the data transfer amount between the storage controller and the storage device can be reduced.
  • the storage device performs journal restore processing, so the processing load on the storage controller of the secondary storage apparatus can be reduced.
  • a time stamp is inserted into the journal, and when the secondary storage device causes each SSD to perform journal restore processing, the journal to be restored is selected based on the time stamp included in the journal. This makes it possible to guarantee data consistency of a plurality of S-VOLs.
  • the copy manager 6 is a general-purpose computer such as a personal computer, similar to the host 2, and is connected to the storage apparatus 1a via the SAN 3.
  • the copy manager 6 does not issue a read command or a write command to the logical volume of the storage apparatus 1, but periodically issues a command called “Freeze command” to the storage apparatus 1. Details will be described later.
  • the write command issued by the host 2 needs to include time information (time stamp).
  • time information time stamp
  • the time information may not be included in the write command issued by the host 2.
  • FIG. 16 is an example of a generation management table included in the primary storage device 1a according to the second embodiment.
  • the primary storage device 1a according to the second embodiment manages time stamps in the storage device 1a.
  • the time stamp does not necessarily need to be information representing time, such as hours and minutes. Information that can identify the write order of the plurality of write data received from the host 2 may be given to the journal. Therefore, in the primary storage system 1a according to the second embodiment, a kind of serial number is used as the time stamp instead of the time information.
  • This serial number is referred to as a time stamp in the second embodiment.
  • this serial number may be referred to as a “generation number”.
  • the generation number may be abbreviated as “generation #”.
  • time information (information representing time, such as hours and minutes) may be used instead of the generation number.
  • each column of the generation management table 900 stores CTG #
  • DEV # 902 stores the identification number of the storage device (SSD21) belonging to the CTG specified by CTG # 901.
  • the time stamp 903 stores the generation number of the CTG specified by CTG # 901.
  • the initial value of the time stamp 903 is 0.
  • the time stamp 903 may be written as “generation # 903”.
  • the time stamp (generation number) is stored in the JNCB when the primary storage device 1a creates a journal, and when the secondary storage device 1b performs the journal restore process. Referenced.
  • Time stamp (generation number) update processing will be described with reference to FIG.
  • a generation update program is executed.
  • the copy manager 6 executes a program for periodically issuing a Freeze command.
  • this program is called “RAID manager”.
  • the time stamp is updated by executing the generation update program and the RAID manager.
  • steps 2001 and 2002 are processes executed by the RAID manager, and steps 2101 to 2103 are executed by the generation update program.
  • the RAID manager starts processing when, for example, a user (storage system administrator) instructs activation.
  • the RAID manager When the RAID manager is activated, the RAID manager issues a Freeze command to the primary storage apparatus 1a (step 2001). Subsequently, the RAID manager waits for a certain time (for example, 1 second or 0.1 second) (step 2002), and then executes step 2001 again. The RAID manager repeats this process.
  • the generation update program that has received the Freeze command issued by the RAID manager in step 2001 performs the following processing.
  • Step 2101 When the generation update program receives the Freeze command, the generation update program temporarily stops the I / O processing for all the logical volumes (and physical volumes constituting the logical volume) of the storage apparatus 1a. For example, in the storage device 1a, the write program or the like described in the first embodiment is executed, and the process shown in FIG. 12 is executed. However, the generation update program interrupts the process such as the write program. As a result, in the primary storage apparatus 1a, journal creation processing and the like are temporarily stopped.
  • Step 2102 The generation update program adds 1 to the value of the time stamp 903 in each row of the generation management table 900.
  • Step 2103 After step 2102, the generation update program restarts the I / O processing stopped in step 2101.
  • the value of the time stamp 903 in the generation management table 900 is periodically increased by one. That is, the Freeze command issued from the copy manager 6 can be said to be a command for instructing update (addition) of the value of the time stamp 903.
  • the storage apparatus 1a when the storage apparatus 1a receives the Freeze command, the I / O processing of all logical volumes is temporarily stopped. In response to receipt of the Freeze command, the time stamps 903 of all the rows in the generation management table 900 are updated. However, as another embodiment, these processes may be performed for each CTG.
  • the RAID manager issues a Freeze command including CTG # to the storage apparatus 1a.
  • CTG # included in the Freeze command is “n” will be described below.
  • the generation update program may add 1 to the value of the time stamp 903 in the row of the generation management table 900 where CTG # 901 is “n” in step 2102. In this case, the generation update program only has to interrupt access (I / O processing) to the physical volume belonging to CTG # n in step 2101.
  • journal creation processing and journal restoration processing performed in the computer system according to the second embodiment will be described, but the flow of these processing is almost the same as that described in the first embodiment.
  • the flow of journal creation processing and journal restoration processing performed in the computer system according to the second embodiment will be described mainly with reference to the drawings (FIGS. 12 to 14) used in the first embodiment.
  • Step 1001 to Step 1004 are the same as the processing described in the first embodiment.
  • the write command issued by the host 2 does not include a time stamp (the write command may include a time stamp, The time stamp is not used in the storage apparatus 1 according to the second embodiment).
  • the I / O program 101 uses the time stamp (generation #) 903 stored in the generation management table 900. For example, when the SSD 21 to be instructed to create a journal belongs to CTG # 1, the I / O program 101 includes the value stored in the time stamp 903 of the row where the CTG # 901 is “1” in the Timestamp 752. A journal creation command is created and issued to the SSD 21. In other respects, the I / O program 101 performs the same processing as that described in the first embodiment.
  • Step 1105 is the same as the processing described in the first embodiment.
  • the journal read program 151 determines whether there is a value obtained by subtracting 1 from the value of Timestamp 702 among the received JNCBs that is larger than the arrival generation # 657 ′ of SSD #x (step 1107 ′). . If this determination is affirmative (step 1107 ′: Y), the journal read program 151 adds 1 to the arrived T / S 657 of SSD # x (step 1108 ′), and then ends the processing.
  • the time stamp 903 of the generation management table 900 is periodically increased, but a plurality of journals in which the same value is stored in the JNCB Timestamp 702 may be created. is there.
  • the secondary storage apparatus 1b receives a journal whose Timestamp 702 is x (x is an integer value equal to or greater than 1)
  • the journal whose Timestamp 702 is x may still remain in the primary storage apparatus 1a without being transmitted. There is sex.
  • the secondary storage apparatus 1b receives a journal whose Timestamp 702 is (x + 1), it is guaranteed that all journals whose Timestamp 702 is x have arrived at the secondary storage apparatus 1b.
  • the secondary storage device 1b executes steps 1107 ′ and 1108 ′, and when it is confirmed that all journals whose Timestamp 702 is x have arrived at the secondary storage device 1b, the arrival of the secondary journal management information 650 is reached. X is stored in the completed time stamp 657. Thereafter, when the secondary storage device 1b receives a journal whose Timestamp 702 is (x + 2), it means that all journals whose Timestamp 702 is (x + 1) have been received by the secondary storage device 1b. By executing 1107 ′ and 1108 ′, (x + 1) is stored in the arrival time stamp 657.
  • journal restoration process performed in the secondary storage system 1b according to the second embodiment will be described.
  • data consistency is guaranteed by selecting a journal to be restored using the Timestamp 702 included in the arrived T / S 657 or the journal (JNCB). I do.
  • the same processing is performed in the journal restoration processing in the second embodiment.
  • the Timestamp 702 included in the arrived T / S 657 or journal (JNCB) is not the time information (the time received together with the write command from the host 2), but the generation number managed by the primary storage system 1a.
  • the journal restoration process in the second embodiment is the same as the process described in the first embodiment.
  • the time stamp included in the write command issued by the host 2 becomes unnecessary, so even if the host 2 that does not have the function of issuing the write command including the time stamp is used, the data Consistency can be guaranteed.
  • the storage apparatus 1a manages the time stamp (generation number), and the storage apparatus 1a adds 1 to the generation number managed by itself in response to receiving the Freeze command from the copy manager 6. did.
  • the copy manager 6 may be configured to manage time stamps.
  • the copy manager 6 includes a time stamp (for example, a generation number) in the Freeze command and transmits it to the storage device 1a, and is configured to add 1 to the generation number managed by itself when transmitting the Freeze command. It may be.
  • the storage apparatus 1a receives the Freeze command from the copy manager 6, the generation number included in the Freeze command may be stored in the generation management table 900.
  • the copy manager 6 may be configured to transmit time information as a time stamp. In that case, the copy manager 6 may include the time information (current time) acquired from the clock of the copy manager 6 in the Freeze command when the Freeze command is transmitted.
  • Embodiment 3 of the present invention will be described.
  • the hardware configuration of the computer system according to the third embodiment is the same as that described in the first or second embodiment.
  • the processing executed by the storage controller of the storage apparatus according to the third embodiment is also the same as that described in the first or second embodiment.
  • the write operation described in the first embodiment is also performed in the storage controller according to the third embodiment.
  • the same processing as the processing, journal transmission processing, and journal restoration processing (FIGS. 12 to 14) is performed. Therefore, when describing various hardware elements, management information, or programs, the same reference numerals as those used in the first or second embodiment will be used.
  • the processing for writing data to a physical page is different from that described in the first or second embodiment.
  • the difference between the process performed in the third embodiment and the process performed in the first or second embodiment will be outlined with reference to FIG.
  • FIG. 19A illustrates a logical page and a physical page immediately after the SSD 21 according to the first embodiment (or the second embodiment) stores the data specified by the journal creation command in the physical volumes (P-VOL and JVOL). It is a conceptual diagram showing the mapping state of.
  • processing performed in the SSD 21, particularly processing in steps 1051 to 1054 in FIG. 12 will be described.
  • journal creation command When the P-VOL data write destination location specified by the journal creation command is logical page a in FIG. 19A and the journal volume data (journal data) write destination location is logical page h.
  • the write target data size is equal to the logical page size, and the beginning and end of the data write destination area coincide with the logical page boundary.
  • step 1053 the SSD 21 selects one unused physical page (a physical page to which data has not yet been written). Here, it is assumed that physical page C is selected. Subsequently, the SSD 21 writes data to the physical page C, and maps the physical page C to the logical page a.
  • step 1054 the SSD 21 selects one unused physical page again.
  • the physical page E is selected.
  • the SSD 21 writes journal data to the physical page E, and maps the physical page E to the logical page h.
  • data (journal) is written to the FM chip 206 (physical page) in this way.
  • FIG. 19B illustrates the mapping state between the logical page and the physical page immediately after Steps 1051 to 1054 are executed in the SSD 21 according to the third embodiment and data is written to the P-VOL and the journal volume. ing.
  • the data write destination position of the P-VOL specified by the journal creation command is the logical page a in FIG. 19B, and data (journal data) is written to the journal volume. Assume that the previous position is logical page h.
  • step 1053 The following processing is performed in the SSD 21 according to the third embodiment.
  • the processing performed in step 1053 is the same as that described above. That is, data is written to an unused physical page C, and the physical page C is mapped to the logical page a.
  • step 1054 the following processing is performed.
  • the SSD 21 maps the physical page C written in step 1053 to the logical page h. No unused physical page is selected or data is not written to the physical page.
  • the data written in the P-VOL and the data written in the journal volume (journal data) by the SSD 21 that has received the journal creation command are the same data. Therefore, in the SSD 21 according to the third embodiment, the physical page (physical page C) to which data has been written in step 1053 is divided into a logical page (logical page a) on the P-VOL and a logical page (logical page on the journal volume). By mapping to both of h), it is possible to suppress redundant data writing to the physical page.
  • the SSD 21 becomes a logical page.
  • the process when a write (update) request is received is outlined. For example, when the SSD 21 receives a write (update) request for the logical page a, the SSD 21 writes update data to an unused physical page (hereinafter referred to as “physical page D”), and the physical page D to the logical page a. To map.
  • the same processing is performed when the SSD 21 receives a write request for the logical page h on the journal volume.
  • the SSD 21 that has received the journal restore command writes the journal data 859 in the journal restore command to the journal volume in step 1351.
  • the SSD 21 writes the journal data 859 to an unused physical page (assumed to be physical page C).
  • the physical page C is mapped to a logical page (assumed to be a logical page h).
  • the journal data 859 is written to the S-VOL.
  • the SSD 21 maps the physical page C in which the journal data 859 is written in step 1351 to a logical page (assumed to be logical page a). No unused physical page is selected or data is not written to the physical page. Thereby, it is possible to prevent the data writing to the physical page from being performed redundantly.
  • step 1353 of FIG. 14 it is not necessary that journal data remain in the journal volume. Therefore, after step 1353, the SSD 21 releases the mapping between the logical page h and the physical page C of the journal volume. Specifically, the SSD 21 may change the status 1404 of the row corresponding to the logical page h to “unallocated” among the rows of the logical-physical conversion table 1400, and set the physical page # 1405 to NULL. However, the mapping between the S-VOL logical page a and the physical page C is not released.
  • the computer system according to the fourth embodiment has a configuration in which a primary computer 1 a ′ and a secondary computer 1 b ′ are connected via a WAN 4.
  • the primary computer 1a 'and the secondary computer 1b' are general-purpose computers such as a server and a personal computer similar to the host 2 in the first embodiment.
  • the primary computer 1a ' includes a CPU 12' (12'-1, 12'-2), a memory 13 ', a network I / F 14', a device I / F 15 ', and a plurality of SSDs 21.
  • the SSD 21 is the same as the SSD 21 described in the first, second, or third embodiment.
  • the network I / F 14 ′ is an interface for connecting the primary computer 1 a ′ to the WAN 4.
  • the device I / F 15 ′ is an interface for connecting a plurality of SSDs 21 and has the same function as the BE I / F 15 in the first embodiment.
  • the CPU 12 ' is similar to a microprocessor included in a known server or personal computer, and the memory 13' is a volatile storage medium included in a known server or personal computer such as a DRAM.
  • a DRAM dynamic random access memory
  • FIG. 20 two CPUs 12 '(12'-1, 12'-2) are shown, but the number of CPUs 12' is not limited to two. Three or more CPUs 12 'may be mounted on the primary computer 1a', or only one CPU 12 'may be mounted. Alternatively, instead of the plurality of CPUs 12 ', one multi-core processor having a plurality of processor cores may be mounted on the primary computer 1a'.
  • the primary computer 1a operates as a device having the functions of the host 2 and the primary storage device 1a in the first embodiment.
  • the CPU 12 of the primary computer 1a ' may be configured to form at least two VMs by executing a hypervisor that is a program for forming one or more virtual machines (VMs).
  • the hypervisor is well-known software (program), and logically divides the physical resources (CPU 12 ′, memory 13 ′, etc.) of the primary computer 1a ′, and forms one or a plurality of VMs using the divided physical resources. .
  • the first VM formed on the primary computer 1a ' is a VM on which a program executed on the host 2 in the first embodiment is executed. In the present embodiment, this VM is called a "host VM".
  • the second VM is a VM that realizes the function of the primary storage device 1a in the first embodiment. In the present embodiment, this VM is called a “storage VM”.
  • a logical volume is provided to the host VM by executing a program equivalent to the I / O program 101 described in the first embodiment (referred to as an I / O program 101 ').
  • the host VM and the storage VM are configured to be communicable, and the host VM can issue an I / O request (write command or read command) to the logical volume.
  • the I / O program 101 ′ receives a write command from the host VM, the physical volume (in the SSD 21) (for example, by executing the processing described in the first embodiment (step 1001 to step 1013 in FIG. 12)).
  • Write data (or journal) is stored in the P-VOL and journal volume.
  • the secondary computer 1b ' has the function of the secondary storage device 1b in the first embodiment.
  • the CPU 12 of the secondary computer 1b' may execute the hypervisor to form the storage VM.
  • a program equivalent to the journal read program 151 described in the first embodiment referred to as journal read program 151 ′
  • a program equivalent to the destage program 152 referred to as destage program 152 ′.
  • the primary computer 1a 'and the secondary computer 1b' perform the processing described in the first embodiment, that is, the journal transmission and journal restoration processing described in FIGS. That is, the computer system according to the fourth embodiment has the same functions as those described in the first embodiment, although the hardware configuration is different from that of the computer system described in the first embodiment.
  • the computer system according to the fourth embodiment has the same function as the function described in the first embodiment.
  • the computer system according to the fourth embodiment has the same function as the computer system according to the second embodiment. May be provided.
  • a VM that executes the program (RAID manager) executed by the copy manager 6 described in the second embodiment (referred to as “manager VM”) is also included.
  • the manager VM may periodically issue a Freeze command to the storage VM.
  • the RAID manager may be executed by the host VM.
  • redundant data (patty) created in the primary storage device 1a is also stored in the journal volume and copied to the secondary storage device 1b has been described.
  • the redundant data is not copied from the primary storage device 1a to the secondary storage device 1b, and the redundant data stored in the secondary storage device 1b is based on the data (journal) transmitted from the primary storage device 1a. 1b may be created.
  • a volume (logical volume) provided to a requester such as a host is formed from a plurality of physical volumes.
  • the primary storage apparatus 1a and the primary computer 1a ' may provide one physical volume provided by the SSD 21 to the host (or host VM) as one logical volume.
  • 1a Primary storage device
  • 1b Secondary storage device
  • 2 Host
  • 3 SAN
  • 4 WAN
  • 5 Management host
  • 6 Copy manager

Abstract

An information processing system according to an embodiment of the present invention includes: a main system provided with a plurality of main storage devices; and a subsystem provided with a plurality of main storage devices, wherein the main storage device and the sub-storage device system each have one or more volumes and journal volumes. When receiving a write command including a time stamp, the main system creates and transmits, to the main storage device, a journal creation command including the write data and time stamp. The main storage device, which has received the journal creation command, stores the write data in the volume(s) and creates and stores, in the journal volume(s), a journal including the write data and time stamp. When acquiring a plurality of journals created by the main system, the subsystem determines, on the basis of the time stamp included in each journal, a journal that is transmittable to the sub-storage device, and creates and issues, to the sub-storage device, a journal restore command on the basis of the content of the determined journal. In addition, the sub-storage device, which has received the journal restore command, stores, in the volume included in the sub-storage device, the write data included in the journal restore command.

Description

情報処理システムInformation processing system
 本発明は、ストレージ装置間のボリュームコピー技術に関する。 The present invention relates to a volume copy technology between storage apparatuses.
 現在、多くのストレージ装置では、たとえばRAID(Redundant Arrays of Independent (or Inexpensive) Disks)技術等の高信頼化技術を採用することで、HDD単体の信頼性を超えた信頼性を提供している。しかし、近年の情報化社会の進化によって、RAID技術で提供可能な信頼性では不足する場面も現れてきている。 Currently, many storage apparatuses provide reliability exceeding the reliability of a single HDD by adopting high reliability technology such as RAID (Redundant Array of Independent (or Inexpensive) Disks) technology. However, due to the recent evolution of the information society, there is a scene where the reliability that can be provided by RAID technology is insufficient.
 ストレージシステムの可用性を高めるための技術として、複数のストレージ装置にデータの複製を格納する技術がある。データを複数のストレージ装置に格納することで、1つのストレージ装置が障害により停止しても、データの消失を防ぐことができる。たとえば特許文献1には、ホストコンピュータからのデータを複数の記憶システムに格納するデータ処理システムが開示されている。特許文献1に開示されているデータ処理システムでは、データの複製処理は記憶システムが行う。 There is a technique for storing data replicas in a plurality of storage devices as a technique for increasing the availability of the storage system. By storing data in a plurality of storage devices, data loss can be prevented even if one storage device stops due to a failure. For example, Patent Document 1 discloses a data processing system that stores data from a host computer in a plurality of storage systems. In the data processing system disclosed in Patent Document 1, a data replication process is performed by a storage system.
 また、特許文献1に開示されているデータ処理システムでは、データの更新順序を守るために、ジャーナルを用いたデータ複製処理が行われる。ジャーナルとは、更新データとデータ更新順序を表す識別子(たとえば更新時刻等)を含む情報である。データコピー元の記憶システム(正記憶システム)では、ボリューム(正ボリューム)に更新データが書き込まれる時にジャーナルを作成し、ジャーナルボリュームに格納する。データコピー先の記憶システム(副記憶システム)では、正記憶システムで作成されたジャーナルを取得すると、ジャーナルに含まれる更新時刻などの識別子に従って、副記憶システムのボリューム(副ボリューム)に更新データを反映する。 In the data processing system disclosed in Patent Document 1, data replication processing using a journal is performed in order to keep the data update order. The journal is information including update data and an identifier (for example, update time) indicating the data update order. In the data copy source storage system (primary storage system), when update data is written to the volume (primary volume), a journal is created and stored in the journal volume. In the data copy destination storage system (secondary storage system), when a journal created in the primary storage system is acquired, the updated data is reflected in the secondary storage system volume (secondary volume) according to the identifier such as the update time included in the journal. To do.
特開2005-316684号公報JP 2005-316684 A
 特許文献1に開示されているデータ処理システムでは、記憶システムがデータの複製処理を担当するため、ホスト計算機の負荷は増大しないが、記憶システムがデータの複製処理の負担を負うことになる。特にデータ量が多い場合、ジャーナルの作成と管理のための処理負荷は、性能に悪影響を与える。 In the data processing system disclosed in Patent Document 1, since the storage system is in charge of data replication processing, the load on the host computer does not increase, but the storage system bears the burden of data replication processing. Particularly when the amount of data is large, the processing load for creating and managing journals adversely affects performance.
 本発明の一実施形態に係る情報処理システムは、第1プロセッサと第1メモリと、複数の正記憶デバイスと、を有する正システムと、第2プロセッサと第2メモリと、前記正記憶デバイスに書き込まれたデータの複製を格納するための複数の副記憶デバイスと、を有する副システムとが接続された構成をとる。正記憶デバイスと副記憶デバイスはそれぞれ、1以上のボリュームとジャーナルボリュームを有し、第1プロセッサは、タイムスタンプを含むライトコマンドを受領すると、ライトデータとタイムスタンプを含むジャーナル作成コマンドを作成して正記憶デバイスに送信し、ジャーナル作成コマンドを受領した正記憶デバイスは、ボリュームにライトデータを格納し、ライトデータとライトデータの書き込み位置に関する情報と正記憶デバイスが管理しているシーケンス番号とタイムスタンプを含むジャーナルを作成してジャーナルボリュームに格納する。 An information processing system according to an embodiment of the present invention includes a primary system having a first processor, a first memory, and a plurality of primary storage devices, a second processor, a second memory, and writing to the primary storage device. And a secondary system having a plurality of secondary storage devices for storing replicated data. Each of the primary storage device and the secondary storage device has one or more volumes and a journal volume. When the first processor receives a write command including a time stamp, it creates a journal creation command including the write data and the time stamp. The primary storage device that has sent the primary storage device and received the journal creation command stores the write data in the volume, writes the write data and information about the write position of the write data, the sequence number and time stamp managed by the primary storage device Is created and stored in the journal volume.
 第2プロセッサは、複数の正記憶デバイスが有するジャーナルボリュームに格納された複数のジャーナルを取得すると、ジャーナルのそれぞれに含まれているタイムスタンプに基づいて、副記憶デバイスに送信可能なジャーナルを決定し、決定されたジャーナルの内容に基づいてジャーナルリストアコマンドを作成して副記憶デバイスに発行する。そしてジャーナルリストアコマンドを受領した副記憶デバイスは、ジャーナルリストアコマンドに含まれているライトデータを副記憶デバイスの有するボリュームに格納する。 When the second processor acquires a plurality of journals stored in journal volumes of a plurality of primary storage devices, the second processor determines a journal that can be transmitted to the secondary storage device based on a time stamp included in each of the journals. A journal restore command is created based on the determined contents of the journal and issued to the secondary storage device. The secondary storage device that has received the journal restore command stores the write data included in the journal restore command in the volume of the secondary storage device.
 本発明のストレージシステムでは、リモートコピー処理の負荷を複数のCPUに分散でき、性能向上を可能とするとともに、データ一貫性の保証を可能としている。 In the storage system of the present invention, the load of remote copy processing can be distributed to a plurality of CPUs, enabling performance improvement and ensuring data consistency.
本発明の一実施形態に係るストレージシステムを含む情報処理システムの構成図である。1 is a configuration diagram of an information processing system including a storage system according to an embodiment of the present invention. SSDの構成図である。It is a block diagram of SSD. ストレージシステムの論理構成図である。1 is a logical configuration diagram of a storage system. RAIDグループと論理ボリュームの関係を示す概念図である。It is a conceptual diagram which shows the relationship between a RAID group and a logical volume. ペア管理テーブルの一例である。It is an example of a pair management table. ジャーナルの構造の概要を説明する図である。It is a figure explaining the outline | summary of the structure of a journal. ジャーナル作成コマンド及びジャーナルリストアコマンドとその応答情報の例を示す。An example of a journal creation command and a journal restore command and its response information is shown. JVOL管理テーブルの内容を示す。The contents of the JVOL management table are shown. ジャーナル管理情報の構成例である。It is a structural example of journal management information. 論理物理変換テーブルの内容を示す。Indicates the contents of the logical-physical conversion table. 物理ページテーブルの内容を示す。Indicates the contents of the physical page table. ライト処理のフローを示す。The flow of a write process is shown. 正ストレージ装置から副ストレージ装置へのジャーナル送信処理のフローを示す。The flow of journal transmission processing from the primary storage apparatus to the secondary storage apparatus is shown. ジャーナルリストア処理のフローを示す。The flow of journal restore processing is shown. ジャーナルリストア処理の概念を表した図である。It is a figure showing the concept of the journal restore process. 世代管理テーブルの構成例である。It is an example of a structure of a generation management table. タイムスタンプの更新処理のフローである。It is a flow of a time stamp update process. 実施例2に係るストレージシステムにおける、正ストレージ装置から副ストレージ装置へのジャーナル送信処理のフローの一部である。FIG. 10 is a part of a flow of journal transmission processing from the primary storage apparatus to the secondary storage apparatus in the storage system according to the second embodiment. 実施例3に係るSSDにおける、論理ページと物理ページのマッピング方法を示す概念図である。FIG. 10 is a conceptual diagram illustrating a logical page to physical page mapping method in the SSD according to the third embodiment. 実施例4に係る情報処理システムの構成図である。FIG. 10 is a configuration diagram of an information processing system according to a fourth embodiment.
 以下、図面を参照して、本発明の一実施形態に係る情報処理システムを説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。 Hereinafter, an information processing system according to an embodiment of the present invention will be described with reference to the drawings. Note that the present invention is not limited to the embodiments described below.
 また、以後の説明では「プログラム」を主語として説明を行う場合があるが、正確にはプログラムはCPU(プロセッサ)によって実行されることで、定められた処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。そのため以後の説明において、プログラムを主語として記述されている処理は、実際にはCPUがその処理を実行することを意味する。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。 In the following description, “program” may be used as the subject, but precisely, the program is executed by a CPU (processor) to perform a predetermined process. However, to prevent the explanation from becoming redundant, the program may be described as the subject. Therefore, in the following description, the process described with the program as the subject actually means that the CPU executes the process. Further, part or all of the program may be realized by dedicated hardware. Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium. The computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
 まず、以下で説明する実施例で用いられる各種用語について説明する。 First, various terms used in the embodiments described below will be described.
 「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホストやストレージコントローラ等の、ターゲットデバイスに対してリクエストを発行する機器(イニシエータ、またはリクエスターと呼ぶ)に対して提供する記憶領域(記憶空間)のことを意味する。また、以下で説明する実施例に係るストレージ装置は、複数の記憶デバイスから提供されるボリュームを用いて1つの論理的なボリュームを作成し、この論理的なボリュームをホスト等のリクエスターに提供することができる。この論理的なボリュームのことは、本明細書では「論理ボリューム」または「論理デバイス」と呼ばれる。 “Volume” refers to a storage area provided by a target device such as a storage device or storage device to a device (referred to as an initiator or a requester) that issues a request to the target device, such as a host or storage controller. It means (memory space). Also, the storage apparatus according to the embodiment described below creates one logical volume using volumes provided from a plurality of storage devices, and provides this logical volume to a requester such as a host. be able to. This logical volume is referred to herein as a “logical volume” or “logical device”.
 「リモートコピー」とは、ストレージ装置のボリュームの複製を、別のストレージ装置のボリュームに作成する処理を意味する。以下で説明する実施例では、ストレージ装置がリモートコピーを実施する機能を有する。ストレージ装置は、ホストからボリュームに対するライトデータを受領すると、2台のストレージ装置の各ボリュームにライトデータを書き込む。 “Remote copy” means a process of creating a copy of a storage device volume in a volume of another storage device. In the embodiment described below, the storage apparatus has a function of performing remote copy. When the storage apparatus receives write data for the volume from the host, the storage apparatus writes the write data to each volume of the two storage apparatuses.
 また、リモートコピーにより、2つのボリュームにデータが格納される時、ホストからデータが格納されるボリュームのことは「プライマリボリューム」または「P-VOL」と呼ばれる。そしてプライマリボリュームに書き込まれたデータの複製が格納されるボリュームは「セカンダリボリューム」または「S-VOL」と呼ばれる。そしてプライマリボリュームとセカンダリボリュームのペアのことを「ボリュームペア」または「ペア」と呼ぶ。 Also, when data is stored in two volumes by remote copy, the volume in which data is stored from the host is called “primary volume” or “P-VOL”. A volume in which a copy of data written to the primary volume is stored is called a “secondary volume” or “S-VOL”. A pair of a primary volume and a secondary volume is called a “volume pair” or “pair”.
 リモートコピーにより、セカンダリボリュームにデータが格納される際、データ一貫性が保証されるような書込み処理を行うことが求められることがある。本明細書では、各セカンダリボリュームに複数のデータが格納される時に、各データの書き込み順が、ホスト計算機からプライマリボリュームに対して書き込まれた各データの書き込み順と同じ場合、「データ一貫性が保証されている」と呼ぶ。 リ モ ー ト When data is stored in the secondary volume by remote copy, it may be required to perform a write process that ensures data consistency. In this specification, when a plurality of data is stored in each secondary volume, if the order in which each data is written is the same as the order in which each data is written from the host computer to the primary volume, “data consistency is Called “guaranteed”.
 特にミッションクリティカルシステムでは、障害発生時の回復等を考慮して、ホスト計算機からストレージ装置にライトされた各データが、ライト要求の発行順にストレージ装置の記憶媒体に格納されることを期待して設計されていることがある。そのため、ホスト計算機が最初にプライマリボリュームにデータaを書き込み、その後データbを書き込んだ場合、副ストレージ装置のセカンダリボリュームにも、データaがデータbより先に書き込まれることが期待される。逆にデータbがデータaより先に書き込まれ、データbが書き込まれた直後に障害が発生した場合、副ストレージ装置のセカンダリボリュームに格納された複製データはデータ一貫性がない状態となり、業務継続できない事態が発生することがある。 Especially in mission critical systems, it is designed with the expectation that each data written to the storage device from the host computer will be stored in the storage medium of the storage device in the order in which write requests are issued, taking into account recovery in the event of a failure. Have been. For this reason, when the host computer first writes data a to the primary volume and then writes data b, it is expected that the data a is also written to the secondary volume of the secondary storage device before the data b. On the other hand, if data b is written before data a and a failure occurs immediately after data b is written, the replicated data stored in the secondary volume of the secondary storage device becomes inconsistent and the business continuation Things that cannot be done may occur.
 データ一貫性に関して、複数のボリューム(またはボリュームペア)に跨ったデータ一貫性の保証が求められることがある。ホスト計算機が、時刻t1に第1のプライマリボリューム(P-VOL1と呼ぶ)にデータaを書き込み、続いて時刻t2(t2>t1)に第2のプライマリボリューム(P-VOL2と呼ぶ)データbを書き込み、さらに時刻t3(t3>t2)にP-VOL1にデータcを書き込んだ場合を想定する。またP-VOL1のペアボリュームをS-VOL1と呼び、P-VOL2のペアボリュームをS-VOL2と呼ぶ。 ∙ Regarding data consistency, guarantee of data consistency across multiple volumes (or volume pairs) may be required. The host computer writes data a to the first primary volume (referred to as P-VOL1) at time t1, and subsequently writes the second primary volume (referred to as P-VOL2) data b at time t2 (t2> t1). Assume that data is written and data c is written to P-VOL1 at time t3 (t3> t2). The pair volume of P-VOL1 is called S-VOL1, and the pair volume of P-VOL2 is called S-VOL2.
 この時副ストレージ装置が、最初にS-VOL1にデータaを書き込み、続いてS-VOL2にデータbを書き込んだ後に、S-VOL1にデータcを書き込むように動作する場合、P-VOL1とS-VOL1のペアと、P-VOL2とS-VOL2のペアに跨ったデータ一貫性が保証される。以下で説明する実施例に係るストレージ装置はこのように、複数のボリュームペアに跨ったデータ一貫性を保証することができる。データ一貫性が保証されるよう制御されるボリュームペアの集合のことを「コンシステンシーグループ」と呼ぶ。コンシステンシーグループは“CTG”と略記されることもある。 At this time, if the secondary storage device operates to write data c to S-VOL 1 after first writing data a to S-VOL 1 and subsequently writing data b to S-VOL 2, P-VOL 1 and S Data consistency across the -VOL1 pair and the P-VOL2 and S-VOL2 pair is guaranteed. Thus, the storage apparatus according to the embodiment described below can guarantee data consistency across a plurality of volume pairs. A set of volume pairs controlled so as to guarantee data consistency is called a “consistency group”. The consistency group may be abbreviated as “CTG”.
 図1は、本発明の一実施形態に係るストレージシステムを含む情報処理システム(計算機システム)の構成を示す。情報処理システムは、ストレージ装置1a、ストレージ装置1aに接続されるストレージ装置1b、1以上のホスト2、ホスト2’を有する。 FIG. 1 shows a configuration of an information processing system (computer system) including a storage system according to an embodiment of the present invention. The information processing system includes a storage device 1a, a storage device 1b connected to the storage device 1a, one or more hosts 2, and a host 2 '.
 ストレージ装置1aは、Storage Area Network(SAN)3を介してホスト2と接続される。ホスト2は、ユーザが使用するアプリケーションプログラム等が実行される計算機で、ストレージ装置1aに対してI/O要求を発行するリクエスターとして動作する。実施例1では、ホスト2はたとえば、メインフレームあるいはパーソナルコンピュータなどの汎用的な計算機である。ホスト2上で実行されるアプリケーションプログラム等は、ストレージ装置1aが提供するボリューム(論理ボリューム)に、リードコマンドやライトコマンド等のI/O要求を発行する。またホスト2’は、ホスト2と同様の計算機で、ストレージ装置1bにSAN3’を介して接続される。ホスト2’とストレージ装置1bはいわゆる待機系の計算機システムで、ホスト2やストレージ装置1aが障害などの要因により動作しなくなったときに用いられる。 The storage device 1 a is connected to the host 2 via a storage area network (SAN) 3. The host 2 is a computer that executes an application program used by a user, and operates as a requester that issues an I / O request to the storage apparatus 1a. In the first embodiment, the host 2 is a general-purpose computer such as a main frame or a personal computer. An application program or the like executed on the host 2 issues an I / O request such as a read command or a write command to a volume (logical volume) provided by the storage apparatus 1a. The host 2 'is a computer similar to the host 2, and is connected to the storage apparatus 1b via the SAN 3'. The host 2 ′ and the storage device 1 b are so-called standby computer systems, and are used when the host 2 or the storage device 1 a stops operating due to a failure or the like.
 コピーマネージャ6はホスト2と同様の計算機であり、SAN3を介してストレージ装置1aに接続される。コピーマネージャ6は、後述するリモートコピー機能に関する制御指示を発行するための計算機だが、実施例1に係る計算機システムでは必須の装置ではない。コピーマネージャ6については、後述する実施例2等で説明する。 The copy manager 6 is the same computer as the host 2 and is connected to the storage apparatus 1a via the SAN 3. The copy manager 6 is a computer for issuing a control instruction related to the remote copy function described later, but is not an essential device in the computer system according to the first embodiment. The copy manager 6 will be described in a second embodiment described later.
 SAN3はたとえば、ファイバチャネルケーブルやファイバチャネルスイッチによって構成されるネットワークである。またストレージ装置1aは、Wide Area Network(WAN)4を介してストレージ装置1bと接続される。ただしSAN3を介してストレージ装置1aとストレージ装置1bが接続されてもよい。本実施例では、WAN4で接続されたストレージ装置1aとストレージ装置1bの組み合わせを、「ストレージシステム」と呼ぶ。 SAN 3 is a network composed of, for example, fiber channel cables and fiber channel switches. The storage device 1a is connected to the storage device 1b via a wide area network (WAN) 4. However, the storage apparatus 1a and the storage apparatus 1b may be connected via the SAN 3. In this embodiment, the combination of the storage device 1a and the storage device 1b connected by the WAN 4 is referred to as a “storage system”.
 ストレージ装置1aは、ストレージコントローラ(以下、「コントローラ」と略記することもある)10と複数の記憶デバイスを備えるディスクユニット11から構成される。ストレージコントローラ10は、ストレージ装置1aで行われるI/O処理などの制御を実行するCPU12、メモリ13、ホスト2やストレージ装置1bとのデータ転送インタフェースであるフロントエンドインタフェース(FE I/F)14、ディスクユニット11とのデータ転送インタフェースであるバックエンドインタフェース(BE I/F)15、管理用I/F16を有し、これらは内部スイッチ17を介して相互接続されている。なお、CPU12やFE I/F14等の各構成要素の数は、図1に示された数に限定されるものではない。 The storage device 1a includes a storage controller (hereinafter also abbreviated as “controller”) 10 and a disk unit 11 including a plurality of storage devices. The storage controller 10 includes a CPU 12 that executes control such as I / O processing performed in the storage apparatus 1a, a memory 13, a front-end interface (FE I / F) 14 that is a data transfer interface with the host 2 and the storage apparatus 1b, It has a back-end interface (BE I / F) 15 and a management I / F 16 that are data transfer interfaces with the disk unit 11, and these are interconnected via an internal switch 17. In addition, the number of each component, such as CPU12 and FE I / F14, is not limited to the number shown by FIG.
 ディスクユニット11には、ホスト2からのライトデータを格納するための複数の記憶デバイスが搭載され、各記憶デバイスはBE I/F15を介してストレージコントローラ10に接続される。記憶デバイスはたとえば、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として用いるSSD21や、磁気ディスクを記憶媒体として用いるHDD22である。なお、以下では特に断りのない限り、ディスクユニット11に搭載されている記憶デバイスは全てSSD21であるケースについて説明する。 The disk unit 11 is equipped with a plurality of storage devices for storing write data from the host 2, and each storage device is connected to the storage controller 10 via the BE I / F 15. The storage device is, for example, an SSD 21 that uses a nonvolatile semiconductor memory such as a flash memory as a storage medium, or an HDD 22 that uses a magnetic disk as a storage medium. Hereinafter, a case where all the storage devices mounted on the disk unit 11 are SSDs 21 will be described unless otherwise specified.
 BE I/F15は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、記憶デバイス20の用いているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、記憶デバイスに対してデータの転送(リード、ライト)を行う際に用いられる。 BE I / F 15 has at least an interface controller and a transfer circuit. The interface controller is a component for converting a protocol (SAS in one example) used by the storage device 20 into a communication protocol (PCI-Express as an example) used in the storage controller 10. The transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device.
 FE I/F14は、BE I/F15と同様に、少なくともインタフェースコントローラと転送回路を有する。FE I/F14が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。 FE I / F 14 has at least an interface controller and a transfer circuit, similarly to BE I / F 15. The interface controller of the FE I / F 14 is for converting the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. belongs to.
 CPU12は、ストレージ装置1aの各種制御を行う。メモリ13は、CPU12が実行するプログラムや、CPU12が使用するストレージ装置1aの各種管理情報を記憶するために用いられる。またメモリ13は、記憶デバイスに対するI/O対象データを一時的に記憶するためにも用いられる。以下、記憶デバイスに対するI/O対象データを一時的に記憶するために用いられる、メモリ13中の記憶領域を、「キャッシュ」と呼ぶ。メモリ13はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14が構成されてもよい。 The CPU 12 performs various controls of the storage device 1a. The memory 13 is used to store programs executed by the CPU 12 and various management information of the storage device 1a used by the CPU 12. The memory 13 is also used for temporarily storing I / O target data for the storage device. Hereinafter, the storage area in the memory 13 used for temporarily storing the I / O target data for the storage device is referred to as “cache”. The memory 13 is composed of a volatile storage medium such as DRAM or SRAM, but as another embodiment, the memory 14 may be composed of a non-volatile memory.
 ストレージ装置1bは、ストレージ装置1aと同様の構成要素を有する装置である(図1では内部構成の記載を省略している)。ただし、各構成要素(CPU12等)の数はストレージ装置1aと同じである必要はない。以下、ストレージ装置1a、ストレージ装置1bが共通に備えている機能等を説明する場合、ストレージ装置1a、ストレージ装置1bを区別せず、「ストレージ装置1」と表記する。 The storage device 1b is a device having the same components as the storage device 1a (the internal configuration is not shown in FIG. 1). However, the number of components (CPU 12 and the like) does not have to be the same as that of the storage device 1a. Hereinafter, when the functions and the like shared by the storage device 1a and the storage device 1b are described, the storage device 1a and the storage device 1b are not distinguished from each other and are described as “storage device 1”.
 なお、図1では明示していないが、ストレージ装置1bにも管理ホストが接続されてもよい。この管理ホストは、ストレージ装置1aに接続される管理ホスト5と別の端末である場合もあれば、ストレージ装置1aに接続される管理ホスト5が、副ストレージにも接続されている構成であってもよい。 Although not explicitly shown in FIG. 1, a management host may also be connected to the storage device 1b. The management host may be a different terminal from the management host 5 connected to the storage apparatus 1a, or the management host 5 connected to the storage apparatus 1a may be connected to the secondary storage. Also good.
 図2は、SSD21の構成例を示す図である。SSD21は、SSDコントローラ200と複数のFMチップ206を有する。SSDコントローラ200は、プロセッサ(CPU)201、上流I/F202、下流I/F203、メモリ204を有し、これらは内部接続スイッチ205を介して相互接続されている。 FIG. 2 is a diagram illustrating a configuration example of the SSD 21. The SSD 21 includes an SSD controller 200 and a plurality of FM chips 206. The SSD controller 200 includes a processor (CPU) 201, an upstream I / F 202, a downstream I / F 203, and a memory 204, which are interconnected via an internal connection switch 205.
 上流I/F202は、SSD21とストレージコントローラ10間の通信を行うためのインタフェースコントローラである。上流I/F202は、伝送線(SASリンクや、PCIリンク)を介してストレージコントローラ10のBE I/F15に接続される。一方下流I/F203は、SSDコントローラ200とFMチップ206間の通信を行うためのインタフェースコントローラである。 The upstream I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10. The upstream I / F 202 is connected to the BE I / F 15 of the storage controller 10 via a transmission line (SAS link or PCI link). On the other hand, the downstream I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 206.
 CPU201は、ストレージコントローラ10から到来する各種コマンドに係る処理等を行う。メモリ204には、SSD21を制御するためのプログラムである制御プログラム1500や、論理物理変換テーブル1400、物理ページ管理テーブル1450、シーケンス番号管理情報1170等の各種管理情報が記憶される。またメモリ204の一部の領域は、ストレージコントローラ10からライトコマンドと共に送信されてくるライトデータや、FMチップ206から読み出されたデータを一時的に格納するためのバッファとしても用いられる。以下では、メモリ204の領域のうち、バッファとして用いられる領域を「バッファ領域」と呼ぶ。メモリ204には、DRAM等の揮発性メモリが用いられる。ただしメモリ202に不揮発性メモリが使用されても良い。 The CPU 201 performs processing related to various commands coming from the storage controller 10. The memory 204 stores various management information such as a control program 1500 that is a program for controlling the SSD 21, a logical physical conversion table 1400, a physical page management table 1450, and sequence number management information 1170. A part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 206. Hereinafter, an area used as a buffer in the area of the memory 204 is referred to as a “buffer area”. As the memory 204, a volatile memory such as a DRAM is used. However, a nonvolatile memory may be used for the memory 202.
 FMチップ206は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。周知の通り、フラッシュメモリのデータの読み出し・書き込みは、複数のセルの集合で、ページと呼ばれる所定サイズ(たとえば8KB等)の領域ごとに行われる。またデータ消去は、ページの集合であるブロックごとに行われる。 FM chip 206 is a non-volatile semiconductor memory chip such as a NAND flash memory. As is well known, reading / writing of data in the flash memory is performed for each area of a predetermined size (for example, 8 KB) called a page in a set of a plurality of cells. Data erasure is performed for each block which is a set of pages.
 なお一般に、「SSD」とは、半導体メモリ、とくに不揮発性半導体メモリを用いた記憶デバイスで、かつHDDと同じフォームファクタを有するもののことを意味する語である。ただし本実施例においては、SSDは、複数のフラッシュメモリとそれらを制御するコントローラとを備える記憶デバイス全般を意味する語として用いられ、外観形状等が一般的なHDDやSSDのフォームファクタに限定されるものではない。また、SSDに用いられる不揮発性半導体メモリは、フラッシュメモリの他、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリであっても良い。 In general, “SSD” is a storage device using a semiconductor memory, particularly a nonvolatile semiconductor memory, and means a device having the same form factor as an HDD. However, in the present embodiment, SSD is used as a word meaning an entire storage device including a plurality of flash memories and a controller for controlling them, and the external shape and the like are limited to general HDD and SSD form factors. It is not something. In addition to the flash memory, the nonvolatile semiconductor memory used for the SSD is a magnetoresistive memory such as MRAM (Magnetoretic Random Access Memory), a resistance variable memory ReRAM (Resistivity Random Access Memory), and a ferroelectric memory. Various semiconductor memories such as a certain FeRAM (Ferroelectric random access memory) may be used.
 続いて、図3を用いて、本発明の実施例1におけるストレージシステムの論理的な構成、及びストレージシステムで実行されるプログラムの説明を行う。ストレージ装置1aのストレージコントローラ10では少なくとも、I/Oプログラム101、ジャーナル送信プログラム102が実行され、またストレージ装置1bのストレージコントローラ10では少なくとも、ジャーナルリードプログラム151とデステージプログラム152が実行される。またストレージ装置1aは、ペア管理テーブル300、正ジャーナル管理情報600、JVOL管理テーブル800の管理情報を有する。そして副ストレージ装置1bは、ペア管理テーブル300、副ジャーナル管理情報650、JVOL管理テーブル800を有する。これらの情報は、メモリ13に格納される。 Subsequently, the logical configuration of the storage system and the program executed in the storage system according to the first embodiment of the present invention will be described with reference to FIG. At least the I / O program 101 and the journal transmission program 102 are executed in the storage controller 10 of the storage apparatus 1a, and at least the journal read program 151 and the destage program 152 are executed in the storage controller 10 of the storage apparatus 1b. The storage device 1a also has management information of a pair management table 300, primary journal management information 600, and JVOL management table 800. The secondary storage device 1b has a pair management table 300, secondary journal management information 650, and a JVOL management table 800. These pieces of information are stored in the memory 13.
 なお、ストレージ装置1aは上で述べたプログラムの他に、ストレージ装置1bで実行されるプログラム(ジャーナルリードプログラム151とデステージプログラム152)も実行可能に構成されていても良い。逆にストレージ装置1bも上で述べたプログラムの他に、ストレージ装置1aで実行されるプログラム(I/Oプログラム101とジャーナル送信プログラム102)を実行可能に構成されていてもよい。ただし以下の説明では、ストレージ装置1aは、I/Oプログラム101とジャーナル送信プログラム102を実行し、ストレージ装置1bは、ジャーナルリードプログラム151とデステージプログラム152を実行する例を説明する。 The storage device 1a may be configured to be able to execute programs (journal read program 151 and destage program 152) executed by the storage device 1b in addition to the programs described above. Conversely, the storage apparatus 1b may be configured to be able to execute programs (I / O program 101 and journal transmission program 102) executed by the storage apparatus 1a in addition to the programs described above. However, in the following description, an example will be described in which the storage apparatus 1a executes the I / O program 101 and the journal transmission program 102, and the storage apparatus 1b executes the journal read program 151 and the destage program 152.
 まず、これらのプログラムや管理情報の説明の前に、ストレージ装置1で取り扱われるボリューム、及びリモートコピー機能について説明する。 First, before explaining these programs and management information, the volumes handled by the storage apparatus 1 and the remote copy function will be explained.
 最初にボリュームについて説明する。本実施例に係るストレージ装置1に搭載されるSSD21は、ストレージコントローラ10に対して1以上のボリュームを提供する機能を有する。本実施例では、SSD21がストレージコントローラ10に提供するボリュームのことを「物理ボリューム」と呼ぶ。 First, the volume will be explained. The SSD 21 installed in the storage apparatus 1 according to the present embodiment has a function of providing one or more volumes to the storage controller 10. In this embodiment, the volume that the SSD 21 provides to the storage controller 10 is referred to as a “physical volume”.
 物理ボリュームについて、図3を参照しながら説明する。図3に記載のストレージ装置1aは少なくとも3つのSSD21を有する。以下の説明では、この3つのSSD21をそれぞれ、SSD21a-1,SSD21a-2,SSD21a-3と表記する。また同様に、ストレージ装置1bは少なくとも3つのSSD21を有する。この3つのSSD21をそれぞれ、SSD21b-1,SSD21b-2,SSD21b-3と表記する。 The physical volume will be described with reference to FIG. The storage apparatus 1a illustrated in FIG. 3 has at least three SSDs 21. In the following description, these three SSDs 21 are represented as SSD 21a-1, SSD 21a-2, and SSD 21a-3, respectively. Similarly, the storage apparatus 1b has at least three SSDs 21. These three SSDs 21 are represented as SSD 21b-1, SSD 21b-2, and SSD 21b-3, respectively.
 また図3に示されているオブジェクト210-1,211-1,212-1,213-1は、SSD21a-1によって形成される物理ボリュームで、オブジェクト210-2,211-2,212-2,213-2が、SSD21a-2によって形成される物理ボリュームで、オブジェクト210-3,211-3,212-3,213-3が、SSD21a-3によって形成される物理ボリュームである。 Also, the objects 210-1, 211-1, 212-1, 213-1 shown in FIG. 3 are physical volumes formed by the SSD 21a-1, and objects 210-2, 211-2, 212-2, Reference numeral 213-2 is a physical volume formed by the SSD 21a-2, and objects 210-3, 211-3, 212-3, and 213-3 are physical volumes formed by the SSD 21a-3.
 また、ストレージ装置1bが有するSSD21b-1,SSD21b-2,SSD21b-3も、複数の物理ボリュームを定義できる。オブジェクト210-1’,211-1’,212-1’,213-1’は、SSD21b-1によって形成される物理ボリュームで、オブジェクト210-2’,211-2’,212-2’,213-2’が、SSD21b-2によって形成される物理ボリュームで、オブジェクト210-3’,211-3’,212-3’,213-3’が、SSD21b-3によって形成される物理ボリュームである。 Also, the SSD 21b-1, SSD 21b-2, and SSD 21b-3 included in the storage apparatus 1b can define a plurality of physical volumes. Objects 210-1 ′, 211-1 ′, 212-1 ′, and 213-1 ′ are physical volumes formed by the SSD 21b-1, and objects 210-2 ′, 211-2 ′, 212-2 ′, and 213. −2 ′ is a physical volume formed by the SSD 21b-2, and objects 210-3 ′, 211-3 ′, 212-3 ′, and 213-3 ′ are physical volumes formed by the SSD 21b-3.
 なお、各SSD21が形成する物理ボリュームの数は任意であり、図3に示されている数に限定されるわけではない。また各SSD21が形成する物理ボリュームの数や容量は、ユーザ(ストレージ装置1の管理者)が決定することができる。本実施例では、物理ボリューム211-1,211-2,211-3、そして物理ボリューム211-1’,211-2’,211-3’の容量はいずれも同一の例を説明する。また、物理ボリューム212-1,212-2,212-3、212-1’,212-2’,212-3’の容量はいずれも同一で、さらに物理ボリューム212-1,212-2,212-3、212-1’,212-2’,212-3’の容量はいずれも同一とする。 Note that the number of physical volumes formed by each SSD 21 is arbitrary, and is not limited to the number shown in FIG. Also, the number of users and the capacity of the physical volumes formed by each SSD 21 can be determined by the user (the administrator of the storage apparatus 1). In this embodiment, an example will be described in which the physical volumes 211-1, 211-2, 211-3 and the physical volumes 211-1 ', 211-2', 211-3 'have the same capacity. Also, the physical volumes 212-1, 212-2, 212-3, 212-1 ′, 212-2 ′, 212-3 ′ have the same capacity, and the physical volumes 212-1, 212-2, 212 are also the same. −3, 212-1 ′, 212-2 ′, and 212-3 ′ have the same capacity.
 一方、本実施例に係るストレージコントローラ10は、SSD21が提供する複数の物理ボリュームをRAID(Redundant Arrays of Independent (or Inexpensive) Disks)として運用する。本実施例では、RAIDとして運用される物理ボリューム群をRAIDグループと呼ぶ。 On the other hand, the storage controller 10 according to the present embodiment operates a plurality of physical volumes provided by the SSD 21 as RAID (Redundant Array of Independent (or Independent) Disks). In this embodiment, a physical volume group operated as RAID is called a RAID group.
 図3及び図4を用いてRAIDグループの例を説明する。たとえばストレージ装置1aのストレージコントローラ10は、SSD21a-1,21a-2,21a-3のそれぞれが提供する物理ボリュームを1つずつ用いて、RAIDグループを形成する。ストレージ装置1aはたとえば、物理ボリューム211-1,211-2,211-3を用いて、1つのRAIDグループを形成し、また物理ボリューム212-1,212-2,212-3を用いて、1つのRAIDグループを形成し、さらに物理ボリューム213-1,213-2,213-3を用いて、1つのRAIDグループを形成する。ここでは3つの物理ボリュームから1つのRAIDグループが形成される例を説明しているが、RAIDグループを形成するために用いられる物理ボリュームの数は任意で良い。またストレージ装置1bも同様に、複数(ここでは3つ)の物理ボリュームから1つのRAIDグループを形成する。 An example of a RAID group will be described with reference to FIGS. For example, the storage controller 10 of the storage device 1a forms a RAID group using one physical volume provided by each of the SSDs 21a-1, 21a-2, 21a-3. For example, the storage apparatus 1a forms one RAID group using the physical volumes 211-1, 211-2, and 211-3, and uses the physical volumes 212-1, 212-2, and 212-3 to One RAID group is formed, and further, one RAID group is formed using the physical volumes 213-1, 213-2, and 213-3. Here, an example is described in which one RAID group is formed from three physical volumes, but the number of physical volumes used to form a RAID group may be arbitrary. Similarly, the storage apparatus 1b forms one RAID group from a plurality (three in this case) of physical volumes.
 ストレージコントローラ10は、物理ボリューム上の記憶空間を、ストライプブロックと呼ばれる複数の固定サイズ(たとえば64KB等)の記憶領域に分割して管理している。図4において、物理ボリューム212-1,212-2,212-3中の長方形の複数のボックスそれぞれが、ストライプブロックを表している。 The storage controller 10 manages the storage space on the physical volume by dividing it into a plurality of fixed-size storage areas called stripe blocks (for example, 64 KB). In FIG. 4, each of a plurality of rectangular boxes in the physical volumes 212-1, 212-2, 212-3 represents a stripe block.
 良く知られているように、RAIDグループにはデータの他に、データを用いて生成される冗長データ(パリティ等)が格納される。ストライプブロックのうち、データの格納されるストライプブロックは「データストライプ」と呼ばれ、冗長データの格納されるストライプブロックは「パリティストライプ」と呼ばれる。図4において、(P0),(P1)等の、“P”と記載されているストライプブロックがパリティストライプを表し、0(D)等のように“D”が記載されているストライプブロックはデータストライプを表す。 As is well known, redundant data (parity, etc.) generated using data is stored in the RAID group in addition to data. Of the stripe blocks, a stripe block in which data is stored is called a “data stripe”, and a stripe block in which redundant data is stored is called a “parity stripe”. In FIG. 4, the stripe blocks described as “P” such as (P0) and (P1) represent parity stripes, and the stripe blocks described as “D” such as 0 (D) are data Represents a stripe.
 たとえば物理ボリューム211-3の先頭に位置するパリティストライプ(P0)に格納される冗長データを作成する際、RAIDグループ内のその他の物理ボリューム(211-1,211-2)の先頭に位置するデータストライプ(0(D),1(D))に格納されるデータに対して、排他的論理和(XOR)等の演算を施すことによって、冗長データを生成する。パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット(たとえば上の例では、パリティストライプ(P0)とデータストライプ0(D)及び1(D)のセット)は、「ストライプライン」と呼ばれる。 For example, when creating redundant data stored in the parity stripe (P0) located at the head of the physical volume 211-3, data located at the head of the other physical volumes (211-1 and 211-2) in the RAID group Redundant data is generated by performing an operation such as exclusive OR (XOR) on the data stored in the stripe (0 (D), 1 (D)). A parity stripe and a set of data stripes used to generate redundant data stored in the parity stripe (for example, in the above example, a set of parity stripe (P0) and data stripes 0 (D) and 1 (D)) ) Is called a “striped line”.
 本実施例に係るストレージ装置1が形成するRAIDグループでは、1つのストライプラインに属する各ストライプブロックは、物理ボリューム(図4の例では211-1~211-3)の記憶空間の同じ位置(アドレス)に存在する。またストレージコントローラ10は、各SSD21が提供する物理ボリュームを1つずつ用いてRAIDグループを形成する。別の言い方をすると、RAIDグループに属する各物理ボリュームは、いずれも異なるSSD21から提供されたものでなければならない。これは、いずれかのSSD21に障害が発生してアクセス不可能な状態になった時に、ストレージコントローラ10は残りのSSD21内に格納されたデータ(または冗長データ)を用いて、障害が発生したSSD21に格納されていたデータを復元しなければならないからである。 In the RAID group formed by the storage apparatus 1 according to the present embodiment, each stripe block belonging to one stripe line has the same location (address) in the storage space of the physical volume (21-1 to 211-3 in the example of FIG. 4). ). Further, the storage controller 10 forms a RAID group using one physical volume provided by each SSD 21. In other words, each physical volume belonging to the RAID group must be provided from a different SSD 21. This is because when one of the SSDs 21 fails and becomes inaccessible, the storage controller 10 uses the data (or redundant data) stored in the remaining SSDs 21 to cause the failed SSD 21. This is because the data stored in the disk must be restored.
 ストレージコントローラ10はさらに、RAIDグループの領域を用いて形成される1以上の論理的な記憶空間をホスト2に提供する。ホスト2に提供される論理的な記憶空間を「論理ボリューム」と呼ぶ。図4に、物理ボリューム211-1,211-2,211-3から形成されるRAIDグループと、論理ボリュームの関係を示す。論理ボリュームは、RAIDグループ内の領域のうち、データストライプのみを用いて形成される記憶空間である。 The storage controller 10 further provides the host 2 with one or more logical storage spaces formed using the RAID group area. A logical storage space provided to the host 2 is called a “logical volume”. FIG. 4 shows the relationship between the RAID groups formed from the physical volumes 211-1, 211-2, 211-3 and logical volumes. A logical volume is a storage space that is formed using only data stripes in an area within a RAID group.
 ホスト2がストレージ装置1にデータの書き込みを要求する際、論理ボリューム上の位置情報(アドレス)が含まれたコマンド(ライトコマンド)をストレージ装置1に発行する。ストレージコントローラ10はライトコマンドに含まれているアドレスを、物理ボリュームのアドレスに変換する処理を行う。 When the host 2 requests the storage apparatus 1 to write data, it issues a command (write command) including location information (address) on the logical volume to the storage apparatus 1. The storage controller 10 performs processing for converting the address included in the write command into the address of the physical volume.
 たとえば論理ボリューム上の領域とRAIDグループ上のデータストライプが図4に示された関係にあり、ホスト2が論理ボリューム上の先頭位置を指定したライトコマンドを発行した場合、ストレージコントローラ10はアドレス変換を行うことで、ホスト2から指定されたデータ書き込み位置が、物理ボリューム211-1上の先頭のデータストライプ(0(D))に該当することを認識し、認識した位置にデータを書き込む。さらにストレージコントローラ10は、データストライプ0(D)と同一ストライプラインに属するパリティストライプ(P0)の存在する物理ボリューム(つまり物理ボリューム211-3)と、パリティストライプ(P0)の位置(つまり物理ボリューム211-3の先頭である)を特定する。その後ストレージコントローラ10は、RAID技術に従ってパリティストライプ(P0)に書き込むべき冗長データを生成し、パリティストライプ(P0)に冗長データを書き込む。 For example, when the area on the logical volume and the data stripe on the RAID group have the relationship shown in FIG. 4, and the host 2 issues a write command specifying the head position on the logical volume, the storage controller 10 performs address conversion. By doing so, it is recognized that the data write position designated by the host 2 corresponds to the first data stripe (0 (D)) on the physical volume 211-1, and data is written to the recognized position. Further, the storage controller 10 has a physical volume (that is, physical volume 211-3) in which the parity stripe (P0) belonging to the same stripe line as the data stripe 0 (D) exists, and a position of the parity stripe (P0) (that is, physical volume 211). -3 at the beginning). Thereafter, the storage controller 10 generates redundant data to be written to the parity stripe (P0) according to the RAID technology, and writes the redundant data to the parity stripe (P0).
 続いてリモートコピー機能について概要を説明する。本発明の実施例1に係るストレージ装置1では、ジャーナルを用いたリモートコピーを行う。ジャーナルを用いたリモートコピーは、たとえば特許文献1(または米国特許出願公開第2005/0073887号明細書)等に開示されている機能であるので、以下では本発明に関係する部分の概要のみ説明する。 Next, an overview of the remote copy function will be explained. The storage apparatus 1 according to the first embodiment of the present invention performs remote copy using a journal. Since remote copy using a journal is a function disclosed in, for example, Patent Document 1 (or US Patent Application Publication No. 2005/0073887), only the outline of the portion related to the present invention will be described below. .
 リモートコピー機能は、ストレージ装置1aのボリュームのデータの複製(ミラーコピー)をストレージ装置1bのボリュームに作成する機能である。逆にリモートコピー機能によって、ストレージ装置1bのボリュームに書き込まれたデータの複製を、ストレージ装置1aのボリュームに作成することも可能である。ただし本実施例では特に断りのない限り、ホスト2からストレージ装置1aのボリュームに書き込まれたデータが、ストレージ装置1bに複製される例を説明する。そのため、ストレージ装置1aのことを「正ストレージ装置1a」と表記し、ストレージ装置1bのことを「副ストレージ装置1b」と表記することがある。 The remote copy function is a function for creating a copy (mirror copy) of data in the volume of the storage apparatus 1a in the volume of the storage apparatus 1b. Conversely, a copy of data written to the volume of the storage device 1b can be created in the volume of the storage device 1a by the remote copy function. However, in this embodiment, an example will be described in which data written from the host 2 to the volume of the storage device 1a is replicated to the storage device 1b unless otherwise specified. For this reason, the storage device 1a may be referred to as “primary storage device 1a”, and the storage device 1b may be referred to as “secondary storage device 1b”.
 本実施例では、複製元となる正ストレージ装置1aの物理ボリュームのことをプライマリボリューム(P-VOL)と呼び、P-VOLのデータの複製先であるストレージ装置1bの物理ボリュームのことを、セカンダリボリューム(S-VOL)と呼ぶ。またP-VOLの複製データが格納されるS-VOLのことを、P-VOLと「ペア関係にあるボリューム」、あるいはP-VOLの「ペアボリューム」と呼ぶ(逆に、S-VOLの複製元データが格納されているP-VOLも、当該S-VOLとペア関係にあるボリューム、と呼ばれることもある)。 In this embodiment, the physical volume of the primary storage apparatus 1a that is the replication source is called a primary volume (P-VOL), and the physical volume of the storage apparatus 1b that is the replication destination of the P-VOL data is the secondary volume. This is called a volume (S-VOL). The S-VOL in which the P-VOL copy data is stored is called a “paired volume” with the P-VOL, or the “pair volume” of the P-VOL (in contrast, the S-VOL copy). The P-VOL in which the original data is stored may also be referred to as a volume having a pair relationship with the S-VOL).
 図3の例では、正ストレージ装置1aのSSD21a-1,21a-2,21a-3が有する物理ボリューム211-1,212-1,213-1,211-2,212-2,213-2,211-3,212-3,213-3がP-VOLで、副ストレージ装置1bのSSD21b-1,21b-2,21b-3が有する物理ボリューム211-1’,212-1’,213-1’,211-2’,212-2’,213-2’,211-3’,212-3’,213-3’がS-VOLである。また本実施例では、これらの物理ボリュームのうち、参照番号が同じ物理ボリューム同士がペア関係にあるという前提で説明を行う。たとえば物理ボリューム211-1と物理ボリューム211-1’がペア関係にある。 In the example of FIG. 3, the physical volumes 211-1, 212-1, 212-1, 211-2, 212-2, 213-2, which the SSDs 21a-1, 21a-2, 21a-3 of the primary storage apparatus 1a have. 211-3, 212-3, 213-3 are P-VOLs, and physical volumes 211-1 ', 212-1', 213-1 included in the SSDs 21b-1, 21b-2, 21b-3 of the secondary storage system 1b. ', 211-2', 212-2 ', 213-2', 211-3 ', 212-3', 213-3 'are S-VOLs. In this embodiment, the description will be made on the assumption that among these physical volumes, physical volumes having the same reference number are in a pair relationship. For example, the physical volume 211-1 and the physical volume 211-1 'are in a pair relationship.
 ジャーナルを用いたリモートコピーでは、コピーデータを一時的に格納するためのボリュームが用いられる。このボリュームのことをジャーナルボリュームと呼ぶ。本実施例に係るストレージ装置1では、各SSD21は上で述べたP-VOLやS-VOLとして用いられる物理ボリューム(211-1等)に加えて、ジャーナルボリューム210をストレージコントローラ10に提供する。図3において、オブジェクト210-1,210-2,210-3,210-1’,210-2’,210-3’がジャーナルボリュームである。なお、ジャーナルボリュームは「JVOL」と略記されることもある。 In remote copy using a journal, a volume for temporarily storing copy data is used. This volume is called a journal volume. In the storage apparatus 1 according to the present embodiment, each SSD 21 provides a journal volume 210 to the storage controller 10 in addition to the physical volume (211-1 etc.) used as the P-VOL and S-VOL described above. In FIG. 3, objects 210-1, 210-2, 210-3, 210-1 ', 210-2', 210-3 'are journal volumes. The journal volume may be abbreviated as “JVOL”.
 本実施例に係るストレージ装置1における、リモートコピーによるコピー処理の流れは以下の通りである。正ストレージ装置1aがホスト2からライトデータを受け付けると、正ストレージ装置1aのストレージコントローラ10は、P-VOLを有するSSD21にジャーナル作成コマンドを送信する。ジャーナル作成コマンドの内容は後述する。 The flow of copy processing by remote copy in the storage apparatus 1 according to the present embodiment is as follows. When the primary storage device 1a receives write data from the host 2, the storage controller 10 of the primary storage device 1a transmits a journal creation command to the SSD 21 having the P-VOL. The contents of the journal creation command will be described later.
 本実施例に係るストレージ装置1では、SSD21がジャーナルを作成する機能を有する。ジャーナル作成コマンドを受領したSSD21は、P-VOLにライトデータを格納するとともに、ジャーナルを作成し、ジャーナルをJVOLに格納する。なお、SSD21がジャーナル作成を行うため、SSD21は他のSSD21が有するP-VOLやJVOLへのデータ書き込みはできない。たとえばSSD21a-1は、JVOL210-1にジャーナルを格納すること、そしてP-VOL211-1,212-1,213-1への書き込みのみが可能である。 In the storage device 1 according to the present embodiment, the SSD 21 has a function of creating a journal. Upon receiving the journal creation command, the SSD 21 stores write data in the P-VOL, creates a journal, and stores the journal in the JVOL. Since the SSD 21 creates a journal, the SSD 21 cannot write data to the P-VOL or JVOL that other SSDs 21 have. For example, the SSD 21a-1 can store a journal in the JVOL 210-1, and can only write to the P-VOL 211-1, 212-1 and 213-1.
 正ストレージ装置1aのJVOLに格納されたジャーナルは、WAN4を経由して副ストレージ装置1bに送信される。副ストレージ装置1bのSSD21は、ジャーナルの内容を解析し、ジャーナルに含まれているデータ(P-VOLに格納されたデータの複製)をS-VOLに反映する機能を有する。副ストレージ装置1bはこの機能を用いて、受領したジャーナルのデータをS-VOLに反映させる。本明細書では、ジャーナルのデータをS-VOLに反映する処理のことを、「ジャーナルリストア処理」または単に「リストア処理」と呼ぶ。 The journal stored in the JVOL of the primary storage apparatus 1a is transmitted to the secondary storage apparatus 1b via the WAN 4. The SSD 21 of the secondary storage device 1b has a function of analyzing the contents of the journal and reflecting the data contained in the journal (a copy of the data stored in the P-VOL) in the S-VOL. The secondary storage device 1b uses this function to reflect the received journal data in the S-VOL. In this specification, the process of reflecting journal data in the S-VOL is referred to as “journal restore process” or simply “restore process”.
 本実施例に係るストレージ装置では、正ストレージ装置1aの1つのSSD21で作成されたジャーナルが、副ストレージ装置1bの1つのSSD21へと送信される。正ストレージ装置1aと副ストレージ装置1bの有するSSD21の関係について、図3を用いて説明する。 In the storage apparatus according to the present embodiment, a journal created by one SSD 21 of the primary storage apparatus 1a is transmitted to one SSD 21 of the secondary storage apparatus 1b. The relationship between the SSDs 21 of the primary storage apparatus 1a and the secondary storage apparatus 1b will be described with reference to FIG.
 正ストレージ装置1aには3つのSSD21(21a-1,21a-2,21a-3があり、副ストレージ装置1bには3つのSSD21(21b-1,21b-2,21b-3)がある。そして、正ストレージ装置1aの3つのSSD21のうち、たとえばSSD21a-1で作成されたジャーナルは、SSD21b-1に送信される。同様に、SSD21a-2で作成されたジャーナルは、SSD21b-2に送信され、SSD21a-3で作成されたジャーナルは、SSD21b-3に送信される。そのため、正ストレージ装置1aのSSD21a-1の有するP-VOLの複製は、SSD21b-1が有する物理ボリュームに格納される。 The primary storage device 1a has three SSDs 21 (21a-1, 21a-2, 21a-3), and the secondary storage device 1b has three SSDs 21 (21b-1, 21b-2, 21b-3). Of the three SSDs 21 of the primary storage system 1a, for example, a journal created by the SSD 21a-1 is transmitted to the SSD 21b-1, and similarly, a journal created by the SSD 21a-2 is transmitted to the SSD 21b-2. The journal created by the SSD 21a-3 is transmitted to the SSD 21b-3, so that the P-VOL copy of the SSD 21a-1 of the primary storage device 1a is stored in the physical volume of the SSD 21b-1.
 P-VOL(とジャーナルボリューム)を有するSSD21は「正SSD」と呼ばれ、また正SSDの作成したジャーナルが送信される副ストレージ装置1bのSSD21は「副SSD」と呼ばれる。また正SSDの作成したジャーナルが送信される副ストレージ装置1bのSSD21は、正SSDとペア関係にあるSSD(あるいは正SSDのペアSSD)と呼ばれることもある。逆に副SSDに格納されるジャーナルを送信する正SSDも、副SSDとペア関係にあるSSD(あるいは副SSDのペアSSD)と呼ばれることもある。正SSDの数と、副SSDの数は等しい。 The SSD 21 having the P-VOL (and journal volume) is called “primary SSD”, and the SSD 21 of the secondary storage device 1b to which the journal created by the primary SSD is transmitted is called “secondary SSD”. Further, the SSD 21 of the secondary storage device 1b to which the journal created by the primary SSD is transmitted may be referred to as an SSD having a pair relationship with the primary SSD (or a pair SSD of the primary SSD). Conversely, a primary SSD that transmits a journal stored in the secondary SSD may also be referred to as an SSD that is paired with the secondary SSD (or a secondary SSD of the secondary SSD). The number of primary SSDs and the number of secondary SSDs are equal.
 図5に、ストレージコントローラ10の管理するペア管理テーブル300の構成例を示す。ペア管理テーブル300は、ボリュームペアについての情報を管理するためのテーブルであり、ストレージ装置1a、1bの両方がこのペア管理テーブル300を有する。ペア管理テーブル300の有する1つの行が、1つのボリュームペアについての情報を表す。ペア管理テーブル300に設定される情報は、ユーザ(ストレージ装置1の管理者)が管理ホスト5(またはホスト2)から設定することができる。たとえばユーザが正ストレージ装置1aに接続された管理ホスト5から情報設定を行うと、正ストレージ装置1aのペア管理テーブル300と副ストレージ装置1bのペア管理テーブル300の両方に、同じ情報が設定される。 FIG. 5 shows a configuration example of the pair management table 300 managed by the storage controller 10. The pair management table 300 is a table for managing information about volume pairs, and both the storage apparatuses 1 a and 1 b have this pair management table 300. One row of the pair management table 300 represents information about one volume pair. Information set in the pair management table 300 can be set from the management host 5 (or host 2) by a user (an administrator of the storage apparatus 1). For example, when the user sets information from the management host 5 connected to the primary storage apparatus 1a, the same information is set in both the pair management table 300 of the primary storage apparatus 1a and the pair management table 300 of the secondary storage apparatus 1b. .
 ペア管理テーブル300の各カラムに記録される情報について説明する。ペア番号301は、ボリュームペアに付される識別番号である。状態303は、ボリュームペアの状態を表す情報(正常にデータ複製が行われているか等を表す情報)である。PDKC#304は、ボリュームペアのうちP-VOLの存在するストレージ装置1のシリアル番号であり、P-VOL#305はP-VOLの識別子である。同様にSDKC#306は、ボリュームペアのうちS-VOLの存在するストレージ装置1のシリアル番号であり、S-VOL#307はS-VOLの識別子である。 Information recorded in each column of the pair management table 300 will be described. The pair number 301 is an identification number assigned to the volume pair. The status 303 is information indicating the status of the volume pair (information indicating whether data replication is normally performed). PDKC # 304 is a serial number of the storage apparatus 1 in which the P-VOL exists in the volume pair, and P-VOL # 305 is an identifier of the P-VOL. Similarly, SDKC # 306 is the serial number of the storage apparatus 1 in which S-VOL exists in the volume pair, and S-VOL # 307 is the identifier of S-VOL.
 なお、物理ボリュームの識別子の付与規則には、任意の規則が採用されてもよいが、本実施例ではP-VOLやS-VOL等の物理ボリュームの識別子に、物理ボリュームの存在するSSD21の識別番号が含まれる例を説明する。これにより、物理ボリュームの識別子を参照することで、物理ボリュームがどのSSD21に存在するものか識別可能になる。本実施例で用いられる物理ボリュームの識別子には、2つの数値がコロン(:)で連結されたものが用いられる。コロンで連結された2つの値のうち、左側の値はSSD21の識別番号を表す。一方右側の値は、SSD21内に定義された複数の物理ボリューム毎に付与された識別番号で、これはSSD21内で一意な番号であればよい。本実施例では物理ボリューム毎に付与されている識別番号(物理ボリュームの識別子のうち、コロンの右側の数値)のことを、「内部識別番号」と呼ぶこともある。また本実施例では、ジャーナルボリュームに付与される内部識別番号は00に決められており、その他の物理ボリュームの内部識別番号には01以上の整数値が用いられる例を説明する。 An arbitrary rule may be adopted as the physical volume identifier assignment rule. In this embodiment, the identification of the SSD 21 in which the physical volume exists is added to the physical volume identifier such as P-VOL or S-VOL. An example in which a number is included will be described. As a result, by referring to the identifier of the physical volume, it is possible to identify which SSD 21 the physical volume exists in. As the identifier of the physical volume used in this embodiment, a value obtained by connecting two numerical values with a colon (:) is used. Of the two values connected by a colon, the value on the left represents the identification number of the SSD 21. On the other hand, the value on the right side is an identification number assigned to each of the plurality of physical volumes defined in the SSD 21, and this may be a unique number in the SSD 21. In the present embodiment, an identification number assigned to each physical volume (a numerical value on the right side of the colon among the physical volume identifiers) may be referred to as an “internal identification number”. In this embodiment, the internal identification number assigned to the journal volume is set to 00, and an example in which an integer value of 01 or more is used as the internal identification number of other physical volumes will be described.
 図5を用いて一例を説明する。ペア番号301が“2”のボリュームペアのP-VOL#305は“01:02”である。これ、P-VOLが、プライマリストレージ(ストレージ装置1a)内のSSD21のうち、識別番号が“01”のSSD21内に存在することを意味し、またこのP-VOLに付与されている内部識別番号が“02”であることを意味する。 An example will be described with reference to FIG. The P-VOL # 305 of the volume pair whose pair number 301 is “2” is “01:02”. This means that the P-VOL exists in the SSD 21 with the identification number “01” among the SSDs 21 in the primary storage (storage device 1a), and the internal identification number assigned to this P-VOL. Means “02”.
 ただし、上で述べた物理ボリュームの識別子のフォーマットは一例であり、物理ボリュームの識別子に上で説明した以外のフォーマットが用いられてもよい。また以下の説明において、識別番号がxのSSD21を、“SSD#x”と表記する(xは01等の数値である)。また、付与されている内部識別番号がyのP-VOL(またはS-VOL)を、“P-VOL#y”(または“S-VOL#y”)と表記する(yは01等の数値である)。 However, the format of the physical volume identifier described above is merely an example, and formats other than those described above may be used for the physical volume identifier. In the following description, the SSD 21 with the identification number x is denoted as “SSD # x” (x is a numerical value such as 01). Also, the assigned P-VOL (or S-VOL) with the internal identification number y is expressed as “P-VOL # y” (or “S-VOL # y”) (y is a numerical value such as 01) Is).
 本実施例に係るストレージ装置1は、複数のボリュームペアのうち、データ一貫性が保証される(書き込み順序が保証される)ボリュームペアのセットを、コンシステンシーグループ(CTGと略記されることもある)と呼ばれるグループとして管理する。ストレージ装置1は複数のCTGを管理することが可能で、各CTGには一意な識別番号が付与される。この識別番号をCTG番号と呼び、またCTG番号をCTG#と表記することもある。ペア管理テーブル300のカラムCTG#302には、ボリュームペアの属するCTGのCTG#が格納される。CTG#302に格納された値が同じボリュームペアは同一CTGに属し、ストレージ装置1により、データ一貫性が保証されるよう制御される。 In the storage apparatus 1 according to the present embodiment, among a plurality of volume pairs, a set of volume pairs for which data consistency is guaranteed (write order is guaranteed) may be abbreviated as a consistency group (CTG). ) To manage as a group. The storage apparatus 1 can manage a plurality of CTGs, and each CTG is assigned a unique identification number. This identification number is called a CTG number, and the CTG number may be written as CTG #. The column CTG # 302 of the pair management table 300 stores the CTG # of the CTG to which the volume pair belongs. Volume pairs having the same value stored in the CTG # 302 belong to the same CTG, and the storage device 1 is controlled to ensure data consistency.
 なお、本実施例に係るストレージ装置1では、先に述べたとおり、各SSD21から物理ボリュームを1つずつ選択してRAIDグループが形成される。本実施例では、RAIDグループに属する各物理ボリュームは、必ず同一のCTGに属するよう、CTGが形成される必要がある。また、同じSSD21に属する物理ボリュームも、同一のCTGに属する。 In the storage apparatus 1 according to the present embodiment, as described above, one physical volume is selected from each SSD 21 to form a RAID group. In this embodiment, CTGs must be formed so that each physical volume belonging to a RAID group always belongs to the same CTG. Further, physical volumes belonging to the same SSD 21 also belong to the same CTG.
 図3の例では、ストレージ装置1aの物理ボリューム211-1,211-2,211-3は同一RAIDグループに属する。そのため物理ボリューム211-1,211-2,211-3とこれらのペアボリューム(物理ボリューム211-1’,211-2’,211-3’)は同一CTGに属する。また物理ボリューム211-1,212-1,213-1は同一SSD21に属するため、これらは同一CTGに属する。 In the example of FIG. 3, the physical volumes 211-1, 211-2, 211-3 of the storage apparatus 1a belong to the same RAID group. Therefore, the physical volumes 211-1, 211-2, 211-3 and their paired volumes (physical volumes 211-1 ', 211-2', 211-3 ') belong to the same CTG. Further, since the physical volumes 211-1, 212-1 and 213-1 belong to the same SSD 21, they belong to the same CTG.
 続いて図6を用いて、ジャーナルボリューム210に格納されるジャーナルの構造(フォーマット)の概要を説明する。本発明の実施例1に係るストレージ装置1aでは、SSD21がジャーナルを作成する。 Subsequently, an outline of the structure (format) of the journal stored in the journal volume 210 will be described with reference to FIG. In the storage device 1a according to the first embodiment of the present invention, the SSD 21 creates a journal.
 SSD21にジャーナルを作成させるため、ストレージ装置1aのストレージコントローラ10は、SSD21にジャーナル作成を指示するためのコマンドを発行する。本実施例に係るSSD21は、HDD等の公知の記憶デバイスがサポートしているコマンド(リードコマンドやライトコマンド)に加えて、ジャーナル作成を指示するためのコマンド(「ジャーナル作成コマンド」と呼ばれる)とリストア処理を指示するためのコマンド(「ジャーナルリストアコマンド」と呼ばれる)をサポートしている。ジャーナル作成コマンドやジャーナルリストアコマンドの詳細は後述するが、ジャーナル作成コマンドには、P-VOLに格納すべきライトデータと、ジャーナルを作成するために必要な情報とが含まれる。 In order to cause the SSD 21 to create a journal, the storage controller 10 of the storage device 1a issues a command for instructing the SSD 21 to create a journal. The SSD 21 according to this embodiment includes a command (referred to as a “journal creation command”) for instructing journal creation in addition to commands (read command and write command) supported by known storage devices such as HDDs. Supports a command for instructing restore processing (called "journal restore command"). Details of the journal creation command and the journal restore command will be described later. The journal creation command includes write data to be stored in the P-VOL and information necessary for creating a journal.
 ジャーナル作成コマンドを受領したSSD21は、コマンドの内容に従ってジャーナルを作成してジャーナルボリュームに格納し、またP-VOLにもライトデータを格納する。 Upon receiving the journal creation command, the SSD 21 creates a journal according to the contents of the command and stores it in the journal volume, and also stores write data in the P-VOL.
 ジャーナルボリューム210に格納されるジャーナルのフォーマットについて、図6を参照しながら説明する。ジャーナルは、ホスト2からのライトデータである“ジャーナルデータ”と、ジャーナルデータの管理情報を含む。ジャーナルデータの管理情報は、「管理情報」あるいは「JNCB」と呼ばれる。管理情報のサイズは固定長で、ジャーナルデータのサイズは、ホスト2から書き込まれるライトデータの長さに依存して変動する。 The format of the journal stored in the journal volume 210 will be described with reference to FIG. The journal includes “journal data” that is write data from the host 2 and management information of the journal data. The management information of the journal data is called “management information” or “JNCB”. The size of management information is a fixed length, and the size of journal data varies depending on the length of write data written from the host 2.
 本実施例に係るSSD21では、ジャーナルデータと管理情報とは、それぞれ別の領域に格納される。ジャーナルデータの格納される領域をライトデータ領域720と呼び、管理情報の格納される領域を管理情報領域710と呼ぶ。また、管理情報領域710の先頭アドレスを「管理情報領域先頭アドレス」と呼び、ライトデータ領域720の先頭アドレスを「ライトデータ領域先頭アドレス」と呼ぶ。 In the SSD 21 according to this embodiment, journal data and management information are stored in different areas. An area in which journal data is stored is called a write data area 720, and an area in which management information is stored is called a management information area 710. Also, the head address of the management information area 710 is called “management information area head address”, and the head address of the write data area 720 is called “write data area head address”.
 管理情報領域710とライトデータ領域720は、一種のリングバッファのように用いられる。ジャーナルデータはライトデータ領域先頭アドレスからシーケンシャルに書き込まれていく。ライトデータ領域720の終端(ジャーナルボリュームの終端アドレス)までジャーナルデータが書き込まれた場合、ストレージ装置1は再びライトデータ領域720の先頭からジャーナルを書き込む。ストレージ装置1がJNCBを書き込む場合も同様であり、JNCBは作成された順に管理情報領域先頭アドレスからシーケンシャル書き込みされ、管理情報領域710の終端(ライトデータ領域先頭アドレスの1つ前のアドレス)までJNCBが書き込まれた場合、ストレージ装置1は再び管理情報領域先頭アドレスからJNCBを書き込む。 The management information area 710 and the write data area 720 are used like a kind of ring buffer. Journal data is written sequentially from the start address of the write data area. When journal data is written up to the end of the write data area 720 (end address of the journal volume), the storage apparatus 1 writes the journal from the beginning of the write data area 720 again. The same applies when the storage device 1 writes JNCB, and the JNCB is written sequentially from the start address of the management information area in the order in which it was created, and until the end of the management information area 710 (the address immediately before the start address of the write data area) Is written, the storage apparatus 1 again writes JNCB from the start address of the management information area.
 管理情報(JNCB)のフォーマットについて説明する。JNCBには、SEQ#701、Timestamp702、VOL#703、S-VOL#703’、LBA704、Length705、ポインタ706が含まれる。各ジャーナルには、ジャーナルの作成された順序を示す番号が付与される。本実施例では、このジャーナルに付与される番号のことを「シーケンス番号」と呼ぶ。またシーケンス番号は“SEQ#”と略記されることもある。シーケンス番号には、0から始まる連続番号が使用される。つまり最初に作成されるジャーナルのSEQ#は0で、それ以降に作成されるジャーナルには順に1,2,3,...の連続番号が付与される。SEQ#701は、シーケンス番号が格納される領域である。なお各ジャーナルに付与されるSEQ#は、SSD21が決定する。 The format of management information (JNCB) will be described. The JNCB includes SEQ # 701, Timestamp 702, VOL # 703, S-VOL # 703 ', LBA704, Length705, and pointer 706. Each journal is given a number indicating the order in which the journals were created. In this embodiment, the number assigned to this journal is called a “sequence number”. The sequence number may be abbreviated as “SEQ #”. A sequence number starting from 0 is used as the sequence number. That is, SEQ # of the journal created first is 0, and journals created thereafter are sequentially 1, 2, 3,. . . Are assigned consecutive numbers. SEQ # 701 is an area for storing a sequence number. The SEQ 21 assigned to each journal is determined by the SSD 21.
 Timestamp702は、ストレージ装置1aがホスト2からライトデータを受領した時刻であり、この情報はホスト2から与えられる。詳細は後述する。 Timestamp 702 is the time at which the storage apparatus 1 a receives write data from the host 2, and this information is given from the host 2. Details will be described later.
 VOL#703、LBA704、そしてLength705は、ホスト2からのライトデータの書き込み位置を特定するための情報である。具体的にはVOL#703、LBA704は、P-VOL上の位置(アドレス)を表し、Length705はライトデータのデータ長を表す。つまり、ホスト2からのライトデータは、VOL#703で特定される物理ボリューム上の、LBA704で特定されるアドレスから始まる連続領域に書き込まれていることを表している。また書き込まれるデータの長さはLength705と等しい。 VOL # 703, LBA 704, and Length 705 are information for specifying the write data write position from the host 2. Specifically, VOL # 703 and LBA 704 represent the position (address) on the P-VOL, and Length 705 represents the data length of the write data. That is, the write data from the host 2 is written in a continuous area starting from the address specified by the LBA 704 on the physical volume specified by the VOL # 703. The length of data to be written is equal to Length 705.
 一方、S-VOL#703’は、P-VOLのペアボリューム(つまりVOL#703で特定される物理ボリュームとペア関係にある物理ボリューム)の識別番号が格納される。 On the other hand, the S-VOL # 703 'stores the identification number of the P-VOL pair volume (that is, the physical volume that is paired with the physical volume specified by the VOL # 703).
 ポインタ706は、ジャーナルデータの書き込まれているジャーナルボリューム上の位置を表す情報で、ジャーナルボリューム210上のLBAである。ジャーナルデータはポインタ706で特定される位置から始まる連続領域に書き込まれ、書き込まれるデータの長さはLength705と等しい。JNCBにはこのような情報が含まれているので、ストレージコントローラ10はJNCBを読み出してその内容を調べることにより、ジャーナルデータがジャーナルボリュームのどこに格納されているかを認識することができる。なお、VOL#703、LBA704で特定される位置に書き込まれるデータと、ポインタ706で特定される位置に書き込まれるデータは、いずれも同じデータである(つまりジャーナル作成コマンドに含まれているライトデータである)。 The pointer 706 is information indicating a position on the journal volume where journal data is written, and is an LBA on the journal volume 210. The journal data is written in a continuous area starting from the position specified by the pointer 706, and the length of the written data is equal to Length 705. Since such information is included in the JNCB, the storage controller 10 can recognize where the journal data is stored in the journal volume by reading the JNCB and examining its contents. The data written at the position specified by VOL # 703 and LBA 704 and the data written at the position specified by pointer 706 are both the same data (that is, the write data included in the journal creation command). is there).
 次にジャーナル作成コマンドのフォーマットについて、図7を用いて説明する。ジャーナル作成コマンド750には、オペレーションコード(Opcode)751、Timestamp752、VOL#753、S-VOL#753’、LBA754、JLBA755、CBLBA756、Length757、ライトデータ758を含む。 Next, the format of the journal creation command will be described with reference to FIG. The journal creation command 750 includes an operation code (Opcode) 751, Timestamp 752, VOL # 753, S-VOL # 753 ', LBA754, JLBA755, CBLBA756, Length757, and write data 758.
 オペレーションコード(Opcode)751は、コマンドの種類を表す情報であり、ジャーナル作成コマンドのOpcode751には、ジャーナル作成コマンドであることを示す情報が格納される。SSD21はストレージコントローラ10から受領したコマンドのOpcode751がジャーナル作成コマンドを表すコードであった場合、ジャーナル作成処理を行う。ライトデータ758は、ストレージコントローラ10が書き込みを要求しているライトデータであり、SSD21はこのライトデータ758に含まれているデータをP-VOLとジャーナルボリュームに書き込む。 The operation code (Opcode) 751 is information indicating the type of command, and information indicating the journal creation command is stored in the Opcode 751 of the journal creation command. The SSD 21 performs journal creation processing when the Opcode 751 of the command received from the storage controller 10 is a code representing a journal creation command. The write data 758 is write data that the storage controller 10 requests to write, and the SSD 21 writes the data included in the write data 758 to the P-VOL and journal volume.
 Timestamp752は、ストレージ装置1aがホスト2からライトデータを受領した時刻である。本実施例に係る計算機システムでは、ホスト2からストレージ装置1に発行されるライトコマンドには、時刻(ライトコマンドを発行した時刻)が含まれている。ストレージコントローラ10は、ライトコマンドに含まれている時刻をTimestamp752に格納したジャーナル作成コマンドを作成してSSD21に送信する。そしてSSD21はJNCBを作成する時、Timestamp752に含まれている値をTimestamp702に格納する。 Timestamp 752 is the time when the storage apparatus 1a receives the write data from the host 2. In the computer system according to this embodiment, the write command issued from the host 2 to the storage apparatus 1 includes time (time when the write command is issued). The storage controller 10 creates a journal creation command in which the time included in the write command is stored in the Timestamp 752 and transmits it to the SSD 21. When the SSD 21 creates the JNCB, the SSD 21 stores the value included in the Timestamp 752 in the Timestamp 702.
 VOL#753、LBA754は、ライトデータの書き込み先の位置(P-VOL上の位置)についての情報である。つまりVOL#753はライトデータ書き込み先の物理ボリュームの識別子、LBA754は、VOL#753で特定される物理ボリューム上のLBAである。SSD21はこの情報に従って、ライトデータ758に格納されているデータをP-VOLに格納する。またS-VOL#753’は、S-VOL(VOL#753で特定される物理ボリュームのペアボリューム)の識別子である。なお、VOL#753には、P-VOLの存在するSSD21の識別番号も含まれている。同様にS-VOL#753’にも、S-VOLの存在するSSD21の識別番号が含まれている。 VOL # 753 and LBA754 are information on the write data write destination position (position on the P-VOL). That is, VOL # 753 is the identifier of the physical volume to which the write data is written, and LBA754 is the LBA on the physical volume specified by VOL # 753. In accordance with this information, the SSD 21 stores the data stored in the write data 758 in the P-VOL. S-VOL # 753 'is an identifier of S-VOL (a pair volume of physical volumes specified by VOL # 753). Note that VOL # 753 also includes the identification number of the SSD 21 in which the P-VOL exists. Similarly, the S-VOL # 753 'includes the identification number of the SSD 21 in which the S-VOL exists.
 一方JLBA755は、ジャーナルボリューム上のアドレスを表し、ジャーナルデータはJLBA755に指定されているアドレスを先頭とする連続領域に書き込まれる。CBLBA756は、JNCBの書き込み先アドレスを表す。このアドレスはジャーナルボリューム上のアドレスであり、SSD21はJNCBを作成すると、CBLBA756で指定されたアドレスにJNCBを格納する。Length757はライトデータ(ライトデータ758に含まれているデータ)のデータ長である。 On the other hand, JLBA 755 represents an address on the journal volume, and journal data is written in a continuous area starting from the address specified in JLBA 755. CBLBA 756 represents a write destination address of JNCB. This address is an address on the journal volume. When the SSD 21 creates the JNCB, the JNCB is stored at the address specified by the CBLBA 756. Length 757 is the data length of the write data (data included in the write data 758).
 ジャーナル作成コマンド750に含まれる情報の多くは、JNCBに記録される情報である。SSD21がJNCBを作成する時、Timestamp752、VOL#753、S-VOL#753’、LBA754、JLBA755、Length757はそれぞれ、JNCBのTimestamp702、VOL#703、S-VOL#703’、LBA704、ポインタ706、Length705に格納される。 Much of the information included in the journal creation command 750 is information recorded in the JNCB. When the SSD 21 creates a JNCB, Timestamp 752, VOL # 753, S-VOL # 753 ', LBA754, JLBA755, and Length757 are JNCB's Timestamp702, VOL # 703, S-VOL # 703', LBA704g, th 706L, th 706L Stored in
 図8は、本実施例におけるJVOL管理テーブル800を示す図である。JVOL管理テーブル800は、正ストレージ装置1a及び副ストレージ装置1bのメモリ13に格納される。 FIG. 8 is a diagram showing the JVOL management table 800 in the present embodiment. The JVOL management table 800 is stored in the memory 13 of the primary storage apparatus 1a and secondary storage apparatus 1b.
 JVOL管理テーブル800は、SSD21が有するジャーナルボリューム(JVOL)についての情報を管理するためのテーブルで、DEV#801、管理情報領域先頭アドレス802と、ライトデータ領域先頭アドレス803と、JNCB最新アドレス804と、JNCB最古アドレス805と、ライトデータ最新アドレス806、のカラムを有する。DEV#801にはSSD21の識別番号が格納され、JVOL管理テーブル800の各行は、DEV#801に格納されている識別番号で特定されるSSD21内のJVOLについての情報を表す。 The JVOL management table 800 is a table for managing information about the journal volume (JVOL) of the SSD 21. The JVOL management table 800 includes DEV # 801, a management information area head address 802, a write data area head address 803, and a JNCB latest address 804. , JNCB oldest address 805 and write data latest address 806. The identification number of the SSD 21 is stored in the DEV # 801, and each row of the JVOL management table 800 represents information on the JVOL in the SSD21 specified by the identification number stored in the DEV # 801.
 管理情報領域先頭アドレス802と、ライトデータ領域先頭アドレス803と、JNCB最新アドレス804と、JNCB最古アドレス805と、ライトデータ最新アドレス806はそれぞれ、図6に示したジャーナルボリューム上のアドレスを表す。つまり管理情報領域先頭アドレス802には、JVOLの管理情報領域の先頭のLBA(Logical Block Address)が格納される。ライトデータ領域先頭アドレス803には、JVOLのライトデータ領域の先頭のLBAが格納される。 Management information area start address 802, write data area start address 803, JNCB latest address 804, JNCB oldest address 805, and write data latest address 806 represent addresses on the journal volume shown in FIG. That is, the management information area head address 802 stores the LBA (Logical Block Address) at the head of the management information area of the JVOL. The write data area start address 803 stores the start LBA of the JVOL write data area.
 JNCB最新アドレス804には、JVOLに新たにジャーナルを格納する際に、JNCBを格納すべき位置(LBA)が格納される。ストレージコントローラ10はジャーナル作成コマンドを発行すると、JNCB最新アドレス804にJNCBのサイズを加算する。ライトデータ最新アドレス806は、新たにジャーナルを格納する際に、ライトデータ(ジャーナルデータ)の保存に使用する先頭のLBAを保持する。 The JNCB latest address 804 stores the location (LBA) where the JNCB should be stored when a new journal is stored in the JVOL. When the storage controller 10 issues a journal creation command, it adds the JNCB size to the JNCB latest address 804. The latest write data address 806 holds the leading LBA used for storing write data (journal data) when a new journal is stored.
 JNCB最古アドレス805には、ジャーナルボリュームに残っているジャーナルのJNCBのうち、最古の(最もSEQ#が小さい)JNCBが格納されている領域の先頭LBAが格納される。図6を参照しながらJNCB最古アドレス805の意味を説明する。 The JNCB oldest address 805 stores the first LBA of the area where the oldest (the smallest SEQ #) JNCB is stored among the JNCBs of the journals remaining in the journal volume. The meaning of the JNCB oldest address 805 will be described with reference to FIG.
 正ストレージ装置1aが有するジャーナルボリュームに格納されたジャーナルは、しばらく後に副ストレージ装置1bに送信される。そのため正ストレージ装置1aのJVOL管理テーブル800のJNCB最古アドレス805は、まだ副ストレージ装置1bに送信されていないジャーナルのうち、最も古いジャーナルのJNCBが格納されているアドレスを表している。 The journal stored in the journal volume of the primary storage apparatus 1a is transmitted to the secondary storage apparatus 1b after a while. Therefore, the JNCB oldest address 805 of the JVOL management table 800 of the primary storage device 1a represents the address where the oldest journal JNCB is stored among the journals not yet transmitted to the secondary storage device 1b.
 一方、副ストレージ装置1bが有するジャーナルボリュームに格納されたジャーナルは、ジャーナルリストア処理が行われることによってS-VOLに反映される。そのため副ストレージ装置1bのJVOL管理テーブル800のJNCB最古アドレス805は、まだリストア処理が行われていないジャーナルのうち、最も古いジャーナルのJNCBが格納されているアドレスを表している。 On the other hand, the journal stored in the journal volume of the secondary storage device 1b is reflected in the S-VOL by performing journal restore processing. Therefore, the JNCB oldest address 805 of the JVOL management table 800 of the secondary storage device 1b represents the address where the oldest JNCB of the journals that have not been restored is stored.
 そしてJNCB最古アドレス805以前の領域は、JNCBが書き込まれてもよいことを意味する。図6において、管理情報領域先頭アドレスからJNCB最古アドレスまでの領域、そしてJNCB最新アドレスからライトデータ領域先頭アドレスまでの領域は、JNCBが書き込み可能な領域であることを意味する。  And the area before JNCB oldest address 805 means that JNCB may be written. In FIG. 6, the area from the management information area head address to the JNCB oldest address and the area from the JNCB latest address to the write data area head address mean that the JNCB is writable. *
 図8の例では、識別番号が1のSSD21が有するジャーナルボリュームの管理情報領域は、ジャーナルボリュームの先頭(LBA0)から1299の位置までであり、ジャーナルデータ領域は、ジャーナルボリュームのLBA1300の位置から始まる領域である。 In the example of FIG. 8, the management information area of the journal volume included in the SSD 21 with the identification number 1 is from the beginning (LBA0) of the journal volume to the position 1299, and the journal data area starts from the position of the LBA 1300 of the journal volume. It is an area.
 続いて、図9を用いてジャーナル管理情報の説明を行う。図9には、正ジャーナル管理情報600と副ジャーナル管理情報650の例が示されている。正ジャーナル管理情報600はP-VOLを有するSSD21が生成したジャーナルについての情報を管理するためのテーブルで、一方副ジャーナル管理情報650は、S-VOLを有するSSD21に格納されるジャーナルについての情報を管理するためのテーブルである。本実施例に係る計算機システムの場合、正ストレージ装置1aはP-VOLのみを有し、副ストレージ装置1bはS-VOLのみを有するため、正ジャーナル管理情報600は正ストレージ装置1aのみが有し(正ストレージ装置1aのメモリ13のみに格納される)、副ジャーナル管理情報650は副ストレージ装置1bのみが有する(副ストレージ装置1bのメモリ13のみに格納される)。 Subsequently, the journal management information will be described with reference to FIG. FIG. 9 shows an example of primary journal management information 600 and secondary journal management information 650. The primary journal management information 600 is a table for managing information about journals generated by the SSD 21 having P-VOL, while the secondary journal management information 650 is information about journals stored in the SSD 21 having S-VOL. It is a table for management. In the case of the computer system according to this embodiment, the primary storage apparatus 1a has only P-VOL, and the secondary storage apparatus 1b has only S-VOL. Therefore, the primary journal management information 600 has only the primary storage apparatus 1a. The secondary journal management information 650 is stored only in the secondary storage device 1b (stored only in the memory 13 of the secondary storage device 1b) (stored only in the memory 13 of the primary storage device 1a).
 正ジャーナル管理情報600で管理される情報について説明する。正ジャーナル管理情報600の各行(レコード)には、各SSD21で作成されたジャーナルについての情報が格納される。DEV#601はSSD21の識別番号であり、たとえば正ジャーナル管理情報600のある行のDEV#601がx(xは01等の数値)の場合、その行には識別番号がxのSSD21(SSD#x)で作成されたジャーナルについての情報が格納される。 Information managed by the primary journal management information 600 will be described. Each row (record) of the primary journal management information 600 stores information about the journal created by each SSD 21. DEV # 601 is an identification number of the SSD 21. For example, when the DEV # 601 in a row in the primary journal management information 600 is x (x is a numerical value such as 01), the SSD 21 (SSD #) having the identification number x is included in that row. Information about the journal created in x) is stored.
 最新SEQ#604は、SSD21で作成されたジャーナルに付与されたシーケンス番号のうち、最も新しい(最も大きい)シーケンス番号である。この情報はSSD21がジャーナル作成を行った時に、SSD21からストレージ装置1に送信される。転送済みSEQ#605には、正SSDで作成され、かつ副SSDに送信済みのジャーナルに付与されたシーケンス番号のうち、最も新しい(最も大きい)シーケンス番号が格納される。正ストレージ装置1aは、副ストレージ装置1bにジャーナルが送信されるたびに、転送済みSEQ#605を更新する。 Latest SEQ # 604 is the newest (largest) sequence number among the sequence numbers assigned to the journal created by the SSD 21. This information is transmitted from the SSD 21 to the storage apparatus 1 when the SSD 21 creates a journal. Transferred SEQ # 605 stores the newest (largest) sequence number among the sequence numbers created in the primary SSD and assigned to the journal that has been transmitted to the secondary SSD. The primary storage apparatus 1a updates the transferred SEQ # 605 every time a journal is transmitted to the secondary storage apparatus 1b.
 以下では、DEV#601がxの行の最新SEQ#604のことを、「SSD#xの最新SEQ#604」と呼び、DEV#601がxの行の転送済みSEQ#605のことを、「SSD#xの転送済みSEQ#605」と呼ぶ。 Hereinafter, the latest SEQ # 604 in the row where DEV # 601 is x is referred to as “latest SEQ # 604 in SSD # x”, and the transferred SEQ # 605 in which DEV # 601 is in the row of x is “ This is called “transferred SEQ # 605 of SSD # x”.
 続いて副ジャーナル管理情報650で管理される情報について説明する。副ジャーナル管理情報650の各行には、DEV#651に格納されている識別番号のSSD21を有するストレージ装置1(本実施例の場合、副ストレージ装置1bである)が受領したジャーナルについての情報が格納される。受領済みSEQ#654は、副ストレージ装置1bが受領したジャーナルに付与されたシーケンス番号のうち、最も新しい(最も大きい)シーケンス番号である。また到着済みT/S657には、副ストレージ装置1bが受領したジャーナルのうち、Timestamp702が最も新しいジャーナルのJNCBに含まれているタイムスタンプ(Timestamp702)が格納される。これは受領済みSEQ#654を有するジャーナルのJNCBに含まれているタイムスタンプ(Timestamp702)と同じである。 Next, information managed by the secondary journal management information 650 will be described. Each row of the secondary journal management information 650 stores information about the journal received by the storage device 1 (in this embodiment, the secondary storage device 1b) having the SSD 21 with the identification number stored in the DEV # 651. Is done. Received SEQ # 654 is the newest (largest) sequence number among the sequence numbers assigned to the journal received by the secondary storage system 1b. In the arrived T / S 657, the time stamp (Timestamp 702) included in the JNCB of the journal with the latest Timestamp 702 among the journals received by the secondary storage device 1b is stored. This is the same as the time stamp (Timestamp 702) included in the JNCB of the journal with the received SEQ # 654.
 反映済みSEQ#656は、副ストレージ装置1bが受領し、かつ副SSDが有するS-VOLに対してリストア処理が行われたジャーナルのシーケンス番号のうち、最も新しい(最も大きい)シーケンス番号である。またリストア済みT/S658には、反映済みSEQ#656を有するジャーナルのJNCBに含まれていたタイムスタンプ(Timestamp702)が格納される。 Reflected SEQ # 656 is the newest (largest) sequence number among the sequence numbers of journals received by the secondary storage apparatus 1b and restored in the S-VOL of the secondary SSD. The restored T / S 658 stores the time stamp (Timestamp 702) included in the JNCB of the journal having the reflected SEQ # 656.
 なお、最新SEQ#604等と同様に、以下では、DEV#651がxの行の受領済みSEQ#654、反映済みSEQ#656、到着済みT/S657、リストア済みT/S658のことをそれぞれ、「SSD#xの受領済みSEQ#654」、「SSD#xの反映済みSEQ#656」、「SSD#xの到着済みT/S657」、「SSD#xのリストア済みT/S658」と呼ぶ。 As in the case of the latest SEQ # 604 and the like, in the following, the received SEQ # 654, the reflected SEQ # 656, the arrived T / S657, and the restored T / S658 in the row where DEV # 651 is x are respectively shown. These are referred to as “SSD # x received SEQ # 654”, “SSD # x reflected SEQ # 656”, “SSD # x arrived T / S657”, and “SSD # x restored T / S658”.
 続いて、SSD21が有する管理情報の内容の説明を行う。図10は論理物理変換テーブル1400の構成例である。 Subsequently, the contents of the management information included in the SSD 21 will be described. FIG. 10 is a configuration example of the logical-physical conversion table 1400.
 先に述べたとおり、SSD21は、1以上の物理ボリュームとジャーナルボリュームを形成し、ストレージコントローラ10に提供する。SSD21は記憶媒体にフラッシュメモリを採用している。よく知られているように、フラッシュメモリ(FMチップ206)の最小アクセス(リード、ライト)単位はページ(物理ページ)である。物理ページのサイズはたとえば8KBである。そのためSSD21は、SSD21がストレージコントローラ10に提供している物理ボリュームの記憶領域及びジャーナルボリュームの記憶領域を、物理ページと同サイズの領域に分割して管理している。この物理ページと同サイズの領域のことを、「論理ページ」と呼ぶ。そしてSSD21は、1つの論理ページに1つの物理ページをマッピングさせる。論理物理変換テーブル1400は、論理ページと物理ページのマッピングを管理するためのテーブルである。 As described above, the SSD 21 forms one or more physical volumes and journal volumes and provides them to the storage controller 10. The SSD 21 employs a flash memory as a storage medium. As is well known, the minimum access (read / write) unit of the flash memory (FM chip 206) is a page (physical page). The size of the physical page is, for example, 8 KB. Therefore, the SSD 21 manages the storage area of the physical volume and the storage area of the journal volume that the SSD 21 provides to the storage controller 10 by dividing the storage area into the same size as the physical page. An area having the same size as the physical page is called a “logical page”. Then, the SSD 21 maps one physical page to one logical page. The logical / physical conversion table 1400 is a table for managing the mapping between logical pages and physical pages.
 本実施例に係るSSD21は、SSD21が有する全FMチップ206内の各物理ページに、SSD21内で一意な番号を付して管理している。この番号は物理ページ番号(または物理ページ#)と呼ばれる。また本実施例に係るSSD21は、SSD21内の各論理ページに、SSD内で一意な識別番号を付して管理している。この識別番号は論理ページ番号(論理ページ#)と呼ばれる。論理物理変換テーブル1400には、ある論理ページにマッピングされる物理ページの、ブロック#と物理ページ#の情報が、論理ページごとに格納されている。 The SSD 21 according to the present embodiment manages each physical page in all the FM chips 206 included in the SSD 21 by assigning a unique number in the SSD 21. This number is called a physical page number (or physical page #). Further, the SSD 21 according to the present embodiment manages each logical page in the SSD 21 by assigning a unique identification number in the SSD. This identification number is called a logical page number (logical page #). The logical-physical conversion table 1400 stores block # and physical page # information of a physical page mapped to a certain logical page for each logical page.
 論理物理変換テーブル1400は、図10に示されているように、VOL#1401、LBA1402、論理ページ#1403、ステータス1404、物理ページ#1405のカラムを有する。論理物理変換テーブル1400の各レコードには、論理ページ#1403で特定される論理ページについての情報が格納される。VOL#1401は、物理ボリュームまたはジャーナルボリュームの識別番号で、LBA1402は、VOL#1401で特定される物理ボリューム上のアドレスである。なお本実施例では、ジャーナルボリュームの識別番号は“00”と定められており、またジャーナルボリューム以外の物理ボリュームの識別子には“00”以外の値が用いられる。 The logical-physical conversion table 1400 has columns of VOL # 1401, LBA1402, logical page # 1403, status 1404, and physical page # 1405, as shown in FIG. Each record of the logical-physical conversion table 1400 stores information on the logical page specified by the logical page # 1403. VOL # 1401 is an identification number of a physical volume or journal volume, and LBA1402 is an address on the physical volume specified by VOL # 1401. In this embodiment, the identification number of the journal volume is defined as “00”, and a value other than “00” is used as the identifier of the physical volume other than the journal volume.
 論理ページ#1403には、VOL#1401、LBA1402で特定される、物理ボリューム(またはジャーナルボリューム)上のアドレスに割り当てられている論理ページの識別番号(論理ページ番号)が格納される。なお、VOL#1401とLBA1402の組と、論理ページ#1403の対応関係は、あらかじめ定められており、途中で変化することはない。そして物理ページ#1405には、論理ページ#1403で特定される論理ページにマッピングされている(割り当てられている)物理ページの識別番号(物理ページ番号)が格納される。 The logical page # 1403 stores the identification number (logical page number) of the logical page assigned to the address on the physical volume (or journal volume) specified by VOL # 1401 and LBA1402. Note that the correspondence between the set of VOL # 1401 and LBA1402 and the logical page # 1403 is determined in advance and does not change in the middle. The physical page # 1405 stores the identification number (physical page number) of the physical page mapped (allocated) to the logical page specified by the logical page # 1403.
 ステータス1404は、物理ページが論理ページにマッピングされているか否かを表す情報が格納される。SSD21の論理ページには、初期状態では物理ページはマッピングされていない。物理ページがマッピングされていない論理ページのステータス1404には、「未割当」が格納される(またこの時、論理ページに対応する物理ページ#1405にはNULL(無効値)が格納される)。 The status 1404 stores information indicating whether a physical page is mapped to a logical page. No physical page is mapped to the logical page of the SSD 21 in the initial state. “Unallocated” is stored in the status 1404 of the logical page to which the physical page is not mapped (in this case, NULL (invalid value) is stored in the physical page # 1405 corresponding to the logical page).
 たとえばSSD21がストレージコントローラ10から、論理ページ番号がnの論理ページにデータ書き込みを要求するライトコマンド(またはジャーナル作成コマンド)を受信すると、まずライト対象データが未使用の物理ページ(まだデータの書き込みが行われていない物理ページ)に書き込まれる(仮にライト対象データの書き込まれた物理ページのページ番号をpとする)。そしてSSD21は論理ページ#1403がnの行の物理ページ#1405に、ページ番号pを格納する。またこの時SSD21は、論理ページ#1403がnの行のステータス1404に「割当」を格納する。これにより、ライト対象となる論理ページに対して物理ページがマッピングされる。以下の説明で、「論理ページに物理ページをマッピングする」と表現されている場合、SSD21がここで説明した処理を行うことを意味する。 For example, when the SSD 21 receives from the storage controller 10 a write command (or journal creation command) for requesting data writing to a logical page with a logical page number n, first, a physical page in which the write target data is not used (data has not yet been written). (A physical page that has not been written) is written (assuming p is the page number of the physical page in which the write target data is written). The SSD 21 stores the page number p in the physical page # 1405 in the row where the logical page # 1403 is n. At this time, the SSD 21 stores “allocation” in the status 1404 of the row in which the logical page # 1403 is n. As a result, the physical page is mapped to the logical page to be written. In the following description, the expression “mapping a physical page to a logical page” means that the SSD 21 performs the processing described here.
 たとえば図10の行1412を参照すると、VOL#1401は“00”、LBA1402は“0x0010”、論理ページ#1403は1、物理ページ#1405は20、ステータス1404は「割当」である。そのため、図10の論理物理変換テーブル1400は、論理ページ番号が1番の論理ページに、物理ページ番号が20の物理ページがマッピングされており、また論理ページ番号が1番の論理ページは、ジャーナルボリュームのLBA0x0010から始まる領域(論理ページサイズに等しい領域)に相当する領域であることを表している。 For example, referring to the row 1412 in FIG. 10, VOL # 1401 is “00”, LBA1402 is “0x0010”, logical page # 1403 is 1, physical page # 1405 is 20, and status 1404 is “allocation”. Therefore, in the logical-physical conversion table 1400 in FIG. 10, the physical page with the physical page number 20 is mapped to the logical page with the logical page number 1, and the logical page with the logical page number 1 is the journal. This represents an area corresponding to an area starting from LBA 0x0010 of the volume (an area equal to the logical page size).
 良く知られているように、一旦書き込みが行われた物理ページは上書きが不可能である(物理ページの上書きをしたい場合、物理ページの属するブロック全体を一度消去する必要がある)。そのためSSD21は、ある論理ページに対する更新(上書き)要求をストレージコントローラ10から受信すると、更新データを、更新前データの書き込まれている物理ページ(旧物理ページと呼ぶ)とは異なる物理ページ(新物理ページと呼ぶ)に格納する。そして更新対象となる論理ページに対応する物理ページ#1405に、新物理ページの物理ページ番号を格納する。そして旧物理ページはマッピングが解除された状態になる(この状態は、後述する物理ページ管理テーブル1450で管理される)。 As is well known, a physical page once written cannot be overwritten (if it is desired to overwrite the physical page, the entire block to which the physical page belongs needs to be erased once). For this reason, when the SSD 21 receives an update (overwrite) request for a certain logical page from the storage controller 10, the SSD 21 updates the physical data (new physical page) different from the physical page in which the pre-update data is written (referred to as the old physical page). Stored in a page). Then, the physical page number of the new physical page is stored in the physical page # 1405 corresponding to the logical page to be updated. Then, the old physical page is in a state in which the mapping is released (this state is managed by a physical page management table 1450 described later).
 図11は、物理ページ管理テーブルの構成を説明する図である。物理ページ管理テーブル1450は、物理ページの状態を管理するためのテーブルで、各行(レコード)にはSSD21内の物理ページについての情報が格納される。物理ページ管理テーブル1450は、ブロック#1451、物理ページ#1452、ステータス1453のカラムを有する。 FIG. 11 is a diagram for explaining the configuration of the physical page management table. The physical page management table 1450 is a table for managing the state of the physical page, and each row (record) stores information about the physical page in the SSD 21. The physical page management table 1450 has columns of block # 1451, physical page # 1452, and status 1453.
 物理ページ#1452とステータス1453はそれぞれ、論理物理変換テーブル1400の、物理ページ#1405とステータス1404と同様の情報である。つまりある物理ページが論理ページにマッピングされると、その物理ページの物理ページ番号が、論理物理変換テーブル1400の物理ページ#1405に格納され、ステータス1404に「割当」が格納される。そして同時に、論理ページにマッピングされた物理ページのステータス1453(物理ページ管理テーブル1450内の)にも、「割当」が格納される。ブロック#1451は、物理ページの属するブロックの識別番号である。 The physical page # 1452 and the status 1453 are the same information as the physical page # 1405 and the status 1404 of the logical-physical conversion table 1400, respectively. That is, when a physical page is mapped to a logical page, the physical page number of the physical page is stored in the physical page # 1405 of the logical-physical conversion table 1400, and “assignment” is stored in the status 1404. At the same time, “assignment” is also stored in the status 1453 (in the physical page management table 1450) of the physical page mapped to the logical page. Block # 1451 is the identification number of the block to which the physical page belongs.
 また、一旦論理ページにマッピングされた後、マッピングを解除された物理ページのステータス1453には「未割当」が格納される。ステータス1453が「未割当」の物理ページは上書きできず、適当なタイミングでリクラメーション処理が行われる。そして、まだ書き込みが行われていない物理ページのステータス1453には「未使用」が格納される。論理ページにマッピングされる物理ページには、ステータス1453が「未使用」の物理ページが用いられる。 Also, after mapping to a logical page, “unallocated” is stored in the status 1453 of the physical page that has been unmapped. A physical page whose status 1453 is “unallocated” cannot be overwritten, and reclamation processing is performed at an appropriate timing. Then, “unused” is stored in the status 1453 of the physical page that has not yet been written. As the physical page mapped to the logical page, a physical page whose status 1453 is “unused” is used.
 続いてシーケンス番号管理情報1170(図2)について説明する。先に述べたが、本実施例に係るSSD21はジャーナルを作成する機能を有し、作成されるジャーナルにはシーケンス番号が含まれる。SSD21はメモリ204に、SSD21が作成したジャーナルに付与したシーケンス番号のうち、最新の(最大の)シーケンス番号を記録している。この情報をシーケンス番号管理情報と呼び、これはメモリ204に格納される。 Next, the sequence number management information 1170 (FIG. 2) will be described. As described above, the SSD 21 according to this embodiment has a function of creating a journal, and the created journal includes a sequence number. The SSD 21 records the latest (maximum) sequence number among the sequence numbers assigned to the journal created by the SSD 21 in the memory 204. This information is called sequence number management information and is stored in the memory 204.
 SSD21はジャーナルを作成するとき、シーケンス番号管理情報1170に格納されている値に1を加算した値を、新たに作成するジャーナルのSEQ#701に格納する。ジャーナル作成後、SSD21は作成したジャーナルのSEQ#701の値をシーケンス番号管理情報1170に格納することで、シーケンス番号管理情報1170の内容を更新する。 When creating the journal, the SSD 21 stores a value obtained by adding 1 to the value stored in the sequence number management information 1170 in the SEQ # 701 of the newly created journal. After creating the journal, the SSD 21 stores the value of SEQ # 701 of the created journal in the sequence number management information 1170, thereby updating the contents of the sequence number management information 1170.
 ここからは、ジャーナル作成処理やジャーナルリストア処理の流れを説明していく。図12は、正ストレージ装置1aがホスト2からライトコマンドを受領した時に行われる処理(ライト処理)の流れを表している。なお、図12をはじめ、以下で説明する各図面において、参照番号の前に付されているアルファベットの“S”は、「ステップ」を意味する。 From here, the flow of journal creation processing and journal restoration processing will be explained. FIG. 12 shows the flow of processing (write processing) performed when the primary storage apparatus 1a receives a write command from the host 2. In addition, in each drawing described below including FIG. 12, the alphabet “S” attached before the reference number means “step”.
 また、図12において、正ストレージ装置1a内ストレージコントローラ10が有するCPU12がI/Oプログラム101を実行する事でステップ1001~ステップ1005、ステップ1011~ステップ1013が実行される。またステップ1051~ステップ1057は、正ストレージ装置1a内SSD21のCPU201で実行される処理である。 In FIG. 12, when the CPU 12 of the storage controller 10 in the primary storage apparatus 1a executes the I / O program 101, Step 1001 to Step 1005 and Step 1011 to Step 1013 are executed. Steps 1051 to 1057 are processes executed by the CPU 201 of the SSD 21 in the primary storage apparatus 1a.
 ステップ1001:I/Oプログラム101はホスト2からライトコマンドとライトデータを受領すると、ライトデータをキャッシュに格納する。 Step 1001: When the I / O program 101 receives a write command and write data from the host 2, it stores the write data in the cache.
 ステップ1002:I/Oプログラム101は、受領したライトコマンドに含まれているライト先アドレス(論理ボリューム上アドレス)のアドレス変換処理を行うことで、ライトデータ書き込み先の物理ボリュームと、その物理ボリューム上のアドレスを求める。 Step 1002: The I / O program 101 performs address conversion processing of the write destination address (logical volume address) included in the received write command, so that the write data write destination physical volume and its physical volume Ask for the address.
 ステップ1003:I/Oプログラム101はペア管理テーブル300を参照することで、ステップ1002で特定された、ライトデータの書き込まれる物理ボリュームが、ペアボリュームであるか判定する。ライトデータの書き込まれる物理ボリュームがペアボリュームでない場合(ステップ1003:N)、I/Oプログラム101は通常のライト処理を行い、処理を終了する。この場合の処理は公知のため、ここでの説明は略す。一方ライトデータの書き込まれる物理ボリュームがペアボリュームの場合(ステップ1003:Y)、次にステップ1004が行われる。 Step 1003: The I / O program 101 refers to the pair management table 300 to determine whether the physical volume to which the write data is written, identified in step 1002, is a pair volume. If the physical volume to which the write data is written is not a pair volume (step 1003: N), the I / O program 101 performs a normal write process and ends the process. Since the processing in this case is publicly known, description thereof is omitted here. On the other hand, if the physical volume to which the write data is written is a pair volume (step 1003: Y), then step 1004 is performed.
 ステップ1004:I/Oプログラム101は、ライトデータを用いて冗長データ(パリティ)を作成する。良く知られているように、RAID技術ではパリティの作成のために、ライトデータの更新前データ、更新前パリティをSSD21から読み出す必要があることもある。そのためI/Oプログラム101は、必要であればSSD21から更新前データ、更新前パリティを読み出してから、パリティを作成する。 Step 1004: The I / O program 101 creates redundant data (parity) using the write data. As is well known, in the RAID technique, it is sometimes necessary to read the pre-update data and the pre-update parity of the write data from the SSD 21 in order to create the parity. Therefore, if necessary, the I / O program 101 reads the pre-update data and the pre-update parity from the SSD 21 and then creates the parity.
 ステップ1005:I/Oプログラム101は、ライトデータの書き込み先物理ボリュームを有するSSD21と、パリティの書き込み先物理ボリュームを有するSSD21とに、図7に示すジャーナル作成コマンドを発行する。 Step 1005: The I / O program 101 issues a journal creation command shown in FIG. 7 to the SSD 21 having the write destination physical volume of write data and the SSD 21 having the parity write destination physical volume.
 以下では、ステップ1051~ステップ1057の処理の説明を行うが、先に述べたとおりステップ1005においてI/Oプログラム101は複数のSSD21にジャーナル作成コマンドを発行する。ただしジャーナル作成コマンドを受領した各SSD21で行われる処理は同じであるため、以下の説明では、ジャーナル作成コマンドを受領した、ある1つのSSD21で行われる処理を説明する。 In the following, the processing from step 1051 to step 1057 will be described. As described above, in step 1005, the I / O program 101 issues a journal creation command to a plurality of SSDs 21. However, since the processing performed in each SSD 21 that has received the journal creation command is the same, in the following description, the processing performed in one SSD 21 that has received the journal creation command will be described.
 ステップ1051:ステップ1005でストレージコントローラ10が発行したジャーナル作成コマンドを受領したSSD21は、作成すべきジャーナルのシーケンス番号を決定する。先に述べたとおり、SSD21はシーケンス番号管理情報1170に格納されている値に1を加算した値を、新たに作成するジャーナルのシーケンス番号と決定する。 Step 1051: The SSD 21 that has received the journal creation command issued by the storage controller 10 in Step 1005 determines the sequence number of the journal to be created. As described above, the SSD 21 determines a value obtained by adding 1 to the value stored in the sequence number management information 1170 as the sequence number of a newly created journal.
 ステップ1053:SSD21は、ジャーナル作成コマンドで指定されている物理ボリューム(P-VOL)にデータの書き込みを行う。SSD21は、論理物理変換テーブル1400を参照することで、ジャーナル作成コマンドのVOL#753、LBA754で特定される位置に相当する論理ページの論理ページ#1403を求める。続いてSSD21は物理ページ管理テーブル1450を参照し、未使用の物理ページを選択し、選択された物理ページにデータを書き込む。そしてSSD21はデータの書き込まれた物理ページの物理ページ#を、先に求めた論理ページ#1403に対応する物理ページ#1405に格納することで、ジャーナル作成コマンドのVOL#753、LBA754で特定される位置に相当する論理ページに物理ページをマッピングする。 Step 1053: The SSD 21 writes data to the physical volume (P-VOL) specified by the journal creation command. The SSD 21 obtains the logical page # 1403 of the logical page corresponding to the position specified by the VOL # 753 and LBA754 of the journal creation command by referring to the logical / physical conversion table 1400. Subsequently, the SSD 21 refers to the physical page management table 1450, selects an unused physical page, and writes data to the selected physical page. The SSD 21 stores the physical page # of the physical page in which data is written in the physical page # 1405 corresponding to the previously obtained logical page # 1403, so that it is specified by the VOL # 753 and LBA754 of the journal creation command. A physical page is mapped to a logical page corresponding to a position.
 ステップ1054:SSD21は、ジャーナルボリュームにデータの書き込みを行う。この処理はステップ1053で説明したものと同様である。つまりSSD21はデータを未使用の物理ページに書き込み、データの書き込まれた物理ページを、ジャーナルボリューム上の論理ページ(JLBA755で特定される位置に相当する論理ページ)にマッピングする。 Step 1054: The SSD 21 writes data to the journal volume. This process is the same as that described in step 1053. That is, the SSD 21 writes data to an unused physical page, and maps the physical page on which the data has been written to a logical page on the journal volume (a logical page corresponding to the position specified by JLBA 755).
 なお、ステップ1053で物理ボリューム(P-VOL)に書き込まれるデータとステップ1054でジャーナルボリュームに書き込まれるデータはいずれも同じで、ジャーナル作成コマンドに含まれているライトデータ758である。またジャーナル作成コマンドを受領したSSD21が、ホスト2から受領したライトデータを格納するSSD21の場合には、ライトデータ758にはホスト2から受領したライトデータが含まれている。一方、ジャーナル作成コマンドを受領したSSD21が、ステップ1004で作成されたパリティを格納するSSD21のこともある。その場合にはライトデータ758には、ステップ1004で作成されたパリティが含まれている。 Note that the data written to the physical volume (P-VOL) in step 1053 is the same as the data written to the journal volume in step 1054, and is the write data 758 included in the journal creation command. When the SSD 21 that has received the journal creation command is the SSD 21 that stores the write data received from the host 2, the write data 758 includes the write data received from the host 2. On the other hand, the SSD 21 that has received the journal creation command may be the SSD 21 that stores the parity created in step 1004. In that case, the write data 758 includes the parity created in step 1004.
 ステップ1055:SSD21は、JNCBの作成を行う。JNCBに含まれる内容は、既に上で図6を用いて説明済みであるので、ここでの説明は略す。 Step 1055: The SSD 21 creates a JNCB. Since the contents included in JNCB have already been described with reference to FIG. 6 above, description thereof is omitted here.
 ステップ1056:SSD21は、JNCBをジャーナルボリュームに書き込む。この処理もステップ1054等で説明したものと同じである。 Step 1056: The SSD 21 writes JNCB to the journal volume. This processing is also the same as that described in step 1054 and the like.
 ステップ1057:JNCBをジャーナルボリュームに書き込んだ後、SSD21は作成したJNCBのSEQ#701の値をシーケンス番号管理情報1170に格納し、その後ストレージコントローラ10に、ジャーナル作成処理が完了した旨の応答を返却する。ストレージコントローラ10に返却される応答には、少なくともステップ1051で決定されたシーケンス番号が含まれる。たとえばSSD21は、ステップ1051でストレージコントローラ10から受領したジャーナル作成コマンドの中からライトデータ758を除去し、代わりにシーケンス番号を付加した情報を、ストレージコントローラ10に返却するとよい。 Step 1057: After writing the JNCB to the journal volume, the SSD 21 stores the value of SEQ # 701 of the created JNCB in the sequence number management information 1170, and then returns a response to the storage controller 10 that the journal creation processing has been completed. To do. The response returned to the storage controller 10 includes at least the sequence number determined in step 1051. For example, the SSD 21 may remove the write data 758 from the journal creation command received from the storage controller 10 in step 1051 and return the information with the added sequence number to the storage controller 10 instead.
 SSD21からストレージコントローラ10に、ジャーナル作成処理が完了した旨の応答が返却されると、I/Oプログラム101はステップ1011から処理を再開する。なお、I/Oプログラム101はステップ1005でジャーナル作成コマンドを発行したすべてのSSD21(ホスト2から受領したライトデータを格納するSSD21とパリティを格納するSSD21)から応答を受領してから、ステップ1011以降の処理を実行する。 When the response indicating that the journal creation processing is completed is returned from the SSD 21 to the storage controller 10, the I / O program 101 restarts the processing from step 1011. The I / O program 101 receives a response from all the SSDs 21 that issued the journal creation command in step 1005 (the SSD 21 that stores the write data received from the host 2 and the SSD 21 that stores the parity). Execute the process.
 ステップ1011:I/Oプログラム101はSSD21から受領した応答の中からシーケンス番号を抽出し、正ジャーナル管理情報600の最新SEQ#604に、抽出したシーケンス番号を格納する。 Step 1011: The I / O program 101 extracts the sequence number from the response received from the SSD 21, and stores the extracted sequence number in the latest SEQ # 604 of the primary journal management information 600.
 ステップ1013:I/Oプログラム101はホスト2に、ライト処理が完了した旨の応答を返却し、処理を終了する。 Step 1013: The I / O program 101 returns a response to the effect that the write process is completed to the host 2, and ends the process.
 続いて、ジャーナルが正ストレージ装置1aから副ストレージ装置1bに送信される時の処理(ジャーナル送信処理)の流れを、図13を用いて説明する。副ストレージ装置1bは定期的にジャーナルリードコマンド(RDJNLコマンドと略記されることもある)を正ストレージ装置1aに発行する。この処理は副ストレージ装置1bのCPU12がジャーナルリードプログラム151を実行することにより行われる。ジャーナルリードコマンドを受領した正ストレージ装置1aではジャーナル送信プログラム102が実行されており、これにより正ストレージ装置1aは、正ストレージ装置1a内SSD21のジャーナルボリュームに格納されているジャーナルを読み出して、副ストレージ装置1bへ送信する。この処理が繰り返されることにより、ジャーナルが定期的に正ストレージ装置1aから副ストレージ装置1bに送信される。 Subsequently, a flow of processing (journal transmission processing) when a journal is transmitted from the primary storage apparatus 1a to the secondary storage apparatus 1b will be described with reference to FIG. The secondary storage device 1b periodically issues a journal read command (sometimes abbreviated as RDJNL command) to the primary storage device 1a. This processing is performed by the CPU 12 of the secondary storage device 1b executing the journal read program 151. In the primary storage apparatus 1a that has received the journal read command, the journal transmission program 102 is executed, whereby the primary storage apparatus 1a reads the journal stored in the journal volume of the SSD 21 in the primary storage apparatus 1a, Transmit to device 1b. By repeating this process, the journal is periodically transmitted from the primary storage apparatus 1a to the secondary storage apparatus 1b.
 図13では、副ストレージ装置1bが1個のジャーナルリードコマンドを発行した時に行われる処理の流れを表している。ただし、ジャーナルリードコマンドはSSD21毎に作成されるので、たとえば副ストレージ装置1bが副SSDをn個有している場合(nは1以上の整数)、副ストレージ装置1bはn個のジャーナルリードコマンドを正ストレージ装置1aに発行する。またn個のジャーナルリードコマンドが発行される場合、それらの処理はシーケンシャルに行われる必要はなく、n個の処理が並列に実行されてよい(図13の処理がn個並列に実行される)。 FIG. 13 shows the flow of processing performed when the secondary storage apparatus 1b issues one journal read command. However, since the journal read command is created for each SSD 21, for example, when the secondary storage device 1b has n secondary SSDs (n is an integer of 1 or more), the secondary storage device 1b has n journal read commands. Is issued to the primary storage apparatus 1a. When n journal read commands are issued, these processes do not need to be performed sequentially, and n processes may be executed in parallel (n processes in FIG. 13 are executed in parallel). .
 ステップ1101:ジャーナルリードプログラム151はジャーナルリードコマンドを作成して、正ストレージ装置1aに送信する。ジャーナルリードコマンドには正ストレージ装置1aのSSD21の識別番号が含まれている。副ストレージ装置1b(ジャーナルリードプログラム151)はペア管理テーブル300を参照することで、副ストレージ装置1bが有する副SSDとペア関係にあるSSD21の識別番号をすべて特定し、これらのSSD21ごとにジャーナルリードコマンドを発行する。そしてジャーナルリードコマンドを受領した正ストレージ装置1a内はジャーナルリードコマンドで指定されている識別番号のSSD21が有するジャーナルボリュームからジャーナルを読み出して、副ストレージ装置1bに返送する(ステップ1201~ステップ1210)。 Step 1101: The journal read program 151 creates a journal read command and sends it to the primary storage device 1a. The journal read command includes the identification number of the SSD 21 of the primary storage device 1a. The secondary storage device 1b (journal read program 151) refers to the pair management table 300 to identify all the identification numbers of the SSDs 21 that are paired with the secondary SSD of the secondary storage device 1b, and journal read for each of these SSDs 21. Issue a command. The primary storage device 1a that has received the journal read command reads the journal from the journal volume of the SSD 21 with the identification number specified by the journal read command and returns it to the secondary storage device 1b (steps 1201 to 1210).
 ステップ1201:ジャーナル送信プログラム102は、副ストレージ装置1bからジャーナルリードコマンドを受領すると、ジャーナルリードコマンドで指定されているSSD21を特定する。以下の説明では、ここで特定されたSSD21の識別番号を“x”とする(xは01等の数値)。 Step 1201: When the journal transmission program 102 receives a journal read command from the secondary storage device 1b, it identifies the SSD 21 specified by the journal read command. In the following description, the identification number of the SSD 21 specified here is “x” (x is a numerical value such as 01).
 そしてジャーナル送信プログラム102は、正ジャーナル管理情報600の中からSSD#xの転送済みSEQ#605を参照することで、ジャーナルボリュームから最初に読み出すべきジャーナルのSEQ#を特定する(転送済みSEQ#605の値に1を加算した値が、読み出すべきジャーナルのSEQ#である)。またジャーナル送信プログラム102は変数Rを用意し、ここで特定されたジャーナルのSEQ#を変数Rに代入する。 The journal transmission program 102 specifies the SEQ # of the journal to be read first from the journal volume by referring to the transferred SEQ # 605 of the SSD # x from the primary journal management information 600 (transferred SEQ # 605). The value obtained by adding 1 to the value of is the SEQ # of the journal to be read). The journal transmission program 102 prepares a variable R, and substitutes the SEQ # of the journal specified here into the variable R.
 ステップ1203:ジャーナル送信プログラム102は、SSD#xの最新SEQ#604と変数Rの値を比較し、変数Rが最新SEQ#604以下か判定する。変数Rが最新SEQ#604以下の場合(ステップ1203:Y)、ジャーナル送信プログラム102は次にステップ1204を実行するが、変数Rが最新SEQ#604以下でない場合(ステップ1203:N)、次にステップ1210が行われる。 Step 1203: The journal transmission program 102 compares the latest SEQ # 604 of SSD # x with the value of the variable R, and determines whether the variable R is the latest SEQ # 604 or less. If the variable R is less than or equal to the latest SEQ # 604 (step 1203: Y), the journal transmission program 102 next executes step 1204. If the variable R is not less than or equal to the latest SEQ # 604 (step 1203: N), then Step 1210 is performed.
 ステップ1205:ジャーナル送信プログラム102は、読み出すべきジャーナルのJNCBが格納されている、ジャーナルボリュームのアドレスを求める。JNCBのサイズは固定長で、JNCBはジャーナルボリュームの管理情報領域の先頭からシーケンス番号順に格納されている為、リード対象ジャーナルのJNCBが格納されているアドレスは、単純な計算で求めることができる。そしてジャーナル送信プログラム102は、求められたジャーナルボリュームのアドレスからJNCBを読み出す。この時ジャーナル送信プログラム102は、読み出すべきジャーナルが格納されているSSD21(SSD#x)に対してリードコマンドを発行することで、JNCBを読み出す。SSD21から読み出されたJNCBは一旦キャッシュに格納される。 Step 1205: The journal transmission program 102 obtains the address of the journal volume in which the JNCB of the journal to be read is stored. The size of the JNCB is a fixed length, and the JNCB is stored in order of the sequence number from the beginning of the management information area of the journal volume. Therefore, the address where the JNCB of the read target journal is stored can be obtained by simple calculation. Then, the journal transmission program 102 reads JNCB from the obtained journal volume address. At this time, the journal transmission program 102 reads the JNCB by issuing a read command to the SSD 21 (SSD # x) in which the journal to be read is stored. The JNCB read from the SSD 21 is temporarily stored in the cache.
 ステップ1207:ジャーナル送信プログラム102は、ステップ1205で読み出されたJNCBの内容を解析し、JNCBのポインタ706を参照することで、ジャーナルデータの格納されているアドレスを特定する。そしてジャーナル送信プログラム102は、求められたジャーナルデータのアドレスを用いて、ジャーナルボリュームからジャーナルデータを読み出す。読み出しの際にはステップ1205と同様、ジャーナル送信プログラム102はSSD#xにリードコマンドを発行すればよい。読み出されたジャーナルデータは一旦キャッシュに格納される。 Step 1207: The journal transmission program 102 analyzes the contents of the JNCB read in Step 1205 and refers to the JNCB pointer 706 to identify the address where the journal data is stored. Then, the journal transmission program 102 reads journal data from the journal volume by using the obtained journal data address. When reading, the journal transmission program 102 may issue a read command to the SSD #x as in step 1205. The read journal data is temporarily stored in the cache.
 ステップ1208,ステップ1209:ジャーナル送信プログラム102は、ジャーナルボリュームから読み出されたジャーナルデータの合計が、あらかじめ定められた最大転送ジャーナル量を超過しているか判定する。最大転送ジャーナル量は、ユーザ(ストレージ装置1の管理者)によって設定可能な値で、たとえばユーザは管理ホスト5からストレージ装置1に最大転送ジャーナル量を設定することができる。 Step 1208, Step 1209: The journal transmission program 102 determines whether the total amount of journal data read from the journal volume exceeds a predetermined maximum transfer journal amount. The maximum transfer journal amount is a value that can be set by the user (the administrator of the storage apparatus 1). For example, the user can set the maximum transfer journal amount from the management host 5 to the storage apparatus 1.
 ジャーナルボリュームから読み出されたジャーナルデータの合計が、最大転送ジャーナル量を超過している場合(ステップ1208:Y)、次にステップ1210が行われる。一方、ジャーナルボリュームから読み出されたジャーナルデータの合計が、最大転送ジャーナル量以下の場合(ステップ1208:N)、ジャーナル送信プログラム102は変数Rに1を加算し(ステップ1209)、再びステップ1203から処理を行う。 If the total amount of journal data read from the journal volume exceeds the maximum transfer journal amount (step 1208: Y), step 1210 is performed next. On the other hand, when the total amount of journal data read from the journal volume is equal to or less than the maximum transfer journal amount (step 1208: N), the journal transmission program 102 adds 1 to the variable R (step 1209), and again from step 1203. Process.
 ステップ1210:ジャーナル送信プログラム102は、ステップ1209までの処理で読み出されたジャーナル(ジャーナルデータ及びJNCB)を、副ストレージ装置1bへ送信し、またSSD#xの転送済みSEQ#605を更新し(送信したジャーナルのシーケンス番号のうち最大のシーケンス番号をSSD#xの転送済みSEQ#605に格納する)、処理を終了する。 Step 1210: The journal transmission program 102 transmits the journal (journal data and JNCB) read in the processing up to step 1209 to the secondary storage device 1b and updates the transferred SEQ # 605 of the SSD # x ( The largest sequence number among the sequence numbers of the transmitted journal is stored in the transferred SEQ # 605 of the SSD # x), and the processing is terminated.
 ステップ1105:正ストレージ装置1aからジャーナルを受領したジャーナルリードプログラム151は、ジャーナルを副ストレージ装置1bのキャッシュに格納する。 Step 1105: The journal read program 151 that has received the journal from the primary storage apparatus 1a stores the journal in the cache of the secondary storage apparatus 1b.
 ステップ1107、ステップ1108:ジャーナルリードプログラム151は、ステップ1105で受領した各ジャーナルのJNCBを参照し、各JNCBに含まれるTimestamp702の中にSSD#xの到着済みT/S657(副ジャーナル管理情報650に格納されている)より新しいものがあるか判定する(ステップ1107)。SSD#xの到着済みT/S657より新しいTimestamp702を含むJNCBがあった場合(ステップ1107:Y)、ジャーナルリードプログラム151は、各JNCBに含まれるTimestamp702のうち最も新しいTimestamp702を、SSD#xの到着済みT/S657に格納することで、到着済みT/S657の更新を行い(ステップ1108)、処理を終了する。SSD#xの到着済みT/S657より新しいTimestamp702を含むJNCBがない場合(ステップ1107:N)、ジャーナルリードプログラム151はステップ1108を行わずに処理を終了する。 Step 1107, Step 1108: The journal read program 151 refers to the JNCB of each journal received in Step 1105, and the SSD # x arrived T / S657 (in the secondary journal management information 650) in the Timestamp 702 included in each JNCB. It is determined whether there is a newer one (stored) (step 1107). If there is a JNCB that includes a Timestamp 702 that is newer than the T / S657 that has arrived for the SSD # x (Step 1107: Y), the journal read program 151 determines that the Timestamp 702 that is the latest among the Timestamp 702 included in each JNCB is the arrival of the SSD # x. By storing in the completed T / S657, the arrived T / S657 is updated (step 1108), and the process is terminated. If there is no JNCB that includes a Timestamp 702 that is newer than the arrived T / S657 of SSD # x (step 1107: N), the journal read program 151 ends the process without performing step 1108.
 続いて、図14を用いてジャーナルリストア処理の流れを説明する。ジャーナルリストア処理は、副ストレージ装置1bのCPU12がデステージプログラム152を実行することにより行われる。副ストレージ装置1bは定期的にジャーナルリストア処理を実行する。またジャーナルリストア処理は、CTG単位で実行される処理である。図14では、特定の1つのCTG(たとえばCTG#が“n”のCTG。以下ではこれを“CTG#n”と呼ぶ)についてデステージプログラム152がジャーナルリストア処理を実行する時の処理の流れを説明する。 Subsequently, the flow of journal restore processing will be described with reference to FIG. The journal restoration process is performed by the CPU 12 of the secondary storage device 1b executing the destage program 152. The secondary storage device 1b periodically executes journal restore processing. The journal restore process is a process executed for each CTG. In FIG. 14, the flow of processing when the destage program 152 executes journal restore processing for a specific one CTG (for example, CTG with CTG # being “n”, hereinafter referred to as “CTG # n”). explain.
 ステップ1301:デステージプログラム152は、副ジャーナル管理情報650内の行のうち、CTG#652がnである行の到着済みT/S657(複数存在する)を参照し、複数の到着済みT/S657に格納されている時刻のうち、最古の時刻を特定する。ここで特定された時刻を「リストア可能タイムスタンプ」と呼ぶ。 Step 1301: The destage program 152 refers to the arrived T / S 657 (plural) of the row in which the CTG # 652 is n among the rows in the secondary journal management information 650, and refers to the plurality of arrived T / S 657. The oldest time among the times stored in is identified. The time specified here is called a “restorable time stamp”.
 続いてステップ1302~ステップ1305の処理が行われる。なお、ステップ1302~ステップ1305は、CTG#n内のSSD21毎に行われる。 Subsequently, the processing from step 1302 to step 1305 is performed. Steps 1302 to 1305 are performed for each SSD 21 in CTG # n.
 ステップ1302:デステージプログラム152は、CTG#nに属するSSD21のうち、まだステップ1302以降の処理が行われていないSSD21を1つ選択する。なお、以下の説明において、ここで選択されたSSD21の識別番号が“x”である例を説明する。デステージプログラム152は、副ストレージ装置1bのキャッシュに到着しているジャーナルのJNCBを参照することで、SSD#xに反映されるべきジャーナルをすべて特定する。 Step 1302: The destage program 152 selects one SSD 21 that has not yet undergone the processing from step 1302 among the SSDs 21 belonging to CTG # n. In the following description, an example in which the identification number of the SSD 21 selected here is “x” will be described. The destage program 152 specifies all the journals that should be reflected in the SSD # x by referring to the JNCB of the journal that has arrived at the cache of the secondary storage device 1b.
 ステップ1303:デステージプログラム152は特定されたジャーナルの中に、Timestamp702がリストア可能タイムスタンプ以前のジャーナルがあるか判定する。この条件に合致するジャーナルがある場合(ステップ1303:Y)には、デステージプログラム152はステップ1304を実行する。この条件に合致するジャーナルがない場合には(ステップ1303:N)、デステージプログラム152は次にステップ1306を実行する。 Step 1303: The destage program 152 determines whether there is a journal before the timestamp that can be restored by the Timestamp 702 among the identified journals. If there is a journal that matches this condition (step 1303: Y), the destage program 152 executes step 1304. If there is no journal that matches this condition (step 1303: N), the destage program 152 next executes step 1306.
 ステップ1304:デステージプログラム152は、ステップ1303で特定された各ジャーナルのリストア処理を行うため、ジャーナルリストアコマンドを作成して、SSD#xに発行する。 Step 1304: The destage program 152 creates a journal restore command and issues it to the SSD #x in order to restore each journal specified in step 1303.
 ジャーナルリストアコマンドのフォーマットを図7に示す。ジャーナルリストアコマンドは、ストレージコントローラ10がSSD21にジャーナルリストア処理を行わせるために用いられる。本実施例に係るSSD21は、先に説明したジャーナル作成コマンドに加えて、ジャーナルリストアコマンドをサポートしている。ジャーナルリストアコマンド850には、オペレーションコード(Opcode)851、VOL#852、LBA853、JLBA854、CBLBA855、Length856、JNCB857、ジャーナルデータ858が含まれる。 Figure 7 shows the format of the journal restore command. The journal restore command is used for the storage controller 10 to cause the SSD 21 to perform journal restore processing. The SSD 21 according to the present embodiment supports a journal restore command in addition to the journal creation command described above. The journal restore command 850 includes an operation code (Opcode) 851, VOL # 852, LBA853, JLBA854, CBLBA855, Length856, JNCB857, and journal data 858.
 Opcode851は、ジャーナル作成コマンドのOpcode751と同様に、コマンドの種類を表す情報である。VOL#852、LBA853は、ライトデータの書き込み先の位置についての情報で、具体的にはVOL#852はライトデータ書き込み先の物理ボリューム(S-VOL)の識別番号、LBA853は、SVOL(識別番号がVOL#852の物理ボリューム)上のLBAである。 Opcode 851 is information indicating the type of command, similar to Opcode 751 of the journal creation command. VOL # 852 and LBA853 are information regarding the write data write destination position. Specifically, VOL # 852 is the write data write destination physical volume (S-VOL) identification number, and LBA853 is the SVOL (identification number). Is the LBA on the VOL # 852 physical volume).
 JLBA854とCBLBA855は、ジャーナルボリューム上のアドレスを表し、JLBA854はジャーナルデータの書き込み先アドレスで、CBLBA855は、JNCBの書き込み先アドレスを表す。Length856はジャーナルデータの長さを表す。またJNCB858、ジャーナルデータ859にはそれぞれ、JNCBとジャーナルデータが格納される。 JLBA 854 and CBLBA 855 represent addresses on the journal volume, JLBA 854 represents the journal data write destination address, and CBLBA 855 represents the JNCB write destination address. Length 856 represents the length of journal data. The JNCB 858 and journal data 859 store the JNCB and journal data, respectively.
 このように、ジャーナルリストアコマンドには、1つのジャーナルについての情報のみが格納される。そのためステップ1303でリストアすべきジャーナルが複数ある場合、デステージプログラム152は、ジャーナルごとにジャーナルリストアコマンドを作成し、SSD#xに発行する。またデステージプログラム152は複数のジャーナルリストアコマンドを発行する場合、SEQ#701が小さいジャーナルから順にジャーナルリストアコマンドを作成し、SSD#xに発行する。これにより、P-VOLに書き込まれた各データがS-VOLに反映される順序が、P-VOLに書き込まれた順序と同じになる。 Thus, only the information about one journal is stored in the journal restore command. Therefore, when there are a plurality of journals to be restored in step 1303, the destage program 152 creates a journal restore command for each journal and issues it to the SSD #x. Further, when issuing a plurality of journal restore commands, the destage program 152 creates a journal restore command in order from the journal with the smallest SEQ # 701 and issues it to the SSD #x. As a result, the order in which each data written in the P-VOL is reflected in the S-VOL is the same as the order in which the data is written in the P-VOL.
 ここからは、ジャーナルリストアコマンドを受領したSSD#xで行われる処理について説明する。 Hereafter, processing performed by the SSD #x that has received the journal restore command will be described.
 ステップ1351、ステップ1352:SSD#xはジャーナルリストアコマンドを受領すると、ジャーナルリストアコマンド内のJNCB858とジャーナルデータ859をジャーナルボリュームに書き込む(ステップ1351)。続いてSSD#xは、ジャーナルデータ859をS-VOLに書き込む(ステップ1352)。 Step 1351, Step 1352: Upon receiving the journal restore command, SSD # x writes the JNCB 858 and journal data 859 in the journal restore command to the journal volume (step 1351). Subsequently, the SSD #x writes the journal data 859 to the S-VOL (step 1352).
 ステップ1353:SSD#xは、副ストレージ装置1bのストレージコントローラ10に、リストア処理が終わった旨の応答情報を返送する。以上が、SSD21が行うジャーナルリストア処理の説明である。 Step 1353: The SSD #x returns response information to the effect that the restore processing is completed to the storage controller 10 of the secondary storage device 1b. The above is the description of the journal restore process performed by the SSD 21.
 SSD#xが返送する応答情報のフォーマットを図7に示す。応答情報には、SEQ#881とTimestamp882とLength883が含まれる。SEQ#881とTimestamp882には、SSD#xがリストア処理を行ったジャーナルのJNCBに含まれていたSEQ#701とTimestamp702が含まれる。またLength883には、SSD#xがリストア処理を行ったジャーナルのジャーナルデータ長である。 The format of the response information returned by SSD # x is shown in FIG. The response information includes SEQ # 881, Timestamp 882, and Length 883. SEQ # 881 and Timestamp 882 include SEQ # 701 and Timestamp 702 that were included in the JNCB of the journal that SSD # x has restored. Length 883 is the journal data length of the journal for which SSD # x has performed the restore process.
 再び、デステージプログラム152の説明に戻る。 Return to the description of the destage program 152 again.
 ステップ1305:SSD#xからの応答情報が副ストレージ装置1bのストレージコントローラ10に到着すると、デステージプログラム152は副ジャーナル管理情報650の反映済みSEQ#656の値を応答情報に含まれているSEQ#881の値に書き換え、またリストア済みT/S658の値を応答情報に含まれているTimestamp882の値に書き換える。 Step 1305: When the response information from the SSD #x arrives at the storage controller 10 of the secondary storage device 1b, the destage program 152 executes the SEQ that includes the reflected SEQ # 656 value of the secondary journal management information 650 in the response information. The value of # 881 is rewritten, and the value of restored T / S 658 is rewritten to the value of Timestamp 882 included in the response information.
 さらにデステージプログラム152は、JVOL管理テーブル800のJNCB最新アドレス804とライトデータ最新アドレス806を更新する。具体的にはデステージプログラム152は、ライトデータ最新アドレス806の値に、応答情報に含まれているLength883の値を加算することで、ライトデータ最新アドレス806の内容を更新する。またデステージプログラム152は、JNCB最新アドレス804にはJNCBのサイズを加算することで更新する。 Further, the destage program 152 updates the JNCB latest address 804 and the write data latest address 806 of the JVOL management table 800. Specifically, the destage program 152 updates the contents of the write data latest address 806 by adding the value of Length 883 included in the response information to the value of the write data latest address 806. The destage program 152 is updated by adding the JNCB size to the JNCB latest address 804.
 ステップ1306:デステージプログラム152は、CTG#nに属する全てのSSD21について、ステップ1305までの処理が完了した場合(ステップ1306:Y)、デステージプログラム152は処理を終了する。まだステップ1305までの処理が行われていないSSD21がある場合、デステージプログラム152は再びステップ1302からの処理を行う。 Step 1306: The destage program 152 ends the process when all the SSDs 21 belonging to the CTG # n have been processed up to the step 1305 (step 1306: Y). If there is an SSD 21 that has not been processed up to step 1305 yet, the destage program 152 performs the processing from step 1302 again.
 上で説明したジャーナルリストア処理では、リストア可能タイムスタンプ以前のTimestamp702を有するジャーナルのみがリストア処理の対象となる。図15を用いて、この理由について概説する。 In the journal restore process described above, only the journal having the Timestamp 702 before the restoreable time stamp is the target of the restore process. The reason for this will be outlined with reference to FIG.
 図15中の要素7001,7002,7003,7004はそれぞれ、副ストレージ装置1bのキャッシュに格納済みのジャーナル群を表している。また、図15中に記載されている複数のボックスはそれぞれ、ジャーナルを表し、ジャーナル内に記載されている“15:00”等の数値は、ジャーナルに含まれるタイムスタンプを表している。 15, elements 7001, 7002, 7003, and 7004 represent journal groups that are already stored in the cache of the secondary storage device 1b. A plurality of boxes described in FIG. 15 each represent a journal, and a numerical value such as “15:00” described in the journal represents a time stamp included in the journal.
 要素7001内のジャーナル群は、SSD#1に格納されるべきジャーナルである。また同様に、要素7002,7003,7004内のジャーナル群はそれぞれ、SSD#2,#3,#4に格納されるべきジャーナルである。そしてSSD#1~SSD#4はいずれも同一CTGに属する。 The journal group in the element 7001 is a journal to be stored in the SSD # 1. Similarly, journal groups in the elements 7002, 7003, and 7004 are journals to be stored in the SSDs # 2, # 3, and # 4, respectively. All of SSD # 1 to SSD # 4 belong to the same CTG.
 図15の例では、SSD#1に格納されるべきジャーナルのうち、最も新しいタイムスタンプは“15:00”で、SSD#2に格納されるべきジャーナルのうち、最も新しいタイムスタンプは“15:02”で、SSD#3に格納されるべきジャーナルのうち、最も新しいタイムスタンプは“15:03”で、SSD#4に格納されるべきジャーナルのうち、最も新しいタイムスタンプは“15:04”である。ここに挙げたタイムスタンプは、副ジャーナル管理情報650の、各SSD21の到着済みT/S657に格納される。先にも述べたがタイムスタンプは、ホスト2から正ストレージ装置1aにライトコマンドが発行された時刻であるから、各ジャーナルに含まれるジャーナルデータは、タイムスタンプが示す時刻にP-VOLに書き込まれたことを意味する。これらのジャーナルデータを副ストレージ装置1bのS-VOLに書き込む(反映する)際、タイムスタンプの示す時刻順に書き込まれると、データ一貫性が保証できる。 In the example of FIG. 15, the newest time stamp among the journals to be stored in the SSD # 1 is “15:00”, and the latest time stamp among the journals to be stored in the SSD # 2 is “15: 02 ”, the latest time stamp among the journals to be stored in SSD # 3 is“ 15:03 ”, and the latest time stamp among the journals to be stored in SSD # 4 is“ 15:04 ”. It is. The time stamps listed here are stored in the arrived T / S 657 of each SSD 21 in the secondary journal management information 650. As described above, since the time stamp is the time when the write command is issued from the host 2 to the primary storage device 1a, the journal data included in each journal is written to the P-VOL at the time indicated by the time stamp. Means that. When these journal data are written (reflected) in the S-VOL of the secondary storage device 1b, data consistency can be guaranteed if they are written in the order of the time indicated by the time stamp.
 図15に記載された状態では、副ストレージ装置1bには、SSD#2,#3,#4に格納されるべきジャーナルの中には、15:00よりも後の時刻のタイムスタンプを含むジャーナルが存在するが、SSD#1に格納されるべきジャーナルの中には、15:00よりも後の時刻のタイムスタンプを含むジャーナルが存在していない。しかし正ストレージ装置1aから副ストレージ装置1bへのジャーナル送信処理は、SSD21毎に行われるため、しばらく後に、15:00よりも後の時刻のタイムスタンプを含むジャーナル(SSD#1に格納されるべきジャーナル)が到着する可能性がある。たとえば図15に示されているように、正ストレージ装置1aのSSD21に、タイムスタンプが15:01のジャーナルが、副ストレージ装置1bに未送信の状態で存在していることがあり得る(7001’)。 In the state described in FIG. 15, the secondary storage device 1 b includes a journal that includes a time stamp after 15:00 among journals to be stored in the SSDs # 2, # 3, and # 4. However, among the journals to be stored in the SSD # 1, there is no journal including a time stamp later than 15:00. However, since journal transmission processing from the primary storage device 1a to the secondary storage device 1b is performed for each SSD 21, a journal including a time stamp later than 15:00 (to be stored in SSD # 1) (Journal) may arrive. For example, as shown in FIG. 15, a journal with a time stamp of 15:01 may exist in the SSD 21 of the primary storage device 1a in an untransmitted state to the secondary storage device 1b (7001 ′). ).
 もし、ここで副ストレージ装置1bに到着している全てのジャーナルのリストア処理を行ってしまうと、このリストア処理後に、例えば正ストレージ装置1aに障害が発生した場合、副ストレージ装置1bにおいて、タイムスタンプが15:03のジャーナル(SSD#3のジャーナル)及びタイムスタンプが15:04のジャーナル(SSD#3のジャーナル)はS-VOLに反映されたが、タイムスタンプが15:01のジャーナルはS-VOLに反映されない状態になる。本来タイムスタンプが15:03のジャーナル(SSD#3のジャーナル)及びタイムスタンプが15:04のジャーナル(SSD#3のジャーナル)はS-VOLに反映された場合、タイムスタンプが15:01のジャーナルもS-VOLに反映された状態が、データ一貫性のある状態だが、図15の状態で副ストレージ装置1bに到着している全てのジャーナルのリストア処理を行ってしまうと、データ一貫性が保証できなくなる。 If all the journals that have arrived at the secondary storage device 1b are restored at this point, for example, if a failure occurs in the primary storage device 1a after this restore processing, the secondary storage device 1b performs a time stamp. The 15:03 journal (SSD # 3 journal) and the 15:04 time stamp (SSD # 3 journal) are reflected in the S-VOL, but the 15:01 time stamp is S- The state is not reflected in the VOL. Originally, the journal with a time stamp of 15:03 (SSD # 3 journal) and the journal with a time stamp of 15:04 (SSD # 3 journal) are reflected in the S-VOL. Although the state reflected in the S-VOL is in a data consistent state, if all the journals that have arrived at the secondary storage system 1b in the state of FIG. 15 are restored, the data consistency is guaranteed. become unable.
 本実施例に係る副ストレージ装置ではデータ一貫性を保証するため、上で述べたステップ1301の処理を行うことにより、CTG内の各SSD21に格納されるべきジャーナルの、到着済みタイムスタンプを特定し、さらに特定された各到着済みタイムスタンプの中で最も古い時刻のタイムスタンプをリストア可能タイムスタンプと決定する。図15の例では、SSD#1の到着済みT/S657は“15:00”で、SSD#2の到着済みT/S657は“15:02”で、SSD#3の到着済みT/S657は“15:03”で、SSD#4の到着済みT/S657は“15:04”である。各到着済みタイムスタンプ657のうち、最も古い時刻はSSD#1の到着済みT/S657(つまり15:00)である。そのため、副ストレージ装置1bは、タイムスタンプが15:00以前のジャーナルだけを、リストア処理の対象として扱う。これにより、リストア処理の後に、障害が発生しても、CTGに属する各S-VOLはデータ一貫性が保証された状態になる。 In the secondary storage apparatus according to the present embodiment, in order to ensure data consistency, the process of step 1301 described above is performed to identify the arrival time stamp of the journal to be stored in each SSD 21 in the CTG. Further, the time stamp of the oldest time among the identified arrival time stamps is determined as a restoreable time stamp. In the example of FIG. 15, the arrived T / S657 of SSD # 1 is “15:00”, the arrived T / S657 of SSD # 2 is “15:02”, and the arrived T / S657 of SSD # 3 is At “15:03”, the arrived T / S657 of SSD # 4 is “15:04”. Of each arrival time stamp 657, the oldest time is the arrival T / S657 (that is, 15:00) of SSD # 1. For this reason, the secondary storage system 1b treats only journals with a time stamp of 15:00 or earlier as restore processing targets. As a result, even if a failure occurs after the restore process, each S-VOL belonging to the CTG is in a state where data consistency is guaranteed.
 以上が、本発明の実施例1に係るストレージシステムにおける、リモートコピー処理の流れである。本発明の実施例1に係るストレージシステムでは、正ストレージ装置が有する記憶デバイス(SSD)がジャーナル作成処理を行うため、ストレージコントローラの処理負荷の低減が可能である。また、ストレージコントローラがジャーナル作成を行う場合、ストレージコントローラは記憶デバイス(P-VOL)にライトデータを書き込むとともに、ジャーナルを記憶デバイス(ジャーナルボリューム)に書き込む必要がある。本実施例に係るストレージ装置では、ジャーナル作成コマンドとライトデータを1回記憶デバイスに送信するだけで良いため、ストレージコントローラと記憶デバイスとの間のデータ転送量を削減することができる。 The above is the remote copy process flow in the storage system according to the first embodiment of the present invention. In the storage system according to the first embodiment of the present invention, the storage device (SSD) included in the primary storage apparatus performs journal creation processing, so the processing load on the storage controller can be reduced. When the storage controller creates a journal, the storage controller needs to write write data to the storage device (P-VOL) and write a journal to the storage device (journal volume). In the storage apparatus according to the present embodiment, the journal creation command and the write data need only be transmitted once to the storage device, so that the data transfer amount between the storage controller and the storage device can be reduced.
 また、副ストレージ装置においても、記憶デバイス(SSD)がジャーナルリストア処理を実施するため、副ストレージ装置のストレージコントローラの処理負荷を低減することができる。 Also, in the secondary storage apparatus, the storage device (SSD) performs journal restore processing, so the processing load on the storage controller of the secondary storage apparatus can be reduced.
 さらに、実施例1に係るストレージシステムでは、ジャーナルにタイムスタンプを挿入し、副ストレージ装置では各SSDにジャーナルリストア処理を行わせる際、ジャーナルに含まれるタイムスタンプに基づいてリストア対象のジャーナルを選択することにより、複数のS-VOLのデータ一貫性を保証することを可能にしている。 Further, in the storage system according to the first embodiment, a time stamp is inserted into the journal, and when the secondary storage device causes each SSD to perform journal restore processing, the journal to be restored is selected based on the time stamp included in the journal. This makes it possible to guarantee data consistency of a plurality of S-VOLs.
 続いて、実施例2に係る計算機システムについて説明する。実施例2に係る計算機システムのハードウェア構成は、実施例1で説明したものと同じであるため、図示は略す。 Subsequently, a computer system according to the second embodiment will be described. Since the hardware configuration of the computer system according to the second embodiment is the same as that described in the first embodiment, illustration is omitted.
 まず、実施例1において説明していないコピーマネージャ6について説明する。コピーマネージャ6はホスト2と同様の、パーソナルコンピュータなどの汎用的な計算機であり、SAN3を介してストレージ装置1aに接続される。コピーマネージャ6は、ストレージ装置1の論理ボリュームに対してリードコマンドやライトコマンドを発行することはしないが、ストレージ装置1に対し定期的に“Freezeコマンド”と呼ばれるコマンドを発行する。詳細は後述する。 First, the copy manager 6 not described in the first embodiment will be described. The copy manager 6 is a general-purpose computer such as a personal computer, similar to the host 2, and is connected to the storage apparatus 1a via the SAN 3. The copy manager 6 does not issue a read command or a write command to the logical volume of the storage apparatus 1, but periodically issues a command called “Freeze command” to the storage apparatus 1. Details will be described later.
 また、実施例1に係る計算機システムでは、ホスト2が発行するライトコマンドには時刻情報(タイムスタンプ)が含まれている必要があった。一方、実施例2に係る計算機システムでは、ホスト2が発行するライトコマンドに時刻情報は含まれていなくてもよい。 Further, in the computer system according to the first embodiment, the write command issued by the host 2 needs to include time information (time stamp). On the other hand, in the computer system according to the second embodiment, the time information may not be included in the write command issued by the host 2.
 実施例2では、ストレージ装置で実行される一部のプログラムが実施例1と相違し、また作成される管理情報等にも、実施例1で説明したものと若干相違する点がある。ただし多くの点は実施例1で説明したものと同じであるため、実施例2において各種ハードウェア要素、管理情報またはプログラムの説明を行う際、実施例1と同じものについては実施例1で用いた参照番号と同じものを用いて説明する。以下では主に、実施例1との相違点を中心に説明する。 In the second embodiment, some programs executed in the storage apparatus are different from those in the first embodiment, and the management information and the like to be created are slightly different from those described in the first embodiment. However, since many points are the same as those described in the first embodiment, when various hardware elements, management information, or programs are described in the second embodiment, the same elements as those in the first embodiment are used in the first embodiment. The same reference numbers are used for explanation. The following description will mainly focus on the differences from the first embodiment.
 図16は、実施例2に係る正ストレージ装置1aが有する世代管理テーブルの例である。実施例2に係る正ストレージ装置1aは、ストレージ装置1a内でタイムスタンプを管理する。タイムスタンプは、必ずしも時、分等の、時刻を表す情報である必要はない。ホスト2から受領した複数のライトデータの書き込み順序を識別可能な情報をジャーナルに付与することができればよい。そのため実施例2に係る正ストレージ装置1aでは、タイムスタンプとして、時刻情報に代えて、一種の連続番号を用いる。この連続番号のことを実施例2ではタイムスタンプと呼ぶ。あるいはこの連続番号を、「世代番号」と呼ぶこともある。また、世代番号は「世代#」と略記されることもある。ただし別の実施形態として、世代番号の代わりに時刻情報(時、分などの、時刻を表す情報)が用いられてもよい。 FIG. 16 is an example of a generation management table included in the primary storage device 1a according to the second embodiment. The primary storage device 1a according to the second embodiment manages time stamps in the storage device 1a. The time stamp does not necessarily need to be information representing time, such as hours and minutes. Information that can identify the write order of the plurality of write data received from the host 2 may be given to the journal. Therefore, in the primary storage system 1a according to the second embodiment, a kind of serial number is used as the time stamp instead of the time information. This serial number is referred to as a time stamp in the second embodiment. Alternatively, this serial number may be referred to as a “generation number”. The generation number may be abbreviated as “generation #”. However, as another embodiment, time information (information representing time, such as hours and minutes) may be used instead of the generation number.
 世代管理テーブル900ではCTG毎にタイムスタンプが管理され、そのため世代管理テーブル900の各行には、CTGに関する情報が格納される。図16を参照しながら世代管理テーブル900の各カラムの内容を説明する。CTG#901にはCTG#が格納され、DEV#902はCTG#901で特定されるCTGに属する記憶デバイス(SSD21)の識別番号が格納される。 In the generation management table 900, time stamps are managed for each CTG, and therefore, information about the CTG is stored in each row of the generation management table 900. The contents of each column of the generation management table 900 will be described with reference to FIG. CTG # 901 stores CTG #, and DEV # 902 stores the identification number of the storage device (SSD21) belonging to the CTG specified by CTG # 901.
 そしてタイムスタンプ903には、CTG#901で特定されるCTGの世代番号が格納される。タイムスタンプ903の初期値は0である。また先に述べたとおり、タイムスタンプ903は「世代#903」と表記されることもある。 The time stamp 903 stores the generation number of the CTG specified by CTG # 901. The initial value of the time stamp 903 is 0. As described above, the time stamp 903 may be written as “generation # 903”.
 実施例1と同様、実施例2におけるストレージシステムでも、タイムスタンプ(世代番号)は正ストレージ装置1aがジャーナルを作成するときにJNCBに格納され、そして副ストレージ装置1bがジャーナルリストア処理を行う際に参照される。 Similar to the first embodiment, in the storage system of the second embodiment, the time stamp (generation number) is stored in the JNCB when the primary storage device 1a creates a journal, and when the secondary storage device 1b performs the journal restore process. Referenced.
 タイムスタンプ(世代番号)の更新処理について、図17を用いて説明する。実施例2に係る正ストレージ装置1aでは、世代更新プログラムが実行される。一方、コピーマネージャ6では先に述べたとおり、定期的にFreezeコマンドを発行するためのプログラムが実行されている。本実施例ではこのプログラムを「RAIDマネージャ」と呼ぶ。世代更新プログラムとRAIDマネージャが実行されることにより、タイムスタンプの更新が行われる。図17において、ステップ2001とステップ2002は、RAIDマネージャが実行する処理で、ステップ2101~ステップ2103は世代更新プログラムが実行する。RAIDマネージャは、たとえばユーザ(ストレージシステムの管理者)が起動を指示した契機で、処理を開始する。 Time stamp (generation number) update processing will be described with reference to FIG. In the primary storage device 1a according to the second embodiment, a generation update program is executed. On the other hand, as described above, the copy manager 6 executes a program for periodically issuing a Freeze command. In this embodiment, this program is called “RAID manager”. The time stamp is updated by executing the generation update program and the RAID manager. In FIG. 17, steps 2001 and 2002 are processes executed by the RAID manager, and steps 2101 to 2103 are executed by the generation update program. The RAID manager starts processing when, for example, a user (storage system administrator) instructs activation.
 RAIDマネージャが起動されると、RAIDマネージャはFreezeコマンドを正ストレージ装置1aに発行する(ステップ2001)。続いてRAIDマネージャは、一定時間(たとえば1秒、あるいは0.1秒など)待機し(ステップ2002)、その後再びステップ2001を実行する。RAIDマネージャは、この処理を繰り返す。 When the RAID manager is activated, the RAID manager issues a Freeze command to the primary storage apparatus 1a (step 2001). Subsequently, the RAID manager waits for a certain time (for example, 1 second or 0.1 second) (step 2002), and then executes step 2001 again. The RAID manager repeats this process.
 一方、RAIDマネージャがステップ2001で発行したFreezeコマンドを受領した世代更新プログラムは、以下の処理を行う。 On the other hand, the generation update program that has received the Freeze command issued by the RAID manager in step 2001 performs the following processing.
 ステップ2101:世代更新プログラムは、Freezeコマンドを受信すると、ストレージ装置1aの全論理ボリューム(及び論理ボリュームを構成する物理ボリューム)に対するI/O処理を一時停止する。たとえばストレージ装置1aでは、実施例1で説明したライトプログラム等が実行されており、図12に示された処理が実行されているが、世代更新プログラムはライトプログラム等の処理を中断させる。それにより正ストレージ装置1aでは、ジャーナル作成処理等も一旦停止する。 Step 2101: When the generation update program receives the Freeze command, the generation update program temporarily stops the I / O processing for all the logical volumes (and physical volumes constituting the logical volume) of the storage apparatus 1a. For example, in the storage device 1a, the write program or the like described in the first embodiment is executed, and the process shown in FIG. 12 is executed. However, the generation update program interrupts the process such as the write program. As a result, in the primary storage apparatus 1a, journal creation processing and the like are temporarily stopped.
 ステップ2102:世代更新プログラムは、世代管理テーブル900の各行のタイムスタンプ903の値に1を加算する。 Step 2102: The generation update program adds 1 to the value of the time stamp 903 in each row of the generation management table 900.
 ステップ2103:ステップ2102の後、世代更新プログラムは、ステップ2101で停止させたI/O処理を再開させる。 Step 2103: After step 2102, the generation update program restarts the I / O processing stopped in step 2101.
 以上の処理を、RAIDマネージャと世代更新プログラムが行うことにより、世代管理テーブル900のタイムスタンプ903の値は、定期的に1ずつ増加していく。つまりコピーマネージャ6から発行されるFreezeコマンドは、タイムスタンプ903の値の更新(加算)を指示するためのコマンドと言える。 By performing the above processing by the RAID manager and the generation update program, the value of the time stamp 903 in the generation management table 900 is periodically increased by one. That is, the Freeze command issued from the copy manager 6 can be said to be a command for instructing update (addition) of the value of the time stamp 903.
 また、上で説明した例では、ストレージ装置1aはFreezeコマンドを受信すると、全論理ボリュームのI/O処理を一時停止する。またFreezeコマンドの受領に応じて、世代管理テーブル900の全行のタイムスタンプ903が更新される。ただし別の実施形態として、CTG毎にこれらの処理が行われるようにしてもよい。 In the example described above, when the storage apparatus 1a receives the Freeze command, the I / O processing of all logical volumes is temporarily stopped. In response to receipt of the Freeze command, the time stamps 903 of all the rows in the generation management table 900 are updated. However, as another embodiment, these processes may be performed for each CTG.
 一例を説明する。RAIDマネージャは、CTG#が含まれたFreezeコマンドをストレージ装置1aに発行する。以下では仮に、Freezeコマンドに含まれているCTG#が“n”の例を説明する。このコマンドを受領した世代更新プログラムは、ステップ2102において世代管理テーブル900の行のうち、CTG#901が“n”の行のタイムスタンプ903の値に1を加算するとよい。またこの場合世代更新プログラムはステップ2101において、CTG#nに属する物理ボリュームに対するアクセス(I/O処理だけを中断すればよい。 An example will be described. The RAID manager issues a Freeze command including CTG # to the storage apparatus 1a. An example in which CTG # included in the Freeze command is “n” will be described below. Upon receiving this command, the generation update program may add 1 to the value of the time stamp 903 in the row of the generation management table 900 where CTG # 901 is “n” in step 2102. In this case, the generation update program only has to interrupt access (I / O processing) to the physical volume belonging to CTG # n in step 2101.
 以下では、実施例2に係る計算機システムで行われるジャーナル作成処理やジャーナルリストア処理の流れを説明していくが、これらの処理の流れは実施例1で説明したものとほとんど同じであるため、以下では主に実施例1で用いた図面(図12~図14)を用いて、実施例2に係る計算機システムで行われるジャーナル作成処理やジャーナルリストア処理の流れを説明する。 In the following, the flow of journal creation processing and journal restoration processing performed in the computer system according to the second embodiment will be described, but the flow of these processing is almost the same as that described in the first embodiment. The flow of journal creation processing and journal restoration processing performed in the computer system according to the second embodiment will be described mainly with reference to the drawings (FIGS. 12 to 14) used in the first embodiment.
 まず、実施例2に係る正ストレージ装置1aがホスト2からライトコマンドを受領した時に行われる処理の流れを説明する。多くの処理は実施例1で説明したものと同じであるため、以下では実施例1で説明した処理と異なる点を中心に説明する。 First, the flow of processing performed when the primary storage apparatus 1a according to the second embodiment receives a write command from the host 2 will be described. Since many of the processes are the same as those described in the first embodiment, the following description focuses on differences from the processes described in the first embodiment.
 まずステップ1001~ステップ1004は、実施例1で説明した処理と同じである。なお、先にも述べたが、実施例2に係る計算機システムでは、ホスト2が発行するライトコマンドには、タイムスタンプは含まれていない(ライトコマンドにタイムスタンプが含まれていてもよいが、そのタイムスタンプは実施例2に係るストレージ装置1では使用されない)。 First, Step 1001 to Step 1004 are the same as the processing described in the first embodiment. As described above, in the computer system according to the second embodiment, the write command issued by the host 2 does not include a time stamp (the write command may include a time stamp, The time stamp is not used in the storage apparatus 1 according to the second embodiment).
 ステップ1005において正ストレージ装置1aがジャーナル作成コマンドを作成する時、I/Oプログラム101は、世代管理テーブル900に格納されているタイムスタンプ(世代#)903を用いる。たとえば、ジャーナル作成を指示する対象のSSD21がCTG#1に属している場合、I/Oプログラム101は、CTG#901が“1”の行のタイムスタンプ903に格納されている値をTimestamp752に含めたジャーナル作成コマンドを作成しSSD21に発行する。これ以外の点は、I/Oプログラム101は実施例1で説明した処理と同じ処理を行う。 When the primary storage apparatus 1a creates a journal creation command in step 1005, the I / O program 101 uses the time stamp (generation #) 903 stored in the generation management table 900. For example, when the SSD 21 to be instructed to create a journal belongs to CTG # 1, the I / O program 101 includes the value stored in the time stamp 903 of the row where the CTG # 901 is “1” in the Timestamp 752. A journal creation command is created and issued to the SSD 21. In other respects, the I / O program 101 performs the same processing as that described in the first embodiment.
 ジャーナル作成コマンドを受領したSSD21が行う処理は、実施例1と実施例2とで差異はないため、説明を略す。 Since the processing performed by the SSD 21 that has received the journal creation command is not different between the first embodiment and the second embodiment, a description thereof will be omitted.
 続いて、実施例2に係るストレージシステムにおいて、ジャーナルが正ストレージ装置1aから副ストレージ装置1bに送信される時の処理の流れを、図13と図18を参照しながら説明する。実施例2で行われる処理は、図13のステップ1107、ステップ1108が、図18のステップ1107’、ステップ1108’に置きかわる以外は、実施例1で説明したものと同じである。そのため以下では、副ストレージ装置1bで行われる処理(ステップ1105~ステップ1108)について、図18を参照しながら説明する。なお、実施例1と同じく、以下の説明では、副ストレージ装置1bが発行するジャーナルリードコマンドで指定されているSSD21は、SSD#xである場合の例を説明する。 Subsequently, a flow of processing when a journal is transmitted from the primary storage apparatus 1a to the secondary storage apparatus 1b in the storage system according to the second embodiment will be described with reference to FIGS. The processing performed in the second embodiment is the same as that described in the first embodiment except that steps 1107 and 1108 in FIG. 13 are replaced with steps 1107 'and 1108' in FIG. Therefore, hereinafter, the processing (steps 1105 to 1108) performed in the secondary storage device 1b will be described with reference to FIG. As in the first embodiment, in the following description, an example in which the SSD 21 specified by the journal read command issued by the secondary storage apparatus 1b is SSD # x will be described.
 ステップ1105は実施例1で説明した処理と同じである。 Step 1105 is the same as the processing described in the first embodiment.
 ステップ1105の後、ジャーナルリードプログラム151は、受領したJNCBのうち、Timestamp702の値を1減算した値が、SSD#xの到着済み世代#657’より大きいものがあるか判定する(ステップ1107’)。この判定が肯定的な場合(ステップ1107’:Y)、ジャーナルリードプログラム151はSSD#xの到着済みT/S657に1を加算して(ステップ1108’)、その後処理を終了する。 After step 1105, the journal read program 151 determines whether there is a value obtained by subtracting 1 from the value of Timestamp 702 among the received JNCBs that is larger than the arrival generation # 657 ′ of SSD #x (step 1107 ′). . If this determination is affirmative (step 1107 ′: Y), the journal read program 151 adds 1 to the arrived T / S 657 of SSD # x (step 1108 ′), and then ends the processing.
 正ストレージ装置1aで世代更新プログラムが実行されることにより、世代管理テーブル900のタイムスタンプ903は定期的に増加するが、JNCBのTimestamp702に同一の値が格納されたジャーナルは複数作成されることがある。たとえば副ストレージ装置1bが、Timestamp702がx(xは1以上の整数値とする)のジャーナルを受領した時点では、まだTimestamp702がxのジャーナルが未送信の状態で正ストレージ装置1aに残っている可能性がある。逆に副ストレージ装置1bがTimestamp702が(x+1)のジャーナルを受領した場合、Timestamp702がxのジャーナルはすべて副ストレージ装置1bに到着していることが保証されている。 When the generation update program is executed in the primary storage apparatus 1a, the time stamp 903 of the generation management table 900 is periodically increased, but a plurality of journals in which the same value is stored in the JNCB Timestamp 702 may be created. is there. For example, when the secondary storage apparatus 1b receives a journal whose Timestamp 702 is x (x is an integer value equal to or greater than 1), the journal whose Timestamp 702 is x may still remain in the primary storage apparatus 1a without being transmitted. There is sex. Conversely, when the secondary storage apparatus 1b receives a journal whose Timestamp 702 is (x + 1), it is guaranteed that all journals whose Timestamp 702 is x have arrived at the secondary storage apparatus 1b.
 そのため副ストレージ装置1bは、ステップ1107’、1108’を実行することで、Timestamp702がxのジャーナルはすべて副ストレージ装置1bに到着していることが確認できた時点で、副ジャーナル管理情報650の到着済みタイムスタンプ657にxを格納する。その後、Timestamp702が(x+2)のジャーナルを副ストレージ装置1bが受領した場合、Timestamp702が(x+1)のジャーナルはすべて副ストレージ装置1bによって受領済みであることを意味するため、副ストレージ装置1bは(ステップ1107’、1108’を実行することで)、到着済みタイムスタンプ657に(x+1)を格納する。 Therefore, the secondary storage device 1b executes steps 1107 ′ and 1108 ′, and when it is confirmed that all journals whose Timestamp 702 is x have arrived at the secondary storage device 1b, the arrival of the secondary journal management information 650 is reached. X is stored in the completed time stamp 657. Thereafter, when the secondary storage device 1b receives a journal whose Timestamp 702 is (x + 2), it means that all journals whose Timestamp 702 is (x + 1) have been received by the secondary storage device 1b. By executing 1107 ′ and 1108 ′, (x + 1) is stored in the arrival time stamp 657.
 最後に、実施例2に係る副ストレージ装置1bで実施される、ジャーナルリストア処理について説明する。実施例1で説明したとおり、ジャーナルリストア処理では、到着済みT/S657やジャーナル(JNCB)に含まれているTimestamp702を用いてリストア処理の対象となるジャーナルを選択することで、データ一貫性の保証を行う。実施例2におけるジャーナルリストア処理でも同じ処理が行われる。唯一の違いは、到着済みT/S657やジャーナル(JNCB)に含まれているTimestamp702が、時刻情報(ホスト2からライトコマンドとともに受領した時刻)ではなく、正ストレージ装置1aで管理している世代番号である点で、それ以外の点は実施例2におけるジャーナルリストア処理は実施例1で説明した処理と同じである。 Finally, the journal restoration process performed in the secondary storage system 1b according to the second embodiment will be described. As described in the first embodiment, in the journal restoration process, data consistency is guaranteed by selecting a journal to be restored using the Timestamp 702 included in the arrived T / S 657 or the journal (JNCB). I do. The same processing is performed in the journal restoration processing in the second embodiment. The only difference is that the Timestamp 702 included in the arrived T / S 657 or journal (JNCB) is not the time information (the time received together with the write command from the host 2), but the generation number managed by the primary storage system 1a. In other respects, the journal restoration process in the second embodiment is the same as the process described in the first embodiment.
 以上で実施例2の説明を終了する。実施例2に係るストレージシステムでは、ホスト2が発行するライトコマンドに含まれるタイムスタンプが不要になるため、タイムスタンプを含んだライトコマンドを発行する機能を持たないホスト2が用いられても、データ一貫性の保証が可能である。 This is the end of the description of the second embodiment. In the storage system according to the second embodiment, the time stamp included in the write command issued by the host 2 becomes unnecessary, so even if the host 2 that does not have the function of issuing the write command including the time stamp is used, the data Consistency can be guaranteed.
 なお、上では、タイムスタンプ(世代番号)をストレージ装置1aが管理し、ストレージ装置1aはコピーマネージャ6からFreezeコマンドを受領したことに応じて、自身が管理する世代番号を1加算する例を説明した。ただし別の実施形態として、コピーマネージャ6がタイムスタンプを管理するように構成されていてもよい。 In the above description, an example is described in which the storage apparatus 1a manages the time stamp (generation number), and the storage apparatus 1a adds 1 to the generation number managed by itself in response to receiving the Freeze command from the copy manager 6. did. However, as another embodiment, the copy manager 6 may be configured to manage time stamps.
 たとえばコピーマネージャ6は、Freezeコマンドにタイムスタンプ(たとえば世代番号)を含めてストレージ装置1aに送信し、Freezeコマンドを送信する際に、自身で管理している世代番号に1加算するように構成されていてよい。そしてストレージ装置1aはコピーマネージャ6からFreezeコマンドを受領すると、Freezeコマンドに含まれている世代番号を世代管理テーブル900に格納するとよい。なお、コピーマネージャ6はタイムスタンプとして時刻情報を送信するよう構成されていてもよい。その場合コピーマネージャ6は、Freezeコマンド送信時に、自身が有する時計から取得した時刻情報(現在時刻)をFreezeコマンドに含めるとよい。 For example, the copy manager 6 includes a time stamp (for example, a generation number) in the Freeze command and transmits it to the storage device 1a, and is configured to add 1 to the generation number managed by itself when transmitting the Freeze command. It may be. When the storage apparatus 1a receives the Freeze command from the copy manager 6, the generation number included in the Freeze command may be stored in the generation management table 900. Note that the copy manager 6 may be configured to transmit time information as a time stamp. In that case, the copy manager 6 may include the time information (current time) acquired from the clock of the copy manager 6 in the Freeze command when the Freeze command is transmitted.
 続いて、本発明の実施例3に係る計算機システムについて説明する。実施例3に係る計算機システムのハードウェア構成は、実施例1または実施例2で説明したものと同じである。また実施例3に係るストレージ装置のストレージコントローラで実行される処理も、実施例1または実施例2で説明したものと同じで、たとえば実施例3に係るストレージコントローラでも、実施例1で説明したライト処理やジャーナル送信処理、ジャーナルリストア処理(図12~図14)と同じ処理が行われる。そのため、各種ハードウェア要素、管理情報またはプログラムの説明を行う際、実施例1または2で用いた参照番号と同じものを用いて説明する。 Subsequently, a computer system according to Embodiment 3 of the present invention will be described. The hardware configuration of the computer system according to the third embodiment is the same as that described in the first or second embodiment. The processing executed by the storage controller of the storage apparatus according to the third embodiment is also the same as that described in the first or second embodiment. For example, the write operation described in the first embodiment is also performed in the storage controller according to the third embodiment. The same processing as the processing, journal transmission processing, and journal restoration processing (FIGS. 12 to 14) is performed. Therefore, when describing various hardware elements, management information, or programs, the same reference numerals as those used in the first or second embodiment will be used.
 実施例3に係るストレージ装置では、SSD21がジャーナル作成コマンドまたはジャーナルリストアコマンドを受領した時に、データを物理ページに書き込む際の処理が、実施例1または2で説明したものと異なる。図19を用いて、実施例3で行われる処理と、実施例1または2で行われる処理の違いを概説する。 In the storage device according to the third embodiment, when the SSD 21 receives a journal creation command or a journal restore command, the processing for writing data to a physical page is different from that described in the first or second embodiment. The difference between the process performed in the third embodiment and the process performed in the first or second embodiment will be outlined with reference to FIG.
 図19(a)は、実施例1(または実施例2)に係るSSD21が、ジャーナル作成コマンドで指定されたデータを物理ボリューム(P-VOL及びJVOL)に格納した直後の、論理ページと物理ページのマッピング状態を表す概念図である。ここでは図19を参照しながら、SSD21で行われる処理、特に図12のステップ1051~ステップ1054の処理について説明する。 FIG. 19A illustrates a logical page and a physical page immediately after the SSD 21 according to the first embodiment (or the second embodiment) stores the data specified by the journal creation command in the physical volumes (P-VOL and JVOL). It is a conceptual diagram showing the mapping state of. Here, with reference to FIG. 19, processing performed in the SSD 21, particularly processing in steps 1051 to 1054 in FIG. 12 will be described.
 ジャーナル作成コマンドで指定された、P-VOLのデータ書き込み先位置が、図19(a)の論理ページaで、ジャーナルボリュームのデータ(ジャーナルデータ)書き込み先位置が、論理ページhであった場合を想定する。また、説明が複雑化することを避けるため、ここでは、ライト対象のデータサイズが論理ページのサイズと等しく、データ書き込み先領域の先頭と終端が論理ページ境界に一致しているケースについて説明する。 When the P-VOL data write destination location specified by the journal creation command is logical page a in FIG. 19A and the journal volume data (journal data) write destination location is logical page h. Suppose. In order to avoid complicated description, a case will be described here in which the write target data size is equal to the logical page size, and the beginning and end of the data write destination area coincide with the logical page boundary.
 まずステップ1053でSSD21は、未使用物理ページ(まだデータの書き込まれていない物理ページ)を1つ選択する。ここでは仮に、物理ページCが選択されたとする。続いてSSD21は物理ページCにデータを書き込み、論理ページaに物理ページCをマッピングする。 First, in step 1053, the SSD 21 selects one unused physical page (a physical page to which data has not yet been written). Here, it is assumed that physical page C is selected. Subsequently, the SSD 21 writes data to the physical page C, and maps the physical page C to the logical page a.
 次にステップ1054ではSSD21は、再び未使用物理ページを1つ選択する。ここでは仮に、物理ページEが選択されたとする。続いてSSD21は物理ページEにジャーナルデータを書き込み、論理ページhに物理ページEをマッピングする。実施例1または2では、このようにして、FMチップ206(物理ページ)にデータ(ジャーナル)が書き込まれる。 Next, in step 1054, the SSD 21 selects one unused physical page again. Here, it is assumed that the physical page E is selected. Subsequently, the SSD 21 writes journal data to the physical page E, and maps the physical page E to the logical page h. In the first or second embodiment, data (journal) is written to the FM chip 206 (physical page) in this way.
 実施例3に係るSSD21でも、実施例1で説明したステップ1051~ステップ1054(図12)が実行されることで、P-VOL及びジャーナルボリュームへのデータ書き込みが行われる。ただし、物理ページへのデータ書き込み処理が、実施例1で説明した処理と異なるため、ステップ1051~ステップ1054の実行後の、論理ページと物理ページのマッピングは、実施例1で説明したもの(図19(a))とは異なる。 Also in the SSD 21 according to the third embodiment, data is written to the P-VOL and the journal volume by executing the steps 1051 to 1054 (FIG. 12) described in the first embodiment. However, since the data writing process to the physical page is different from the process described in the first embodiment, the mapping between the logical page and the physical page after the execution of steps 1051 to 1054 is the same as that described in the first embodiment (see FIG. 19 (a)).
 図19(b)は、実施例3に係るSSD21においてステップ1051~ステップ1054が実行され、P-VOL及びジャーナルボリュームへのデータ書き込みが行われた直後の、論理ページと物理ページのマッピング状態を表している。なお、上で説明した例と同様に、ジャーナル作成コマンドで指定されている、P-VOLのデータ書き込み先位置が、図19(b)の論理ページaで、ジャーナルボリュームのデータ(ジャーナルデータ)書き込み先位置が、論理ページhであった場合を想定する。 FIG. 19B illustrates the mapping state between the logical page and the physical page immediately after Steps 1051 to 1054 are executed in the SSD 21 according to the third embodiment and data is written to the P-VOL and the journal volume. ing. As in the example described above, the data write destination position of the P-VOL specified by the journal creation command is the logical page a in FIG. 19B, and data (journal data) is written to the journal volume. Assume that the previous position is logical page h.
 実施例3に係るSSD21では以下のような処理が行われる。まずステップ1053で行われる処理は、上で説明したものと同じである。つまり、未使用の物理ページCにデータが書き込まれ、論理ページaに物理ページCがマッピングされる。 The following processing is performed in the SSD 21 according to the third embodiment. First, the processing performed in step 1053 is the same as that described above. That is, data is written to an unused physical page C, and the physical page C is mapped to the logical page a.
 ただしステップ1054では次のような処理が行われる。ステップ1054でSSD21は、ステップ1053で書き込みが行われた物理ページCを論理ページhにマッピングする。そして未使用物理ページの選択や物理ページへのデータ書き込みは行われない。先に述べたが、ジャーナル作成コマンドを受領したSSD21がP-VOLに書き込むデータとジャーナルボリュームに書き込むデータ(ジャーナルデータ)は同じデータである。そのため、実施例3に係るSSD21では、ステップ1053でデータ書き込みが行われた物理ページ(物理ページC)を、P-VOL上の論理ページ(論理ページa)とジャーナルボリューム上の論理ページ(論理ページh)の両方にマッピングすることで、物理ページへのデータ書き込みが重複して行われることを抑制している。 However, in step 1054, the following processing is performed. In step 1054, the SSD 21 maps the physical page C written in step 1053 to the logical page h. No unused physical page is selected or data is not written to the physical page. As described above, the data written in the P-VOL and the data written in the journal volume (journal data) by the SSD 21 that has received the journal creation command are the same data. Therefore, in the SSD 21 according to the third embodiment, the physical page (physical page C) to which data has been written in step 1053 is divided into a logical page (logical page a) on the P-VOL and a logical page (logical page on the journal volume). By mapping to both of h), it is possible to suppress redundant data writing to the physical page.
 続いて、物理ページ(物理ページC)が、P-VOL上の論理ページ(論理ページa)とジャーナルボリューム上の論理ページ(論理ページh)の両方にマッピングされている時に、SSD21が論理ページへの書き込み(更新)要求を受け付けた時の処理を概説する。たとえばSSD21が論理ページaに対する書き込み(更新)の要求を受け付けると、SSD21は未使用の物理ページ(以下ではこれを「物理ページD」と呼ぶ)に更新データを書き込み、論理ページaに物理ページDをマッピングする。 Subsequently, when the physical page (physical page C) is mapped to both the logical page (logical page a) on the P-VOL and the logical page (logical page h) on the journal volume, the SSD 21 becomes a logical page. The process when a write (update) request is received is outlined. For example, when the SSD 21 receives a write (update) request for the logical page a, the SSD 21 writes update data to an unused physical page (hereinafter referred to as “physical page D”), and the physical page D to the logical page a. To map.
 一般には、論理ページaに対して更新(上書き)が行われると、その論理ページにマッピングされていた物理ページはマッピングが解除されて未割り当て状態になる(物理ページ管理テーブルのステータス1453が「未割当」に変更される)。ただし実施例3に係るSSD21では、物理ページCが、論理ページaと論理ページhの両方にマッピングされている場合、物理ページCを未割り当て状態にはしない。物理ページCが未割り当て状態に変更されると、ジャーナルボリュームの論理ページhに書き込まれたデータが実質的に消失したことになるからである。 In general, when an update (overwrite) is performed on a logical page a, the physical page mapped to the logical page is unmapped and becomes an unallocated state (the status 1453 of the physical page management table is “unassigned”). Changed to "allocation"). However, in the SSD 21 according to the third embodiment, when the physical page C is mapped to both the logical page a and the logical page h, the physical page C is not placed in an unallocated state. This is because when the physical page C is changed to an unallocated state, data written to the logical page h of the journal volume is substantially lost.
 また、SSD21がジャーナルボリューム上の論理ページhに対する書き込み要求を受け付けた時にも、同様の処理が行われる。 The same processing is performed when the SSD 21 receives a write request for the logical page h on the journal volume.
 上ではジャーナル作成コマンドを受領した時の、実施例3に係るSSD21の処理を説明したが、実施例3に係るSSD21はジャーナルリストアコマンドを受領した時も、上で説明した処理と同様の処理を行う。 The processing of the SSD 21 according to the third embodiment when receiving the journal creation command has been described above. However, the SSD 21 according to the third embodiment performs the same processing as the processing described above when receiving the journal restore command. Do.
 図14を参照しながら説明する。ジャーナルリストアコマンドを受領したSSD21は、ステップ1351でジャーナルリストアコマンド内のジャーナルデータ859をジャーナルボリュームに書き込むが、この時SSD21は未使用の物理ページ(仮に物理ページCとする)にジャーナルデータ859を書き込み、物理ページCを論理ページ(仮に論理ページhとする)にマッピングする。そしてステップ1352でジャーナルデータ859をS-VOLに書き込む処理が行われるが、この時SSD21はステップ1351でジャーナルデータ859の書き込まれた物理ページCを論理ページ(仮に論理ページaとする)にマッピングし、未使用物理ページの選択や物理ページへのデータ書き込みは行わない。これにより物理ページへのデータ書き込みが重複して行われることを抑制している。 This will be described with reference to FIG. The SSD 21 that has received the journal restore command writes the journal data 859 in the journal restore command to the journal volume in step 1351. At this time, the SSD 21 writes the journal data 859 to an unused physical page (assumed to be physical page C). The physical page C is mapped to a logical page (assumed to be a logical page h). In step 1352, the journal data 859 is written to the S-VOL. At this time, the SSD 21 maps the physical page C in which the journal data 859 is written in step 1351 to a logical page (assumed to be logical page a). No unused physical page is selected or data is not written to the physical page. Thereby, it is possible to prevent the data writing to the physical page from being performed redundantly.
 また、図14のステップ1353が行われた後は、ジャーナルボリュームにジャーナルデータが残っている必要はない。そのためSSD21はステップ1353の後、ジャーナルボリュームの論理ページhと物理ページCのマッピングを解除する。具体的には、SSD21は論理物理変換テーブル1400の行のうち、論理ページhに対応する行のステータス1404を“未割当”に変更し、物理ページ#1405をNULLにするとよい。ただしS-VOLの論理ページaと物理ページCのマッピングは解除しない。 Further, after step 1353 of FIG. 14 is performed, it is not necessary that journal data remain in the journal volume. Therefore, after step 1353, the SSD 21 releases the mapping between the logical page h and the physical page C of the journal volume. Specifically, the SSD 21 may change the status 1404 of the row corresponding to the logical page h to “unallocated” among the rows of the logical-physical conversion table 1400, and set the physical page # 1405 to NULL. However, the mapping between the S-VOL logical page a and the physical page C is not released.
 続いて、図20を用いて実施例4に係る計算機システムについて説明する。実施例4に係る計算機システムは、プライマリコンピュータ1a’とセカンダリコンピュータ1b’がWAN4を介して接続された構成をとる。 Subsequently, a computer system according to the fourth embodiment will be described with reference to FIG. The computer system according to the fourth embodiment has a configuration in which a primary computer 1 a ′ and a secondary computer 1 b ′ are connected via a WAN 4.
 プライマリコンピュータ1a’とセカンダリコンピュータ1b’は、実施例1におけるホスト2と同様の、サーバやパーソナルコンピュータなどの汎用的な計算機である。プライマリコンピュータ1a’は、CPU12’(12’-1,12’-2)、メモリ13’、ネットワークI/F14’、デバイスI/F15’、複数のSSD21を有する。SSD21は、実施例1、2または3で説明したSSD21と同様のものである。 The primary computer 1a 'and the secondary computer 1b' are general-purpose computers such as a server and a personal computer similar to the host 2 in the first embodiment. The primary computer 1a 'includes a CPU 12' (12'-1, 12'-2), a memory 13 ', a network I / F 14', a device I / F 15 ', and a plurality of SSDs 21. The SSD 21 is the same as the SSD 21 described in the first, second, or third embodiment.
 ネットワークI/F14’は、プライマリコンピュータ1a’をWAN4に接続するためのインタフェースである。またデバイスI/F15’は、複数のSSD21を接続するためのインタフェースで、実施例1等のBE I/F15と同様の機能を有する。 The network I / F 14 ′ is an interface for connecting the primary computer 1 a ′ to the WAN 4. The device I / F 15 ′ is an interface for connecting a plurality of SSDs 21 and has the same function as the BE I / F 15 in the first embodiment.
 CPU12’は、公知のサーバやパーソナルコンピュータなどが有するマイクロプロセッサと同様のもので、メモリ13’はDRAM等、公知のサーバやパーソナルコンピュータなどが有する揮発性の記憶媒体である。図20では2つのCPU12’(12’-1,12’-2)が記載されているが、CPU12’の数は2つに限定されない。プライマリコンピュータ1a’に、3つ以上のCPU12’が搭載されていてもよいし、あるいは1つのCPU12’だけが搭載されていてもよい。あるいは複数のCPU12’の代わりに、複数のプロセッサコアを有するマルチコアプロセッサが1つ、プライマリコンピュータ1a’に搭載されていてもよい。 The CPU 12 'is similar to a microprocessor included in a known server or personal computer, and the memory 13' is a volatile storage medium included in a known server or personal computer such as a DRAM. In FIG. 20, two CPUs 12 '(12'-1, 12'-2) are shown, but the number of CPUs 12' is not limited to two. Three or more CPUs 12 'may be mounted on the primary computer 1a', or only one CPU 12 'may be mounted. Alternatively, instead of the plurality of CPUs 12 ', one multi-core processor having a plurality of processor cores may be mounted on the primary computer 1a'.
 またセカンダリコンピュータ1b’の構成は、プライマリコンピュータ1a’と同様であるため、構成の図示及び説明は略す。 Further, since the configuration of the secondary computer 1b 'is the same as that of the primary computer 1a', the illustration and description of the configuration are omitted.
 プライマリコンピュータ1a’は、実施例1におけるホスト2と正ストレージ装置1aの機能を有する装置として動作する。たとえばプライマリコンピュータ1a’のCPU12では、1以上の仮想計算機(VM)を形成するためのプログラムであるハイパーバイザが実行されることにより、少なくとも2つのVMが形成されるように構成されるとよい。ハイパーバイザは公知のソフトウェア(プログラム)で、プライマリコンピュータ1a’の物理資源(CPU12’やメモリ13’等)を論理的に分割し、分割された物理資源を用いて1または複数のVMを形成する。プライマリコンピュータ1a’上に形成される1つめのVMは、実施例1におけるホスト2で実行されるプログラムが実行されるVMであり、本実施例ではこれを「ホストVM」と呼ぶ。2つめのVMは、実施例1における正ストレージ装置1aの機能を実現するVMで、本実施例ではこのVMを「ストレージVM」と呼ぶ。 The primary computer 1a 'operates as a device having the functions of the host 2 and the primary storage device 1a in the first embodiment. For example, the CPU 12 of the primary computer 1a 'may be configured to form at least two VMs by executing a hypervisor that is a program for forming one or more virtual machines (VMs). The hypervisor is well-known software (program), and logically divides the physical resources (CPU 12 ′, memory 13 ′, etc.) of the primary computer 1a ′, and forms one or a plurality of VMs using the divided physical resources. . The first VM formed on the primary computer 1a 'is a VM on which a program executed on the host 2 in the first embodiment is executed. In the present embodiment, this VM is called a "host VM". The second VM is a VM that realizes the function of the primary storage device 1a in the first embodiment. In the present embodiment, this VM is called a “storage VM”.
 ストレージVMでは、実施例1で説明したI/Oプログラム101と同等のプログラム(これをI/Oプログラム101’と呼ぶ)が実行されることにより、ホストVMに対して論理ボリュームを提供する。ホストVMとストレージVMは通信可能に構成されており、ホストVMは論理ボリュームに対するI/O要求(ライトコマンドやリードコマンド)を発行することができる。I/Oプログラム101’はホストVMからのライトコマンドを受け付けると、たとえば実施例1で説明した処理(図12のステップ1001~ステップ1013)を実行することで、SSD21内に形成される物理ボリューム(P-VOLとジャーナルボリューム)にライトデータ(またはジャーナル)を格納する。 In the storage VM, a logical volume is provided to the host VM by executing a program equivalent to the I / O program 101 described in the first embodiment (referred to as an I / O program 101 '). The host VM and the storage VM are configured to be communicable, and the host VM can issue an I / O request (write command or read command) to the logical volume. When the I / O program 101 ′ receives a write command from the host VM, the physical volume (in the SSD 21) (for example, by executing the processing described in the first embodiment (step 1001 to step 1013 in FIG. 12)). Write data (or journal) is stored in the P-VOL and journal volume.
 セカンダリコンピュータ1b’は、実施例1における副ストレージ装置1bの機能を備える。たとえばプライマリコンピュータ1a’と同様に、セカンダリコンピュータ1b’のCPU12でもハイパーバイザが実行されることで、ストレージVMが形成されると良い。セカンダリコンピュータ1b’のストレージVMでは、実施例1で説明したジャーナルリードプログラム151と同等のプログラム(ジャーナルリードプログラム151’と呼ぶ)と、デステージプログラム152と同等のプログラム(デステージプログラム152’と呼ぶ)が実行される。これにより、プライマリコンピュータ1a’とセカンダリコンピュータ1b’では、実施例1で説明した処理、つまり図13~図14で説明したジャーナルの送信及びジャーナルリストア処理が行われることになる。つまり実施例4に係る計算機システムは、実施例1で説明した計算機システムとハードウェア構成は異なるが、実施例1で説明した機能と同様の機能を備える。 The secondary computer 1b 'has the function of the secondary storage device 1b in the first embodiment. For example, similarly to the primary computer 1a ', the CPU 12 of the secondary computer 1b' may execute the hypervisor to form the storage VM. In the storage VM of the secondary computer 1b ′, a program equivalent to the journal read program 151 described in the first embodiment (referred to as journal read program 151 ′) and a program equivalent to the destage program 152 (referred to as destage program 152 ′). ) Is executed. As a result, the primary computer 1a 'and the secondary computer 1b' perform the processing described in the first embodiment, that is, the journal transmission and journal restoration processing described in FIGS. That is, the computer system according to the fourth embodiment has the same functions as those described in the first embodiment, although the hardware configuration is different from that of the computer system described in the first embodiment.
 またここでは、実施例4に係る計算機システムが実施例1で説明した機能と同様の機能を備える例を説明したが、実施例4に係る計算機システムが実施例2に係る計算機システムと同様の機能を備えるように構成されていてもよい。その場合、プライマリコンピュータ1a’では、ホストVMとストレージVMの他に、実施例2で説明したコピーマネージャ6が実行するプログラム(RAIDマネージャ)を実行するVM(これを「マネージャVM」と呼ぶ)も形成され、マネージャVMでは定期的にFreezeコマンドをストレージVMに発行するとよい。あるいはホストVMでRAIDマネージャを実行させてもよい。 Here, an example has been described in which the computer system according to the fourth embodiment has the same function as the function described in the first embodiment. However, the computer system according to the fourth embodiment has the same function as the computer system according to the second embodiment. May be provided. In this case, in the primary computer 1a ′, in addition to the host VM and the storage VM, a VM that executes the program (RAID manager) executed by the copy manager 6 described in the second embodiment (referred to as “manager VM”) is also included. The manager VM may periodically issue a Freeze command to the storage VM. Alternatively, the RAID manager may be executed by the host VM.
 以上、本発明の実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。本発明は、他の種々の形態でも実施可能である。 The embodiment of the present invention has been described above, but this is an example for explaining the present invention, and is not intended to limit the present invention to the embodiment described above. The present invention can be implemented in various other forms.
 たとえば上で説明した実施例では、正ストレージ装置1aで作成された冗長データ(パティ)もジャーナルボリュームに格納し、副ストレージ装置1bにコピーされる例を説明した。ただし冗長データを正ストレージ装置1aから副ストレージ装置1bにコピーされないようにし、副ストレージ装置1bに格納される冗長データは、正ストレージ装置1aから送信されたデータ(ジャーナル)を元に、副ストレージ装置1bが作成するようにしてもよい。 For example, in the embodiment described above, the example in which redundant data (patty) created in the primary storage device 1a is also stored in the journal volume and copied to the secondary storage device 1b has been described. However, the redundant data is not copied from the primary storage device 1a to the secondary storage device 1b, and the redundant data stored in the secondary storage device 1b is based on the data (journal) transmitted from the primary storage device 1a. 1b may be created.
 また、冗長データを生成することは必須ではない。また、ホスト等のリクエスターに提供されるボリューム(論理ボリューム)が、複数の物理ボリュームから形成されるものであることも必須ではない。たとえば正ストレージ装置1aやプライマリコンピュータ1a’は、SSD21が提供する1物理ボリュームを1つの論理ボリュームとしてホスト(あるいはホストVM)に提供してもよい。 Also, it is not essential to generate redundant data. In addition, it is not essential that a volume (logical volume) provided to a requester such as a host is formed from a plurality of physical volumes. For example, the primary storage apparatus 1a and the primary computer 1a 'may provide one physical volume provided by the SSD 21 to the host (or host VM) as one logical volume.
 1a: 正ストレージ装置, 1b: 副ストレージ装置, 2: ホスト, 3: SAN, 4: WAN, 5: 管理ホスト, 6: コピーマネージャ 1a: Primary storage device, 1b: Secondary storage device, 2: Host, 3: SAN, 4: WAN, 5: Management host, 6: Copy manager

Claims (10)

  1.  第1プロセッサと第1メモリと、リクエスターからのライトデータを格納するための複数の正記憶デバイスと、を有する正システムと、
     前記正システムに接続され、第2プロセッサと第2メモリと、前記正記憶デバイスに書き込まれたデータの複製を格納するための複数の副記憶デバイスと、を有する副システムと、を有する情報処理システムであって、
     前記正記憶デバイスはそれぞれ、1以上のボリュームと、前記副記憶デバイスに転送するジャーナルを格納するためのジャーナルボリュームを有し、
     前記副記憶デバイスはそれぞれ、1以上のボリュームと、前記正システムから取得したジャーナルを格納するためのジャーナルボリュームを有し、
     前記第1プロセッサは、前記ライトデータの前記ボリュームへの書き込みを指示するコマンドであって、タイムスタンプを含むライトコマンドを受領したことに応じて、前記ライトデータと前記タイムスタンプを含むジャーナル作成コマンドを作成して前記正記憶デバイスに送信し、
     前記ジャーナル作成コマンドを受領した前記正記憶デバイスは、
     前記ボリュームに前記ライトデータを格納し、
     前記ライトデータと前記ライトデータの書き込み位置に関する情報と前記正記憶デバイスが管理しているシーケンス番号と前記タイムスタンプを含むジャーナルを作成して前記ジャーナルボリュームに格納し、
     前記第2プロセッサは、前記正システムから、複数の前記正記憶デバイスが有する前記ジャーナルボリュームに格納された複数の前記ジャーナルを取得すると、前記取得したジャーナルを前記第2メモリに格納し、
     前記ジャーナルのそれぞれに含まれている前記タイムスタンプに基づいて、前記副記憶デバイスに送信可能な前記ジャーナルを決定し、
     前記決定されたジャーナルの内容に基づいてジャーナルリストアコマンドを作成して前記副記憶デバイスに発行し、
     前記ジャーナルリストアコマンドを受領した前記副記憶デバイスは、前記ジャーナルリストアコマンドに含まれているライトデータを前記副記憶デバイスの有するボリュームに格納する、
    情報処理システム。
    A primary system having a first processor, a first memory, and a plurality of primary storage devices for storing write data from the requester;
    An information processing system connected to the primary system and having a second processor, a second memory, and a plurality of secondary storage devices for storing a copy of data written to the primary storage device Because
    Each of the primary storage devices has one or more volumes and a journal volume for storing a journal to be transferred to the secondary storage device,
    Each of the secondary storage devices has one or more volumes and a journal volume for storing a journal acquired from the primary system,
    The first processor is a command for instructing writing of the write data to the volume, and in response to receiving a write command including a time stamp, generates a journal creation command including the write data and the time stamp. Create and send to the primary storage device,
    The primary storage device that has received the journal creation command is:
    Storing the write data in the volume;
    Creating a journal including the write data, information on the write position of the write data, a sequence number managed by the primary storage device and the time stamp, and storing the journal in the journal volume;
    When the second processor acquires a plurality of the journals stored in the journal volume of the plurality of primary storage devices from the primary system, the second processor stores the acquired journals in the second memory;
    Determining the journal that can be sent to the secondary storage device based on the time stamp included in each of the journals;
    Create a journal restore command based on the determined contents of the journal and issue it to the secondary storage device;
    The secondary storage device that has received the journal restore command stores the write data included in the journal restore command in the volume of the secondary storage device.
    Information processing system.
  2.  複数の前記正記憶デバイスの中の第n正記憶デバイス(1≦n≦N)で作成されたジャーナルは、複数の前記副記憶デバイスの中の第n副記憶デバイスに送信されるよう構成されており、
     前記第2プロセッサは、
     前記取得した複数の前記ジャーナルのうち、送信先が前記第n副記憶デバイスであるジャーナル群に含まれているタイムスタンプの最大値である第n最大タイムスタンプを前記副記憶デバイスごとに管理しており、
     前記副記憶デバイスに送信可能な前記ジャーナルを決定する際、第1最大タイムスタンプから第N最大タイムスタンプの中の最小値であるリストア可能タイムスタンプを特定し、
     前記取得した複数の前記ジャーナルのうち、前記ジャーナルに含まれているタイムスタンプが前記リストア可能タイムスタンプ未満であるジャーナルを、前記副記憶デバイスに送信可能と決定する、
    請求項1に記載の情報処理システム。
    The journal created by the nth primary storage device (1 ≦ n ≦ N) among the plurality of primary storage devices is configured to be transmitted to the nth secondary storage device among the plurality of secondary storage devices. And
    The second processor is
    The nth maximum time stamp, which is the maximum value of the time stamp included in the journal group whose destination is the nth secondary storage device, is managed for each secondary storage device among the plurality of acquired journals. And
    When determining the journal that can be transmitted to the secondary storage device, a restoreable time stamp that is a minimum value from the first maximum time stamp to the Nth maximum time stamp is specified,
    Determining that, out of the plurality of acquired journals, a journal whose time stamp included in the journal is less than the restoreable time stamp can be transmitted to the secondary storage device;
    The information processing system according to claim 1.
  3.  前記第2プロセッサは、送信可能と決定された前記ジャーナルが複数存在する場合、
     前記送信可能と決定された前記ジャーナルのうち、前記ジャーナルに含まれるシーケンス番号の小さいジャーナルから順にジャーナルリストアコマンドを作成して、前記副記憶デバイスに発行する、
    請求項2に記載の情報処理システム。
    The second processor, when there are a plurality of the journals determined to be transmittable,
    Of the journals determined to be transmittable, create a journal restore command in order from the journal with the smallest sequence number included in the journal, and issue it to the secondary storage device.
    The information processing system according to claim 2.
  4.  前記正記憶デバイスは、フラッシュメモリを記憶媒体として用いており、前記フラッシュメモリは複数の物理ページを有しており、
     前記正記憶デバイスの有するボリュームとジャーナルボリュームは、前記物理ページと同サイズの領域である論理ページの集合として構成されており、
     前記正記憶デバイスは、前記ボリュームまたは前記ジャーナルボリューム上の論理ページに対してデータの書き込み要求を受け付けると、前記フラッシュメモリの未使用物理ページに前記データを格納し、前記書き込み要求で指定されている論理ページに、前記データを格納した前記物理ページをマッピングするよう構成されており、
     前記正記憶デバイスは、前記ジャーナル作成コマンドを受領すると、
     前記ジャーナル作成コマンドに含まれるライトデータを複数の前記物理ページのうちの1つに格納し、
     前記ライトデータを格納した物理ページを、前記ジャーナルボリューム上の論理ページにマッピングするとともに、前記ボリューム上の論理ページにマッピングする、
    請求項2に記載の情報処理システム。
    The primary storage device uses a flash memory as a storage medium, the flash memory has a plurality of physical pages,
    The volume and journal volume of the primary storage device are configured as a set of logical pages that are areas of the same size as the physical pages,
    When the primary storage device receives a data write request for a logical page on the volume or the journal volume, the primary storage device stores the data in an unused physical page of the flash memory, and is designated by the write request. A logical page configured to map the physical page storing the data;
    When the primary storage device receives the journal creation command,
    Write data included in the journal creation command is stored in one of the plurality of physical pages;
    Mapping the physical page storing the write data to a logical page on the journal volume and mapping to a logical page on the volume;
    The information processing system according to claim 2.
  5.  前記副記憶デバイスは、フラッシュメモリを記憶媒体として用いており、前記フラッシュメモリは複数の物理ページを有しており、
     前記副記憶デバイスの有するボリュームとジャーナルボリュームは、前記物理ページと同サイズの領域である論理ページの集合として構成されており、
     前記副記憶デバイスは、前記ボリュームまたは前記ジャーナルボリューム上の論理ページに対してデータの書き込み要求を受け付けると、前記フラッシュメモリの未使用物理ページに前記データを格納し、前記書き込み要求で指定されている論理ページに、前記データを格納した前記物理ページをマッピングするよう構成されており、
     前記副記憶デバイスは、前記ジャーナルリストアコマンドを受領すると、
     前記ジャーナルリストアコマンドに含まれるライトデータを複数の前記物理ページのうちの1つに格納し、
     前記ライトデータを格納した物理ページを、前記ジャーナルボリューム上の論理ページにマッピングするとともに、前記ボリューム上の論理ページにマッピングする、
    請求項2に記載の情報処理システム。
    The secondary storage device uses a flash memory as a storage medium, the flash memory has a plurality of physical pages,
    The volume and journal volume of the secondary storage device are configured as a set of logical pages that are areas of the same size as the physical page,
    When the secondary storage device receives a data write request for a logical page on the volume or the journal volume, the secondary storage device stores the data in an unused physical page of the flash memory and is designated by the write request. A logical page configured to map the physical page storing the data;
    When the secondary storage device receives the journal restore command,
    Write data included in the journal restore command is stored in one of the plurality of physical pages;
    Mapping the physical page storing the write data to a logical page on the journal volume and mapping to a logical page on the volume;
    The information processing system according to claim 2.
  6.  前記正システムは世代番号を前記第1メモリに保持しており、
     前記第1プロセッサは、前記正システムに接続された外部装置から、前記世代番号の更新を指示するコマンドを受領すると、
     前記第1プロセッサが実行している、前記正記憶デバイスへのアクセスを中断し、
     前記第1メモリに保持されている前記世代番号を増加させた後、前記中断されていた前記正記憶デバイスへのアクセスを再開し、
     前記第1プロセッサがジャーナル作成コマンドを作成する時には、前記タイムスタンプに代えて前記世代番号を前記ジャーナル作成コマンドに含めるように構成されている、
    請求項2に記載の情報処理システム。
    The primary system holds the generation number in the first memory;
    When the first processor receives a command instructing to update the generation number from an external device connected to the primary system,
    Suspending access to the primary storage device being executed by the first processor;
    After increasing the generation number held in the first memory, resuming access to the suspended primary storage device,
    When the first processor creates a journal creation command, the generation number is included in the journal creation command instead of the time stamp.
    The information processing system according to claim 2.
  7.  前記リクエスターは、前記正システムにStorage Area Network(SAN)を介して接続された計算機である、
    請求項1に記載の情報処理システム。
    The requester is a computer connected to the primary system via a storage area network (SAN).
    The information processing system according to claim 1.
  8.  プロセッサとメモリと、リクエスターからのライトデータを格納するための複数の記憶デバイスと、を有し、前記ライトデータの複製が格納される副システムに接続される正システムであって、
     前記記憶デバイスはそれぞれ、1以上のボリュームと、前記副システムに転送すべきジャーナルを格納するためのジャーナルボリュームを有し、
     前記プロセッサは、前記ライトデータの前記ボリュームへの書き込みを指示するコマンドであって、タイムスタンプを含むライトコマンドを受領したことに応じて、前記ライトデータと前記タイムスタンプを含むジャーナル作成コマンドを作成して前記記憶デバイスに送信し、
     前記ジャーナル作成コマンドを受領した前記記憶デバイスは、
     前記ボリュームに前記ライトデータを格納し、
     前記ライトデータと前記ライトデータの書き込み位置に関する情報と前記記憶デバイスが管理しているシーケンス番号と前記タイムスタンプを含むジャーナルを作成して前記ジャーナルボリュームに格納する、
    正システム。
    A primary system having a processor, a memory, and a plurality of storage devices for storing write data from a requester, and connected to a sub-system in which a copy of the write data is stored;
    Each of the storage devices has one or more volumes and a journal volume for storing a journal to be transferred to the secondary system,
    The processor creates a journal creation command that includes the write data and the time stamp in response to receiving a write command that is a command to write the write data to the volume and includes a time stamp. To the storage device,
    The storage device that has received the journal creation command
    Storing the write data in the volume;
    Creating a journal including the write data, information about the write position of the write data, a sequence number managed by the storage device, and the time stamp, and storing the journal in the journal volume;
    Positive system.
  9.  前記記憶デバイスは、フラッシュメモリを記憶媒体として用いており、前記フラッシュメモリは複数の物理ページを有しており、
     前記記憶デバイスの有するボリュームとジャーナルボリュームは、前記物理ページと同サイズの領域である論理ページの集合として構成されており、
     前記記憶デバイスは、前記ボリュームまたは前記ジャーナルボリューム上の論理ページに対してデータの書き込み要求を受け付けると、前記フラッシュメモリの未使用物理ページに前記データを格納し、前記書き込み要求で指定されている論理ページに、前記データを格納した前記物理ページをマッピングするよう構成されており、
     前記記憶デバイスは、前記ジャーナル作成コマンドを受領すると、
     前記ジャーナル作成コマンドに含まれるライトデータを複数の前記物理ページのうちの1つに格納し、
     前記ライトデータを格納した物理ページを、前記ジャーナルボリューム上の論理ページにマッピングするとともに、前記ボリューム上の論理ページにマッピングする、
    請求項8に記載の正システム。
    The storage device uses a flash memory as a storage medium, the flash memory has a plurality of physical pages,
    The volume and journal volume of the storage device are configured as a set of logical pages that are areas of the same size as the physical page,
    When the storage device accepts a data write request to a logical page on the volume or the journal volume, the storage device stores the data in an unused physical page of the flash memory, and the logical device specified by the write request A page is configured to map the physical page storing the data;
    When the storage device receives the journal creation command,
    Write data included in the journal creation command is stored in one of the plurality of physical pages;
    Mapping the physical page storing the write data to a logical page on the journal volume and mapping to a logical page on the volume;
    The primary system of claim 8.
  10.  前記正システムは世代番号を前記メモリに保持しており、
     前記プロセッサは、前記正システムに接続された外部装置から、前記世代番号の更新を指示するコマンドを受領すると、
     前記プロセッサが実行している、前記記憶デバイスへのアクセスを中断し、
     前記メモリに保持されている前記世代番号を増加させた後、前記中断されていた前記記憶デバイスへのアクセスを再開し、
     前記プロセッサがジャーナル作成コマンドを作成する時には、前記タイムスタンプに代えて前記世代番号を前記ジャーナル作成コマンドに含めるように構成されている、
    請求項8に記載の正システム。
    The primary system holds the generation number in the memory,
    When the processor receives a command to update the generation number from an external device connected to the primary system,
    Suspending access to the storage device being executed by the processor;
    After increasing the generation number held in the memory, resume access to the suspended storage device;
    When the processor creates a journal creation command, the generation number is included in the journal creation command instead of the time stamp.
    The primary system of claim 8.
PCT/JP2016/077790 2016-09-21 2016-09-21 Information processing system WO2018055686A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077790 WO2018055686A1 (en) 2016-09-21 2016-09-21 Information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077790 WO2018055686A1 (en) 2016-09-21 2016-09-21 Information processing system

Publications (1)

Publication Number Publication Date
WO2018055686A1 true WO2018055686A1 (en) 2018-03-29

Family

ID=61689854

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/077790 WO2018055686A1 (en) 2016-09-21 2016-09-21 Information processing system

Country Status (1)

Country Link
WO (1) WO2018055686A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220129420A1 (en) * 2019-02-23 2022-04-28 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
WO2023286547A1 (en) * 2021-07-14 2023-01-19 ローム株式会社 Memory device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181288A (en) * 2007-01-24 2008-08-07 Hitachi Ltd Remote copy system
JP2014517412A (en) * 2011-10-05 2014-07-17 株式会社日立製作所 Storage system and storage method
WO2015125227A1 (en) * 2014-02-19 2015-08-27 株式会社日立製作所 Storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181288A (en) * 2007-01-24 2008-08-07 Hitachi Ltd Remote copy system
JP2014517412A (en) * 2011-10-05 2014-07-17 株式会社日立製作所 Storage system and storage method
WO2015125227A1 (en) * 2014-02-19 2015-08-27 株式会社日立製作所 Storage system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220129420A1 (en) * 2019-02-23 2022-04-28 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
WO2023286547A1 (en) * 2021-07-14 2023-01-19 ローム株式会社 Memory device

Similar Documents

Publication Publication Date Title
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US8307154B2 (en) System and method for performing rapid data snapshots
US9501231B2 (en) Storage system and storage control method
US20070226447A1 (en) Storage system, storage extent release method and storage apparatus
JP6600698B2 (en) Computer system
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
CN111164584B (en) Method for managing distributed snapshots for low latency storage and apparatus therefor
US10140035B2 (en) Method for appropriately controlling duplicated volumes in virtual volume subsystems
CN110300960B (en) Information system, management program, and program replacement method for information system
US10664193B2 (en) Storage system for improved efficiency of parity generation and minimized processor load
US8832396B2 (en) Storage apparatus and its control method
US10884924B2 (en) Storage system and data writing control method
US20170075615A1 (en) Storage system and storage control method
WO2018055686A1 (en) Information processing system
US9170750B2 (en) Storage apparatus and data copy control method
US9977813B2 (en) Storage device and data migration method
WO2016194162A1 (en) Computer system
US20180307427A1 (en) Storage control apparatus and storage control method
US11327895B1 (en) Protocol for processing requests that assigns each request received by a node a sequence identifier, stores data written by the request in a cache page block, stores a descriptor for the request in a cache page descriptor, and returns a completion acknowledgement of the request
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US11188425B1 (en) Snapshot metadata deduplication
US10740189B2 (en) Distributed storage system
US11269550B2 (en) Storage system and history information management method
US11074003B2 (en) Storage system and restoration method
US8935488B2 (en) Storage system and storage control method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16916757

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16916757

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP