WO2011007459A1 - ストレージ装置及びその制御方法 - Google Patents
ストレージ装置及びその制御方法 Download PDFInfo
- Publication number
- WO2011007459A1 WO2011007459A1 PCT/JP2009/063311 JP2009063311W WO2011007459A1 WO 2011007459 A1 WO2011007459 A1 WO 2011007459A1 JP 2009063311 W JP2009063311 W JP 2009063311W WO 2011007459 A1 WO2011007459 A1 WO 2011007459A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- copy
- command
- area
- write
- queue
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Definitions
- the present invention relates to a storage apparatus and a control method therefor.
- a copy function for copying data from an arbitrary logical volume in the apparatus to the same or another logical volume in the same apparatus hereinafter referred to as an internal copy function.
- the present invention is suitable for application to an installed storage apparatus.
- a copy process in which a copy source and a copy destination are designated by an address is performed by reading data from the copy source address and writing the data to the copy destination address.
- One method for shortening the processing time of such copy processing is to use a cache with a short access time and execute copying on the cache. According to this method, when the copy processing is completed, the data can be accessed from the host device even before the data is written to the copy destination disk.
- the host device is notified of the completion of the copy processing before the copy processing is completed, and then the copy processing is performed. There are technologies that run in the background.
- the shortening of the copy processing time in which the copy source and the copy destination are designated by the address is effective when the capacity of the data to be copied is small.
- the storage device continues until the next copy command is completed.
- a copy command may be waited for and a timeout may occur in the host device.
- a storage apparatus in which a command queue for temporarily holding a command from the host apparatus is set, and the command given from the host apparatus is stored in the command queue
- a control unit that executes the commands stored in the command queue in the order in which the commands are stored in the command queue, and the control unit temporarily stores a copy command among commands given from the host device.
- a copy queue to be held on the memory is set on the memory, the copy command of the commands from the host device stored in the command queue is moved to the copy queue, and the transmission source of the command is Sends a copy processing execution completion response according to the command to the host device.
- the copy command moved to the copy queue were to run in the background storage order to the copy queue.
- the host device A first step of setting, on the memory, a copy queue for temporarily holding a copy command of commands given from the command, and the copy of commands from the host device stored in the command queue A second step of moving a command to the copy queue and transmitting a copy processing execution completion response corresponding to the command to the host device that is the source of the command; and the copy command moved to the copy queue Execute in the background in the order of storage in the copy queue It was provided and a third step.
- the host device issues a plurality of copy commands for copying a large amount of data for the same address in succession, the execution of each copy command is completed on the host device side. Therefore, it is possible to prevent the timeout from occurring. As a result, a highly reliable storage apparatus that can increase the processing speed of the copy process viewed from the host apparatus and a control method thereof can be realized.
- FIG. 1 is a block diagram showing the overall configuration of a computer system according to this embodiment.
- FIG. 2 is a conceptual diagram for explaining the outline of internal processing of the storage apparatus that has received the copy command.
- FIG. 3 is a chart for explaining the copy queue.
- FIG. 4 is a chart for explaining the state of the copy command.
- FIG. 5 is a conceptual diagram for explaining the hash table.
- FIG. 6 is a conceptual diagram for explaining the basic pattern of the read / write operation.
- FIG. 7 is a chart for explaining the basic pattern of the read / write operation.
- FIG. 8 is a conceptual diagram for explaining the basic pattern of the read / write operation.
- FIG. 9 is a conceptual diagram for explaining the basic pattern of the read / write operation.
- FIG. 1 is a block diagram showing the overall configuration of a computer system according to this embodiment.
- FIG. 2 is a conceptual diagram for explaining the outline of internal processing of the storage apparatus that has received the copy command.
- FIG. 3 is a chart for explaining
- FIG. 10 is a conceptual diagram for explaining the basic pattern of the read / write operation.
- FIG. 11 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 12 is a chart for explaining an application pattern of the read / write operation.
- FIG. 13 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 14 is a chart for explaining an application pattern of the read / write operation.
- FIG. 15 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 16 is a chart for explaining an application pattern of the read / write operation.
- FIG. 17 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 18 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 11 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 12 is a chart for explaining an application pattern of the read / write operation.
- FIG. 13 is
- FIG. 19 is a conceptual diagram for explaining an application pattern of the read / write operation.
- FIG. 20 is a flowchart showing the processing procedure of read processing.
- FIG. 21 is a flowchart showing a processing procedure of hash search processing.
- FIG. 22 is a conceptual diagram for explaining the hash search process.
- FIG. 23 is a flowchart showing a processing procedure of data read processing.
- FIG. 24 is a flowchart showing the processing procedure of write processing.
- FIG. 25A is a flowchart showing a processing procedure of data write processing.
- FIG. 25B is a flowchart showing the processing procedure of data write processing.
- FIG. 26 is a flowchart showing the processing procedure of copy command processing.
- FIG. 27 is a flowchart illustrating a processing procedure of hash table registration processing.
- FIG. 1 indicates a computer system according to this embodiment as a whole.
- the computer system 1 is configured by connecting a plurality of host devices 2 to a storage device 4 via a network 3.
- the host apparatus 2 is a computer apparatus provided with information processing resources such as a CPU (Central Processing Unit) and a memory, and is configured by, for example, a personal computer, a workstation, or a main frame.
- the host device 2 includes an information input device (not shown) such as a keyboard switch, a pointing device, and a microphone, and an information output device (not shown) such as a monitor display and a speaker.
- an information input device such as a keyboard switch, a pointing device, and a microphone
- an information output device such as a monitor display and a speaker.
- the network 3 includes, for example, a LAN (Local Area Network), a SAN (Storage Area Network), the Internet, a dedicated line, or a public line.
- a LAN Local Area Network
- SAN Storage Area Network
- the communication between the host device 2 and the storage device 4 is performed according to an iSCSI (Internet Small Computer System Interface) protocol or a TCP / IP (Transmission Control Protocol / Internet Protocol) protocol.
- Is a SAN it is performed according to the Fiber Channel protocol.
- the storage device 4 includes a storage unit 11 including a plurality of disk devices 10 and 0-system and 1-system controllers 12A and 12B that control data input / output with respect to the plurality of disk devices 10.
- the disk device 10 includes, for example, an expensive disk such as a SCSI disk, an inexpensive disk such as a SATA (Serial AT Attachment) disk or an optical disk, and the like.
- One or more disk devices 10 constitute one RAID group 13, and one or more logical volumes are set on a physical storage area provided by each disk device 10 constituting one RAID group 13. .
- Data from the client is stored in this logical volume in units of blocks of a predetermined size (hereinafter referred to as logical blocks).
- a unique volume number is assigned to each logical volume.
- data input / output is performed by combining the volume number and a block number (LBA: Logical Block Address) of the logical block assigned to each logical block as an address. It is done by specifying.
- LBA Logical Block Address
- the controllers 12A and 12B include host interfaces 20A and 20B, local memories 21A and 21B, CPUs 22A and 22B, cache memories 23A and 23B, and drive interfaces 24A and 24B, respectively.
- the upper interfaces 20A and 20B are interfaces with respect to the network 3, and are composed of a NIC (Network Interface Card) or the like.
- the upper interfaces 20A and 20B transmit / receive write data, read data, various commands, and the like to / from the host device 2 via the network 3.
- the local memories 21A and 21B are used not only for storing a control program read from a predetermined disk device 10 when the storage device 4 is started, but also used as work memories for the CPUs 22A and 22B.
- the CPUs 22A and 22B are processors that control data input / output processing with respect to the disk device 10 in response to a read command, a write command, a copy command, or the like transmitted from the host device 2, and are stored in the local memories 21A and 21B. A predetermined control process is executed based on the above control program.
- the cache memories 23A and 23B are mainly used for temporarily storing data transferred between the upper interfaces 20A and 20B and the drive interfaces 24A and 24B. A part of the cache memories 23A and 23B is used as a shared memory with the two controllers 12A and 12B of the 0 and 1 systems. Thus, when a failure occurs in one of the controllers 12A and 12B, the other controller 12B and 12B that are normal can take over the information.
- the drive interfaces 24A and 24B are interfaces to the disk device 10.
- the drive interfaces 24A and 24B control the corresponding disk device 10 in accordance with the write command and read command from the host device 2 given via the upper interfaces 20A and 20B, thereby writing the write data and read data into the write command. And read / write at the address position specified in the write command or read command in the logical volume specified in the read command.
- (2) Various processing in the storage device Next, a series of processing contents executed in the storage apparatus 4 that has received the copy command from the host apparatus 2 will be described.
- the storage device 4 includes a command queue 30 for temporarily holding commands transmitted from the host device 2 on the cache memories 23A and 23B.
- the storage device 4 (more precisely, the CPUs 22A and 22B) stores the commands transmitted from the host device 2 in the command queue 30 and executes the stored commands in the order in which they are stored in the command queue 30. Further, in addition to the command queue 30, the storage apparatus 4 includes a copy queue 31 for temporarily holding only copy commands on the cache memories 23A and 23B. As shown in FIG. 3, the copy queue 31 includes an ID column 31A, a copy source column 31B, a copy destination column 31C, and a status column 31D.
- the ID column 31A stores an ID assigned to the corresponding copy command (hereinafter referred to as a copy command ID).
- the copy source column 31B is composed of a LUN column 31BA, a start address column 31BB, and an end address column 31BC.
- the LUN column 31BA stores the volume number of the logical volume designated as the copy source in the corresponding copy command.
- the start address column 31BB and the end address column 31BC store the start address and end address of the storage area designated as the copy source in the logical volume (hereinafter referred to as the copy source area).
- the copy destination column 31C includes a LUN column 31CA, a start address column 31CB, and an end address column 31CC.
- the LUN column 31CA the volume number of the logical volume designated as the copy destination in the corresponding copy command is displayed.
- the start address and end address of the storage area specified as the copy destination in the logical volume (hereinafter referred to as the copy destination area) are stored in the start address column 31CB and the end address column 31CC, respectively.
- the status column 31D stores the status of copying from the copy source area to the copy destination area.
- the copy status includes an “initial state” in which copying is not executed and a “background copy status” in which background copying is being executed. There is an “error state” in which copying cannot be performed, and a “busy state” in which copying cannot be performed because the target area is used in another process.
- the storage device 4 receives the command from the host device 2, as shown in FIG. 2, the storage device 4 stores the command in the command queue 30 (SP1), determines the type of the command, and the command is a copy command. If it is, the copy command is moved to the copy queue 31, and then the copy command is deleted from the command queue 30 (SP2).
- the storage apparatus 4 transmits a copy process execution completion response to the copy command (hereinafter referred to as a copy execution completion response) to the host apparatus 2 (SP3).
- a copy execution completion response a copy process execution completion response to the copy command
- the host device 2 since the host device 2 recognizes that the copy according to the copy command is completed when the copy execution completion response is received, the host device 2 may wait for a command for the same address that follows. Absent. Further, the storage apparatus 4 thereafter performs a copy process corresponding to the copy command stored in the copy queue 31 in the order of storage in the copy queue 31 in parallel with the process corresponding to the command stored in the command queue 30. (SP4).
- the storage apparatus 4 caches the difference bitmap 32 indicating the data difference between the copy source area and the copy destination area specified in the copy command. Created on the memories 23A and 23B.
- the difference bitmaps 23A and 23B are obtained by associating each difference bit with each unit area in the copy source area. Therefore, for example, when the unit area is 64 Kbytes and the copy source area is 256 Mbytes, the difference bitmap 32 has a size of 512 bytes. Further, immediately after the copy command is moved to the copy queue 31, the difference bitmap 32 has all the difference bits turned on ("1") because the data stored in the copy source area and the copy destination area do not match. ).
- the storage apparatus 4 sets the corresponding difference bit to OFF (“0”) every time data for one unit area in the copy source area is copied to the copy destination area in the background.
- the storage apparatus 4 deletes the copy command entry from the copy queue 31 and associates it with the copy command.
- the obtained difference bitmap 32 is deleted from the cache memories 23A and 23B.
- a write command for rewriting data can be issued to the storage apparatus 4. Therefore, when the background copy function as described above is installed in the storage apparatus 4, even when such a read command is received before the completion of the copy process corresponding to the copy command, the copy command is executed as read data. It is necessary to construct the storage apparatus 4 so that the data to be stored in the copy destination area can be transmitted to the host apparatus 2 after completion. Similarly, even when such a write command is received before the completion of the copy process corresponding to the copy command, the data stored in the copy destination area of the copy command can be saved before the write command is executed. It is necessary to construct the storage device 4.
- the storage device 4 searches all the copy queues 31 and is designated as an area in which data is to be read in the read command.
- a read area When there is an unexecuted copy command in which a part or all of the copy destination area overlaps (hereinafter referred to as a read area), a method of executing the read command after executing the copy command can be considered.
- the storage apparatus 4 when the storage apparatus 4 receives a write command from the host apparatus 2, the storage apparatus 4 searches all of the copy queue 31 and stores the data designated as an area to which data is written in the write command.
- the storage apparatus 4 is provided with a hash table 40 as shown in FIG. 5 as means for speeding up such search processing.
- the hash table 40 is composed of a plurality of slots 40A to 40L, and numerical values from “0” to “slot number ⁇ 1” are sequentially associated with the slots 40A to 40L, respectively.
- the storage apparatus 4 receives the copy command, the copy source area and the copy destination area of the copy command (hereinafter, these are collectively referred to as a copy command target area) as shown in FIG.
- An entry 41 of the hash table 40 is created. This entry 41 is created for each area obtained by dividing the target area specified in the copy command for every 1 Mbyte boundary of the address, for example.
- the entry 41 includes a copy command ID column 41A, a bitmap column 41B, an address attribute column 41C, and a pointer column 41D.
- the copy command column 41A stores the copy command ID assigned to the copy command
- the bitmap column 41B displays the corresponding 1 Mbyte target area for each unit area (for example, 64 Kbyte area).
- a bitmap 42 made up of a plurality of difference bits respectively associated with each divided area is stored.
- the address attribute column 41C stores attribute information indicating whether the target area associated with the entry 41 is the copy source area or the copy destination area, and the pointer column 41D stores the next copy command of the same copy command. If there is an entry 41, the pointer to the entry 41 (the start address of the area where the data of the entry 41 on the cache memories 23A and 23B is stored, hereinafter referred to as a hash pointer) is Stored.
- the storage apparatus 4 creates one or a plurality of entries 41 corresponding to the target areas (copy source area and copy destination area) of the received copy command for each target area, and the start address for each of the target areas. Is divided by the number of slots in the hash table 40, and the copy command entry 41 is associated with a slot (hereinafter referred to as a target slot) 40A to 40K or 40L associated with the remainder. Specifically, the storage apparatus 4 determines that the target slot 40A to 40K or 40L corresponding to the target area of the copy command has not yet been associated with another copy command entry 41.
- the hash pointer of the first entry 41 in the target area is set to the target slots 40A to 40K. Alternatively, it is stored in the pointer column 41D of the last entry 41 associated with 40L. Further, the storage apparatus 4 turns on each difference bit corresponding to the above-described partitioned area included in the target area of the copy command for the bitmap 42 stored in the bitmap field 41B of the first entry 41 (" 1 ”). Further, the storage apparatus 4 stores the hash pointer of the entry 41 in the pointer column 41D of the previous entry 41 for each entry 41 subsequent to the target area and also stores the entry 41 in the next and subsequent entries 41.
- each differential bit corresponding to the segmented area included in the target area is set to ON (“1”).
- the association of the copy command entry 41 with the slots 40A to 40L of the hash table 40 as described above is performed at the timing when the copy command is registered in the copy queue 31. Then, the entries 41 associated with the slots 40A to 40L are deleted after the copying based on the corresponding copy command is completed.
- the storage device 4 receives a read command or write command from the host device 2, it first hashes the read area specified in the read command or the start address of the write area specified in the write command.
- FIG. 7 shows an area overlapping with the copy source area AR1 or the copy destination area AR2 of the copy command COM1 among the read area or the write area specified in the read command or the write command under the conditions described above with reference to FIG.
- the specific processing contents of the read processing and write processing executed by the storage apparatus 4 are shown.
- the read area or the write area an area that does not overlap with the copy source area AR1 or the copy destination area AR2 is subjected to a normal read process or write process.
- the storage apparatus 4 is intended to execute a read command, and the read area specified in the read command overlaps with a part or all of the copy source area AR1 of the copy command COM1.
- data is read as usual for the overlapping areas of the read areas regardless of whether copying based on the copy command COM1 has not been executed or has been executed (“#” in FIG. (Refer to the “copy source” column in the row “2”).
- the storage apparatus 4 is a case where a read command is to be executed, and the read area specified in the read command overlaps with a part or all of the copy destination area AR2 of the copy command COM1. If the copy based on the copy command COM1 is not executed for the overlapping area, the overlapping area of the read area after the copy according to the copy command COM1 is executed. (See the “copy destination” column in the row where “#” is “1” in FIG. 7). Specifically, as shown in FIG.
- the storage apparatus 4 first transfers data stored in an area overlapping the read area in the copy source area AR1 of the copy command COM1 to the read surface of the cache memories 23A and 23B. Read to 23AR and 23BR (SP10). The storage apparatus 4 thereafter copies this data to the write surfaces 23AW and 23BW of the cache memories 23A and 23B (SP11). Next, the storage apparatus 4 transmits the data copied to the write surfaces 23AW and 23BW of the cache memories 23A and 23B as read data to the host apparatus 2 (SP12), while the read data is copied to the copy destination area AR2 of the copy command COM1. In response to this, the difference bit corresponding to the copied area on the difference bitmap 32 (FIG.
- the storage apparatus 4 is a case where a write command is to be executed, and the write area specified in the write command partially or entirely overlaps with the copy source area AR1 of the copy command COM1. If the copy based on the copy command COM1 is not executed for the area to be copied, for the overlapping area of the write area, the data stored in the overlapping area is copied to the corresponding copy destination specified in the copy command COM1. After saving to the area AR2, write data is written (see the “copy source” column in the row where “#” is “3” in FIG. 7). Specifically, as shown in FIG.
- the storage apparatus 4 first transfers the data stored in the area overlapping the write area in the copy source area AR1 of the copy command COM1 to the read surface of the cache memories 23A and 23B. Read to 23AR, 23BR (SP20). The storage apparatus 4 then copies this data to the write surfaces 23AW and 23BW of the cache memories 23A and 23B (SP21), and further copies the copied data to the write surfaces 23AW and 23BW of the cache memories 23A and 23B. Copy to the copy destination area AR2 of COM1 (SP22). Next, the storage apparatus 4 receives the write data given from the host apparatus 2 and writes it to the write surfaces 23AW and 23BW of the cache memories 23A and 23B (SP23).
- the storage apparatus 4 reads this write data from the cache memories 23A and 23B and writes it in the write area specified by the write command. Further, the storage apparatus 4 changes the difference bit corresponding to the area where the data is copied in step SP22 from ON to OFF for the difference bitmap 32 (FIG. 2) corresponding to the copy command COM1 (SP24). On the other hand, the storage apparatus 4 is intended to execute a write command, and the write area specified in the write command overlaps with the copy destination area AR2 of the copy command COM1 partially or entirely. If the copy based on the copy command COM1 is not executed for the area to be copied, the data stored in the overlap area of the write area is copied to the copy destination area AR2 of the copy command.
- the storage apparatus 4 firstly transfers data from the area overlapping the write area in the copy source area AR1 of the copy command COM1 to the read surfaces 23AR and 23BR of the cache memories 23A and 23B. Read (SP30) and copy this data to the write surfaces 23AW and 23BW of the cache memories 23A and 23B (SP31). Next, the storage apparatus 4 overwrites the above-mentioned data copied to the write surfaces 23AW and 23BW of the cache memories 23A and 23B with the write data received from the host apparatus 2 (SP32).
- the storage apparatus 4 writes the data overwritten with the write data in the copy destination area AR2 of the copy command COM1, and at the same time the copy command in the differential bitmap 32 (FIG. 2) corresponding to the copy command COM1.
- the difference bit corresponding to the area overlapping the write area in the copy source area AR1 of COM1 is changed from ON to OFF (SP33).
- SP33 ON to OFF
- FIG. 11 shows a case where the first and second copy commands COM10 and COM11 in which the copy source areas AR10 and AR12 overlap are registered in the copy queue 31.
- the first and second copy commands COM10 and COM11 are registered in the copy queue 31 in this order, and the first and second copy commands COM10 and COM11 are executed in this order. .
- FIG. 11 shows a case where the first and second copy commands COM10 and COM11 in which the copy source areas AR10 and AR12 overlap are registered in the copy queue 31.
- the first and second copy commands COM10 and COM11 are registered in the copy queue 31 in this order, and the first and second copy commands COM10 and COM11 are executed in this order. .
- the storage apparatus 4 has the copy source areas AR10 and AR12 or the copy destination areas AR11 and AR13 and the read area or write area of the first and / or second copy commands COM10 and COM11.
- the storage apparatus 4 executes an area that overlaps the copy source areas AR10 and AR12 or the copy destination areas AR11 and AR13 in the read area or the write area.
- the specific processing contents of the read processing and write processing are shown.
- the column of “copy source (with duplication)” indicates that the read area or write area specified in the read command or write command to be executed at that time is the first and second copy commands COM10 and COM11.
- the processing contents of the storage apparatus 4 when overlapping with some or all of the overlapping parts of the copy source areas AR10 and AR12 are shown.
- the read area or write area specified in the read command or write command to be executed at that time is the first and second copy commands COM10 and COM11.
- AR12 (however, it overlaps with the copy source areas AR10, AR12 of the first or second copy command COM10, COM11 other than the overlapping part) Indicates the processing contents.
- AR 12 indicates that the read area or write area specified in the read command or write command to be executed at that time is the copy destination area AR10 of the first or second copy command COM10, COM11.
- AR 12 shows the processing contents of the storage apparatus 4 when it overlaps.
- the storage apparatus 4 executes a read command, and the read area specified in the read command is identical to the overlapping part of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11.
- the area that overlaps the overlapped part of the read area does not depend on whether the copy based on the first and second copy commands COM10 and COM11 has been executed or executed as usual.
- the storage apparatus 4 also reads the first of the read areas when the read area specified in the read command does not overlap with the overlapping part of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11. Regardless of whether the copy based on the first and second copy commands COM10, COM11 is not executed or executed for the areas overlapping with the copy source areas AR10, AR12 of the first or second copy command COM10, COM11 The data is read out as shown (see the “copy source (no duplication)” column in the rows where “#” is “1” and “2” in FIG. 12).
- the read area specified in the read command overlaps with part or all of the copy destination areas AR11 and AR13 of one of the first and second copy commands COM10 and COM11.
- the first of the read areas is the same as described above with reference to FIG.
- data is read from the areas that overlap with the copy destination areas AR11 and AR13 of the second copy commands COM10 and COM11 after completion of the copying according to the first or second copy commands COM10 and COM11.
- the storage apparatus 4 sets the difference bit corresponding to the area copied as described above in the difference bitmap 32 (FIG.
- the storage apparatus 4 executes a write command, and the write area specified in the write command is different from the overlapping part of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11.
- the write area specified in the write command is different from the overlapping part of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11.
- the data is saved in the copy destination areas AR11 and AR13 of the corresponding first or second copy commands COM10 and COM11.
- the storage apparatus 4 also turns on the differential bit corresponding to the area where the data was saved in each differential bitmap 32 corresponding to the first and second copy commands COM10 and COM11 from ON to OFF.
- write data is written in the write area designated by the write command (see the “copy source (duplicate)” column in the row where “#” is “3” in FIG. 12). Further, in the storage apparatus 4, the write area specified in the write command partially or entirely overlaps with the overlapping part of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11. When the copying based on the first and second copy commands COM10 and COM11 has been executed for the area to be read (area overlapping with such overlapping portion of the read area), write data is written in the overlapping area as usual. (Refer to the “copy source (duplicate)” column in the row where “#” in FIG. 12 is “4”).
- the write area specified in the write command is an overlapping part of these two copy source areas AR10 and AR12 of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11.
- Are not overlapped however, they overlap the copy source areas AR10, AR12 of the first or second copy command COM10, COM11 other than the overlapped part
- the copy source area of the write area When copying based on the first or second copy command COM10, COM11 corresponding to the area overlapping AR10, AR12 is not executed, the overlapping area is determined in the same manner as described above with reference to FIG.
- Copy source area A of the first or second copy command COM10, COM11 10 after the data stored in AR12 is saved in the copy destination area of the first or second copy command COM10, COM11, the write data is written (“#” in FIG. (See Copy source (no duplication)). Further, in the storage apparatus 4, the write area specified in the write command is an overlapping part of these two copy source areas AR10 and AR12 of the copy source areas AR10 and AR12 of the first and second copy commands COM10 and COM11.
- the data stored in the overlap area for the overlap area is the first or second copy.
- write data is written (refer to the “copy destination” column in the row where “#” is “3” in FIG. 12).
- the write area specified in the write command partially or entirely overlaps with the copy destination areas AR11 and AR13 of the first or second copy command COM10 and COM11, and this overlap area is applied.
- write data is written in the overlapped area as usual (“#” in FIG.
- FIG. 14 shows that, in the above-described case, the storage apparatus 4 has the copy source areas AR20 and AR22 or the copy destination areas AR21 and AR23 of the first and / or second copy commands COM20 and COM21 and the read area or write area.
- the specific processing contents of the read processing and write processing executed by the storage apparatus 4 when a read command or write command partially or wholly overlapping is received are shown.
- the column “copy source” indicates that the read area or write area specified in the read command or write command to be executed at that time is the copy destination area AR20, AR21 of the first or second copy command COM20.
- the operation contents of the storage apparatus 4 when a part or all of them overlap are shown.
- the read area or write area specified in the read command or write command to be executed at that time is the first and second copy commands COM20, COM21.
- the operation contents of the storage apparatus 4 when overlapping with a part or all of the overlapping parts of the copy destination areas AR21 and AR23 are shown.
- the column of “copy destination (no duplication)” in FIG. 14 indicates that the read area or write area specified in the read command or write command to be executed at that time is the first and second copy commands COM20 and COM21.
- the storage apparatus 4 when it does not overlap with the overlapping part of each copy destination area AR21, AR23 (however, it overlaps with the copy source areas AR20, AR22 of the first or second copy command COM20, COM21 other than the overlapping part) Indicates the operation content.
- the storage apparatus 4 executes a read command, and the read area specified in the read command is identical to one of the copy source areas AR20 and AR22 of the first and second copy commands COM20 and COM21.
- the overlapping area is processed as usual regardless of whether the copying based on the first and second copy commands COM20 and COM21 is not executed or has been executed.
- the read area specified in the read command is partially or entirely overlapped with the overlap part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21.
- the data is read after completing the copy process according to the copy command COM21 of No. 2.
- the storage apparatus 4 sets the difference bit corresponding to the area where the copy has been performed as described above in the difference bitmap 32 (FIG.
- the storage apparatus 4 does not overlap the read area specified in the read command with the overlapping part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21 (however, the duplication (It overlaps with a part of the copy source areas AR20 and AR22 of the first or second copy command COM20 and COM21 other than the part), and the corresponding area corresponding to the copy destination areas AR21 and AR23 in the read area corresponds.
- the first or second copy command COM20, COM21 is used for the overlapping area in the same manner as described above with reference to FIG. After executing, read the data.
- the storage apparatus 4 changes the difference bit corresponding to the area where the copy was executed from ON to OFF in the difference bitmap 32 (FIG. 2) corresponding to the first or second copy command COM20, COM21. (Refer to the “copy destination (no duplication)” column in the row where “#” is “1” in FIG. 14).
- the read area specified in the read command does not overlap with the overlapping part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 (however, the first part other than the overlapping part is the first part).
- the first and second copy commands COM20 and COM21 overlap with a part of the copy source areas AR20 and AR22), and the corresponding first and second areas of the read area that overlap with the copy destination areas AR21 and AR23.
- data is read out as usual in the overlapping area ("copy destination (no duplication)" in the row where "#" in FIG. 14 is "2". ”Column).
- the storage apparatus 4 executes a write command, and the write area specified in the write command is partly or entirely the copy source areas AR20 and AR22 of the first or second copy command COM20 and COM21.
- the storage apparatus 4 is a case where the write area specified in the write command partially or entirely overlaps with the overlapping part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21. If the copy based on the first and second copy commands COM20 and COM21 is not executed for the overlapping area (the overlapping area of the write area), the overlapping area The write data is written after the data stored in the copy source area AR22 of the copy command COM21 of No.
- the storage apparatus 4 sets each difference bit corresponding to the area where the copy has been performed on the difference bitmap 32 corresponding to each of the first and second copy commands COM20 and COM21 to OFF (see “ (Refer to the “Copy destination (with duplicates)” column in the row where “#” is “3”).
- the write area specified in the write command partially or entirely overlaps with the overlapping part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21.
- the overlapping area Write data is written as usual (see the “copy destination (duplicate)” column in the row where “#” is “4” in FIG. 14). Further, in the storage apparatus 4, the write area specified in the write command does not overlap with the overlapping part of the copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21 (however, other than the overlapping part) Of the first or second copy command COM20, COM21), the first or second corresponding to the area overlapping the copy destination areas AR21, AR23 in the write area.
- the copy source area AR20 of the first or second copy command COM20 or COM21 for the overlapping area is the same as described above with reference to FIG. , After copying the data stored in AR22, Writing Itodeta (see “copy destination (without duplicates)" column of the row of the " ⁇ " is "3" in FIG. 14).
- the write area specified in the write command from the host apparatus 2 is the two copy destination areas AR21 and AR23 of the first and second copy commands COM20 and COM21.
- the first and second copy commands COM30, COM31 (in which part or all of the copy source areas AR30, AR32 overlap with part or all of the copy destination areas AR31, AR33)
- the copy source area AR30 of the first copy command COM30 is an area with addresses “100” to “150” in the first logical volume VOL30
- the copy destination area AR31 of the first copy command COM30 is the first copy command AR30.
- FIG. 16 shows that in the above-described case, the storage apparatus 4 has the copy source areas AR30 and AR32 or the copy destination areas AR31 and AR33 of the first and / or second copy commands COM30 and COM31 and the read area or write area.
- the specific processing contents of the read processing and write processing executed by the storage apparatus 4 when a read command or write command partially or wholly overlapped are received are shown.
- the “copy source (with duplication)” column and the “copy destination (with duplication)” column are displayed in the read area or write area specified in the read command or write command to be executed at that time.
- the operation contents of the storage apparatus 4 in the case where overlapping portions of the copy source areas AR30 and AR32 or the copy destination areas AR31 and AR33 of the first and second copy commands COM30 and COM31 are included are shown.
- the columns of “copy source (no duplication)” and “copy destination (no duplication)” are stored in the read area or write area specified in the read command or write command to be executed at that time.
- the overlapping part of the copy source areas AR30 and AR32 of the first and second copy commands COM30 and COM31 and the overlapping part of the copy destination areas AR30 and AR32 of the first and second copy commands COM30 and COM31 are not included.
- the operation content of the storage apparatus 4 in this case is shown.
- the storage apparatus 4 executes a read command or a write command, and the read area or write area specified in the read command or write command is the first and second areas.
- FIG. 20 shows a read processing procedure executed by the CPUs 22A and 22B of the storage apparatus 4 when processing a read command stored in the command queue 30.
- the read area is set with the start address of the read area specified in the read command and the length of the read area specified in the read command as arguments. It is determined with reference to the hash table 40 (FIG. 5) whether or not the copy source area or the copy destination area of any of the copy commands registered in the copy queue 31 overlaps (SP40). . Subsequently, the CPUs 22A and 22B control the corresponding disk device 10 via the drive interfaces 24A and 24B based on the determination result obtained in step SP40, and are stored in the read area specified in the read command. Data to be stored or to be stored is read from the disk device 10, the read data is transmitted to the host device 2 (SP41), and then this read processing is terminated.
- FIG. 21 shows specific processing contents of the hash search processing executed by the CPUs 22A and 22B in step SP40 of the read processing.
- the CPUs 22A and 22B start this hash search process, and first reset (off) the copy source duplication flag and the copy destination duplication flag held at predetermined positions in the cache memories 23A and 23B, respectively.
- the copy source duplication flag is a flag indicating that the read area specified in the read command partially or entirely overlaps with the copy source area of any copy command registered in the copy queue 31.
- the duplication flag is a flag indicating that the read area partially or entirely overlaps with the copy destination area of any copy command registered in the copy queue 31.
- copy source duplication flag and copy destination duplication flag are used in the subsequent processing as described later.
- the CPU 22A, 22B rounds the start address of the read area specified in the read command to a 1 Mbyte boundary, and divides the result by the number of slots in the hash table 40 (FIG. 5), thereby Corresponding slots 40A to 40L (FIG. 5) are detected (SP52).
- the CPUs 22A and 22B determine whether or not “Null” indicating that there is no pointer to the next entry is stored in the slots 40A to 40L (SP53).
- an affirmative result in this determination means that a copy command in which a part of or all of the copy source area or the copy destination area overlaps with the read area specified in the read command is not stored in the copy queue 31. Means that. Thus, at this time, the CPUs 22A and 22B end this hash search process and return to the read process. On the other hand, when a negative result is obtained in this determination, a copy command in which the read area specified in the read command overlaps with a part or all of the copy source area or the copy destination area is stored in the copy queue 31. Means that Thus, at this time, the CPUs 22A and 22B access the entry 41 (FIG. 5) designated by the pointer stored in the slots 40A to 40L (SP54).
- the CPUs 22A and 22B acquire the bitmap 42 (FIG. 5) stored in the bitmap field 41B (FIG. 5) of the entry 41 accessed in step SP54, and based on the acquired bitmap 42, the entry The start address and end address of the storage area designated as the copy source area or the copy destination area (target area) corresponding to the entry 41 in the copy command corresponding to 41 are calculated (SP55).
- the CPU 22A, 22B determines that the start address of the read area specified in the read command is smaller than the end address of the target area of the copy command, and the end address of the read area is the start address of the target area of the copy command. It is judged whether it is larger than (SP56).
- Obtaining a negative result in this determination means that, as shown in FIG. 22A or 22D, a part or all of the read area does not overlap with the target area of the copy command. means. Thus, at this time, the CPUs 22A and 22B proceed to step SP61.
- obtaining a positive result in the determination at step SP56 means that, as shown in FIG. 22 (B) or (C), such a read area partially or entirely overlaps with the target area of the copy command. Means that Thus, at this time, the CPUs 22A and 22B obtain the copy command ID of the copy command corresponding to the entry 41 from the copy command ID column 41A (FIG. 5) of the entry 41, and store this (SP57).
- the CPU 22A, 22B refers to the address attribute column 41C (FIG. 5) of the entry 41 and determines whether the address attribute stored in the address attribute column 41C is “copy source” (the entry 41 is It is determined whether or not the copy command corresponds to the copy source area (SP58). If the CPU 22A, 22B obtains a positive result in this determination, it sets the copy source duplication flag reset in step SP50 to ON (SP59), and then proceeds to step SP61. If the CPU 22A, 22B obtains a negative result in the determination at step SP58, it sets the copy destination duplication flag reset at step SP51 to ON (SP60), and then proceeds to step SP61.
- FIG. 23 shows specific processing contents of the data read processing executed by the CPUs 22A and 22B in step SP41 of the read processing described above with reference to FIG.
- the CPUs 22A and 22B start this data read process.
- the CPU 22A and 22B control the corresponding disk device 10 via the drive interfaces 24A and 24B to specify the read command.
- Data is read from the read area, and the read data is stored in the read surfaces of the cache memories 23A and 23B (SP70).
- the CPUs 22A and 22B determine whether or not the copy destination duplication flag described above for step SP51 in FIG. 21 is set to ON (SP71), and if a negative result is obtained, the process proceeds to step SP85.
- the CPU 22A, 22B when the CPU 22A, 22B obtains a positive result in the determination at step SP71, it points to a copy command to be executed first among copy commands registered in the copy queue 31 (hereinafter referred to as a copy command pointer). Then, it is determined whether or not the copy command ID of the copy command for which the copy command pointer is set matches the copy command ID stored in step SP57 of FIG. 21 (SP72). SP73). If the CPU 22A, 22B obtains a negative result in this determination, it proceeds to step SP83. If it obtains an affirmative result, the start address of the read area specified in the read command is set, and the copy command pointer is set at that time.
- the CPU 22A, 22B determines whether or not the address is smaller than the start address of the target area of the copy command (SP74).
- the start address of the area where the read area specified in the read command and the target area of the copy command overlap (hereinafter referred to as the overlapping area start address).
- the start address of the read area specified in the read command is set (SP75), and when a positive result is obtained, the start address of the target area of the copy command is set as the overlap area start address. (SP76).
- the CPUs 22A and 22B determine whether or not the end address of the read area specified in the read command is smaller than the end address of the target area of the copy command (SP77).
- the end address of the read area specified in the read command is used as the end address of the overlap area (hereinafter referred to as the overlap area end address). If it is set (SP78) and a negative result is obtained, the end address of the target area of the copy command is set as the overlap area end address (SP79).
- the CPUs 22A and 22B have all the differential bits corresponding to the overlapped areas set to ON in the differential bitmap 32 (FIG. 2) associated with the copy command for which the copy command pointer is set at that time. It is determined whether or not (SP80).
- step SP83 If the CPU 22A, 22B obtains a negative result in this determination, it proceeds to step SP83, and if it obtains an affirmative result, it proceeds from the overlapping area start address set in step SP75 or step SP76 in the copy source area of the copy command.
- the data stored in the storage area up to the overlapping area end address set in SP78 or SP79 is read, and the read data is the corresponding data among the data stored in the read surface of the cache memories 23A and 23B in step SP70. Overwrite the part.
- the CPUs 22A and 22B set the difference bit corresponding to the data read in step SP81 in the difference bitmap 32 (FIG. 2) associated with the copy command to OFF (SP82), and thereafter step SP83.
- step SP83 the CPUs 22A and 22B use the copy command pointer described above with respect to step SP72 as the next to the copy command registered in the copy queue 31 and the copy command pointer set at that time.
- the CPUs 22A and 22B determine whether or not the processing of step SP73 to step SP83 has been executed for all copy commands registered in the copy queue 31 (SP84).
- the CPU 22A, 22B obtains a negative result in this determination, it returns to step SP73, and thereafter repeats the processing of step SP73 to step SP84 until it obtains a positive result at step SP84.
- FIG. 24 shows a processing procedure of write processing executed by the CPUs 22A and 22B of the storage apparatus 4 when processing a write command stored in the command queue 30.
- the write area is specified by using the start address of the write area specified in the write command and the length of the write area specified in the write command as arguments. It is determined with reference to the hash table 40 (FIG. 5) whether or not the copy destination area or the copy source area of any copy command registered in the copy queue 31 partially or completely overlaps (SP90). . Specifically, the CPUs 22A and 22B execute the hash search process described above with reference to FIG. Subsequently, the CPUs 22A and 22B control the corresponding disk device 10 (FIG. 1) via the drive interfaces 24A and 24B (FIG.
- Data write writing process 25A and 25B show specific processing contents of the data write processing executed by the CPUs 22A and 22B in step SP91 of the write processing.
- the CPU 22A, 22B starts this data write process, and first determines whether or not the copy source duplication flag described above for step SP50 in FIG. 21 is set to ON (SP100). ). If the CPU 22A, 22B obtains a negative result in this determination, it proceeds to step SP114.
- the CPU 22A, 22B when the CPU 22A, 22B obtains a positive result in the determination at step SP100, it sets a copy command pointer to the copy command to be executed first among the copy commands registered in the copy queue 31 (SP101). Thereafter, it is determined whether or not the copy command ID of the copy command for which the copy command pointer is set matches the copy command ID stored in step SP57 of FIG. 21 (SP102). If the CPU 22A, 22B obtains a negative result in this determination, it proceeds to step SP113. If it obtains an affirmative result, the start address of the write area designated in the write command is set, and the copy command pointer is set at that time. It is determined whether or not the address is smaller than the start address of the target area of the copy command (SP103).
- the start address (overlapping area start address) of the area where the write area specified in the write command and the target area of the copy command overlap As described above, the start address of the read area specified in the write command is set (SP104), and if a positive result is obtained, the start address of the target area of the copy command is set as the overlap area start address (SP105). ). Subsequently, the CPUs 22A and 22B determine whether or not the end address of the write area specified in the write command is smaller than the end address of the target area of the copy command (SP106).
- the CPU 22A, 22B determines whether or not all the differential bits corresponding to such overlapping areas in the differential bitmap 32 associated with the copy command for which the copy command pointer is set at that time are set to ON. Is determined (SP109). If the CPU 22A, 22B obtains a negative result in this determination, it proceeds to step SP113.
- step SP104 in the copy source area of the copy command or Data stored in the storage area from the overlapping area start address set in step SP105 to the overlapping area end address set in step SP107 or step SP108 is read, and the read data is stored in the read surfaces of the cache memories 23A and 23B.
- the CPUs 22A and 22B copy the data stored in the read surfaces of the cache memories 23A and 23B to the write surfaces of the cache memories 23A and 23B (SP111), and thereafter the difference bitmap associated with the copy command.
- the difference bit corresponding to the data read from the disk device 10 in step SP110 is set to OFF in SP32 (SP112), the process proceeds to step SP113.
- step SP113 the copy command pointer described above with respect to step SP101 is set to the next of the copy commands registered in the copy queue 31 and the copy command pointer set at that time.
- SP113 To the copy command to be executed (SP113).
- the CPUs 22A and 22B determine whether or not the processing of step SP102 to step SP113 has been completed for all copy commands registered in the copy queue 31 (SP114).
- the CPU 22A, 22B obtains a negative result in this determination, it returns to step SP102, and thereafter repeats the processing of step SP102 to step SP114 until it obtains a positive result at step SP114.
- step SP115 the CPUs 22A and 22B determine whether or not the copy destination duplication flag described above for step SP51 in FIG. 21 is set to ON (SP115), and when obtaining a negative result, proceed to step SP128.
- the CPU 22A, 22B obtains a positive result in the determination at step SP115, thereafter, it executes the processing at step SP116 to step SP127 in the same manner as at step SP101 to step SP114.
- step SP127 the process proceeds to step SP128. Then, when proceeding to step SP128, the CPU 22A, 22B accepts write data transmitted from the host device 2 in association with the write command, and stores this write data on the write surface of the cache memories 23A, 23B (SP128). At this time, for example, as described above with reference to FIG. 10, the CPUs 22A and 22B need to overwrite the write data transmitted from the host device 2 with the data copied to the write surfaces of the cache memories 23A and 23B in step SP111. In this case, the write data related to the data is overwritten.
- FIG. 26 shows a specific processing procedure of the CPUs 22A and 22B of the storage apparatus 4 when a copy command from the host apparatus 2 is received.
- the CPU 22A, 22B receives the copy command from the host device 2, it starts this copy command reception processing.
- the copy source area start address of the copy command and the copy source area specified in the copy command are started.
- the CPU 22A, 22B transmits an error response to the effect that the copy command cannot be executed to the host device 2 that is the source of the copy command (SP138), and thereafter ends the copy command reception process.
- the CPU 22A or 22B obtains a negative result in the determination at step SP131, the CPU 22A and 22B obtain the start address of the copy destination area of the copy command received at that time and the length of the copy destination area specified in the copy command. It is determined with reference to the hash table 40 as an argument whether the copy destination area partially or entirely overlaps with the copy source area of any copy command registered in the copy queue 31 ( SP132).
- the CPUs 22A and 22B execute the hash search process described above with reference to FIG. Subsequently, the CPUs 22A and 22B determine whether or not the copy destination duplication flag described above for step SP51 in FIG. 21 is set to ON (SP133).
- SP133 the copy destination duplication flag described above for step SP51 in FIG. 21 is set to ON
- the CPU 22A, 22B transmits an error response to the effect that the copy command cannot be executed to the host device 2 that is the source of the copy command (SP138), and thereafter ends the copy command reception process.
- obtaining a negative result in the determination at step SP133 means that the copy destination area of the copy command received at that time is the copy source area of any copy command already registered in the copy queue 31. It means not overlapping.
- the CPU 22A, 22B registers the copy source area and the copy destination area of the copy command in the hash table 40 (FIG. 5) (SP134, SP135), and registers the copy command in the copy queue 31 (see FIG. 5). SP136). Subsequently, the CPUs 22A and 22B transmit a response (copy execution completion response) indicating that the copy process corresponding to the copy command has been completed to the host device 2 that has transmitted the copy command (SP137). Then, this copy command reception process is terminated.
- FIG. 27 shows specific processing contents of the hash table registration processing executed in step SP134 and step SP135 of the copy command reception processing described above with reference to FIG.
- the CPUs 22A and 22B start the hash table registration process.
- a counter (not shown) for counting addresses as described later (hereinafter referred to as an address).
- the counter is called (the count value is set to “0”) (SP140).
- the CPUs 22A and 22B use the start address of the copy source area specified in the target copy command (in the case of step SP134 in FIG. 26) or the start address of the copy destination area (in the case of step SP135 in FIG.
- a partial area of the target area (copy source area or copy destination area) to be registered in the hash table 40 (FIG. 5) is determined (SP141).
- the CPUs 22A and 22B create an entry 41 for the area determined in step SP141.
- the copy command ID assigned to the corresponding copy command is stored in the copy command column 41A (FIG. 5), and the bit map 42 (FIG. 5) in which the bit corresponding to the area is set to ON
- the entry 41 is created in such a manner that it is stored in the map field 41B (FIG.
- the CPUs 22A and 22B store the entry 41 created in this way in the cache memories 23A and 23B (SP142). Subsequently, the CPUs 22A and 22B use the pointer (hash pointer) to the entry 41 created in step SP142 as the corresponding slot 40A to 40L of the hash table 40 or the entry 41 associated with the slot 40A to 40L. It is set in the pointer column 41D (FIG. 5) of the last entry 41 (SP143).
- the CPUs 22A and 22B in the bitmap 42 stored in the bitmap column 41B of the entry 41, based on the value of the portion of 1M bytes or less of the value obtained by adding the count value of the address counter to the start address of the target area, At this time, the bit corresponding to the target unit area of 64 Kbytes is set to ON (SP144). Further, the CPUs 22A and 22B add a value of 64 Kbytes to the count value of the address counter (SP145), and then the value of 1 Mbyte or less of the value obtained by adding the count value of the address counter to the start address of the target area is “ It is determined whether or not “0” has been reached (SP146).
- the CPUs 22A and 22B determine whether or not the count value of the address counter is smaller than the length of the target area of the copy command targeted at that time (SP147). If the CPU 22A, 22B obtains a negative result in this determination, it returns to step SP144, and thereafter repeats the processing from step SP144 to step SP147 until it obtains a positive result at step SP146 or step SP147. By such processing, the CPUs 22A and 22B turn on the corresponding bit on the bitmap 42 stored in the bitmap column 41B of the corresponding entry 41 for each unit area in the target 1 Mbyte area at that time.
- the CPU 22A, 22B eventually returns to step SP141 when it obtains a positive result in step SP146 by completing the same processing for all the unit areas in the target 1 Mbyte area, and then returns to the next step SP141. Similar processing is repeated for the 1 Mbyte area (SP141 to SP147). If the CPU 22A, 22B eventually obtains a negative result in step SP147 by completing the same processing for all the 1 Mbyte areas in the target area of the copy command that is the target at that time, the pointer of the last entry 41 “Null” indicating that the next entry does not exist is set in the column 41D (SP148), and then the hash table registration processing is terminated.
- the copy queue 31 is provided in addition to the command queue 30, and when the command stored in the command queue 30 is a copy command, this is stored in the copy queue 31.
- a copy execution completion response is transmitted to the host apparatus 2 that is the transmission source of the copy command, and then a copy process according to the copy command is executed in the background.
- the host device 2 can prevent a timeout from occurring without waiting for a subsequent command to access the same address. In this way, a highly reliable storage apparatus that can increase the processing speed of the copy process as viewed from the host apparatus can be realized.
- the present invention is not limited to this, and the number of slots other than 12 is set. It is also good.
- the storage device 4 is used as a control unit that stores the command given from the host device 2 in the command queue 30 and executes the commands stored in the command queue 30 in the order in which they are stored in the command queue 30.
- the CPUs 22A and 22B that control the entire operation have been described, the present invention is not limited to this, and hardware having a function as the control unit is provided separately from the CPUs 22A and 22B.
- the present invention can be widely applied to storage devices having various configurations equipped with a copy function.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
ホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置及びその制御方法を提案する。ホスト装置から与えられたコマンドをコマンドキューに格納すると共に、当該コマンドキューに格納したコマンドを、当該コマンドキューへの格納順に実行するストレージ装置及びその制御方法において、ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューをメモリ上に設定し、コピーコマンドをコピーキューに移動すると共に、当該コマンドの送信元のホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信し、コピーキューに移動したコピーコマンドを、当該コピーキューへの格納順にバックグランドで実行するようにした。
Description
本発明は、ストレージ装置及びその制御方法に関し、例えば装置内の任意の論理ボリュームから同一装置内の同一又は他の論理ボリュームにデータをコピーするコピー機能(以下、これを内部コピー機能と呼ぶ)が搭載されたストレージ装置に適用して好適なものである。
従来、アドレスによってコピー元及びコピー先が指定されるコピー処理は、コピー元アドレスからデータを読み、コピー先アドレスにそのデータを書き込むことにより行われる。
このようなコピー処理の処理時間を短縮する方法の1つとして、アクセス時間が短いキャッシュを使用し、キャッシュ上でコピーを実行する方法がある。この方法によれば、かかるコピー処理が完了した段階で、コピー先となるディスクにデータを書き込む前であっても、ホスト装置からそのデータにアクセスすることができる。
また内部コピー機能に関する他の技術として、論理ボリューム単位でのコピー処理を行う際に、ホスト装置に対してはコピー処理の完了前に当該コピー処理の実行完了を通知し、その後、そのコピー処理をバックグラウンドで実行する技術が存在する。
このようなコピー処理の処理時間を短縮する方法の1つとして、アクセス時間が短いキャッシュを使用し、キャッシュ上でコピーを実行する方法がある。この方法によれば、かかるコピー処理が完了した段階で、コピー先となるディスクにデータを書き込む前であっても、ホスト装置からそのデータにアクセスすることができる。
また内部コピー機能に関する他の技術として、論理ボリューム単位でのコピー処理を行う際に、ホスト装置に対してはコピー処理の完了前に当該コピー処理の実行完了を通知し、その後、そのコピー処理をバックグラウンドで実行する技術が存在する。
アドレスによってコピー元及びコピー先が指定されるコピー処理の時間短縮化は、コピー対象となるデータの容量が少ない場合は有効である。しかしながら、同じアドレスに対して大量のデータをコピーすべきコピーコマンドが複数個、連続してホスト装置からストレージ装置に発行された場合、ストレージ装置において、先行するコピーコマンドが実行完了するまで次以降のコピーコマンドが待たされ、ホスト装置においてタイムアウトが発生する場合がある。
またコピー処理が論理ボリューム単位となると、予めコピー元と同じ容量の論理ボリュームをコピー先として用意しておく必要があり、さらにはコピー範囲にデータが格納されていない記憶領域までをも含むこととなるために、コピー時間もその分長くなるという問題がある。
本発明は以上の点を考慮してなされたもので、ホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置及びその制御方法を提案しようとするものである。
またコピー処理が論理ボリューム単位となると、予めコピー元と同じ容量の論理ボリュームをコピー先として用意しておく必要があり、さらにはコピー範囲にデータが格納されていない記憶領域までをも含むこととなるために、コピー時間もその分長くなるという問題がある。
本発明は以上の点を考慮してなされたもので、ホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置及びその制御方法を提案しようとするものである。
かかる課題を解決するため本発明においては、ストレージ装置において、ホスト装置からのコマンドを一時的に保持するためのコマンドキューが設定されるメモリと、前記ホスト装置から与えられた前記コマンドを前記コマンドキューに格納すると共に、当該コマンドキューに格納した前記コマンドを、当該コマンドキューへの格納順に実行する制御部とを設け、前記制御部が、前記ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューを前記メモリ上に設定し、前記コマンドキューに格納した前記ホスト装置からのコマンドのうちの前記コピーコマンドを前記コピーキューに移動すると共に、当該コマンドの送信元の前記ホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信し、前記コピーキューに移動した前記コピーコマンドを、当該コピーキューへの格納順にバックグランドで実行するようにした。
また本発明においては、ホスト装置から与えられたコマンドをコマンドキューに格納すると共に、当該コマンドキューに格納した前記コマンドを、当該コマンドキューへの格納順に実行するストレージ装置の制御方法において、前記ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューを前記メモリ上に設定する第1のステップと、前記コマンドキューに格納した前記ホスト装置からのコマンドのうちの前記コピーコマンドを前記コピーキューに移動すると共に、当該コマンドの送信元の前記ホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信する第2のステップと、前記コピーキューに移動した前記コピーコマンドを、当該コピーキューへの格納順にバックグランドで実行する第3のステップとを設けるようにした。
また本発明においては、ホスト装置から与えられたコマンドをコマンドキューに格納すると共に、当該コマンドキューに格納した前記コマンドを、当該コマンドキューへの格納順に実行するストレージ装置の制御方法において、前記ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューを前記メモリ上に設定する第1のステップと、前記コマンドキューに格納した前記ホスト装置からのコマンドのうちの前記コピーコマンドを前記コピーキューに移動すると共に、当該コマンドの送信元の前記ホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信する第2のステップと、前記コピーキューに移動した前記コピーコマンドを、当該コピーキューへの格納順にバックグランドで実行する第3のステップとを設けるようにした。
本発明によれば、ホスト装置が同じアドレスを対象として大容量のデータをコピーすべきコピーコマンドを複数個、連続して発行する場合において、ホスト装置側において、個々のコピーコマンドが実行完了するのを待つ必要がなく、タイムアウトが発生するのを未然に防止することができる。かくするにつき、ホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置及びその制御方法を実現することができる。
図1は、本実施の形態による計算機システムの全体構成を示すブロック図である。
図2は、コピーコマンドを受領したストレージ装置の内部処理概要の説明に供する概念図である。
図3は、コピーキューの説明に供する図表である。
図4は、コピーコマンドの状態の説明に供する図表である。
図5は、ハッシュテーブルの説明に供する概念図である。
図6は、リード/ライト動作の基本パターンの説明に供する概念図である。
図7は、リード/ライト動作の基本パターンの説明に供する図表である。
図8は、リード/ライト動作の基本パターンの説明に供する概念図である。
図9は、リード/ライト動作の基本パターンの説明に供する概念図である。
図10は、リード/ライト動作の基本パターンの説明に供する概念図である。
図11は、リード/ライト動作の応用パターンの説明に供する概念図である。
図12は、リード/ライト動作の応用パターンの説明に供する図表である。
図13は、リード/ライト動作の応用パターンの説明に供する概念図である。
図14は、リード/ライト動作の応用パターンの説明に供する図表である。
図15は、リード/ライト動作の応用パターンの説明に供する概念図である。
図16は、リード/ライト動作の応用パターンの説明に供する図表である。
図17は、リード/ライト動作の応用パターンの説明に供する概念図である。
図18は、リード/ライト動作の応用パターンの説明に供する概念図である。
図19は、リード/ライト動作の応用パターンの説明に供する概念図である。
図20はリード処理の処理手順を示すフローチャートである。
図21はハッシュ検索処理の処理手順を示すフローチャートである。
図22は、ハッシュ検索処理の説明に供する概念図である。
図23はデータリード処理の処理手順を示すフローチャートである。
図24はライト処理の処理手順を示すフローチャートである。
図25Aはデータライト処理の処理手順を示すフローチャートである。
図25Bはデータライト処理の処理手順を示すフローチャートである。
図26は、コピーコマンド処理の処理手順を示すフローチャートである。
図27は、ハッシュテーブル登録処理の処理手順を示すフローチャートである。
図2は、コピーコマンドを受領したストレージ装置の内部処理概要の説明に供する概念図である。
図3は、コピーキューの説明に供する図表である。
図4は、コピーコマンドの状態の説明に供する図表である。
図5は、ハッシュテーブルの説明に供する概念図である。
図6は、リード/ライト動作の基本パターンの説明に供する概念図である。
図7は、リード/ライト動作の基本パターンの説明に供する図表である。
図8は、リード/ライト動作の基本パターンの説明に供する概念図である。
図9は、リード/ライト動作の基本パターンの説明に供する概念図である。
図10は、リード/ライト動作の基本パターンの説明に供する概念図である。
図11は、リード/ライト動作の応用パターンの説明に供する概念図である。
図12は、リード/ライト動作の応用パターンの説明に供する図表である。
図13は、リード/ライト動作の応用パターンの説明に供する概念図である。
図14は、リード/ライト動作の応用パターンの説明に供する図表である。
図15は、リード/ライト動作の応用パターンの説明に供する概念図である。
図16は、リード/ライト動作の応用パターンの説明に供する図表である。
図17は、リード/ライト動作の応用パターンの説明に供する概念図である。
図18は、リード/ライト動作の応用パターンの説明に供する概念図である。
図19は、リード/ライト動作の応用パターンの説明に供する概念図である。
図20はリード処理の処理手順を示すフローチャートである。
図21はハッシュ検索処理の処理手順を示すフローチャートである。
図22は、ハッシュ検索処理の説明に供する概念図である。
図23はデータリード処理の処理手順を示すフローチャートである。
図24はライト処理の処理手順を示すフローチャートである。
図25Aはデータライト処理の処理手順を示すフローチャートである。
図25Bはデータライト処理の処理手順を示すフローチャートである。
図26は、コピーコマンド処理の処理手順を示すフローチャートである。
図27は、ハッシュテーブル登録処理の処理手順を示すフローチャートである。
1……計算機システム、2……ホスト装置、4……ストレージ装置、10……ディスク装置、12A,12B……コントローラ、22A,22B……CPU、23A,23B……キャッシュメモリ、30……コマンドキュー、31……コピーキュー、32……差分ビットマップ、40……ハッシュテーブル、41……エントリ、42……ビットマップ、COM1,COM10,COM11,COM20,COM21,COM30,COM31COM40,COM41,COM50,COM51,COM60,COM61……コピーコマンド、AR1,AR10,AR12,AR20,AR22,AR30,AR32,AR40,AR42,AR50,AR52,AR60,AR62……コピー元領域、AR2,AR11,AR13,AR21,AR23,AR31,AR33,AR41,AR43,AR51,AR53,AR61,AR63……コピー先領域。
以下図面について本発明の一実施の形態について詳述する。
(1)本実施の形態による計算機システムの構成
図1において、1は全体として本実施の形態による計算機システムを示す。この計算機システム1は、複数のホスト装置2がネットワーク3を介してストレージ装置4に接続されることにより構成されている。
ホスト装置2は、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。またホスト装置2は、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置(図示せず)と、モニタディスプレイやスピーカー等の情報出力装置(図示せず)とを備える。
ネットワーク3は、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線又は公衆回線などから構成される。ホスト装置2及びストレージ装置4間の通信は、ネットワーク3がLANである場合には、iSCSI(internet Small Computer System Interface)プロトコル又はTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われ、ネットワーク3がSANである場合には、ファイバチャネルプロトコルに従って行われる。
ストレージ装置4は、複数のディスク装置10から構成される記憶部11と、これら複数のディスク装置10に対するデータの入出力を制御する0系及び1系のコントローラ12A,12Bとから構成される。
ディスク装置10は、例えばSCSIディスク等の高価なディスクや、SATA(Serial AT Attachment)ディスクや光ディスク等の安価なディスクなどから構成される。1又は複数のディスク装置10により1つのRAIDグループ13が構成され、1つのRAIDグループ13を構成する各ディスク装置10が提供する物理的な記憶領域上に、1又は複数の論理ボリュームが設定される。そしてクライアントからのデータは、この論理ボリューム内に所定大きさのブロック(以下、これを論理ブロックと呼ぶ)を単位として記憶される。
各論理ボリュームには、それぞれ固有のボリューム番号が付与される。本実施の形態の場合、データの入出力は、このボリューム番号と、各論理ブロックにそれぞれ付与されるその論理ブロックのブロック番号(LBA:Logical Block Address)とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
コントローラ12A,12Bは、それぞれ上位インタフェース20A,20B、ローカルメモリ21A,21B、CPU22A,22B、キャッシュメモリ23A,23B及びドライブインタフェース24A,24Bを備える。
上位インタフェース20A,20Bは、ネットワーク3に対するインタフェースであり、NIC(Network Interface Card)などから構成される。この上位インタフェース20A,20Bは、かかるネットワーク3を介してライトデータ又はリードデータや各種コマンドなどをホスト装置2との間で送受する。
ローカルメモリ21A,21Bは、ストレージ装置4の起動時に所定のディスク装置10から読み出された制御プログラムを記憶するために用いられるほか、CPU22A,22Bのワークメモリとしても用いられる。
CPU22A,22Bは、ホスト装置2から送信されるリードコマンド、ライトコマンド又はコピーコマンド等に応答してディスク装置10に対するデータの入出力処理を制御するプロセッサであり、ローカルメモリ21A,21Bに格納された上述の制御プログラムに基づいて所定の制御処理を実行する。
キャッシュメモリ23A,23Bは、主として上位インタフェース20A,20B及びドライブインタフェース24A,24B間において転送されるデータを一時的に記憶するために用いられる。またキャッシュメモリ23A,23Bの一部は、0系及び1系の2つのコントローラ12A,12Bとの共有メモリとして使用される。これにより、一方のコントローラ12A,12Bに障害が発生した場合に、正常な他方のコントローラ12B,12Bが情報を引き継ぎ得るようになされている。
ドライブインタフェース24A,24Bは、ディスク装置10に対するインタフェースである。このドライブインタフェース24A,24Bは、上位インタフェース20A,20Bを介して与えられるホスト装置2からのライトコマンドやリードコマンドに応じて対応するディスク装置10を制御することにより、ライトデータやリードデータをライトコマンドやリードコマンドにおいて指定された論理ボリューム内の当該ライトコマンド又はリードコマンドにおいて指定されたアドレス位置に読み書きする。
(2)ストレージ装置における各種処理
次に、ホスト装置2からのコピーコマンドを受領したストレージ装置4において実行される一連の処理内容について説明する。
本実施の形態の場合、ストレージ装置4は、図2に示すように、ホスト装置2から送信されるコマンドを一時的に保持するためのコマンドキュー30をキャッシュメモリ23A,23B上に備える。そしてストレージ装置4(正確にはCPU22A,22B)は、ホスト装置2から送信されるコマンドをこのコマンドキュー30に格納し、格納したコマンドを当該コマンドキュー30への格納順に実行する。
またストレージ装置4は、かかるコマンドキュー30に加えて、コピーコマンドだけを一時的に保持するためのコピーキュー31をキャッシュメモリ23A,23B上に備える。
このコピーキュー31は、図3に示すように、ID欄31A、コピー元欄31B、コピー先欄31C及び状態欄31Dから構成される。そしてID欄31Aには、対応するコピーコマンドに対して付与されたID(以下、これをコピーコマンドIDと呼ぶ)が格納される。
またコピー元欄31Bは、LUN欄31BA、開始アドレス欄31BB及び終了アドレス欄31BCから構成されており、LUN欄31BAに、対応するコピーコマンドにおいてコピー元として指定された論理ボリュームのボリューム番号が格納され、開始アドレス欄31BB及び終了アドレス欄31BCに、その論理ボリューム内のコピー元として指定された記憶領域(以下、これをコピー元領域と呼ぶ)の開始アドレス及び終了アドレスがそれぞれ格納される。
同様に、コピー先欄31Cは、LUN欄31CA、開始アドレス欄31CB及び終了アドレス欄31CCから構成されており、LUN欄31CAに、対応するコピーコマンドにおいてコピー先として指定された論理ボリュームのボリューム番号が格納され、開始アドレス欄31CB及び終了アドレス欄31CCに、その論理ボリューム内のコピー先として指定された記憶領域(以下、これをコピー先領域と呼ぶ)の開始アドレス及び終了アドレスがそれぞれ格納される。
また状態欄31Dには、コピー元領域からコピー先領域へのコピーの状態が格納される。なお、かかるコピーの状態としては、図4に示すように、コピーが実行されていない「初期状態」と、バックグラウンドでのコピーが実行中である「バックグラウンドコピー状態」と、障害が発生してコピーが実行できない「エラー状態」と、対象領域が他の処理で使用されているためにコピーを実行できない「ビジー状態」とがある。
そしてストレージ装置4は、ホスト装置2からのコマンドを受領すると、図2に示すように、このコマンドをコマンドキュー30に格納した後(SP1)、このコマンドの種別を判別し、そのコマンドがコピーコマンドであった場合には、当該コピーコマンドをコピーキュー31に移動させた後、かかるコピーコマンドをコマンドキュー30から削除する(SP2)。
この後、ストレージ装置4は、そのコピーコマンドに対するコピー処理の実行完了の応答(以下、これをコピー実行完了応答と呼ぶ)をホスト装置2に送信する(SP3)。この場合、ホスト装置2は、このコピー実行完了応答を受領した時点でかかるコピーコマンドに応じたコピーが完了したと認識するため、当該ホスト装置2において、後続の同じアドレスに対するコマンドが待たされることがない。
さらにストレージ装置4は、この後、コマンドキュー30に格納されたコマンドに応じた処理と並行して、コピーキュー31に格納されたコピーコマンドに応じたコピー処理をコピーキュー31への格納順にバックグラウンドで実行する(SP4)。
なお、ストレージ装置4は、上述のステップSP2においてコピーコマンドをコピーキューに移動する際に、そのコピーコマンドにおいて指定されたコピー元領域及びコピー先領域間のデータの差分を示す差分ビットマップ32をキャッシュメモリ23A,23B上に作成する。
この差分ビットマップ23A,23Bは、各差分ビットがそれぞれコピー元領域内の各単位領域と対応付けられたものである。従って、例えば単位領域が64Kバイトであり、コピー元領域が256Mバイトである場合には、差分ビットマップ32は512バイトの大きさとなる。
また差分ビットマップ32は、コピーコマンドをコピーキュー31に移動した直後は、コピー元領域及びコピー先領域にそれぞれ格納されているデータが一致していないため、すべての差分ビットがオン(「1」)に設定される。
そしてストレージ装置4は、コピー元領域内の1つの単位領域分のデータをコピー先領域にバックグランドでコピーし終えるごとに、対応する差分ビットをオフ(「0」)に設定する。またストレージ装置4は、コピーキュー31に格納された1つのコピーコマンドに応じたバックグランドでのコピー処理が完了すると、そのコピーコマンドのエントリをコピーキュー31から削除すると共に、当該コピーコマンドに対応付けられた差分ビットマップ32をキャッシュメモリ23A,23B上から削除する。
ところで、ホスト装置2は、上述のようにコピーコマンドを発行後、対応するコピー実行完了応答を受領した時点でそのコピーコマンドに応じたコピー処理が完了したと認識する。このためホスト装置2は、この後、かかるコピーコマンドに応じたコピー処理が完了する前に、そのコピーコマンドのコピー先領域を対象としたリードコマンドや、そのコピーコマンドのコピー元領域に格納されたデータを書き換えようとするライトコマンドをストレージ装置4に対して発行することが可能となる。
従って、上述のようなバックグランドコピー機能をストレージ装置4に搭載するに際しては、コピーコマンドに応じたコピー処理の完了前にかかるリードコマンドを受領した場合においても、リードデータとして、かかるコピーコマンドの実行完了後にそのコピー先領域に格納されているべきデータをホスト装置2に送信できるようにストレージ装置4を構築する必要がある。同様に、コピーコマンドに応じたコピー処理の完了前にかかるライトコマンドを受領した場合においても、そのライトコマンドを実行する前にそのコピーコマンドのコピー先領域に格納されているデータを退避させ得るようにストレージ装置4を構築する必要がある。
前者の要求を満たす方法の1つとして、ストレージ装置4が、ホスト装置2からリードコマンドを受領した場合にコピーキュー31を全検索し、リードコマンドにおいてデータをリードすべき領域として指定された記憶領域(以下、これをリード領域と呼ぶ)とコピー先領域の一部又は全部が重複する未実行のコピーコマンドが存在するときには、そのコピーコマンドを実行した後に、かかるリードコマンドを実行する方法が考えられる。
また後者の要求を満たす方法の1つとして、ストレージ装置4が、ホスト装置2からライトコマンドを受領した場合にコピーキュー31を全検索し、ライトコマンドにおいてデータをライトすべき領域として指定された記憶領域(以下、これをライト領域と呼ぶ)とコピー領域の一部又は全部が重複する未実行のコピーコマンドが存在するときには、そのコピーコマンドを実行した後に、かかるライトコマンドを実行する方法が考えられる。
ただし、上述のようなコピーキュー31の全検索処理には相応の時間を必要とするため、リードコマンドやライトコマンドを受領するごとにこのようなコピーキュー31の全検索処理を実行するものとすると、リードコマンドやライトコマンドに対するストレージ装置4の応答性能を低下させることになる。
そこで、本実施の形態の場合、ストレージ装置4には、かかる検索処理を高速化するための手段として、図5に示すようなハッシュテーブル40が設けられている。
このハッシュテーブル40は、複数のスロット40A~40Lから構成されるもので、これら各スロット40A~40Lにそれぞれ「0」から「スロット数−1」までの数値が順番に対応付けられている。
そしてストレージ装置4は、コピーコマンドを受領すると、そのコピーコマンドのコピー元領域及びコピー先領域(以下、適宜、これらをまとめてコピーコマンドの対象領域と呼ぶ)のそれぞれについて、図5に示すようなハッシュテーブル40のエントリ41を作成する。
このエントリ41は、そのコピーコマンドにおいて指定された対象領域をアドレスの例えば1Mバイト境界ごとに区切った領域ごとにそれぞれ作成される。従って、例えば1Mバイトを1024kバイト、1アドレスを1kバイトとし、コピーコマンドにおいて指定された対象領域のアドレスが「1000」~「1200」であるものとすると、アドレスが「1000」~「1023」の対象領域に対して1つのエントリ41が作成され、アドレスが「1024」~「1200」の対象領域に対してもう1つのエントリ41が作成されることになる。以下、このようにコピーコマンドにおいて指定された対象領域をアドレスの1Mバイト境界ごとに順次区切ることを「対象領域を1Mバイト境界ごとに丸める」と呼ぶものとする。
エントリ41は、図5からも明らかなように、コピーコマンドID欄41A、ビットマップ欄41B、アドレス属性欄41C及びポインタ欄41Dから構成される。
そしてコピーコマンド欄41Aには、そのコピーコマンドに付与されたコピーコマンドIDが格納され、ビットマップ欄41Bには、対応する1Mバイトの対象領域を上述の単位領域(例えば64Kバイトの領域)ごとに区分してなる各区分領域とそれぞれ対応付けられた複数の差分ビットから構成されるビットマップ42が格納される。
またアドレス属性欄41Cには、そのエントリ41と対応付けられた対象領域がコピー元領域及びコピー先領域のいずれであるかを表す属性情報が格納され、ポインタ欄41Dには、同じコピーコマンドの次のエントリ41が存在する場合に、そのエントリ41へのポインタ(キャッシュメモリ23A,23B上のそのエントリ41のデータが格納された領域の開始アドレスであり、以下、これをハッシュ用ポインタと呼ぶ)が格納される。
そしてストレージ装置4は、受領したコピーコマンドの対象領域(コピー元領域及びコピー先領域)に対応する1又は複数のエントリ41を対象領域ごとに作成すると共に、これら対象領域ごとに、それぞれその開始アドレスをハッシュテーブル40のスロット数で割り、その余りの数値と対応付けられたスロット(以下、これを対象スロットと呼ぶ)40A~40K又は40Lにそのコピーコマンドのエントリ41を対応付ける。
具体的に、ストレージ装置4は、かかるコピーコマンドの対象領域に対応する対象スロット40A~40K又は40Lに対して未だ他のコピーコマンドのエントリ41が対応付けられていない場合には、当該対象領域の最初のエントリ41へのハッシュ用ポインタを対象スロット40A~40K又は40Lに格納し、対応付けられている場合には、当該対象領域の最初のエントリ41のハッシュ用ポインタを、その対象スロット40A~40K又は40Lに対応付けられた最後のエントリ41のポインタ欄41Dに格納する。
またストレージ装置4は、その最初のエントリ41のビットマップ欄41Bに格納されているビットマップ42について、そのコピーコマンドの対象領域に含まれる上述の区分領域に対応する各差分ビットをそれぞれオン(「1」)に設定する。
さらにストレージ装置4は、かかる対象領域の次以降の各エントリ41については、それぞれそのエントリ41のハッシュ用ポインタを1つ前のエントリ41のポインタ欄41Dに格納すると共に、当該次以降のエントリ41のビットマップ欄41Bに格納されているビットマップ42について、その対象領域に含まれる区分領域に対応する各差分ビットをそれぞれオン(「1」)に設定する。
以上のようなハッシュテーブル40のスロット40A~40Lに対するコピーコマンドのエントリ41の対応付けは、コピーコマンドをコピーキュー31に登録するタイミングで行われる。そして、スロット40A~40Lに対応付けられた各エントリ41は、対応するコピーコマンドに基づくコピーが完了すると、その後削除される。
かくしてストレージ装置4は、ホスト装置2からのリードコマンドやライトコマンドを受領した場合には、まず、そのリードコマンドにおいて指定されたリード領域や、そのライトコマンドにおいて指定されたライト領域の開始アドレスをハッシュテーブル40のスロット数で割り、そのときの余りと対応付けられたスロット40A~40Lと対応付けられた各エントリ41のビットマップ欄42にそれぞれ格納されているビットマップ42を参照して、上述のようにそのとき受領したリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域の一部又は全部をコピー先領域とするコピーコマンドであって、未実行のコピーコマンドが存在するか否かを判定する。
(3)ストレージ装置におけるリード処理及びライト処理の流れ
(3−1)基本的な動作パターン
次に、図6に示すように、論理ボリュームVOL1内のコピー元領域AR1から他の論理ボリュームVOL2内のコピー先領域AR2にデータをコピーすべきコピーコマンドCOM1がコピーキュー31に格納されている場合に、ストレージ装置4が、そのコピーコマンドCOM1のコピー元領域AR1又はコピー先領域AR2の一部又は全部とリード領域又はライト領域が重複するリードコマンド又はライトコマンドを実行するときのストレージ装置4の動作パターンについて説明する。
図7は、図6について上述した条件のもとで、リードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域のうち、コピーコマンドCOM1のコピー元領域AR1又はコピー先領域AR2との重複する領域についてストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。なお、かかるリード領域又はライト領域のうち、コピー元領域AR1又はコピー先領域AR2との重複していない領域については、通常通りのリード処理又はライト処理が行われる。
図7に示すように、ストレージ装置4は、リードコマンドを実行しようとする場合であって、そのリードコマンドにおいて指定されたリード領域がコピーコマンドCOM1のコピー元領域AR1の一部又は全部と重複する場合には、リード領域のうちのその重複する領域について、コピーコマンドCOM1に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図7の「♯」が「1」及び「2」の行の「コピー元」欄参照)。リードコマンドにおいて指定されたリード領域が、コピーコマンドCOM1のコピー先領域AR2の一部又は全部と重複する場合にも同様である(図7の「♯」が「2」の行の「コピー先」欄を参照)。
これに対して、ストレージ装置4は、リードコマンドを実行しようとする場合であって、そのリードコマンドにおいて指定されたリード領域がコピーコマンドCOM1のコピー先領域AR2の一部又は全部と重複しており、その重複する領域に対してコピーコマンドCOM1に基づくコピーが実行されていない場合には、リード領域のうちのその重複する領域ついて、コピーコマンドCOM1に従ったコピーを実行した後に、当該重複する領域からデータをリードする(図7の「♯」が「1」の行の「コピー先」欄を参照)。
具体的に、ストレージ装置4は、図8に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのリード領域と重複する領域に格納されているデータをキャッシュメモリ23A,23Bのリード面23AR,23BRに読み出す(SP10)。またストレージ装置4は、この後、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーする(SP11)。
次いでストレージ装置4は、このキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーしたデータをリードデータとしてホスト装置2に送信する一方(SP12)、当該リードデータをかかるコピーコマンドCOM1のコピー先領域AR2に書き込み、これに応じてそのコピーコマンドCOM1に対応する差分ビットマップ32(図2)上のかかるコピーを行った領域に対応する差分ビットをオンからオフに変更する(SP13)。
一方、ストレージ装置4は、ライトコマンドを実行しようとする場合であって、当該ライトコマンドにおいて指定されたライト領域がコピーコマンドCOM1のコピー元領域AR1と一部又は全部が重複しており、その重複する領域についてコピーコマンドCOM1に基づくコピーが実行されていない場合には、ライト領域のうちのその重複する領域について、当該重複する領域に格納されたデータをコピーコマンドCOM1において指定された対応するコピー先領域AR2に退避させた後に、ライトデータを書き込む(図7の「♯」が「3」の行の「コピー元」欄を参照)。
具体的に、ストレージ装置4は、図9に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域に格納されているデータをキャッシュメモリ23A,23Bのリード面23AR,23BRに読み出す(SP20)。またストレージ装置4は、この後、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーし(SP21)、さらにキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーしたデータを、コピーコマンドCOM1のコピー先領域AR2にコピーする(SP22)。
次いでストレージ装置4は、ホスト装置2から与えられるライトデータを受領し、これをキャッシュメモリ23A,23Bのライト面23AW,23BWに書き込む(SP23)。そしてストレージ装置4は、この後、このライトデータをキャッシュメモリ23A,23Bから読み出し、ライトコマンドにおいて指定されたライト領域に書き込む。またストレージ装置4は、コピーコマンドCOM1に対応する差分ビットマップ32(図2)について、ステップSP22においてデータがコピーされた領域に対応する差分ビットをオンからオフに変更する(SP24)。
他方、ストレージ装置4は、ライトコマンドを実行しようとする場合であって、そのライトコマンドにおいて指定されたライト領域がコピーコマンドCOM1のコピー先領域AR2と一部又は全部と重複しており、その重複する領域についてコピーコマンドCOM1に基づくコピーが実行されていない場合には、ライト領域のうちのその重複する領域について、当該重複する領域に格納されているデータを当該コピーコマンドのコピー先領域AR2にコピーした後に、ライトデータを書き込む(図7の「♯」が「3」の行の「コピー先」欄を参照)。
具体的に、ストレージ装置4は、図10に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域からキャッシュメモリ23A,23Bのリード面23AR,23BRにデータを読み出し(SP30)、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーする(SP31)。
次いでストレージ装置4は、ホスト装置2から受領したライトデータを、キャッシュメモリ23A,23Bのライト面23AW,23BWにコピーした上述のデータに上書きする(SP32)。この後、ストレージ装置4は、かかるライトデータが上書きされたデータを、コピーコマンドCOM1のコピー先領域AR2に書き込むと共に、このコピーコマンドCOM1に対応する差分ビットマップ32(図2)における、当該コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域に対応する差分ビットをオンからオフに変更する(SP33)。
(3−2)関連する2つのコピーコマンドがある場合の動作パターン
次に、コピー元領域及び又はコピー先領域が重複する2つのコピーコマンドがコピーキュー31に格納されている場合に、リードコマンド又はライトコマンドを実行しようとするストレージ装置4の動作パターンについて説明する。
なお、以下においても、リードコマンドやライトコマンドにおいて指定されたリード領域又はライト領域のうち、かかる2つのコピーコマンドのコピー元領域又はコピー先領域と重複しない部分については、通常通りのリード処理又はライト処理が行われる。
(3−2−1)第1の応用動作パターン
図11は、コピー元領域AR10,AR12が重複する第1及び第2のコピーコマンドCOM10,COM11がコピーキュー31に登録されている事例を示す。ここでは、第1及び第2のコピーコマンドCOM10,COM11の順番でコピーキュー31に登録されたものであり、これら第1及び第2のコピーコマンドCOM10,COM11はこの順番で実行されるものとする。
図12は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12又はコピー先領域AR11,AR13とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを実行する際に、リード領域又はライト領域のうちのかかるコピー元領域AR10,AR12又はコピー先領域AR11,AR13と重複する領域についてストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。
図12において、「コピー元(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分の一部又は全部と重複する場合のストレージ装置4の処理内容を示す。
また図12の「コピー元(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と重複しない場合(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12とは重複する)のストレージ装置4の処理内容を示す。
さらに図12の「コピー先」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR10,AR12と重複する場合のストレージ装置4の処理内容を示す。
ストレージ装置4は、リードコマンドを実行する場合であって、当該リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複するときには、リード領域のうちの当該重複部分と重複する領域について、かかる第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図12の「♯」が「1」及び「2」の行の「コピー元(重複あり)」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の重複部分と重複しないときにも、リード領域のうちの第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12と重複する領域について、かかる第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図12の「♯」が「1」及び「2」の行の「コピー元(重複なし)」欄参照)。
これに対してストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11のいずれか一方のコピー先領域AR11,AR13の一部又は全部と重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行されていない場合には、図8について上述した場合と同様に、そのリード領域のうちの第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と重複する領域について、当該第1又は第2のコピーコマンドCOM10,COM11に従ったコピーの実行完了後に、データをリードする。またストレージ装置4は、これと併せて、その第1又は第2のコピーコマンドCOM10,COM11に対応する差分ビットマップ32(図2)における上述のようにコピーを行った領域に対応する差分ビットをオンからオフに変更する(図12の「♯」が「1」の行の「コピー先」欄を参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が第1及び第2のコピーコマンドCOM10,COM11のいずれか一方のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11が実行済みのときには、当該重複する領域について、通常通りにデータを読み出す(図12の「♯」が「2」の行の「コピー先」欄参照)。
一方、ストレージ装置4は、ライトコマンドを実行する場合であって、当該ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行のときには、当該重複する領域について、データをそれぞれ対応する第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13に退避させる。
またストレージ装置4は、これと併せて、第1及び第2のコピーコマンドCOM10,COM11にそれぞれ対応する各差分ビットマップ32におけるそのときデータの退避を行った領域に対応する差分ビットをオンからオフに変更し、この後、ライトコマンドにおいて指定されたライト領域にライトデータを書き込む(図12の「♯」が「3」の行の「コピー元(重複あり)」欄参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みのときには、当該重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー元(重複あり)」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12のうちのこれら2つのコピー元領域AR10,AR12の重複部分とは重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の一部とは重複する)、ライト領域のうちのかかるコピー元領域AR10,AR12と重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが未実行の場合には、その重複する領域について、図9について上述した場合と同様にして、その第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12に格納されたデータを当該第1又は第2のコピーコマンドCOM10,COM11のコピー先領域に退避させた後に、ライトデータを書き込む(図12の「♯」が「3」の行の「コピー元(重複なし)」欄を参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12のうちのこれら2つのコピー元領域AR10,AR12の重複部分とは重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の一部とは重複する)、ライト領域のうちのかかるコピー元領域AR10,AR12と重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー元(重複なし)」欄参照)。
これに対してストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが未実行の場合には、その重複する領域について、当該重複する領域に格納されたデータを当該第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13にコピーした後に、ライトデータを書き込む(図12の「♯」が「3」の行の「コピー先」欄を参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域についてかかる第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みの場合には、当該重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー先」欄参照)。
(3−2−2)第2の応用動作パターン
次に、図13に示すように、コピー先領域AR21,AR23の一部又は全部が重複する第1及び第2のコピーコマンドCOM20,COM21(「Fast1」及び「Fast2」)がコピーキュー31に登録されている場合の事例について説明する。
なお、ストレージ装置4は、第1のコピーコマンドCOM20を実行するときに、第1のコピーコマンドCOM20のコピー先領域AR21に第2のコピーコマンドCOM21のコピー先領域AR23との重複部分があるか否かを検索し、ある場合には第1のコピーコマンドCOM20の実行後、第2のコピーコマンドCOM21に対応する差分ビットマップ32における当該重複部分に対応する差分ビットをオフに設定する。
図14は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22又はコピー先領域AR21,AR23とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを受領したときに、当該ストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。
図14において、「コピー元」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1又は第2のコピーコマンドCOM20のコピー先領域AR20,AR21と一部又は全部が重複する場合のストレージ装置4の動作内容を示す。
また図14の「コピー先(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分の一部又は全部と重複する場合のストレージ装置4の動作内容を示す。
さらに図14の「コピー先(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と重複しない場合(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22とは重複する)のストレージ装置4の動作内容を示す。
ストレージ装置4は、リードコマンドを実行する場合であって、当該リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のいずれか一方のコピー元領域AR20,AR22と一部又は全部が重複するときには、その重複する領域に対してかかる第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが未実行か実行済みかに関わらず、当該重複する領域について、通常通りにデータを読み出す(図14の「♯」が「1」及び「2」の行の「コピー元」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対して第1及び第2のコピーコマンドCOM20,COM21に基づくコピーがいずれも未実行の場合には、当該重複する領域について、第2のコピーコマンドCOM21に従ったコピー処理を実行完了してからデータをリードする。またストレージ装置4は、これと併せて、その第1及び第2のコピーコマンドCOM20,COM21に対応する差分ビットマップ32(図2)における上述のようにコピーを行った領域に対応する差分ビットをオンからオフに変更する(図14の「♯」が「1」の行の「コピー先(重複あり)」欄参照)。
さらにストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR21の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対して第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みの場合には、当該重複する領域について、通常通りにデータを読み出す(図14の「♯」が「2」の行の「コピー先(重複あり)」欄参照)。
これに対してストレージ装置4は、リードコマンドにおいて指定されたリード領域が第1及び第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22の一部とは重複する)、リード領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、その重複する領域について、図8について上述した場合と同様にして、その第1又は第2のコピーコマンドCOM20,COM21を実行した後に、データをリードする。
またストレージ装置4は、その第1又は第2のコピーコマンドCOM20,COM21と対応する差分ビットマップ32(図2)のうち、そのときコピーを実行した領域と対応する差分ビットをオンからオフに変更する(図14の「♯」が「1」の行の「コピー先(重複なし)」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20のコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22の一部とは重複する)、リード領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1及び第2のコピーコマンドCOM20,COM21がいずれも実行済みである場合には、その重複する領域について、通常通りにデータを読み出す(図14の「♯」が「2」の行の「コピー先(重複なし)」欄参照)。
一方、ストレージ装置4は、ライトコマンドを実行する場合であって、当該ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22と一部又は全部が重複しており、その重複する領域に対する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、図9について上述した場合と同様にして、その重複する領域について、当該重複する領域に格納されているデータを第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23に退避させた後に、通常通りにライトデータを書き込む(図14の「♯」が「3」の行の「コピー元」欄参照)。
これに対して、ストレージ装置4は、かかるライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21のいずれか一方のコピー元領域AR20,AR21と一部又は全部が重複しているときであっても、その重複する領域についてその第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みである場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー元」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と一部又は全部が重複している場合であって、その重複する領域(ライト領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、その重複する領域について、第2のコピーコマンドCOM21のコピー元領域AR22に格納されているデータをコピーしてからライトデータをライトする。またストレージ装置4は、第1及び第2のコピーコマンドCOM20,COM21にそれぞれ対応する差分ビットマップ32上のかかるコピーを行った領域に対応する各差分ビットをそれぞれオフに設定する(図14の「♯」が「3」の行の「コピー先(重複あり)」欄参照)。
これに対してストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と一部又は全部が重複している場合であって、その重複する領域(ライト領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー先(重複あり)」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23とは重複する)、ライト領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが実行されていない場合には、その重複する領域について、図10について上述した場合と同様に、その第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22に格納されたデータをコピーした後に、ライトデータを書き込む(図14の「♯」が「3」の行の「コピー先(重複なし)」欄を参照)。
これに対して、ストレージ装置4は、ホスト装置2からのライトコマンドにおいて指定されたライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23のうちのこれら2つのコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23とは重複する)、ライト領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21が実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー先(重複なし)」欄参照)。
(3−2−3)第3の動作パターン
次に、図15に示すように、コピー元領域AR30,AR32の一部又は全部と、コピー先領域AR31,AR33の一部又は全部とが重複する第1及び第2のコピーコマンドCOM30,COM31(「Fast1」及び「Fast2」)がコピーキュー31に登録されている場合の事例について説明する。
図15において、第1のコピーコマンドCOM30のコピー元領域AR30は第1の論理ボリュームVOL30内のアドレスが「100」~「150」の領域、当該第1のコピーコマンドCOM30のコピー先領域AR31は第2の論理ボリュームVOL31内のアドレスが「10」~「60」の領域であり、第2のコピーコマンドCOM31のコピー元領域AR32が第1の論理ボリュームVOL30内のアドレスが「120」~「220」の領域、当該第2のコピーコマンドCOM31のコピー先領域AR33は第2の論理ボリュームVOL31内のアドレスが「30」~「130」の領域である。本事例においても、第1及び第2のコピーコマンドCOM30,COM31はこの順番でコピーキュー31に登録されたものとする。
図16は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM30,COM31のコピー元領域AR30,AR32又はコピー先領域AR31,AR33とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを受領したときに、当該ストレージ装置4により実行されるリード処理及びライト処理の具体的な処理内容を示す。
図16において、「コピー元(重複あり)」の列及び「コピー先(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域に、第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32又は各コピー先領域AR31,AR33の重複部分が含まれる場合のストレージ装置4の動作内容を示す。
また図16において、「コピー元(重複なし)」の列及び「コピー先(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域に、第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32の重複部分や、第1及び第2のコピーコマンドCOM30,COM31の各コピー先領域AR30,AR32の重複部分が含まれない場合のストレージ装置4の動作内容を示す。
この図16からも明らかなように、ストレージ装置4は、リードコマンド又はライトコマンドを実行する場合であって、当該リードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32の重複部分と一部又は全部が重複しているときには、図12の「♯」が「1」~「4」の各「コピー元(重複あり)」欄についてそれぞれ上述した場合と同様の処理を実行する(図16の「♯」が「1」~「4」の各「コピー元(重複あり)」欄参照)。
またストレージ装置4は、これ以外の場合には、図14について上述した場合と同様の処理を実行する(図16の「♯」が「1」~「4」の各「コピー元(重複なし)」欄、各「コピー先(重複あり)」欄及び各「コピー先(重複なし)」欄参照)。
(3−2−4)第4の動作パターン
図17に示すように、コピーキュー31に第1のコピーコマンドCOM40が登録されている状態で、第1のコピーコマンドCOM40のコピー先領域AR41とそのコピー元領域AR42の一部又は全部が重複し、第1のコピーコマンドCOM40のコピー元領域AR40とそのコピー先領域AR43の一部又は全部とが重複する第2のコピーコマンドCOM41がホスト装置2から与えられた場合、ストレージ装置4は、その第2のコピーコマンドCOM41を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM41を拒否することによって、コピー処理がループ状態となるのを回避する。
(3−2−5)第5の動作パターン
図18に示すように、コピーキュー31に第1のコピーコマンドCOM50が登録されている状態で、第1のコピーコマンドCOM50のコピー先領域AR51とそのコピー元領域AR52の一部又は全部が重複する第2のコピーコマンドCOM51がホスト装置2から与えられた場合、ストレージ装置4は、その第2のコピーコマンドCOM51を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM51を拒否することによって、多段処理になるのを回避する。
(3−2−6)第6の動作パターン
図19に示すように、コピーキュー31に第1のコピーコマンドCOM60が登録されている状態で、第1のコピーコマンドCOM60のコピー元領域AR60とそのコピー先領域AR63の一部又は全部が重複する第2のコピーコマンドCOM61がホスト装置2から与えられた場合にも、ストレージ装置4は、その第2のコピーコマンドCOM61を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM61を拒否することによって、コピー処理がループ状態となるのを回避する。
(4)ストレージ装置のCPUの具体的な処理内容
次に、ストレージ装置4が以上のような第1~第6の動作を行うために、当該ストレージ装置4のCPU22A,22B(図1)が実行するリード処理及びライト処理の具体的な処理内容について説明する。
(4−1)リード処理に関するCPUの各種処理
(4−1−1)リード処理
図20は、コマンドキュー30に格納されたリードコマンドを処理する際に、ストレージ装置4のCPU22A,22Bが実行するリード処理の処理手順を示す。
CPU22A,22Bは、このリード処理を開始すると、まず、そのリードコマンドにおいて指定されたリード領域の開始アドレスと、当該リードコマンドにおいて指定されたリード領域の長さとを引数にして、当該リード領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域又はコピー先領域と一部又は全部が重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP40)。
続いてCPU22A,22Bは、かかるステップSP40において得られた判定結果に基づいて、ドライブインタフェース24A,24Bを介して対応するディスク装置10を制御することにより、リードコマンドにおいて指定されたリード領域に格納されている又は格納されているべきデータをそのディスク装置10から読み出し、読み出したデータをホスト装置2に送信し(SP41)、この後、このリード処理を終了する。
(4−1−2)ハッシュ検索処理
図21は、かかるリード処理のステップSP40においてCPU22A,22Bにより実行されるハッシュ検索処理の具体的な処理内容を示す。
CPU22A,22Bは、リード処理のステップSP40に進むと、このハッシュ検索処理を開始し、まず、キャッシュメモリ23A,23Bの所定位置に保持されたコピー元重複フラグ及びコピー先重複フラグをそれぞれリセット(オフに設定)する(SP50,SP51)。コピー元重複フラグは、そのリードコマンドにおいて指定されたリード領域が、コピーキュー31に登録されたいずれかのコピーコマンドのコピー元領域と一部又は全部が重複することを表すフラグであり、コピー先重複フラグは、かかるリード領域が、コピーキュー31に登録されたいずれかのコピーコマンドのコピー先領域と一部又は全部が重複することを表すフラグである。これらコピー元重複フラグ及びコピー先重複フラグは、後述のように、この後の処理において使用される。
続いてCPU22A,22Bは、かかるリードコマンドにおいて指定されたリード領域の開始アドレスを1Mバイト境界に丸め、その結果をハッシュテーブル40(図5)のスロット数で割った余ることにより、ハッシュテーブル40上の対応するスロット40A~40L(図5)を検出する(SP52)。
次いでCPU22A,22Bは、そのスロット40A~40Lに、次エントリへのポインタが存在しないことを表す「Null」が格納されているか否かを判断する(SP53)。
ここで、この判断において肯定結果を得ることは、そのリードコマンドにおいて指定されたリード領域と、コピー元領域又はコピー先領域の一部又は全部が重複するコピーコマンドがコピーキュー31に格納されていないことを意味する。かくして、このときCPU22A,22Bは、このハッシュ検索処理を終了して、リード処理に戻る。
これに対して、かかる判断において否定結果を得ることは、そのリードコマンドにおいて指定されたリード領域と、コピー元領域又はコピー先領域の一部又は全部が重複するコピーコマンドがコピーキュー31に格納されていることを意味する。かくして、このときCPU22A,22Bは、そのスロット40A~40Lに格納されているポインタにより指定されたエントリ41(図5)にアクセスする(SP54)。
続いてCPU22A,22Bは、ステップSP54においてアクセスしたエントリ41のビットマップ欄41B(図5)に格納されているビットマップ42(図5)を取得し、取得したビットマップ42に基づいて、そのエントリ41に対応するコピーコマンドにおけるそのエントリ41に対応するコピー元領域又はコピー先領域(対象領域)として指定された記憶領域の開始アドレス及び終了アドレスを算出する(SP55)。
次いでCPU22A,22Bは、リードコマンドにおいて指定されたリード領域の開始アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さく、かつ、リード領域の終了アドレスが、かかるコピーコマンドの対象領域の開始アドレスよりも大きいか否かを判断する(SP56)。
この判断において否定結果を得ることは、図22(A)又は(D)に示すように、かかるリード領域と、かかるコピーコマンドの対象領域との間で一部又は全部が重複していないことを意味する。かくして、このときCPU22A,22Bは、ステップSP61に進む。
これに対して、ステップSP56の判断において肯定結果を得ることは、図22(B)又は(C)に示すように、かかるリード領域が、コピーコマンドの対象領域と一部又は全部が重複していることを意味する。かくして、このときCPU22A,22Bは、そのエントリ41のコピーコマンドID欄41A(図5)から当該エントリ41に対応するコピーコマンドのコピーコマンドIDを取得し、これを記憶する(SP57)。
またCPU22A,22Bは、そのエントリ41のアドレス属性欄41C(図5)を参照して、当該アドレス属性欄41Cに格納されたアドレス属性が「コピー元」であるか否か(そのエントリ41が、かかるコピーコマンドのコピー元領域に対応するものであるか否か)を判断する(SP58)。
CPU22A,22Bは、この判断において肯定結果を得ると、ステップSP50においてリセットしたコピー元重複フラグをオンに設定した後(SP59)、ステップSP61に進む。またCPU22A,22Bは、ステップSP58の判断において否定結果を得ると、ステップSP51においてリセットしたコピー先重複フラグをオンに設定した後(SP60)、ステップSP61に進む。
そしてCPU22A,22Bは、ステップSP61に進むと、そのエントリ41のポインタ欄41D(図5)を参照して、「Null」が格納されている否かを判断する(SP61)。
そしてCPU22A,22Bは、この判断において否定結果を得た場合には、ステップSP54に戻り、この後、上述と同様の処理を実行する。これに対してCPU22A,22Bは、ステップSP61の判断において肯定結果を得た場合には、このハッシュ検索処理を終了してリード処理に戻る。
(4−1−3)データリード処理
一方、図23は、図20について上述したリード処理のステップSP41においてCPU22A,22Bにより実行されるデータリード処理の具体的な処理内容を示す。
CPU22A,22Bは、リード処理のステップSP41に進むと、このデータリード処理を開始し、まず、ドライブインタフェース24A,24Bを介して対応するディスク装置10を制御することにより、そのリードコマンドにおいて指定されたリード領域からデータを読み出し、読み出したデータをキャッシュメモリ23A,23Bのリード面に格納する(SP70)。
続いてCPU22A,22Bは、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断し(SP71)、否定結果を得るとステップSP85に進む。
これに対してCPU22A,22Bは、ステップSP71の判断において肯定結果を得ると、コピーキュー31に登録されたコピーコマンドのうちの最初に実行すべきコピーコマンドにポインタ(以下、これをコピーコマンド用ポインタと呼ぶ)を設定し(SP72)、この後、そのコピーコマンド用ポインタが設定されたコピーコマンドのコピーコマンドIDが図21のステップSP57において記憶したコピーコマンドIDと一致するか否かを判断する(SP73)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP83に進み、これに対して肯定結果を得ると、リードコマンドにおいて指定されたリード領域の開始アドレスが、そのときコピーコマンド用ポインタが設定されているコピーコマンドの対象領域の開始アドレスよりも小さいか否かを判断する(SP74)。
そしてCPU22A,22Bは、この判断において否定定結果を得ると、そのリードコマンドにおいて指定されたリード領域と、そのコピーコマンドの対象領域とが重複する領域の開始アドレス(以下、これを重複領域開始アドレスと呼ぶ)として、リードコマンドにおいて指定されたリード領域の開始アドレスを設定し(SP75)、肯定結果を得た場合には、かかる重複領域開始アドレスとして、そのコピーコマンドの対象領域の開始アドレスを設定する(SP76)。
続いてCPU22A,22Bは、リードコマンドにおいて指定されたリード領域の終了アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さいか否かを判断する(SP77)。
そしてCPU22A,22Bは、この判断において肯定結果を得た場合には、かかる重複領域の終了アドレス(以下、これを重複領域終了アドレスと呼ぶ)として、リードコマンドにおいて指定されたリード領域の終了アドレスを設定し(SP78)、否定結果を得た場合には、かかる重複領域終了アドレスとして、そのコピーコマンドの対象領域の終了アドレスを設定する(SP79)。
次いでCPU22A,22Bは、そのときコピーコマンド用ポインタが設定されているコピーコマンドと対応付けられた差分ビットマップ32(図2)における、かかる重複領域に対応する各差分ビットがすべてオンに設定されているか否かを判断する(SP80)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP83に進み、これに対して肯定結果を得ると、かかるコピーコマンドのコピー元領域におけるステップSP75又はステップSP76において設定した重複領域開始アドレスからステップSP78又はステップSP79において設定した重複領域終了アドレスまでの記憶領域に格納されているデータを読み出し、読み出したデータを、テップSP70においてキャッシュメモリ23A,23Bのリード面に格納したデータのうちの対応するデータ部分に上書きする。
続いてCPU22A,22Bは、そのコピーコマンドと対応付けられた差分ビットマップ32(図2)における、ステップSP81において読み出したデータと対応する差分ビットをオフに設定し(SP82)、この後、ステップSP83に進む。
そしてCPU22A,22Bは、ステップSP83に進むと、ステップSP72について上述したコピーコマンド用ポインタを、コピーキュー31に登録されたコピーコマンドのうち、そのときコピーコマンド用ポインタが設定されているコピーコマンドの次に実行されるべきコピーコマンドに移動させる(SP83)。またCPU22A,22Bは、この後、コピーキュー31に登録されたすべてのコピーコマンドについてステップSP73~ステップSP83の処理を実行し終えたか否かを判断する(SP84)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP73に戻り、この後、ステップSP84において肯定結果を得るまでステップSP73~ステップSP84の処理を繰り返す。そしてCPU22A,22Bは、やがてコピーキュー31に登録されたすべてのコピーコマンドについてステップSP73~ステップSP83の処理を実行し終えることにより、このステップSP84において肯定結果を得ると、そのリードコマンドの送信元のホスト装置2に当該リードコマンドの実行完了応答と、そのときキャッシュメモリ23A,23Bのリード面に格納されている対応するリードデータを送信し(SP85)、この後、図20のリード処理に戻る。
(4−2)ライト処理に関するCPUの各種処理
(4−2−1)ライト処理
一方、図24は、コマンドキュー30に格納されたライトコマンドを処理する際に、ストレージ装置4のCPU22A,22Bが実行するライト処理の処理手順を示す。
CPU22A,22Bは、このライト処理を開始すると、まず、そのライトコマンドにおいて指定されたライト領域の開始アドレスと、当該ライトコマンドにおいて指定されたライト領域の長さとを引数にして、そのライト領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域又はコピー元領域と一部又は全部が重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP90)。具体的には、CPU22A,22Bは、このステップSP90において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、かかるステップSP90において得られた判定結果に基づいて、ドライブインタフェース24A,24B(図1)を介して対応するディスク装置10(図1)を制御することにより、ライトコマンドにおいて指定されたライト領域にライトデータを格納し(SP91)、この後、このライト処理を終了する。
(4−2−2)データライト書込み処理
図25A及び図25Bは、かかるライト処理のステップSP91においてCPU22A,22Bにより実行されるデータライト処理の具体的な処理内容を示す。
CPU22A,22Bは、ライト処理のステップSP91に進むと、このデータライト処理を開始し、まず、図21のステップSP50について上述したコピー元重複フラグがオンに設定されているか否かを判断する(SP100)。そしてCPU22A,22Bは、この判断において否定結果を得るとステップSP114に進む。
これに対してCPU22A,22Bは、ステップSP100の判断において肯定結果を得ると、コピーキュー31に登録されたコピーコマンドのうちの最初に実行すべきコピーコマンドにコピーコマンド用ポインタを設定し(SP101)、この後、そのコピーコマンド用ポインタが設定されたコピーコマンドのコピーコマンドIDが図21のステップSP57において記憶したコピーコマンドIDと一致するか否かを判断する(SP102)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP113に進み、これに対して肯定結果を得ると、ライトコマンドにおいて指定されたライト領域の開始アドレスが、そのときコピーコマンド用ポインタが設定されているコピーコマンドの対象領域の開始アドレスよりも小さいか否かを判断する(SP103)。
そしてCPU22A,22Bは、この判断において否定定結果を得た場合には、そのライトコマンドにおいて指定されたライト領域と、そのコピーコマンドの対象領域とが重複する領域の開始アドレス(重複領域開始アドレス)として、ライトコマンドにおいて指定されたリード領域の開始アドレスを設定し(SP104)、肯定結果を得た場合には、かかる重複領域開始アドレスとして、そのコピーコマンドの対象領域の開始アドレスを設定する(SP105)。
続いてCPU22A,22Bは、ライトコマンドにおいて指定されたライト領域の終了アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さいか否かを判断する(SP106)。
そしてCPU22A,22Bは、この判断において肯定結果を得た場合には、かかる重複する領域の終了アドレス(重複領域終了アドレス)として、ライトコマンドにおいて指定されたライト領域の終了アドレスを設定し(SP107)、否定結果を得た場合には、かかる重複領域終了アドレスとして、そのコピーコマンドの対象領域の終了アドレスを設定する(SP108)。
次いでCPU22A,22Bは、そのときコピーコマンド用ポインタが設定されているコピーコマンドと対応付けられた差分ビットマップ32における、かかる重複する領域に対応する各差分ビットがすべてオンに設定されているか否かを判断する(SP109)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP113に進み、これに対して肯定結果を得ると、対応するディスク装置10を制御することにより、かかるコピーコマンドのコピー元領域におけるステップSP104又はステップSP105において設定した重複領域開始アドレスからステップSP107又はステップSP108において設定した重複領域終了アドレスまでの記憶領域に格納されているデータを読み出し、読み出したデータをキャッシュメモリ23A,23Bのリード面に格納する(SP110)。
またCPU22A,22Bは、かかるキャッシュメモリ23A,23Bのリード面に格納したデータを当該キャッシュメモリ23A,23Bのライト面にコピーし(SP111)、この後、そのコピーコマンドと対応付けられた差分ビットマップ32における、ステップSP110においてディスク装置10から読み出したデータと対応する差分ビットをオフに設定した後(SP112)、ステップSP113に進む。
そしてCPU22A,22Bは、ステップSP113に進むと、ステップSP101について上述したコピーコマンド用ポインタを、コピーキュー31に登録されたコピーコマンドのうち、そのときコピーコマンド用ポインタが設定されているコピーコマンドの次に実行されるべきコピーコマンドに移動させる(SP113)。
続いてCPU22A,22Bは、この後、コピーキュー31に登録されたすべてのコピーコマンドについてステップSP102~ステップSP113の処理を実行し終えたか否かを判断する(SP114)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP102に戻り、この後、ステップSP114において肯定結果を得るまでステップSP102~ステップSP114の処理を繰り返す。そしてCPU22A,22Bは、やがてコピーキュー31に登録されたすべてのコピーコマンドについてステップSP102~ステップSP113の処理を実行し終えることにより、ステップSP114において肯定結果を得ると、ステップSP115に進む。
CPU22A,22Bは、ステップSP115に進むと、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断し(SP115)、否定結果を得るとステップSP128に進む。
これに対してCPU22A,22Bは、ステップSP115の判断において肯定結果を得ると、この後、ステップSP101~ステップSP114と同様にして、ステップSP116~ステップSP127の処理を実行する。そしてCPU22A,22Bは、やがてステップSP127において肯定結果を得るとステップSP128に進む。
そしてCPU22A,22Bは、ステップSP128に進むと、かかるライトコマンドに付随してホスト装置2から送信されるライトデータを受け付け、このライトデータをキャッシュメモリ23A,23Bのライト面に格納する(SP128)。
この際、CPU22A,22Bは、例えば図10について上述したように、かかるホスト装置2から送信されるライトデータを、ステップSP111においてキャッシュメモリ23A,23Bのライト面にコピーしたデータに上書きする必要がある場合には、当該データにかかるライトデータを上書きする。
そしてCPU22A,22Bは、この後、そのライトコマンドの送信元のホスト装置2に当該ライトコマンドの実行完了応答を返信し(SP129)、この後、図24のライト処理に戻る。
(4−3)コピーコマンド受領処理
他方、図26は、ホスト装置2からのコピーコマンドを受領した場合におけるストレージ装置4のCPU22A,22Bの具体的な処理手順を示す。
CPU22A,22Bは、ホスト装置2からのコピーコマンドを受領すると、このコピーコマンド受領処理を開始し、まず、そのコピーコマンドのコピー元領域の開始アドレスと、当該コピーコマンドにおいて指定されたコピー元領域の長さとを引数にして、そのコピー元領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域又はコピー元領域と重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP130)。具体的には、CPU22A,22Bは、このステップSP130において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、図21のステップSP50について上述したコピー元重複フラグがオンに設定されているか否かを判断する(SP131)。
ここで、この判断において肯定結果を得ることは、図17及び図19において上述したように、そのとき受領したコピーコマンドのコピー元領域の一部又は全部が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域の一部又は全部と重複することを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に当該コピーコマンドを実行できない旨のエラー応答を送信し(SP138)、この後、このコピーコマンド受領処理を終了する。
これに対してCPU22A,22Bは、かかるステップSP131の判断において否定結果を得ると、そのとき受領したコピーコマンドのコピー先領域の開始アドレスと、当該コピーコマンドにおいて指定されたコピー先領域の長さとを引数にして、そのコピー先領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域と一部又は全部が重複するか否かを、ハッシュテーブル40を参照して判定する(SP132)。具体的には、CPU22A,22Bは、このステップSP132において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断する(SP133)。
ここで、この判断において肯定結果を得ることは、図18において上述したように、そのとき受領したコピーコマンドのコピー先領域の一部又は全部が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域と重複することを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に当該コピーコマンドを実行できない旨のエラー応答を送信し(SP138)、この後、このコピーコマンド受領処理を終了する。
これに対して、かかるステップSP133の判断において否定結果を得ることは、そのとき受領したコピーコマンドのコピー先領域が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域とは重複しないことを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドのコピー元領域及びコピー先領域をそれぞれハッシュテーブル40(図5)に登録すると共に(SP134,SP135)、そのコピーコマンドをコピーキュー31に登録する(SP136)。
続いてCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に対して当該コピーコマンドに応じたコピー処理が実行完了した旨の応答(コピー実行完了応答)を送信し(SP137)、この後、このコピーコマンド受領処理を終了する。
(4−4)ハッシュテーブル登録処理
他方、図27は、図26について上述したコピーコマンド受領処理のステップSP134及びステップSP135において実行されるハッシュテーブル登録処理の具体的な処理内容を示す。
CPU22A,22Bは、かかるコピーコマンド受領処理のステップSP134又はステップSP135に進むと、このハッシュテーブル登録処理を開始し、まず、後述のようにアドレスをカウントするための図示しないカウンタ(以下、これをアドレスカウンタと呼ぶ)をリセット(カウント値を「0」にセット)する(SP140)。
続いてCPU22A,22Bは、そのとき対象としているコピーコマンドにおいて指定されたコピー元領域の開始アドレス(図26のステップSP134の場合)又はコピー先領域の開始アドレス(図26のステップSP135の場合)にアドレスカウンタのカウンタ値を加算したアドレスを1Mバイト境界に丸めることにより、ハッシュテーブル40(図5)に登録する対象領域(コピー元領域又はコピー先領域)の一部領域を決定する(SP141)。
続いてCPU22A,22Bは、ステップSP141において決定した領域についてのエントリ41を作成する。具体的には、対応するコピーコマンドに対して付与したコピーコマンドIDをコピーコマンド欄41A(図5)に格納し、かかる領域に対応するビットをオンに設定したビットマップ42(図5)をビットマップ欄41B(図5)に格納し、その領域のアドレス属性(コピー元領域又はコピー先領域)をアドレス属性欄41C(図5)に格納するようにしてエントリ41を作成する。そしてCPU22A,22Bは、このようにして作成したエントリ41を、キャッシュメモリ23A,23Bに格納する(SP142)。
続いてCPU22A,22Bは、ステップSP142において作成したエントリ41へのポインタ(ハッシュ用ポインタ)を、ハッシュテーブル40の対応するスロット40A~40L又はそのスロット40A~40Lと対応付けられたエントリ41のうちの最後尾のエントリ41のポインタ欄41D(図5)に設定する(SP143)。
次いでCPU22A,22Bは、対象領域の開始アドレスにアドレスカウンタのカウント値を加算した値の1Mバイト以下の部分の値に基づいて、そのエントリ41のビットマップ欄41Bに格納されるビットマップ42における、そのとき対象としている64Kバイトの単位領域と対応するビットをオンに設定する(SP144)。
さらにCPU22A,22Bは、アドレスカウンタのカウント値に64Kバイト分の数値を加算し(SP145)、この後、対象領域の開始アドレスにアドレスカウンタのカウント値を加算した値の1Mバイト以下の値が「0」となったか否かを判断する(SP146)。
ここで、この判断において否定結果を得ることは、そのとき対象としていた64Kバイトの単位領域が1Mバイト境界の最後の単位領域ではないことを意味する。かくして、このときCPU22A,22Bは、アドレスカウンタのカウント値がそのとき対象としているコピーコマンドの対象領域の長さよりも小さいか否かを判断する(SP147)。
そしてCPU22A,22Bは、この判断において否定結果を得ると、ステップSP144に戻り、この後、ステップSP146又はステップSP147において肯定結果を得るまで、ステップSP144~ステップSP147の処理を繰り返す。このような処理により、CPU22A,22Bは、そのとき対象としている1Mバイトの領域内の各単位領域について、対応するエントリ41のビットマップ欄41Bに格納されたビットマップ42上の対応するビットをオンに順次設定する。
そしてCPU22A,22Bは、やがてそのとき対象としている1Mバイトの領域内のすべての単位領域について同様の処理を実行し終えることによりステップSP146において肯定結果を得るとステップSP141に戻り、この後、次の1Mバイトの領域について同様の処理を繰り返す(SP141~SP147)。
そしてCPU22A,22Bは、やがてそのとき対象としているコピーコマンドの対象領域内のすべての1Mバイトの領域について同様の処理を実行し終えることによりステップSP147において否定結果を得ると、最後のエントリ41のポインタ欄41Dに次エントリが存在しないことを表す「Null」を設定し(SP148)、この後、このハッシュテーブル登録処理を終了する。
(5)本実施の形態の効果
以上のように本実施の形態によるストレージ装置4では、コマンドキュー30に加えてコピーキュー31を設け、コマンドキュー30に格納されたコマンドがコピーコマンドであった場合には、これをコピーキュー31に移動させた後、そのコピーコマンドの送信元のホスト装置2に対してコピー実行完了応答を送信し、その後、バックグラウンドでかかるコピーコマンドに従ったコピー処理を実行する。これにより、ホスト装置2において、後続の同じアドレスにアクセスするコマンドが待たされることがなく、タイムアウトが発生するのを未然に防止することができる。かくするにつきホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置を実現することができる。
(6)他の実施の形態
なお上述の実施の形態においては、本発明を図1のように構成されたストレージ装置4に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成のストレージ装置に広く適用することができる。
また上述の実施の形態においては、コピーキュー31(図2)をキャッシュメモリ23A,23B上に設けるようにした場合について述べたが、本発明はこれに限らず、キャッシュメモリ23A,23B以外の例えばローカルメモリ21A,21B上に設けるようにしても良い。
さらに上述の実施の形態においては、ハッシュテーブル40(図5)のスロット数を12個とするようにした場合について述べたが、本発明はこれに限らず、かかるスロット数を12個以外の個数としても良い。
さらに上述の実施の形態においては、ホスト装置2から与えられたコマンドをコマンドキュー30に格納すると共に、コマンドキュー30に格納したコマンドをコマンドキュー30への格納順に実行する制御部として、ストレージ装置4全体の動作制御を司るCPU22A,22Bを適用するようにした場合について述べたが、本発明はこれに限らず、かかる制御部としての機能を有するハードウェアをかかるCPU22A,22Bとは別個に設けるようにしても良い。
(1)本実施の形態による計算機システムの構成
図1において、1は全体として本実施の形態による計算機システムを示す。この計算機システム1は、複数のホスト装置2がネットワーク3を介してストレージ装置4に接続されることにより構成されている。
ホスト装置2は、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。またホスト装置2は、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置(図示せず)と、モニタディスプレイやスピーカー等の情報出力装置(図示せず)とを備える。
ネットワーク3は、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線又は公衆回線などから構成される。ホスト装置2及びストレージ装置4間の通信は、ネットワーク3がLANである場合には、iSCSI(internet Small Computer System Interface)プロトコル又はTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われ、ネットワーク3がSANである場合には、ファイバチャネルプロトコルに従って行われる。
ストレージ装置4は、複数のディスク装置10から構成される記憶部11と、これら複数のディスク装置10に対するデータの入出力を制御する0系及び1系のコントローラ12A,12Bとから構成される。
ディスク装置10は、例えばSCSIディスク等の高価なディスクや、SATA(Serial AT Attachment)ディスクや光ディスク等の安価なディスクなどから構成される。1又は複数のディスク装置10により1つのRAIDグループ13が構成され、1つのRAIDグループ13を構成する各ディスク装置10が提供する物理的な記憶領域上に、1又は複数の論理ボリュームが設定される。そしてクライアントからのデータは、この論理ボリューム内に所定大きさのブロック(以下、これを論理ブロックと呼ぶ)を単位として記憶される。
各論理ボリュームには、それぞれ固有のボリューム番号が付与される。本実施の形態の場合、データの入出力は、このボリューム番号と、各論理ブロックにそれぞれ付与されるその論理ブロックのブロック番号(LBA:Logical Block Address)とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
コントローラ12A,12Bは、それぞれ上位インタフェース20A,20B、ローカルメモリ21A,21B、CPU22A,22B、キャッシュメモリ23A,23B及びドライブインタフェース24A,24Bを備える。
上位インタフェース20A,20Bは、ネットワーク3に対するインタフェースであり、NIC(Network Interface Card)などから構成される。この上位インタフェース20A,20Bは、かかるネットワーク3を介してライトデータ又はリードデータや各種コマンドなどをホスト装置2との間で送受する。
ローカルメモリ21A,21Bは、ストレージ装置4の起動時に所定のディスク装置10から読み出された制御プログラムを記憶するために用いられるほか、CPU22A,22Bのワークメモリとしても用いられる。
CPU22A,22Bは、ホスト装置2から送信されるリードコマンド、ライトコマンド又はコピーコマンド等に応答してディスク装置10に対するデータの入出力処理を制御するプロセッサであり、ローカルメモリ21A,21Bに格納された上述の制御プログラムに基づいて所定の制御処理を実行する。
キャッシュメモリ23A,23Bは、主として上位インタフェース20A,20B及びドライブインタフェース24A,24B間において転送されるデータを一時的に記憶するために用いられる。またキャッシュメモリ23A,23Bの一部は、0系及び1系の2つのコントローラ12A,12Bとの共有メモリとして使用される。これにより、一方のコントローラ12A,12Bに障害が発生した場合に、正常な他方のコントローラ12B,12Bが情報を引き継ぎ得るようになされている。
ドライブインタフェース24A,24Bは、ディスク装置10に対するインタフェースである。このドライブインタフェース24A,24Bは、上位インタフェース20A,20Bを介して与えられるホスト装置2からのライトコマンドやリードコマンドに応じて対応するディスク装置10を制御することにより、ライトデータやリードデータをライトコマンドやリードコマンドにおいて指定された論理ボリューム内の当該ライトコマンド又はリードコマンドにおいて指定されたアドレス位置に読み書きする。
(2)ストレージ装置における各種処理
次に、ホスト装置2からのコピーコマンドを受領したストレージ装置4において実行される一連の処理内容について説明する。
本実施の形態の場合、ストレージ装置4は、図2に示すように、ホスト装置2から送信されるコマンドを一時的に保持するためのコマンドキュー30をキャッシュメモリ23A,23B上に備える。そしてストレージ装置4(正確にはCPU22A,22B)は、ホスト装置2から送信されるコマンドをこのコマンドキュー30に格納し、格納したコマンドを当該コマンドキュー30への格納順に実行する。
またストレージ装置4は、かかるコマンドキュー30に加えて、コピーコマンドだけを一時的に保持するためのコピーキュー31をキャッシュメモリ23A,23B上に備える。
このコピーキュー31は、図3に示すように、ID欄31A、コピー元欄31B、コピー先欄31C及び状態欄31Dから構成される。そしてID欄31Aには、対応するコピーコマンドに対して付与されたID(以下、これをコピーコマンドIDと呼ぶ)が格納される。
またコピー元欄31Bは、LUN欄31BA、開始アドレス欄31BB及び終了アドレス欄31BCから構成されており、LUN欄31BAに、対応するコピーコマンドにおいてコピー元として指定された論理ボリュームのボリューム番号が格納され、開始アドレス欄31BB及び終了アドレス欄31BCに、その論理ボリューム内のコピー元として指定された記憶領域(以下、これをコピー元領域と呼ぶ)の開始アドレス及び終了アドレスがそれぞれ格納される。
同様に、コピー先欄31Cは、LUN欄31CA、開始アドレス欄31CB及び終了アドレス欄31CCから構成されており、LUN欄31CAに、対応するコピーコマンドにおいてコピー先として指定された論理ボリュームのボリューム番号が格納され、開始アドレス欄31CB及び終了アドレス欄31CCに、その論理ボリューム内のコピー先として指定された記憶領域(以下、これをコピー先領域と呼ぶ)の開始アドレス及び終了アドレスがそれぞれ格納される。
また状態欄31Dには、コピー元領域からコピー先領域へのコピーの状態が格納される。なお、かかるコピーの状態としては、図4に示すように、コピーが実行されていない「初期状態」と、バックグラウンドでのコピーが実行中である「バックグラウンドコピー状態」と、障害が発生してコピーが実行できない「エラー状態」と、対象領域が他の処理で使用されているためにコピーを実行できない「ビジー状態」とがある。
そしてストレージ装置4は、ホスト装置2からのコマンドを受領すると、図2に示すように、このコマンドをコマンドキュー30に格納した後(SP1)、このコマンドの種別を判別し、そのコマンドがコピーコマンドであった場合には、当該コピーコマンドをコピーキュー31に移動させた後、かかるコピーコマンドをコマンドキュー30から削除する(SP2)。
この後、ストレージ装置4は、そのコピーコマンドに対するコピー処理の実行完了の応答(以下、これをコピー実行完了応答と呼ぶ)をホスト装置2に送信する(SP3)。この場合、ホスト装置2は、このコピー実行完了応答を受領した時点でかかるコピーコマンドに応じたコピーが完了したと認識するため、当該ホスト装置2において、後続の同じアドレスに対するコマンドが待たされることがない。
さらにストレージ装置4は、この後、コマンドキュー30に格納されたコマンドに応じた処理と並行して、コピーキュー31に格納されたコピーコマンドに応じたコピー処理をコピーキュー31への格納順にバックグラウンドで実行する(SP4)。
なお、ストレージ装置4は、上述のステップSP2においてコピーコマンドをコピーキューに移動する際に、そのコピーコマンドにおいて指定されたコピー元領域及びコピー先領域間のデータの差分を示す差分ビットマップ32をキャッシュメモリ23A,23B上に作成する。
この差分ビットマップ23A,23Bは、各差分ビットがそれぞれコピー元領域内の各単位領域と対応付けられたものである。従って、例えば単位領域が64Kバイトであり、コピー元領域が256Mバイトである場合には、差分ビットマップ32は512バイトの大きさとなる。
また差分ビットマップ32は、コピーコマンドをコピーキュー31に移動した直後は、コピー元領域及びコピー先領域にそれぞれ格納されているデータが一致していないため、すべての差分ビットがオン(「1」)に設定される。
そしてストレージ装置4は、コピー元領域内の1つの単位領域分のデータをコピー先領域にバックグランドでコピーし終えるごとに、対応する差分ビットをオフ(「0」)に設定する。またストレージ装置4は、コピーキュー31に格納された1つのコピーコマンドに応じたバックグランドでのコピー処理が完了すると、そのコピーコマンドのエントリをコピーキュー31から削除すると共に、当該コピーコマンドに対応付けられた差分ビットマップ32をキャッシュメモリ23A,23B上から削除する。
ところで、ホスト装置2は、上述のようにコピーコマンドを発行後、対応するコピー実行完了応答を受領した時点でそのコピーコマンドに応じたコピー処理が完了したと認識する。このためホスト装置2は、この後、かかるコピーコマンドに応じたコピー処理が完了する前に、そのコピーコマンドのコピー先領域を対象としたリードコマンドや、そのコピーコマンドのコピー元領域に格納されたデータを書き換えようとするライトコマンドをストレージ装置4に対して発行することが可能となる。
従って、上述のようなバックグランドコピー機能をストレージ装置4に搭載するに際しては、コピーコマンドに応じたコピー処理の完了前にかかるリードコマンドを受領した場合においても、リードデータとして、かかるコピーコマンドの実行完了後にそのコピー先領域に格納されているべきデータをホスト装置2に送信できるようにストレージ装置4を構築する必要がある。同様に、コピーコマンドに応じたコピー処理の完了前にかかるライトコマンドを受領した場合においても、そのライトコマンドを実行する前にそのコピーコマンドのコピー先領域に格納されているデータを退避させ得るようにストレージ装置4を構築する必要がある。
前者の要求を満たす方法の1つとして、ストレージ装置4が、ホスト装置2からリードコマンドを受領した場合にコピーキュー31を全検索し、リードコマンドにおいてデータをリードすべき領域として指定された記憶領域(以下、これをリード領域と呼ぶ)とコピー先領域の一部又は全部が重複する未実行のコピーコマンドが存在するときには、そのコピーコマンドを実行した後に、かかるリードコマンドを実行する方法が考えられる。
また後者の要求を満たす方法の1つとして、ストレージ装置4が、ホスト装置2からライトコマンドを受領した場合にコピーキュー31を全検索し、ライトコマンドにおいてデータをライトすべき領域として指定された記憶領域(以下、これをライト領域と呼ぶ)とコピー領域の一部又は全部が重複する未実行のコピーコマンドが存在するときには、そのコピーコマンドを実行した後に、かかるライトコマンドを実行する方法が考えられる。
ただし、上述のようなコピーキュー31の全検索処理には相応の時間を必要とするため、リードコマンドやライトコマンドを受領するごとにこのようなコピーキュー31の全検索処理を実行するものとすると、リードコマンドやライトコマンドに対するストレージ装置4の応答性能を低下させることになる。
そこで、本実施の形態の場合、ストレージ装置4には、かかる検索処理を高速化するための手段として、図5に示すようなハッシュテーブル40が設けられている。
このハッシュテーブル40は、複数のスロット40A~40Lから構成されるもので、これら各スロット40A~40Lにそれぞれ「0」から「スロット数−1」までの数値が順番に対応付けられている。
そしてストレージ装置4は、コピーコマンドを受領すると、そのコピーコマンドのコピー元領域及びコピー先領域(以下、適宜、これらをまとめてコピーコマンドの対象領域と呼ぶ)のそれぞれについて、図5に示すようなハッシュテーブル40のエントリ41を作成する。
このエントリ41は、そのコピーコマンドにおいて指定された対象領域をアドレスの例えば1Mバイト境界ごとに区切った領域ごとにそれぞれ作成される。従って、例えば1Mバイトを1024kバイト、1アドレスを1kバイトとし、コピーコマンドにおいて指定された対象領域のアドレスが「1000」~「1200」であるものとすると、アドレスが「1000」~「1023」の対象領域に対して1つのエントリ41が作成され、アドレスが「1024」~「1200」の対象領域に対してもう1つのエントリ41が作成されることになる。以下、このようにコピーコマンドにおいて指定された対象領域をアドレスの1Mバイト境界ごとに順次区切ることを「対象領域を1Mバイト境界ごとに丸める」と呼ぶものとする。
エントリ41は、図5からも明らかなように、コピーコマンドID欄41A、ビットマップ欄41B、アドレス属性欄41C及びポインタ欄41Dから構成される。
そしてコピーコマンド欄41Aには、そのコピーコマンドに付与されたコピーコマンドIDが格納され、ビットマップ欄41Bには、対応する1Mバイトの対象領域を上述の単位領域(例えば64Kバイトの領域)ごとに区分してなる各区分領域とそれぞれ対応付けられた複数の差分ビットから構成されるビットマップ42が格納される。
またアドレス属性欄41Cには、そのエントリ41と対応付けられた対象領域がコピー元領域及びコピー先領域のいずれであるかを表す属性情報が格納され、ポインタ欄41Dには、同じコピーコマンドの次のエントリ41が存在する場合に、そのエントリ41へのポインタ(キャッシュメモリ23A,23B上のそのエントリ41のデータが格納された領域の開始アドレスであり、以下、これをハッシュ用ポインタと呼ぶ)が格納される。
そしてストレージ装置4は、受領したコピーコマンドの対象領域(コピー元領域及びコピー先領域)に対応する1又は複数のエントリ41を対象領域ごとに作成すると共に、これら対象領域ごとに、それぞれその開始アドレスをハッシュテーブル40のスロット数で割り、その余りの数値と対応付けられたスロット(以下、これを対象スロットと呼ぶ)40A~40K又は40Lにそのコピーコマンドのエントリ41を対応付ける。
具体的に、ストレージ装置4は、かかるコピーコマンドの対象領域に対応する対象スロット40A~40K又は40Lに対して未だ他のコピーコマンドのエントリ41が対応付けられていない場合には、当該対象領域の最初のエントリ41へのハッシュ用ポインタを対象スロット40A~40K又は40Lに格納し、対応付けられている場合には、当該対象領域の最初のエントリ41のハッシュ用ポインタを、その対象スロット40A~40K又は40Lに対応付けられた最後のエントリ41のポインタ欄41Dに格納する。
またストレージ装置4は、その最初のエントリ41のビットマップ欄41Bに格納されているビットマップ42について、そのコピーコマンドの対象領域に含まれる上述の区分領域に対応する各差分ビットをそれぞれオン(「1」)に設定する。
さらにストレージ装置4は、かかる対象領域の次以降の各エントリ41については、それぞれそのエントリ41のハッシュ用ポインタを1つ前のエントリ41のポインタ欄41Dに格納すると共に、当該次以降のエントリ41のビットマップ欄41Bに格納されているビットマップ42について、その対象領域に含まれる区分領域に対応する各差分ビットをそれぞれオン(「1」)に設定する。
以上のようなハッシュテーブル40のスロット40A~40Lに対するコピーコマンドのエントリ41の対応付けは、コピーコマンドをコピーキュー31に登録するタイミングで行われる。そして、スロット40A~40Lに対応付けられた各エントリ41は、対応するコピーコマンドに基づくコピーが完了すると、その後削除される。
かくしてストレージ装置4は、ホスト装置2からのリードコマンドやライトコマンドを受領した場合には、まず、そのリードコマンドにおいて指定されたリード領域や、そのライトコマンドにおいて指定されたライト領域の開始アドレスをハッシュテーブル40のスロット数で割り、そのときの余りと対応付けられたスロット40A~40Lと対応付けられた各エントリ41のビットマップ欄42にそれぞれ格納されているビットマップ42を参照して、上述のようにそのとき受領したリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域の一部又は全部をコピー先領域とするコピーコマンドであって、未実行のコピーコマンドが存在するか否かを判定する。
(3)ストレージ装置におけるリード処理及びライト処理の流れ
(3−1)基本的な動作パターン
次に、図6に示すように、論理ボリュームVOL1内のコピー元領域AR1から他の論理ボリュームVOL2内のコピー先領域AR2にデータをコピーすべきコピーコマンドCOM1がコピーキュー31に格納されている場合に、ストレージ装置4が、そのコピーコマンドCOM1のコピー元領域AR1又はコピー先領域AR2の一部又は全部とリード領域又はライト領域が重複するリードコマンド又はライトコマンドを実行するときのストレージ装置4の動作パターンについて説明する。
図7は、図6について上述した条件のもとで、リードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域のうち、コピーコマンドCOM1のコピー元領域AR1又はコピー先領域AR2との重複する領域についてストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。なお、かかるリード領域又はライト領域のうち、コピー元領域AR1又はコピー先領域AR2との重複していない領域については、通常通りのリード処理又はライト処理が行われる。
図7に示すように、ストレージ装置4は、リードコマンドを実行しようとする場合であって、そのリードコマンドにおいて指定されたリード領域がコピーコマンドCOM1のコピー元領域AR1の一部又は全部と重複する場合には、リード領域のうちのその重複する領域について、コピーコマンドCOM1に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図7の「♯」が「1」及び「2」の行の「コピー元」欄参照)。リードコマンドにおいて指定されたリード領域が、コピーコマンドCOM1のコピー先領域AR2の一部又は全部と重複する場合にも同様である(図7の「♯」が「2」の行の「コピー先」欄を参照)。
これに対して、ストレージ装置4は、リードコマンドを実行しようとする場合であって、そのリードコマンドにおいて指定されたリード領域がコピーコマンドCOM1のコピー先領域AR2の一部又は全部と重複しており、その重複する領域に対してコピーコマンドCOM1に基づくコピーが実行されていない場合には、リード領域のうちのその重複する領域ついて、コピーコマンドCOM1に従ったコピーを実行した後に、当該重複する領域からデータをリードする(図7の「♯」が「1」の行の「コピー先」欄を参照)。
具体的に、ストレージ装置4は、図8に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのリード領域と重複する領域に格納されているデータをキャッシュメモリ23A,23Bのリード面23AR,23BRに読み出す(SP10)。またストレージ装置4は、この後、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーする(SP11)。
次いでストレージ装置4は、このキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーしたデータをリードデータとしてホスト装置2に送信する一方(SP12)、当該リードデータをかかるコピーコマンドCOM1のコピー先領域AR2に書き込み、これに応じてそのコピーコマンドCOM1に対応する差分ビットマップ32(図2)上のかかるコピーを行った領域に対応する差分ビットをオンからオフに変更する(SP13)。
一方、ストレージ装置4は、ライトコマンドを実行しようとする場合であって、当該ライトコマンドにおいて指定されたライト領域がコピーコマンドCOM1のコピー元領域AR1と一部又は全部が重複しており、その重複する領域についてコピーコマンドCOM1に基づくコピーが実行されていない場合には、ライト領域のうちのその重複する領域について、当該重複する領域に格納されたデータをコピーコマンドCOM1において指定された対応するコピー先領域AR2に退避させた後に、ライトデータを書き込む(図7の「♯」が「3」の行の「コピー元」欄を参照)。
具体的に、ストレージ装置4は、図9に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域に格納されているデータをキャッシュメモリ23A,23Bのリード面23AR,23BRに読み出す(SP20)。またストレージ装置4は、この後、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーし(SP21)、さらにキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーしたデータを、コピーコマンドCOM1のコピー先領域AR2にコピーする(SP22)。
次いでストレージ装置4は、ホスト装置2から与えられるライトデータを受領し、これをキャッシュメモリ23A,23Bのライト面23AW,23BWに書き込む(SP23)。そしてストレージ装置4は、この後、このライトデータをキャッシュメモリ23A,23Bから読み出し、ライトコマンドにおいて指定されたライト領域に書き込む。またストレージ装置4は、コピーコマンドCOM1に対応する差分ビットマップ32(図2)について、ステップSP22においてデータがコピーされた領域に対応する差分ビットをオンからオフに変更する(SP24)。
他方、ストレージ装置4は、ライトコマンドを実行しようとする場合であって、そのライトコマンドにおいて指定されたライト領域がコピーコマンドCOM1のコピー先領域AR2と一部又は全部と重複しており、その重複する領域についてコピーコマンドCOM1に基づくコピーが実行されていない場合には、ライト領域のうちのその重複する領域について、当該重複する領域に格納されているデータを当該コピーコマンドのコピー先領域AR2にコピーした後に、ライトデータを書き込む(図7の「♯」が「3」の行の「コピー先」欄を参照)。
具体的に、ストレージ装置4は、図10に示すように、まず、コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域からキャッシュメモリ23A,23Bのリード面23AR,23BRにデータを読み出し(SP30)、このデータをキャッシュメモリ23A,23Bのライト面23AW,23BWにコピーする(SP31)。
次いでストレージ装置4は、ホスト装置2から受領したライトデータを、キャッシュメモリ23A,23Bのライト面23AW,23BWにコピーした上述のデータに上書きする(SP32)。この後、ストレージ装置4は、かかるライトデータが上書きされたデータを、コピーコマンドCOM1のコピー先領域AR2に書き込むと共に、このコピーコマンドCOM1に対応する差分ビットマップ32(図2)における、当該コピーコマンドCOM1のコピー元領域AR1のうちのライト領域と重複する領域に対応する差分ビットをオンからオフに変更する(SP33)。
(3−2)関連する2つのコピーコマンドがある場合の動作パターン
次に、コピー元領域及び又はコピー先領域が重複する2つのコピーコマンドがコピーキュー31に格納されている場合に、リードコマンド又はライトコマンドを実行しようとするストレージ装置4の動作パターンについて説明する。
なお、以下においても、リードコマンドやライトコマンドにおいて指定されたリード領域又はライト領域のうち、かかる2つのコピーコマンドのコピー元領域又はコピー先領域と重複しない部分については、通常通りのリード処理又はライト処理が行われる。
(3−2−1)第1の応用動作パターン
図11は、コピー元領域AR10,AR12が重複する第1及び第2のコピーコマンドCOM10,COM11がコピーキュー31に登録されている事例を示す。ここでは、第1及び第2のコピーコマンドCOM10,COM11の順番でコピーキュー31に登録されたものであり、これら第1及び第2のコピーコマンドCOM10,COM11はこの順番で実行されるものとする。
図12は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12又はコピー先領域AR11,AR13とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを実行する際に、リード領域又はライト領域のうちのかかるコピー元領域AR10,AR12又はコピー先領域AR11,AR13と重複する領域についてストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。
図12において、「コピー元(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分の一部又は全部と重複する場合のストレージ装置4の処理内容を示す。
また図12の「コピー元(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と重複しない場合(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12とは重複する)のストレージ装置4の処理内容を示す。
さらに図12の「コピー先」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR10,AR12と重複する場合のストレージ装置4の処理内容を示す。
ストレージ装置4は、リードコマンドを実行する場合であって、当該リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複するときには、リード領域のうちの当該重複部分と重複する領域について、かかる第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図12の「♯」が「1」及び「2」の行の「コピー元(重複あり)」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の重複部分と重複しないときにも、リード領域のうちの第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12と重複する領域について、かかる第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行か実行済みかに関わらず、通常通りにデータを読み出す(図12の「♯」が「1」及び「2」の行の「コピー元(重複なし)」欄参照)。
これに対してストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM10,COM11のいずれか一方のコピー先領域AR11,AR13の一部又は全部と重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行されていない場合には、図8について上述した場合と同様に、そのリード領域のうちの第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と重複する領域について、当該第1又は第2のコピーコマンドCOM10,COM11に従ったコピーの実行完了後に、データをリードする。またストレージ装置4は、これと併せて、その第1又は第2のコピーコマンドCOM10,COM11に対応する差分ビットマップ32(図2)における上述のようにコピーを行った領域に対応する差分ビットをオンからオフに変更する(図12の「♯」が「1」の行の「コピー先」欄を参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が第1及び第2のコピーコマンドCOM10,COM11のいずれか一方のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11が実行済みのときには、当該重複する領域について、通常通りにデータを読み出す(図12の「♯」が「2」の行の「コピー先」欄参照)。
一方、ストレージ装置4は、ライトコマンドを実行する場合であって、当該ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが未実行のときには、当該重複する領域について、データをそれぞれ対応する第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13に退避させる。
またストレージ装置4は、これと併せて、第1及び第2のコピーコマンドCOM10,COM11にそれぞれ対応する各差分ビットマップ32におけるそのときデータの退避を行った領域に対応する差分ビットをオンからオフに変更し、この後、ライトコマンドにおいて指定されたライト領域にライトデータを書き込む(図12の「♯」が「3」の行の「コピー元(重複あり)」欄参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みのときには、当該重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー元(重複あり)」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12のうちのこれら2つのコピー元領域AR10,AR12の重複部分とは重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の一部とは重複する)、ライト領域のうちのかかるコピー元領域AR10,AR12と重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが未実行の場合には、その重複する領域について、図9について上述した場合と同様にして、その第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12に格納されたデータを当該第1又は第2のコピーコマンドCOM10,COM11のコピー先領域に退避させた後に、ライトデータを書き込む(図12の「♯」が「3」の行の「コピー元(重複なし)」欄を参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が、第1及び第2のコピーコマンドCOM10,COM11の各コピー元領域AR10,AR12のうちのこれら2つのコピー元領域AR10,AR12の重複部分とは重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM10,COM11のコピー元領域AR10,AR12の一部とは重複する)、ライト領域のうちのかかるコピー元領域AR10,AR12と重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー元(重複なし)」欄参照)。
これに対してストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域について対応する第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが未実行の場合には、その重複する領域について、当該重複する領域に格納されたデータを当該第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13にコピーした後に、ライトデータを書き込む(図12の「♯」が「3」の行の「コピー先」欄を参照)。
またストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM10,COM11のコピー先領域AR11,AR13と一部又は全部が重複しており、その重複する領域についてかかる第1又は第2のコピーコマンドCOM10,COM11に基づくコピーが実行済みの場合には、当該重複する領域について、通常通りにライトデータを書き込む(図12の「♯」が「4」の行の「コピー先」欄参照)。
(3−2−2)第2の応用動作パターン
次に、図13に示すように、コピー先領域AR21,AR23の一部又は全部が重複する第1及び第2のコピーコマンドCOM20,COM21(「Fast1」及び「Fast2」)がコピーキュー31に登録されている場合の事例について説明する。
なお、ストレージ装置4は、第1のコピーコマンドCOM20を実行するときに、第1のコピーコマンドCOM20のコピー先領域AR21に第2のコピーコマンドCOM21のコピー先領域AR23との重複部分があるか否かを検索し、ある場合には第1のコピーコマンドCOM20の実行後、第2のコピーコマンドCOM21に対応する差分ビットマップ32における当該重複部分に対応する差分ビットをオフに設定する。
図14は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22又はコピー先領域AR21,AR23とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを受領したときに、当該ストレージ装置4が実行するリード処理及びライト処理の具体的な処理内容を示す。
図14において、「コピー元」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1又は第2のコピーコマンドCOM20のコピー先領域AR20,AR21と一部又は全部が重複する場合のストレージ装置4の動作内容を示す。
また図14の「コピー先(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分の一部又は全部と重複する場合のストレージ装置4の動作内容を示す。
さらに図14の「コピー先(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と重複しない場合(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22とは重複する)のストレージ装置4の動作内容を示す。
ストレージ装置4は、リードコマンドを実行する場合であって、当該リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のいずれか一方のコピー元領域AR20,AR22と一部又は全部が重複するときには、その重複する領域に対してかかる第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが未実行か実行済みかに関わらず、当該重複する領域について、通常通りにデータを読み出す(図14の「♯」が「1」及び「2」の行の「コピー元」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対して第1及び第2のコピーコマンドCOM20,COM21に基づくコピーがいずれも未実行の場合には、当該重複する領域について、第2のコピーコマンドCOM21に従ったコピー処理を実行完了してからデータをリードする。またストレージ装置4は、これと併せて、その第1及び第2のコピーコマンドCOM20,COM21に対応する差分ビットマップ32(図2)における上述のようにコピーを行った領域に対応する差分ビットをオンからオフに変更する(図14の「♯」が「1」の行の「コピー先(重複あり)」欄参照)。
さらにストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR21の重複部分と一部又は全部が重複しており、その重複する領域(リード領域のうちのかかる重複部分と重複する領域)に対して第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みの場合には、当該重複する領域について、通常通りにデータを読み出す(図14の「♯」が「2」の行の「コピー先(重複あり)」欄参照)。
これに対してストレージ装置4は、リードコマンドにおいて指定されたリード領域が第1及び第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22の一部とは重複する)、リード領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、その重複する領域について、図8について上述した場合と同様にして、その第1又は第2のコピーコマンドCOM20,COM21を実行した後に、データをリードする。
またストレージ装置4は、その第1又は第2のコピーコマンドCOM20,COM21と対応する差分ビットマップ32(図2)のうち、そのときコピーを実行した領域と対応する差分ビットをオンからオフに変更する(図14の「♯」が「1」の行の「コピー先(重複なし)」欄参照)。
またストレージ装置4は、リードコマンドにおいて指定されたリード領域が、第1及び第2のコピーコマンドCOM20のコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22の一部とは重複する)、リード領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1及び第2のコピーコマンドCOM20,COM21がいずれも実行済みである場合には、その重複する領域について、通常通りにデータを読み出す(図14の「♯」が「2」の行の「コピー先(重複なし)」欄参照)。
一方、ストレージ装置4は、ライトコマンドを実行する場合であって、当該ライトコマンドにおいて指定されたライト領域が第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22と一部又は全部が重複しており、その重複する領域に対する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、図9について上述した場合と同様にして、その重複する領域について、当該重複する領域に格納されているデータを第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23に退避させた後に、通常通りにライトデータを書き込む(図14の「♯」が「3」の行の「コピー元」欄参照)。
これに対して、ストレージ装置4は、かかるライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21のいずれか一方のコピー元領域AR20,AR21と一部又は全部が重複しているときであっても、その重複する領域についてその第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みである場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー元」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と一部又は全部が重複している場合であって、その重複する領域(ライト領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが未実行の場合には、その重複する領域について、第2のコピーコマンドCOM21のコピー元領域AR22に格納されているデータをコピーしてからライトデータをライトする。またストレージ装置4は、第1及び第2のコピーコマンドCOM20,COM21にそれぞれ対応する差分ビットマップ32上のかかるコピーを行った領域に対応する各差分ビットをそれぞれオフに設定する(図14の「♯」が「3」の行の「コピー先(重複あり)」欄参照)。
これに対してストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と一部又は全部が重複している場合であって、その重複する領域(ライト領域のうちのかかる重複部分と重複する領域)に対する第1及び第2のコピーコマンドCOM20,COM21に基づくコピーが実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー先(重複あり)」欄参照)。
さらにストレージ装置4は、ライトコマンドにおいて指定されたライト領域が第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23とは重複する)、ライト領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21に基づくコピーが実行されていない場合には、その重複する領域について、図10について上述した場合と同様に、その第1又は第2のコピーコマンドCOM20,COM21のコピー元領域AR20,AR22に格納されたデータをコピーした後に、ライトデータを書き込む(図14の「♯」が「3」の行の「コピー先(重複なし)」欄を参照)。
これに対して、ストレージ装置4は、ホスト装置2からのライトコマンドにおいて指定されたライト領域が、第1及び第2のコピーコマンドCOM20,COM21の各コピー先領域AR21,AR23のうちのこれら2つのコピー先領域AR21,AR23の重複部分と重複しておらず(ただし、当該重複部分以外の第1又は第2のコピーコマンドCOM20,COM21のコピー先領域AR21,AR23とは重複する)、ライト領域のうちのかかるコピー先領域AR21,AR23と重複する領域について対応する第1又は第2のコピーコマンドCOM20,COM21が実行済みの場合には、その重複する領域について、通常通りにライトデータを書き込む(図14の「♯」が「4」の行の「コピー先(重複なし)」欄参照)。
(3−2−3)第3の動作パターン
次に、図15に示すように、コピー元領域AR30,AR32の一部又は全部と、コピー先領域AR31,AR33の一部又は全部とが重複する第1及び第2のコピーコマンドCOM30,COM31(「Fast1」及び「Fast2」)がコピーキュー31に登録されている場合の事例について説明する。
図15において、第1のコピーコマンドCOM30のコピー元領域AR30は第1の論理ボリュームVOL30内のアドレスが「100」~「150」の領域、当該第1のコピーコマンドCOM30のコピー先領域AR31は第2の論理ボリュームVOL31内のアドレスが「10」~「60」の領域であり、第2のコピーコマンドCOM31のコピー元領域AR32が第1の論理ボリュームVOL30内のアドレスが「120」~「220」の領域、当該第2のコピーコマンドCOM31のコピー先領域AR33は第2の論理ボリュームVOL31内のアドレスが「30」~「130」の領域である。本事例においても、第1及び第2のコピーコマンドCOM30,COM31はこの順番でコピーキュー31に登録されたものとする。
図16は、上述のような事例において、ストレージ装置4が、かかる第1及び又は第2のコピーコマンドCOM30,COM31のコピー元領域AR30,AR32又はコピー先領域AR31,AR33とリード領域又はライト領域の一部又は全部が重複するリードコマンド又はライトコマンドを受領したときに、当該ストレージ装置4により実行されるリード処理及びライト処理の具体的な処理内容を示す。
図16において、「コピー元(重複あり)」の列及び「コピー先(重複あり)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域に、第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32又は各コピー先領域AR31,AR33の重複部分が含まれる場合のストレージ装置4の動作内容を示す。
また図16において、「コピー元(重複なし)」の列及び「コピー先(重複なし)」の列は、そのとき実行しようとするリードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域に、第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32の重複部分や、第1及び第2のコピーコマンドCOM30,COM31の各コピー先領域AR30,AR32の重複部分が含まれない場合のストレージ装置4の動作内容を示す。
この図16からも明らかなように、ストレージ装置4は、リードコマンド又はライトコマンドを実行する場合であって、当該リードコマンド又はライトコマンドにおいて指定されたリード領域又はライト領域が第1及び第2のコピーコマンドCOM30,COM31の各コピー元領域AR30,AR32の重複部分と一部又は全部が重複しているときには、図12の「♯」が「1」~「4」の各「コピー元(重複あり)」欄についてそれぞれ上述した場合と同様の処理を実行する(図16の「♯」が「1」~「4」の各「コピー元(重複あり)」欄参照)。
またストレージ装置4は、これ以外の場合には、図14について上述した場合と同様の処理を実行する(図16の「♯」が「1」~「4」の各「コピー元(重複なし)」欄、各「コピー先(重複あり)」欄及び各「コピー先(重複なし)」欄参照)。
(3−2−4)第4の動作パターン
図17に示すように、コピーキュー31に第1のコピーコマンドCOM40が登録されている状態で、第1のコピーコマンドCOM40のコピー先領域AR41とそのコピー元領域AR42の一部又は全部が重複し、第1のコピーコマンドCOM40のコピー元領域AR40とそのコピー先領域AR43の一部又は全部とが重複する第2のコピーコマンドCOM41がホスト装置2から与えられた場合、ストレージ装置4は、その第2のコピーコマンドCOM41を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM41を拒否することによって、コピー処理がループ状態となるのを回避する。
(3−2−5)第5の動作パターン
図18に示すように、コピーキュー31に第1のコピーコマンドCOM50が登録されている状態で、第1のコピーコマンドCOM50のコピー先領域AR51とそのコピー元領域AR52の一部又は全部が重複する第2のコピーコマンドCOM51がホスト装置2から与えられた場合、ストレージ装置4は、その第2のコピーコマンドCOM51を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM51を拒否することによって、多段処理になるのを回避する。
(3−2−6)第6の動作パターン
図19に示すように、コピーキュー31に第1のコピーコマンドCOM60が登録されている状態で、第1のコピーコマンドCOM60のコピー元領域AR60とそのコピー先領域AR63の一部又は全部が重複する第2のコピーコマンドCOM61がホスト装置2から与えられた場合にも、ストレージ装置4は、その第2のコピーコマンドCOM61を拒否する。
このようにストレージ装置4は、かかる第2のコピーコマンドCOM61を拒否することによって、コピー処理がループ状態となるのを回避する。
(4)ストレージ装置のCPUの具体的な処理内容
次に、ストレージ装置4が以上のような第1~第6の動作を行うために、当該ストレージ装置4のCPU22A,22B(図1)が実行するリード処理及びライト処理の具体的な処理内容について説明する。
(4−1)リード処理に関するCPUの各種処理
(4−1−1)リード処理
図20は、コマンドキュー30に格納されたリードコマンドを処理する際に、ストレージ装置4のCPU22A,22Bが実行するリード処理の処理手順を示す。
CPU22A,22Bは、このリード処理を開始すると、まず、そのリードコマンドにおいて指定されたリード領域の開始アドレスと、当該リードコマンドにおいて指定されたリード領域の長さとを引数にして、当該リード領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域又はコピー先領域と一部又は全部が重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP40)。
続いてCPU22A,22Bは、かかるステップSP40において得られた判定結果に基づいて、ドライブインタフェース24A,24Bを介して対応するディスク装置10を制御することにより、リードコマンドにおいて指定されたリード領域に格納されている又は格納されているべきデータをそのディスク装置10から読み出し、読み出したデータをホスト装置2に送信し(SP41)、この後、このリード処理を終了する。
(4−1−2)ハッシュ検索処理
図21は、かかるリード処理のステップSP40においてCPU22A,22Bにより実行されるハッシュ検索処理の具体的な処理内容を示す。
CPU22A,22Bは、リード処理のステップSP40に進むと、このハッシュ検索処理を開始し、まず、キャッシュメモリ23A,23Bの所定位置に保持されたコピー元重複フラグ及びコピー先重複フラグをそれぞれリセット(オフに設定)する(SP50,SP51)。コピー元重複フラグは、そのリードコマンドにおいて指定されたリード領域が、コピーキュー31に登録されたいずれかのコピーコマンドのコピー元領域と一部又は全部が重複することを表すフラグであり、コピー先重複フラグは、かかるリード領域が、コピーキュー31に登録されたいずれかのコピーコマンドのコピー先領域と一部又は全部が重複することを表すフラグである。これらコピー元重複フラグ及びコピー先重複フラグは、後述のように、この後の処理において使用される。
続いてCPU22A,22Bは、かかるリードコマンドにおいて指定されたリード領域の開始アドレスを1Mバイト境界に丸め、その結果をハッシュテーブル40(図5)のスロット数で割った余ることにより、ハッシュテーブル40上の対応するスロット40A~40L(図5)を検出する(SP52)。
次いでCPU22A,22Bは、そのスロット40A~40Lに、次エントリへのポインタが存在しないことを表す「Null」が格納されているか否かを判断する(SP53)。
ここで、この判断において肯定結果を得ることは、そのリードコマンドにおいて指定されたリード領域と、コピー元領域又はコピー先領域の一部又は全部が重複するコピーコマンドがコピーキュー31に格納されていないことを意味する。かくして、このときCPU22A,22Bは、このハッシュ検索処理を終了して、リード処理に戻る。
これに対して、かかる判断において否定結果を得ることは、そのリードコマンドにおいて指定されたリード領域と、コピー元領域又はコピー先領域の一部又は全部が重複するコピーコマンドがコピーキュー31に格納されていることを意味する。かくして、このときCPU22A,22Bは、そのスロット40A~40Lに格納されているポインタにより指定されたエントリ41(図5)にアクセスする(SP54)。
続いてCPU22A,22Bは、ステップSP54においてアクセスしたエントリ41のビットマップ欄41B(図5)に格納されているビットマップ42(図5)を取得し、取得したビットマップ42に基づいて、そのエントリ41に対応するコピーコマンドにおけるそのエントリ41に対応するコピー元領域又はコピー先領域(対象領域)として指定された記憶領域の開始アドレス及び終了アドレスを算出する(SP55)。
次いでCPU22A,22Bは、リードコマンドにおいて指定されたリード領域の開始アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さく、かつ、リード領域の終了アドレスが、かかるコピーコマンドの対象領域の開始アドレスよりも大きいか否かを判断する(SP56)。
この判断において否定結果を得ることは、図22(A)又は(D)に示すように、かかるリード領域と、かかるコピーコマンドの対象領域との間で一部又は全部が重複していないことを意味する。かくして、このときCPU22A,22Bは、ステップSP61に進む。
これに対して、ステップSP56の判断において肯定結果を得ることは、図22(B)又は(C)に示すように、かかるリード領域が、コピーコマンドの対象領域と一部又は全部が重複していることを意味する。かくして、このときCPU22A,22Bは、そのエントリ41のコピーコマンドID欄41A(図5)から当該エントリ41に対応するコピーコマンドのコピーコマンドIDを取得し、これを記憶する(SP57)。
またCPU22A,22Bは、そのエントリ41のアドレス属性欄41C(図5)を参照して、当該アドレス属性欄41Cに格納されたアドレス属性が「コピー元」であるか否か(そのエントリ41が、かかるコピーコマンドのコピー元領域に対応するものであるか否か)を判断する(SP58)。
CPU22A,22Bは、この判断において肯定結果を得ると、ステップSP50においてリセットしたコピー元重複フラグをオンに設定した後(SP59)、ステップSP61に進む。またCPU22A,22Bは、ステップSP58の判断において否定結果を得ると、ステップSP51においてリセットしたコピー先重複フラグをオンに設定した後(SP60)、ステップSP61に進む。
そしてCPU22A,22Bは、ステップSP61に進むと、そのエントリ41のポインタ欄41D(図5)を参照して、「Null」が格納されている否かを判断する(SP61)。
そしてCPU22A,22Bは、この判断において否定結果を得た場合には、ステップSP54に戻り、この後、上述と同様の処理を実行する。これに対してCPU22A,22Bは、ステップSP61の判断において肯定結果を得た場合には、このハッシュ検索処理を終了してリード処理に戻る。
(4−1−3)データリード処理
一方、図23は、図20について上述したリード処理のステップSP41においてCPU22A,22Bにより実行されるデータリード処理の具体的な処理内容を示す。
CPU22A,22Bは、リード処理のステップSP41に進むと、このデータリード処理を開始し、まず、ドライブインタフェース24A,24Bを介して対応するディスク装置10を制御することにより、そのリードコマンドにおいて指定されたリード領域からデータを読み出し、読み出したデータをキャッシュメモリ23A,23Bのリード面に格納する(SP70)。
続いてCPU22A,22Bは、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断し(SP71)、否定結果を得るとステップSP85に進む。
これに対してCPU22A,22Bは、ステップSP71の判断において肯定結果を得ると、コピーキュー31に登録されたコピーコマンドのうちの最初に実行すべきコピーコマンドにポインタ(以下、これをコピーコマンド用ポインタと呼ぶ)を設定し(SP72)、この後、そのコピーコマンド用ポインタが設定されたコピーコマンドのコピーコマンドIDが図21のステップSP57において記憶したコピーコマンドIDと一致するか否かを判断する(SP73)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP83に進み、これに対して肯定結果を得ると、リードコマンドにおいて指定されたリード領域の開始アドレスが、そのときコピーコマンド用ポインタが設定されているコピーコマンドの対象領域の開始アドレスよりも小さいか否かを判断する(SP74)。
そしてCPU22A,22Bは、この判断において否定定結果を得ると、そのリードコマンドにおいて指定されたリード領域と、そのコピーコマンドの対象領域とが重複する領域の開始アドレス(以下、これを重複領域開始アドレスと呼ぶ)として、リードコマンドにおいて指定されたリード領域の開始アドレスを設定し(SP75)、肯定結果を得た場合には、かかる重複領域開始アドレスとして、そのコピーコマンドの対象領域の開始アドレスを設定する(SP76)。
続いてCPU22A,22Bは、リードコマンドにおいて指定されたリード領域の終了アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さいか否かを判断する(SP77)。
そしてCPU22A,22Bは、この判断において肯定結果を得た場合には、かかる重複領域の終了アドレス(以下、これを重複領域終了アドレスと呼ぶ)として、リードコマンドにおいて指定されたリード領域の終了アドレスを設定し(SP78)、否定結果を得た場合には、かかる重複領域終了アドレスとして、そのコピーコマンドの対象領域の終了アドレスを設定する(SP79)。
次いでCPU22A,22Bは、そのときコピーコマンド用ポインタが設定されているコピーコマンドと対応付けられた差分ビットマップ32(図2)における、かかる重複領域に対応する各差分ビットがすべてオンに設定されているか否かを判断する(SP80)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP83に進み、これに対して肯定結果を得ると、かかるコピーコマンドのコピー元領域におけるステップSP75又はステップSP76において設定した重複領域開始アドレスからステップSP78又はステップSP79において設定した重複領域終了アドレスまでの記憶領域に格納されているデータを読み出し、読み出したデータを、テップSP70においてキャッシュメモリ23A,23Bのリード面に格納したデータのうちの対応するデータ部分に上書きする。
続いてCPU22A,22Bは、そのコピーコマンドと対応付けられた差分ビットマップ32(図2)における、ステップSP81において読み出したデータと対応する差分ビットをオフに設定し(SP82)、この後、ステップSP83に進む。
そしてCPU22A,22Bは、ステップSP83に進むと、ステップSP72について上述したコピーコマンド用ポインタを、コピーキュー31に登録されたコピーコマンドのうち、そのときコピーコマンド用ポインタが設定されているコピーコマンドの次に実行されるべきコピーコマンドに移動させる(SP83)。またCPU22A,22Bは、この後、コピーキュー31に登録されたすべてのコピーコマンドについてステップSP73~ステップSP83の処理を実行し終えたか否かを判断する(SP84)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP73に戻り、この後、ステップSP84において肯定結果を得るまでステップSP73~ステップSP84の処理を繰り返す。そしてCPU22A,22Bは、やがてコピーキュー31に登録されたすべてのコピーコマンドについてステップSP73~ステップSP83の処理を実行し終えることにより、このステップSP84において肯定結果を得ると、そのリードコマンドの送信元のホスト装置2に当該リードコマンドの実行完了応答と、そのときキャッシュメモリ23A,23Bのリード面に格納されている対応するリードデータを送信し(SP85)、この後、図20のリード処理に戻る。
(4−2)ライト処理に関するCPUの各種処理
(4−2−1)ライト処理
一方、図24は、コマンドキュー30に格納されたライトコマンドを処理する際に、ストレージ装置4のCPU22A,22Bが実行するライト処理の処理手順を示す。
CPU22A,22Bは、このライト処理を開始すると、まず、そのライトコマンドにおいて指定されたライト領域の開始アドレスと、当該ライトコマンドにおいて指定されたライト領域の長さとを引数にして、そのライト領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域又はコピー元領域と一部又は全部が重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP90)。具体的には、CPU22A,22Bは、このステップSP90において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、かかるステップSP90において得られた判定結果に基づいて、ドライブインタフェース24A,24B(図1)を介して対応するディスク装置10(図1)を制御することにより、ライトコマンドにおいて指定されたライト領域にライトデータを格納し(SP91)、この後、このライト処理を終了する。
(4−2−2)データライト書込み処理
図25A及び図25Bは、かかるライト処理のステップSP91においてCPU22A,22Bにより実行されるデータライト処理の具体的な処理内容を示す。
CPU22A,22Bは、ライト処理のステップSP91に進むと、このデータライト処理を開始し、まず、図21のステップSP50について上述したコピー元重複フラグがオンに設定されているか否かを判断する(SP100)。そしてCPU22A,22Bは、この判断において否定結果を得るとステップSP114に進む。
これに対してCPU22A,22Bは、ステップSP100の判断において肯定結果を得ると、コピーキュー31に登録されたコピーコマンドのうちの最初に実行すべきコピーコマンドにコピーコマンド用ポインタを設定し(SP101)、この後、そのコピーコマンド用ポインタが設定されたコピーコマンドのコピーコマンドIDが図21のステップSP57において記憶したコピーコマンドIDと一致するか否かを判断する(SP102)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP113に進み、これに対して肯定結果を得ると、ライトコマンドにおいて指定されたライト領域の開始アドレスが、そのときコピーコマンド用ポインタが設定されているコピーコマンドの対象領域の開始アドレスよりも小さいか否かを判断する(SP103)。
そしてCPU22A,22Bは、この判断において否定定結果を得た場合には、そのライトコマンドにおいて指定されたライト領域と、そのコピーコマンドの対象領域とが重複する領域の開始アドレス(重複領域開始アドレス)として、ライトコマンドにおいて指定されたリード領域の開始アドレスを設定し(SP104)、肯定結果を得た場合には、かかる重複領域開始アドレスとして、そのコピーコマンドの対象領域の開始アドレスを設定する(SP105)。
続いてCPU22A,22Bは、ライトコマンドにおいて指定されたライト領域の終了アドレスが、かかるコピーコマンドの対象領域の終了アドレスよりも小さいか否かを判断する(SP106)。
そしてCPU22A,22Bは、この判断において肯定結果を得た場合には、かかる重複する領域の終了アドレス(重複領域終了アドレス)として、ライトコマンドにおいて指定されたライト領域の終了アドレスを設定し(SP107)、否定結果を得た場合には、かかる重複領域終了アドレスとして、そのコピーコマンドの対象領域の終了アドレスを設定する(SP108)。
次いでCPU22A,22Bは、そのときコピーコマンド用ポインタが設定されているコピーコマンドと対応付けられた差分ビットマップ32における、かかる重複する領域に対応する各差分ビットがすべてオンに設定されているか否かを判断する(SP109)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP113に進み、これに対して肯定結果を得ると、対応するディスク装置10を制御することにより、かかるコピーコマンドのコピー元領域におけるステップSP104又はステップSP105において設定した重複領域開始アドレスからステップSP107又はステップSP108において設定した重複領域終了アドレスまでの記憶領域に格納されているデータを読み出し、読み出したデータをキャッシュメモリ23A,23Bのリード面に格納する(SP110)。
またCPU22A,22Bは、かかるキャッシュメモリ23A,23Bのリード面に格納したデータを当該キャッシュメモリ23A,23Bのライト面にコピーし(SP111)、この後、そのコピーコマンドと対応付けられた差分ビットマップ32における、ステップSP110においてディスク装置10から読み出したデータと対応する差分ビットをオフに設定した後(SP112)、ステップSP113に進む。
そしてCPU22A,22Bは、ステップSP113に進むと、ステップSP101について上述したコピーコマンド用ポインタを、コピーキュー31に登録されたコピーコマンドのうち、そのときコピーコマンド用ポインタが設定されているコピーコマンドの次に実行されるべきコピーコマンドに移動させる(SP113)。
続いてCPU22A,22Bは、この後、コピーキュー31に登録されたすべてのコピーコマンドについてステップSP102~ステップSP113の処理を実行し終えたか否かを判断する(SP114)。
CPU22A,22Bは、この判断において否定結果を得るとステップSP102に戻り、この後、ステップSP114において肯定結果を得るまでステップSP102~ステップSP114の処理を繰り返す。そしてCPU22A,22Bは、やがてコピーキュー31に登録されたすべてのコピーコマンドについてステップSP102~ステップSP113の処理を実行し終えることにより、ステップSP114において肯定結果を得ると、ステップSP115に進む。
CPU22A,22Bは、ステップSP115に進むと、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断し(SP115)、否定結果を得るとステップSP128に進む。
これに対してCPU22A,22Bは、ステップSP115の判断において肯定結果を得ると、この後、ステップSP101~ステップSP114と同様にして、ステップSP116~ステップSP127の処理を実行する。そしてCPU22A,22Bは、やがてステップSP127において肯定結果を得るとステップSP128に進む。
そしてCPU22A,22Bは、ステップSP128に進むと、かかるライトコマンドに付随してホスト装置2から送信されるライトデータを受け付け、このライトデータをキャッシュメモリ23A,23Bのライト面に格納する(SP128)。
この際、CPU22A,22Bは、例えば図10について上述したように、かかるホスト装置2から送信されるライトデータを、ステップSP111においてキャッシュメモリ23A,23Bのライト面にコピーしたデータに上書きする必要がある場合には、当該データにかかるライトデータを上書きする。
そしてCPU22A,22Bは、この後、そのライトコマンドの送信元のホスト装置2に当該ライトコマンドの実行完了応答を返信し(SP129)、この後、図24のライト処理に戻る。
(4−3)コピーコマンド受領処理
他方、図26は、ホスト装置2からのコピーコマンドを受領した場合におけるストレージ装置4のCPU22A,22Bの具体的な処理手順を示す。
CPU22A,22Bは、ホスト装置2からのコピーコマンドを受領すると、このコピーコマンド受領処理を開始し、まず、そのコピーコマンドのコピー元領域の開始アドレスと、当該コピーコマンドにおいて指定されたコピー元領域の長さとを引数にして、そのコピー元領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域又はコピー元領域と重複するか否かを、ハッシュテーブル40(図5)を参照して判定する(SP130)。具体的には、CPU22A,22Bは、このステップSP130において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、図21のステップSP50について上述したコピー元重複フラグがオンに設定されているか否かを判断する(SP131)。
ここで、この判断において肯定結果を得ることは、図17及び図19において上述したように、そのとき受領したコピーコマンドのコピー元領域の一部又は全部が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー先領域の一部又は全部と重複することを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に当該コピーコマンドを実行できない旨のエラー応答を送信し(SP138)、この後、このコピーコマンド受領処理を終了する。
これに対してCPU22A,22Bは、かかるステップSP131の判断において否定結果を得ると、そのとき受領したコピーコマンドのコピー先領域の開始アドレスと、当該コピーコマンドにおいて指定されたコピー先領域の長さとを引数にして、そのコピー先領域が、コピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域と一部又は全部が重複するか否かを、ハッシュテーブル40を参照して判定する(SP132)。具体的には、CPU22A,22Bは、このステップSP132において、図21について上述したハッシュ検索処理を実行する。
続いてCPU22A,22Bは、図21のステップSP51について上述したコピー先重複フラグがオンに設定されているか否かを判断する(SP133)。
ここで、この判断において肯定結果を得ることは、図18において上述したように、そのとき受領したコピーコマンドのコピー先領域の一部又は全部が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域と重複することを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に当該コピーコマンドを実行できない旨のエラー応答を送信し(SP138)、この後、このコピーコマンド受領処理を終了する。
これに対して、かかるステップSP133の判断において否定結果を得ることは、そのとき受領したコピーコマンドのコピー先領域が、既にコピーキュー31に登録されているいずれかのコピーコマンドのコピー元領域とは重複しないことを意味する。かくして、このときCPU22A,22Bは、そのコピーコマンドのコピー元領域及びコピー先領域をそれぞれハッシュテーブル40(図5)に登録すると共に(SP134,SP135)、そのコピーコマンドをコピーキュー31に登録する(SP136)。
続いてCPU22A,22Bは、そのコピーコマンドの送信元のホスト装置2に対して当該コピーコマンドに応じたコピー処理が実行完了した旨の応答(コピー実行完了応答)を送信し(SP137)、この後、このコピーコマンド受領処理を終了する。
(4−4)ハッシュテーブル登録処理
他方、図27は、図26について上述したコピーコマンド受領処理のステップSP134及びステップSP135において実行されるハッシュテーブル登録処理の具体的な処理内容を示す。
CPU22A,22Bは、かかるコピーコマンド受領処理のステップSP134又はステップSP135に進むと、このハッシュテーブル登録処理を開始し、まず、後述のようにアドレスをカウントするための図示しないカウンタ(以下、これをアドレスカウンタと呼ぶ)をリセット(カウント値を「0」にセット)する(SP140)。
続いてCPU22A,22Bは、そのとき対象としているコピーコマンドにおいて指定されたコピー元領域の開始アドレス(図26のステップSP134の場合)又はコピー先領域の開始アドレス(図26のステップSP135の場合)にアドレスカウンタのカウンタ値を加算したアドレスを1Mバイト境界に丸めることにより、ハッシュテーブル40(図5)に登録する対象領域(コピー元領域又はコピー先領域)の一部領域を決定する(SP141)。
続いてCPU22A,22Bは、ステップSP141において決定した領域についてのエントリ41を作成する。具体的には、対応するコピーコマンドに対して付与したコピーコマンドIDをコピーコマンド欄41A(図5)に格納し、かかる領域に対応するビットをオンに設定したビットマップ42(図5)をビットマップ欄41B(図5)に格納し、その領域のアドレス属性(コピー元領域又はコピー先領域)をアドレス属性欄41C(図5)に格納するようにしてエントリ41を作成する。そしてCPU22A,22Bは、このようにして作成したエントリ41を、キャッシュメモリ23A,23Bに格納する(SP142)。
続いてCPU22A,22Bは、ステップSP142において作成したエントリ41へのポインタ(ハッシュ用ポインタ)を、ハッシュテーブル40の対応するスロット40A~40L又はそのスロット40A~40Lと対応付けられたエントリ41のうちの最後尾のエントリ41のポインタ欄41D(図5)に設定する(SP143)。
次いでCPU22A,22Bは、対象領域の開始アドレスにアドレスカウンタのカウント値を加算した値の1Mバイト以下の部分の値に基づいて、そのエントリ41のビットマップ欄41Bに格納されるビットマップ42における、そのとき対象としている64Kバイトの単位領域と対応するビットをオンに設定する(SP144)。
さらにCPU22A,22Bは、アドレスカウンタのカウント値に64Kバイト分の数値を加算し(SP145)、この後、対象領域の開始アドレスにアドレスカウンタのカウント値を加算した値の1Mバイト以下の値が「0」となったか否かを判断する(SP146)。
ここで、この判断において否定結果を得ることは、そのとき対象としていた64Kバイトの単位領域が1Mバイト境界の最後の単位領域ではないことを意味する。かくして、このときCPU22A,22Bは、アドレスカウンタのカウント値がそのとき対象としているコピーコマンドの対象領域の長さよりも小さいか否かを判断する(SP147)。
そしてCPU22A,22Bは、この判断において否定結果を得ると、ステップSP144に戻り、この後、ステップSP146又はステップSP147において肯定結果を得るまで、ステップSP144~ステップSP147の処理を繰り返す。このような処理により、CPU22A,22Bは、そのとき対象としている1Mバイトの領域内の各単位領域について、対応するエントリ41のビットマップ欄41Bに格納されたビットマップ42上の対応するビットをオンに順次設定する。
そしてCPU22A,22Bは、やがてそのとき対象としている1Mバイトの領域内のすべての単位領域について同様の処理を実行し終えることによりステップSP146において肯定結果を得るとステップSP141に戻り、この後、次の1Mバイトの領域について同様の処理を繰り返す(SP141~SP147)。
そしてCPU22A,22Bは、やがてそのとき対象としているコピーコマンドの対象領域内のすべての1Mバイトの領域について同様の処理を実行し終えることによりステップSP147において否定結果を得ると、最後のエントリ41のポインタ欄41Dに次エントリが存在しないことを表す「Null」を設定し(SP148)、この後、このハッシュテーブル登録処理を終了する。
(5)本実施の形態の効果
以上のように本実施の形態によるストレージ装置4では、コマンドキュー30に加えてコピーキュー31を設け、コマンドキュー30に格納されたコマンドがコピーコマンドであった場合には、これをコピーキュー31に移動させた後、そのコピーコマンドの送信元のホスト装置2に対してコピー実行完了応答を送信し、その後、バックグラウンドでかかるコピーコマンドに従ったコピー処理を実行する。これにより、ホスト装置2において、後続の同じアドレスにアクセスするコマンドが待たされることがなく、タイムアウトが発生するのを未然に防止することができる。かくするにつきホスト装置からみたコピー処理の処理速度を高速化し得る信頼性の高いストレージ装置を実現することができる。
(6)他の実施の形態
なお上述の実施の形態においては、本発明を図1のように構成されたストレージ装置4に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成のストレージ装置に広く適用することができる。
また上述の実施の形態においては、コピーキュー31(図2)をキャッシュメモリ23A,23B上に設けるようにした場合について述べたが、本発明はこれに限らず、キャッシュメモリ23A,23B以外の例えばローカルメモリ21A,21B上に設けるようにしても良い。
さらに上述の実施の形態においては、ハッシュテーブル40(図5)のスロット数を12個とするようにした場合について述べたが、本発明はこれに限らず、かかるスロット数を12個以外の個数としても良い。
さらに上述の実施の形態においては、ホスト装置2から与えられたコマンドをコマンドキュー30に格納すると共に、コマンドキュー30に格納したコマンドをコマンドキュー30への格納順に実行する制御部として、ストレージ装置4全体の動作制御を司るCPU22A,22Bを適用するようにした場合について述べたが、本発明はこれに限らず、かかる制御部としての機能を有するハードウェアをかかるCPU22A,22Bとは別個に設けるようにしても良い。
本発明は、コピー機能が搭載された種々の構成のストレージ装置に広く適用することができる。
Claims (12)
- ホスト装置からのコマンドを一時的に保持するためのコマンドキューが設定されるメモリと、
前記ホスト装置から与えられた前記コマンドを前記コマンドキューに格納すると共に、当該コマンドキューに格納した前記コマンドを、当該コマンドキューへの格納順に実行する制御部と
を備え、
前記制御部は、
前記ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューを前記メモリ上に設定し、
前記コマンドキューに格納した前記ホスト装置からのコマンドのうちの前記コピーコマンドを前記コピーキューに移動すると共に、当該コマンドの送信元の前記ホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信し、
前記コピーキューに移動した前記コピーコマンドを、当該コピーキューへの格納順にバックグランドで実行する
ことを特徴とするストレージ装置。 - 前記制御部は、
前記コマンドキューに格納されたリードコマンド又はライトコマンドを実行する際、当該リードコマンド又は当該ライトコマンドにおいて指定されたリード領域又はライト領域と一部又は全部が重複する領域をコピー元又はコピー先とするコピーコマンドが前記コピーキューに格納されているか否かを判定し、
判定結果に応じたリード処理又はライト処理を実行する
ことを特徴とする請求項1に記載のストレージ装置。 - 複数のスロットを有するハッシュテーブルを備え、
前記制御部は、
前記ホスト装置から前記コピーコマンドが与えられたときに、当該コピーコマンドのコピー元の領域及びコピー先の領域について、それぞれ前記ハッシュテーブル上の当該コピー元の領域又は当該コピー先の領域の開始アドレスに応じた前記スロットを対応付け、
当該ハッシュテーブルを利用して、前記リードコマンド又は前記ライトコマンドにおいて指定されたリード領域又はライト領域と一部又は全部が重複する領域をコピー元又はコピー先とするコピーコマンドが前記コピーキューに格納されているか否かを判定する
ことを特徴とする請求項2に記載のストレージ装置。 - 前記制御部は、
前記コマンドキューに格納されたリードコマンドを実行する際、当該リードコマンドにおいて指定されたリード領域と一部又は全部が重複する領域をコピー先とするコピーコマンドが前記コピーキューに格納されており、当該リード領域と、前記コピーコマンドのコピー先の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、前記コピーコマンドのコピー元の領域からデータをコピーしてからデータをリードする
ことを特徴とする請求項2に記載のストレージ装置。 - 前記制御部は、
前記コマンドキューに格納されたライトコマンドを実行する際、当該ライトコマンドにおいて指定されたライト領域と一部又は全部が重複する領域をコピー元とするコピーコマンドが前記コピーキューに格納されており、当該ライト領域と、前記コピーコマンドのコピー元の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、当該重複する領域に格納されたデータを退避させてからライトデータをライトする
ことを特徴とする請求項2に記載のストレージ装置。 - 前記制御部は、
前記コマンドキューに格納されたライトコマンドを実行する際、当該ライトコマンドにおいて指定されたライト領域と一部又は全部が重複する領域をコピー先とするコピーコマンドが前記コピーキューに格納されており、当該ライト領域と、前記コピーコマンドのコピー先の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、前記コピーコマンドのコピー元の領域に格納されたデータをコピーしてからライトデータをライトする
ことを特徴とする請求項2に記載のストレージ装置。 - ホスト装置から与えられたコマンドをコマンドキューに格納すると共に、当該コマンドキューに格納した前記コマンドを、当該コマンドキューへの格納順に実行するストレージ装置の制御方法において、
前記ホスト装置から与えられたコマンドのうちのコピーコマンドを一時的に保持するためのコピーキューを前記メモリ上に設定する第1のステップと、
前記コマンドキューに格納した前記ホスト装置からのコマンドのうちの前記コピーコマンドを前記コピーキューに移動すると共に、当該コマンドの送信元の前記ホスト装置に当該コマンドに応じたコピー処理の実行完了応答を送信する第2のステップと、
前記コピーキューに移動した前記コピーコマンドを、当該コピーキューへの格納順にバックグランドで実行する第3のステップと
を備えることを特徴とするストレージ装置の制御方法。 - 前記コマンドキューに格納されたリードコマンド又はライトコマンドを実行する際、当該リードコマンド又は当該ライトコマンドにおいて指定されたリード領域又はライト領域と一部又は全部が重複する領域をコピー元又はコピー先とするコピーコマンドが前記コピーキューに格納されているか否かを判定する判定ステップと、
判定結果に応じたリード処理又はライト処理を実行する処理実行ステップと
を備えることを特徴とする請求項7に記載のストレージ装置の制御方法。 - 前記ストレージ装置は、複数のスロットを有するハッシュテーブルを備え、
前記判定ステップでは、
前記ホスト装置から前記コピーコマンドが与えられたときに、当該コピーコマンドのコピー元の領域及びコピー先の領域について、それぞれ前記ハッシュテーブル上の当該コピー元の領域又は当該コピー先の領域の開始アドレスに応じた前記スロットを対応付け、
当該ハッシュテーブルを利用して、前記リードコマンド又は前記ライトコマンドにおいて指定されたリード領域又はライト領域と一部又は全部が重複する領域をコピー元又はコピー先とするコピーコマンドが前記コピーキューに格納されているか否かを判定する
ことを特徴とする請求項8に記載のストレージ装置の制御方法。 - 前記処理実行ステップでは、
前記コマンドキューに格納されたリードコマンドを実行する際、当該リードコマンドにおいて指定されたリード領域と一部又は全部が重複する領域をコピー先とするコピーコマンドが前記コピーキューに格納されており、当該リード領域と、前記コピーコマンドのコピー先の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、前記コピーコマンドのコピー元の領域からデータをコピーしてからデータをリードする
ことを特徴とする請求項8に記載のストレージ装置の制御方法。 - 前記処理実行ステップでは、
前記コマンドキューに格納されたライトコマンドを実行する際、当該ライトコマンドにおいて指定されたライト領域と一部又は全部が重複する領域をコピー元とするコピーコマンドが前記コピーキューに格納されており、当該ライト領域と、前記コピーコマンドのコピー元の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、当該重複する領域に格納されたデータを退避させてからライトデータをライトする
ことを特徴とする請求項8に記載のストレージ装置の制御方法。 - 前記処理実行ステップでは、
前記コマンドキューに格納されたライトコマンドを実行する際、当該ライトコマンドにおいて指定されたライト領域と一部又は全部が重複する領域をコピー先とするコピーコマンドが前記コピーキューに格納されており、当該ライト領域と、前記コピーコマンドのコピー先の領域とが重複する領域に対するコピーが未実行の場合には、当該重複する領域について、前記コピーコマンドのコピー元の領域に格納されたデータをコピーしてからライトデータをライトする
ことを特徴とする請求項8に記載のストレージ装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/665,285 US8352681B2 (en) | 2009-07-17 | 2009-07-17 | Storage system and a control method for accelerating the speed of copy processing |
PCT/JP2009/063311 WO2011007459A1 (ja) | 2009-07-17 | 2009-07-17 | ストレージ装置及びその制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/063311 WO2011007459A1 (ja) | 2009-07-17 | 2009-07-17 | ストレージ装置及びその制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011007459A1 true WO2011007459A1 (ja) | 2011-01-20 |
Family
ID=43449074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/063311 WO2011007459A1 (ja) | 2009-07-17 | 2009-07-17 | ストレージ装置及びその制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8352681B2 (ja) |
WO (1) | WO2011007459A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016079804A1 (ja) * | 2014-11-18 | 2016-05-26 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
US8566508B2 (en) | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US8345489B2 (en) | 2010-09-02 | 2013-01-01 | International Business Machines Corporation | Caching scheme synergy for extent migration between tiers of a storage system |
US20140344503A1 (en) * | 2013-05-17 | 2014-11-20 | Hitachi, Ltd. | Methods and apparatus for atomic write processing |
US9946604B1 (en) * | 2015-02-04 | 2018-04-17 | Tintri Inc. | Optimized remote cloning |
US20180157697A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Updating change information for current copy relationships when establishing a new copy relationship having overlapping data with the current copy relationships |
KR101980190B1 (ko) * | 2017-09-25 | 2019-05-21 | 서울대학교산학협력단 | 입출력 디바이스 제어 장치, 그것의 동작 방법 및 입출력 디바이스 제어 장치 드라이버의 동작 방법 |
WO2019126154A1 (en) * | 2017-12-18 | 2019-06-27 | Replixio Ltd. | System and method for data storage management |
US10452296B1 (en) | 2018-03-23 | 2019-10-22 | Amazon Technologies, Inc. | Accelerated volumes |
US11023157B2 (en) | 2018-04-30 | 2021-06-01 | Amazon Technologies, Inc. | Intermediary duplication to facilitate copy requests in distributed storage systems |
US10459655B1 (en) | 2018-04-30 | 2019-10-29 | Amazon Technologies, Inc. | Rapid volume backup generation from distributed replica |
US11343314B1 (en) | 2018-04-30 | 2022-05-24 | Amazon Technologies, Inc. | Stream-based logging for distributed storage systems |
US10931750B1 (en) * | 2018-07-30 | 2021-02-23 | Amazon Technologies, Inc. | Selection from dedicated source volume pool for accelerated creation of block data volumes |
US10956442B1 (en) | 2018-07-30 | 2021-03-23 | Amazon Technologies, Inc. | Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots |
US11068192B1 (en) | 2019-03-26 | 2021-07-20 | Amazon Technologies, Inc. | Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source |
US10983719B1 (en) * | 2019-03-28 | 2021-04-20 | Amazon Technologies, Inc. | Replica pools to support volume replication in distributed storage systems |
US11392310B2 (en) * | 2019-10-31 | 2022-07-19 | SK Hynix Inc. | Memory system and controller |
US11556268B2 (en) * | 2021-04-22 | 2023-01-17 | Western Digital Technologies, Inc. | Cache based flow for a simple copy command |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0683677A (ja) * | 1992-04-20 | 1994-03-25 | Internatl Business Mach Corp <Ibm> | データの増分タイム・ゼロ・バックアップ・コピーの方法及びシステム |
JPH06259198A (ja) * | 1993-03-09 | 1994-09-16 | Hitachi Ltd | ディスク装置システム |
JPH0916474A (ja) * | 1995-06-30 | 1997-01-17 | Fujitsu Ltd | 入出力制御装置及び方法 |
JPH11184641A (ja) * | 1997-12-24 | 1999-07-09 | Hitachi Ltd | サブシステムの移行方法 |
JP2001166974A (ja) * | 1999-09-30 | 2001-06-22 | Fujitsu Ltd | 記憶装置のデータ領域間の複写処理方法、記憶システム、及びその記憶媒体 |
JP2002297455A (ja) * | 2001-03-29 | 2002-10-11 | Fujitsu Ltd | 記憶装置のデータ領域間複写処理方法、及び記憶システム |
JP2006164162A (ja) * | 2004-12-10 | 2006-06-22 | Fujitsu Ltd | コピー制御装置および方法 |
JP2006527873A (ja) * | 2003-06-18 | 2006-12-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | インクリメンタル仮想コピーのための方法、システム、及びプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761531A (en) | 1995-06-30 | 1998-06-02 | Fujitsu Limited | Input/output control apparatus and method for transfering track data from cache module to channel unit during the staging of the data track from device adapter |
US6757797B1 (en) * | 1999-09-30 | 2004-06-29 | Fujitsu Limited | Copying method between logical disks, disk-storage system and its storage medium |
US7139932B2 (en) * | 2002-01-03 | 2006-11-21 | Hitachi, Ltd. | Data synchronization of multiple remote storage after remote copy suspension |
US7421549B2 (en) * | 2004-03-02 | 2008-09-02 | Hitachi, Ltd. | Method and apparatus of remote copy for multiple storage subsystems |
JP2007140887A (ja) * | 2005-11-18 | 2007-06-07 | Hitachi Ltd | ストレージシステム、ディスクアレイ装置、ボリューム提示方法及びデータ一致性確認方法 |
-
2009
- 2009-07-17 WO PCT/JP2009/063311 patent/WO2011007459A1/ja active Application Filing
- 2009-07-17 US US12/665,285 patent/US8352681B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0683677A (ja) * | 1992-04-20 | 1994-03-25 | Internatl Business Mach Corp <Ibm> | データの増分タイム・ゼロ・バックアップ・コピーの方法及びシステム |
JPH06259198A (ja) * | 1993-03-09 | 1994-09-16 | Hitachi Ltd | ディスク装置システム |
JPH0916474A (ja) * | 1995-06-30 | 1997-01-17 | Fujitsu Ltd | 入出力制御装置及び方法 |
JPH11184641A (ja) * | 1997-12-24 | 1999-07-09 | Hitachi Ltd | サブシステムの移行方法 |
JP2001166974A (ja) * | 1999-09-30 | 2001-06-22 | Fujitsu Ltd | 記憶装置のデータ領域間の複写処理方法、記憶システム、及びその記憶媒体 |
JP2002297455A (ja) * | 2001-03-29 | 2002-10-11 | Fujitsu Ltd | 記憶装置のデータ領域間複写処理方法、及び記憶システム |
JP2006527873A (ja) * | 2003-06-18 | 2006-12-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | インクリメンタル仮想コピーのための方法、システム、及びプログラム |
JP2006164162A (ja) * | 2004-12-10 | 2006-06-22 | Fujitsu Ltd | コピー制御装置および方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016079804A1 (ja) * | 2014-11-18 | 2016-05-26 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JPWO2016079804A1 (ja) * | 2014-11-18 | 2017-04-27 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US8352681B2 (en) | 2013-01-08 |
US20110191554A1 (en) | 2011-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011007459A1 (ja) | ストレージ装置及びその制御方法 | |
EP1818795A2 (en) | Storage system, data processing method and storage apparatus | |
JP5603941B2 (ja) | 計算機システム及びデータ移行方法 | |
JP4662548B2 (ja) | スナップショット管理装置及び方法並びにストレージシステム | |
US10168908B2 (en) | Method and system for cascaded flashcopy zoning and algorithm and/or computer program code and method implementing the same | |
JP2007316995A (ja) | 記憶システム及びデータ管理方法 | |
WO2013046254A1 (en) | Management server and data migration method | |
JP2013539119A (ja) | オフロード・リードおよびライト | |
US9940201B2 (en) | Disk array having mirror configuration and rebuilding method therefor | |
JP2009211132A (ja) | 記憶システム及びデータ移行方法 | |
JP2008181382A (ja) | ストレージ装置及び負荷分散方法 | |
JP2007122531A (ja) | 負荷分散システム及び方法 | |
JP2008077290A (ja) | 情報処理装置及び情報処理方法並びにストレージシステム | |
JP5715297B2 (ja) | ストレージ装置及びその制御方法 | |
WO2014006661A1 (en) | Management apparatus and management method | |
JP2009230367A (ja) | 情報処理装置及び情報処理方法 | |
JP2009211401A (ja) | ストレージ装置及びその制御方法 | |
US8010733B1 (en) | Methods and apparatus for accessing content | |
WO2013076779A1 (en) | Storage apparatus and its method for selecting a location where storing differential data based on detection of snapshot deletion behaviour | |
EP4293493A1 (en) | Systems and methods for a redundant array of independent disks (raid) using a raid circuit in cache coherent interconnect storage devices | |
JP6013609B2 (ja) | ストレージ装置及びデータ入出力方法 | |
WO2012137256A1 (en) | Disk array apparatus and control method thereof | |
CN114490222B (zh) | 一种PCIe P2P系统测试启动方法和装置 | |
US20240045766A1 (en) | Data acquisition apparatus, data acquisition method, and data acquisition program | |
US20240004820A1 (en) | Hypervisor Bridging of Different Versions of an IO Protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 12665285 Country of ref document: US |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09847355 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: 09847355 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |