WO2016098202A1 - ストレージ装置およびその制御方法 - Google Patents

ストレージ装置およびその制御方法 Download PDF

Info

Publication number
WO2016098202A1
WO2016098202A1 PCT/JP2014/083451 JP2014083451W WO2016098202A1 WO 2016098202 A1 WO2016098202 A1 WO 2016098202A1 JP 2014083451 W JP2014083451 W JP 2014083451W WO 2016098202 A1 WO2016098202 A1 WO 2016098202A1
Authority
WO
WIPO (PCT)
Prior art keywords
write
write command
area
queue
command
Prior art date
Application number
PCT/JP2014/083451
Other languages
English (en)
French (fr)
Inventor
広介 森永
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/083451 priority Critical patent/WO2016098202A1/ja
Publication of WO2016098202A1 publication Critical patent/WO2016098202A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention relates to a storage apparatus and a control method thereof.
  • Sharing storage devices from multiple hosts is already widely used for the purpose of reducing data management costs, etc.
  • multiple hosts access the same data storage area, and other hosts
  • LUN security which is a technique for preventing data destruction, is widely known.
  • Patent Document 1 discloses that “when a command is received from a host device, a host address is extracted from the command, and a host device is stored from a correspondence table of a host device and offset information stored in advance. Is generated, and the logical address of the disk written in the instruction from the host device and the offset information are added together to generate the real area address of the disk. Based on the received command, a disk area corresponding to each host device is accessed ".
  • each host can access different data storage areas.
  • a plurality of hosts perform a cooperative operation such as sharing one process, the plurality of hosts need to access the same data storage area, and the storage device does not always have sufficient access control.
  • an object of the present invention is to provide appropriate access control from a plurality of hosts to the same data storage area.
  • a typical storage apparatus is a storage apparatus connected to a plurality of hosts, and has a queue for storing a write command received from the host together with a write command storage time stamp, and a processor.
  • the processor determines, as a first determination, whether a difference between times stored in the time stamps of a plurality of write commands stored in the queue is equal to or less than a predetermined threshold time, and a second As a determination, when it is determined in the first determination that the time is equal to or shorter than the threshold time, it is determined whether the same write area includes a plurality of write commands equal to or shorter than the threshold time, and the same write area is determined in the second determination.
  • the write command based on the write contention mode that determines the processing of the write command including the same write area. Characterized by treating the de.
  • the present invention can also be grasped as a storage apparatus control method.
  • the host when the host writes data to the storage apparatus, the host issues a write command to the storage apparatus, and then the host outputs write data to the storage apparatus.
  • information for identifying that the write command is a write, a write destination LU (Logical Unit) number (LUN: LU Number), and an LBA (specific address in the write destination LU) (Logical Block Address) that includes the first LBA of the write data and the size (number of blocks) of the write data is common technical knowledge in the technical field defined in the SCSI (Small Computer System Interface) specification. It is.
  • FIG. 1A is a diagram illustrating an example of a write destination in the write contention mode # 2.
  • two write commands that is, a write command A11 and a write command B12 arrive at the storage device sequentially.
  • the conventional storage apparatus first writes the write data of the write command A11 to the area where the LBA of the host LU 13 is 111100, and then overwrites the write data of the write command B12 to the same area.
  • the application program of each host synchronizes the issue of the write command of each host to guarantee the consistency of the write data. Even if the data written by A11 is overwritten by the write command B12, it is the original operation. However, in a lower layer program than the application program, there is a program in which read after write is performed in order to confirm that the data is correctly written, and the match between the write data and the read data is confirmed. Since such a program operates irrespective of the synchronization of the issuance of the write command of the application program, the data written by the write command A11 is changed to different data by overwriting.
  • the write data of the write command A11 is erased by the write data of the write command B12. Then, after the write command B12, when the host reads the area whose LBA of the host LU 13 is 111100, the host can read the data of the write command B12, but cannot read the data of the write command A11, and it is determined as an error. End up.
  • the storage apparatus in the example of FIG. 1A includes a host LU 13 that the host designates as a write destination, and a virtual LU 14 that stores data to be written to the host LU 13.
  • the storage apparatus in which the write contention mode # 2 is set detects that the same LBA is included in the write command A11 and the write command B12, and instead of writing the data to the host LU 13, the data of the write command A11 is virtually
  • the LBA of the LU 14 writes to the area XXX
  • the data of the write command B12 is written to the area of the virtual LU 14 LBA YYY.
  • XXX and YYY indicate different addresses.
  • the storage apparatus in which the write contention mode # 2 is set records that the LBA of the host LU 13 is 111100, the LBA of the virtual LU 14 is XXX, and the LBA of the virtual LU 14 is YYY. This correspondence information is made available at the time of reading.
  • FIG. 1B is a diagram showing an example of the relationship between writing and reading in the write competition mode # 2.
  • the write command A11 and the write command B12 are as already described with reference to FIG. 1A, and data to be written by each write command is M and N.
  • the storage apparatus in which the write contention mode # 2 is set holds M, which is the write data of the write command A11, in the area where LBA is XXX as indicated by the arrow 15, and N, which is the write data of the write command B12, is indicated by the arrow 16 As shown in FIG. 5, the LBA is held in the YYY area.
  • the conditions for writing to the virtual LU 14 instead of the host LU 13 and the area to be written will be further described later.
  • FIG. 1C is a diagram illustrating an example of a write destination in the write contention mode # 1.
  • the write command A11, write command B12, and host LU 13 are as already described with reference to FIG. 1A.
  • the storage apparatus in which the write contention mode # 1 is set writes the write data of the write command A11 to the LBA of the host LU 13 to 111100, discards the write command B12, and does not write the data of the write command B12.
  • FIG. 1D is a diagram showing an example of the relationship between writing and reading in the write competition mode # 1.
  • the write command A11 and the write command B12 are as already described with reference to FIG. 1B, and the write data of the write command A11 is M.
  • the storage apparatus in which the write contention mode # 1 is set holds M which is the write data in the LBA 111100 as indicated by the arrow 18.
  • the storage apparatus in which the write contention mode # 1 is set discards the write command B12 and transmits a check condition 17 to the host as a response to the write command B12.
  • the host does not transmit the write data N of the write command B12 to the storage device. Since the M written to the area with the LBA of 111100 is held, the read command (not shown), the command for reading the area with the LBA of the host LU 13 of 111100, and the host having the write command B12 When issued later, the storage apparatus in which the write contention mode # 1 is set outputs M held as indicated by the arrow 18 to the host as read data 13.
  • M that is the write data of the write command A11 can be read without being erased.
  • the condition of the write command to be discarded will be described later.
  • FIG. 2 is a diagram illustrating an example of a queue.
  • the queue 21 is a memory that temporarily stores a command issued by the host, receives a command from the host, and outputs the command to a part that actually performs writing and reading. If the queue 21 has information that allows the command and data to be identified, the queue 21 may store data in addition to the command.
  • the queue 21 may be composed of a plurality of individual queues according to the type of command. In this example, only the part for temporarily storing the write command is described, and the description for storing other commands and data is omitted.
  • the queue 21 shown in this example is a FIFO (First In First Out), and a command coming from the host is inputted from the upper part of FIG. 2, and the inputted command moves downward in the queue 21 with time. , It is output to the part that actually writes and reads. Therefore, the write command 22 existing at the end of the queue 21 is the last command input from the host, and the write command 25 existing at the head of the queue 21 is the oldest command input from the host in the queue 21. It is. Although a plurality of data in the queue 21 are expressed adjacent to each other, the data does not necessarily have to be arranged at adjacent addresses on the memory.
  • Each command includes LUN, LBA, and size. Each command includes other information, which is omitted in this description.
  • the queue 21 has a time stamp 26 for each command.
  • the time stamp 26 is the time when the corresponding command is stored at the tail end of the queue 21.
  • the storage apparatus can obtain the time difference between receiving the write command 22 and the write command 23 by calculating the difference between the time commands 26 of the write command 22 and the write command 23.
  • the time recorded as the time stamp 26 may be any start reference and unit time as long as the time difference when the plurality of commands are received can be obtained.
  • the queue 21 has a predetermined threshold corresponding to the time stamp 26.
  • This threshold value is a value set in advance from an input device (not shown), and may be stored outside the queue 21.
  • This threshold value may be, for example, a write command between read after write and an issue interval of the read command, and may be, for example, 500 microseconds.
  • the time difference between the time stamps 26 of the two write commands in the queue 21 is equal to or smaller than the threshold value, it is determined that the two write commands satisfy the first condition of competition. For this reason, for example, when the write command is stored at the tail end of the queue 21, it is determined whether there is a time stamp 26 that is equal to or less than the threshold with reference to the time stamp 26 at the tail of the queue 21. Good.
  • the write command 23 is the write command closest to the command 22 existing at the end of the queue 21.
  • the write command 23 and the write command 24 have already been determined when the write command 23 is stored at the end of the queue 21.
  • the write command 24 and the write command 25 have the write command 24 at the end of the queue 21. Has already been determined at the time of storage. If there are a plurality of write commands below the threshold, the time difference between these write commands has already been determined, so only the write command 23 closest to the tail of the queue 21 need be determined.
  • the virtual LU flag 27 is information indicating that data is stored in the virtual LU 14 described with reference to FIG. 1A.
  • the virtual LU flag 27 is set when it is determined that there is a conflict by determining whether or not they have the same LBA, which will be described later, after determination regarding the threshold value of the time stamp 26.
  • FIG. 3 is a diagram showing an example of contention for the same LBA write.
  • the LUN of each write command is the same.
  • the top LBA of the write data is 1000 and the number of blocks corresponding to the size of the write data is 1600
  • the write command E33 is the number of blocks having the top LBA of the write data of 2000 and the size of the write data.
  • 1000 as is clear from FIG. 3, two write data overlap in an area where the LBA is 2000 to 2600.
  • Such two write commands are determined to satisfy the second condition of competition.
  • the write command D32 and the write command E33 if a part of the two write data overlaps, it is determined that the conflicting second condition is satisfied.
  • the virtual LU flag 27 corresponding to two write commands satisfying both the first condition and the second condition described above is set.
  • the virtual LU flag 27 of the write command 23 is already set when the write command 22 and the write command 23 satisfy both conditions. Although it is set, it may be set redundantly together with the setting of the virtual LU flag 27 of the write command 22, or may not be set redundantly if already set.
  • the write data of the write command D32 and the write command E33 overlap is an area having an LBA of 2000 to 2600
  • the write data of the write command D32 needs to be managed separately in an area where the LBA is 1000 to 2000 and an area where the LBA is 2000 to 2600.
  • the LBA of the virtual LU 14 may be stored starting with ZZZ.
  • the write data in the virtual LU 14 In storing the write data in the virtual LU 14 in the write contention mode # 2, it is sufficient that the areas written by the respective write commands do not overlap. For example, when the LBA of the virtual LU 14 is assigned from ZZZ to ZZZ + 1600 for the write data of the write command D32, the LBA of the virtual LU 14 is assigned from ZZZ + 1600 to ZZZ + 2600 for the write data of the write command E33. Good. Even if it is determined that the first condition with the write command D32 or the write command E33 is satisfied, the write command C31 does not satisfy the second condition. Therefore, the write data of the write command C31 has the LBA of the host LU 13 from 500. 1000, the virtual LU flag 27 corresponding to the write command C31 is not set. Since all data is not written to the virtual LU 14, the capacity of the virtual LU 14 can be reduced.
  • FIG. 4 is a diagram showing an example of a list of write contention modes, and summarizes examples of operations of the storage apparatus according to the write contention mode.
  • the write contention mode may be set from an input device (not shown).
  • the setting of the write contention mode may be a setting for each port or for each interface, which will be described later with reference to FIG.
  • the write contention mode # 0 is a mode in which nothing is processed in the queue 21 and data is written to the host LU 13 by a write command according to the order output from the queue 21. Data written by the previous write command is overwritten by data written by the subsequent write command. Data is not written to the virtual LU 14, and the response of the check condition depends on the state of writing to the host LU 13. That is, if the data write to the host LU 13 succeeds, the check condition is not responded, and if the data write to the host LU 13 fails, the check condition is responded.
  • Each piece of write data is stored in the virtual LU 14. At this time, data is not written to the host LU 13 in the write conflict mode # 2. However, data may be written to the host LU 13.
  • the write data in which the LBA of the virtual LU 14 shown in FIG. 1A is stored in XXX may be stored in 111100 instead of the storage. .
  • the data stored in the host LU 13 is read to set a preset auxiliary mode. It is possible to lead according to the above.
  • the response of the check condition in the write contention mode # 1 depends on the state of writing to the virtual LU 14. Further, when an auxiliary mode is set and writing to the host LU 13 is possible, it may depend on the state of writing to the host LU 13.
  • FIG. 5 is a diagram showing an example of a storage system.
  • the storage device 51 receives the write command and write data from the hosts 54a and 54b via the line 55, holds the write data, receives the read command from the hosts 54a and 54b via the line 55, and holds the write data.
  • the data is transmitted as read data to the hosts 54a and 54b via the line 55.
  • the hosts 54a and 54b are, for example, general computers, and may be servers or clients. Each of the hosts 54a and 54b may have a plurality of virtual machines. When one host 54a has a plurality of virtual machines, the host 54a operates as a plurality of hosts. For this reason, the expression “host” in the following description may be a virtual machine.
  • the line 55 is, for example, a network and may be a fiber channel, but is preferably a line that can connect a plurality of hosts to one port or one interface of the storage apparatus 51, such as the host 54a and the host 54b. Further, it is preferable that the communication protocol includes information that can identify which of the host 54a and the host 54b is used for communication.
  • the channel control unit 512 is a control unit for communicating with the hosts 54 a and 54 b via the line 55, performs control related to the communication protocol of the line 55, and determines the communication protocol of the line 55 and the communication protocol in the storage device 51. Or convert.
  • One channel control unit 512 may have a plurality of ports to which a plurality of hosts are connected.
  • One storage apparatus 51 may have a plurality of channel control units 512.
  • the cache memory 513 is a general cache in the storage apparatus, and temporarily holds data with a high-speed memory.
  • the shared memory 514 is a memory shared by a plurality of MPPKs 511 when there are a plurality of information set in the storage apparatus 51 and a plurality of MPPKs 511 described later.
  • the cache memory 513 and the shared memory 514 are different memories, but may be a single memory.
  • each of the cache memory 513 and the shared memory 514 may be composed of a plurality of memories.
  • the cache memory 513 and the shared memory 514 do not exist, and some or all of data or information that should be held in the cache memory 513 and the shared memory 514 may be stored in the local memory 530 described later. .
  • the disk control unit 515 is communicably connected to the storage device 516 or the external storage device 56 built in the storage apparatus 51, and controls data writing and reading of each storage device.
  • the disk control unit 515 is connected to each storage device by, for example, SATA (Serial ATA), SAS (Serial Attached SCSI), or fiber channel.
  • SATA Serial ATA
  • SAS Serial Attached SCSI
  • fiber channel fiber channel.
  • Each of the storage device 516 and the external storage device 56 includes an HDD (Hard Disk Drive) and an SSD (Solid State Drive).
  • the storage device 516 includes a plurality of HDDs and SSDs.
  • the plurality of HDDs and SSDs constitute RAID (Redundant Arrays of Inexpensive Disks), and the storage device 516 includes one or more RAID groups (RAID_Grp).
  • RAID_Grp Redundant Arrays of Inexpensive Disks
  • an LU 517 may be set in a part of a plurality of HDDs 518 constituting one RAID group.
  • a plurality of LUs may be set for one RAID group, and a single LU may be set across a plurality of RAID groups.
  • the relationship between the HDD 518, the RAID group, and the LU 517 may be determined based on information preset in the shared memory 514.
  • Each of the host LU 13 and the virtual LU 14 is a part of a plurality of LUs such as the LU 517.
  • the external storage device 56 has the same structure as the storage device 516 even if the number of HDDs and SSDs is different.
  • a plurality of external storage devices 56 may be cascade-connected by an expander or the like. Alternatively, the external storage device 56 may not exist. Alternatively, another storage device may be connected instead of the external storage device 56.
  • the MPPK (MP Package) 511 receives commands issued by the hosts 54a and 54b via the line 55 and the channel control unit 512, and writes and reads data to and from the cache memory 513 according to the received commands, and performs disk control.
  • the unit 515 is instructed to write or read.
  • the MPPK 511 may use information set in the shared memory 514 for data writing or reading, and a plurality of MPPKs 511 may exist in one storage device.
  • An MP (Micro Processor) 520 is, for example, a general processor, and writes data to the local memory 530 or reads data stored in the local memory 530 according to a program stored in the local memory 530. Then, the channel controller 512, the cache memory 513, the shared memory 514, and the disk controller 515 communicate with each other to realize data writing and reading as the storage device 51.
  • the local memory 530 is a memory that is written or read by the MP 520.
  • the commands received from the hosts 54a and 54b are stored in the local memory 530 as the queue 21 having the data structure described with reference to FIG. 2, and a queue input program 531, a queue output program 532, a virtual LU table, which will be further described later. 533 is stored.
  • the virtual LU table 533 may be stored in the shared memory 514 and loaded from the shared memory 514 to the local memory 530.
  • the local memory 530 includes a program for interpreting whether the command is a write or a read, and a program for controlling the reading and writing of data according to the command output from the queue 21. Description is omitted.
  • the MPPK 511 is not limited to the MP 520 and the local memory 530, and a part thereof may be a dedicated circuit.
  • the queue 21 may be a dedicated memory and a dedicated circuit for operating as a queue, and a part of the operation of the MP 520 based on a program in the local memory 530 described below may be a dedicated circuit. . Further, all of them may be dedicated circuits. Furthermore, a dedicated circuit in which a program is burned into the MP520 as firmware may be used. In the following description, the operation described with reference to FIGS. 1A to 4 will be further described as the operation of the MPPK 511.
  • the cache memory 513 is a storage area in which the storage device 516 and the external storage device 56 are mapped, and is a transparent memory. Therefore, writing to and reading from the cache memory 513 is not the memory address of the cache memory 513 itself.
  • the LU or LBA of the storage device 516 or the external storage device 56 is used. For this reason, the storage apparatus 51 may not have the cache memory 513.
  • the data written to the cache memory 513 is destaged to each storage device at an appropriate timing, but the description of the destage operation is omitted.
  • the storage device 51 includes a display device and an input device (not shown), and displays information to the operator, and information may be input from the operator. Further, the storage device 51 may have a network interface unit (not shown), transmit information to be displayed to the operator to the network, and receive information input from the operator from the network.
  • information is described in terms of tables, but these pieces of information are relationships between information described using each figure, for example, information included in one column of the table is the same type of information.
  • the information included in one row may be expressed by a data structure other than a table as long as a part of the information serves as an index and a relationship such that information on the same row can be acquired is maintained.
  • FIG. 6 is a diagram illustrating an example of a virtual LU table.
  • the virtual LU table 533 is information for managing the relationship between the LBA of the host LU 13 and the LBA of the virtual LU 14 described with reference to FIG. 1A.
  • the virtual LU 14 only needs to have a capacity that can store only write data in which contention has occurred in the write contention mode # 2, and therefore allocates capacity from a so-called storage pool.
  • Pool # is a number for identifying the pool of the storage pool.
  • LBA is the LBA of the host LU 13.
  • the size is the size of the write data, and the unit is the number of blocks.
  • the competition flag is information corresponding to the arrows 15 and 16 described with reference to FIG. 1B.
  • the conflict flag is set for the write command, and the write data with the conflict flag set is referred to when reading. That is, the contention flag at the time of writing may match the contention flag at the time of reading.
  • APP_TAG of the SCSI T10DIF code may be used.
  • the value of the conflict flag will be described later with reference to FIG.
  • the virtual LU allocation area is information on an area where data is actually stored in the virtual LU 14.
  • the area in the virtual LU 14 does not need to be managed as an LU as long as it corresponds to the area in the host LU 13. For this reason, the virtual LU allocation area may be a RAID_Grp number for identifying a physical RAID group and an LBA in the RAID group.
  • the data stored in the LBA 111111 of the host LU 13 is divided into the area XXX of LBA of RAID_Grp1 including the virtual LU 14 and the area YYY of LBA. Represents the stored correspondence. These two areas are identified by the conflict flags AA and BB.
  • the virtual LU allocation area is not limited to such information. For example, when the pool and the RAID group correspond, the RAID group in the virtual LU allocation area may be omitted and Pool # may be used. An actual LU may be allocated to the virtual LU 14, and the virtual LU allocation area may include a LUN instead of a RAID group.
  • the delete flag or the unmap command in which the area is specified by the LBA of the host LU 13 may match the conflict flag, and the area in the virtual LU 14 corresponding to the area specified by the LBA of the host LU 13 may be released. Then, the released area may be returned to the storage pool. At this time, information regarding the area released from the virtual LU table 533 may be deleted.
  • one virtual LU table 533 may correspond to one host LU 13, and a plurality of virtual LU tables 533 may be stored in the local memory 530. In this configuration, as shown in FIG. 6, the virtual LU table 533 may not include the LUN of the host LU 13. When a plurality of host LUs 13 are required, one virtual LU table 533 may correspond to the plurality of host LUs 13. In this configuration, the virtual LU table 533 includes the LUN of the host LU 13, and the area in the specified host LU 13 may be specified by the combination of the LUN and the LBA.
  • the virtual LU table 533 may be included in a part of the mapping table.
  • the correspondence between the LBA in the host LU 13 and the LBA in the RAID group includes the information on the conflict flag and does not have to have an independent table as the virtual LU 14.
  • FIG. 7 is a diagram showing an example of a conflict flag table.
  • the host in the conflict flag table is information for identifying the host 54a and the host 54b, for example.
  • One host has one or more HBAs (Host Bus Adapters) not shown, and when the network 55 is a fiber channel, each fiber channel port of the HBA is defined by identification information called WWN (World Wide Name) Is done. In the example shown in FIG. 7, three different WWNs are defined for three different hosts.
  • HBAs Hyper Bus Adapters
  • the conflict flag in the conflict flag table corresponds to the conflict flag in the virtual LU table 533.
  • the H000 host and the H001 host have different contention flags for AA and BB, and therefore the areas allocated to the virtual LU 14 are different. Since both the hosts H000 and H002 have the same conflict flag AA, data is written to the same area allocated to the virtual LU 14 and the data is read. Further, in one host of H000, two different contention flags may be assigned, data may be written to different areas assigned to the virtual LU 14, and the data may be read. Thereby, in one host of H000, for example, when one application program is executed as two instances, writing to the same area of each instance can be separated.
  • FIG. 8 shows an example of the host registration table.
  • the host LU in the host registration table is information for identifying a plurality of host LUs 13.
  • the host LU 13 is represented by a name rather than a LUN as an expression for identifying the host LU 13.
  • the number of access hosts is the number of hosts that access one host LU 13 identified by the host LU.
  • the host in the host registration table is information for identifying each host in the number of access hosts, and corresponds to the host in the conflict flag table. This host registration table makes it possible to manage which host LU 13 is used by. Note that the conflict flag table and the host registration table described with reference to FIGS. 7 and 8 may or may not be stored in the local memory 530.
  • FIG. 9 is a diagram showing an example of a queue input processing flow.
  • the queue input processing flow is a processing flow of the queue input program 531, and the MP 520 of the MPPK 511 executes a processing flow to input a command to the queue 21.
  • the MP 520 determines whether a command has been received from the hosts 54a and 54b. For this purpose, the MP 520 may inquire of the channel control unit 512 about the reception of the command, or the channel control unit 512 may notify the MP 520 of the reception of the command by an interrupt or the like. If no command is received, that is, if step 901 is NO, step 901 is repeated until a command is received.
  • step 902 the MP 520 determines whether the received command is a write.
  • the determination as to whether the command is a write may be performed, for example, by determining whether the operation code of the SCSI CDB (Command Descriptor Block) is a specific value. If the command is not write, that is, if NO in step 902, the process proceeds to step 911, and the MP 520 executes processing for a command other than write.
  • description regarding processing of commands other than writing is omitted.
  • step 903 the process proceeds to step 903, and the MP 520 adds the received write command to the tail of the queue 21.
  • the MP 520 determines whether there is a write command in the queue 21 other than the write command added to the tail of the queue 21 in step 903. This determination may be based on a search in the queue 21, or is counted up each time a write command is added to the queue 21 and counted down every time a write command is output (discarded) from the queue 21. It may be the determination of the value of the counter to be performed.
  • step 904 If there is no write command other than the end, that is, if step 904 is NO, the write command does not exist in the queue below the threshold described with reference to FIG. 2, and it is only necessary to add the write command to the queue 21.
  • the MP 520 returns to Step 901. If there is a write command other than the last, that is, if YES in step 904, the process proceeds to step 905, where the MP 520 determines whether the time difference between the last write command and the write command before the last is less than or equal to the threshold value. To do.
  • This determination may be a determination of the value of the time stamp 26 of the found write command by searching for the write command from the tail of the queue 21, or the time of the last two write commands added to the queue 21.
  • the stamp 26 may be recorded, and the recorded value may be determined.
  • the time stamp 26 of the two time stamps 26 is calculated by always updating the time stamps 26 of the two write commands to be the last two each time a write command is added to the queue 21. It may be compared with a threshold value, and it becomes unnecessary to record the time strips 26 of all commands in the queue 21.
  • step 905 When the time difference between the last write command and the previous write command is larger than the threshold value, that is, when step 905 is NO, it is only necessary to add the write command to the queue 21, so the MP 520 returns to step 901. If the time difference between the last write command and the previous write command is equal to or smaller than the threshold value, that is, if step 905 is YES, the process proceeds to step 906 to determine whether there is an overlap in the write area of two write commands whose time difference is equal to or smaller than the threshold value. To determine whether or not the write area overlaps, first, the LUN included in the write command is used, and as described with reference to FIG. 3, the first LBA of the write area included in the write command and the size of the write data are used. .
  • the size is added to the first value of the first LBA included in one write command and the first LBA included in the other write command.
  • the second value is smaller than the first value, or the third value obtained by adding the size to the first LBA included in one of the write commands and included in the other write command. If the fourth value of the first LBA is larger than the third value, it is determined that there is no overlap in the write area, and if it is not determined that there is no overlap in the write area, It may be determined that there is an overlap.
  • step 906 If there is no overlap in the write area, that is, if step 906 is NO, the MP 520 returns to step 901. If there is an overlap in the write area, that is, if step 906 is YES, the process proceeds to step 907, and the MP 520 determines whether the write contention mode is # 0, # 1, or # 2. For this purpose, the read area may be read to determine the read value. When the write contention mode is # 2, the process proceeds to step 910, and the MP 520 displays the virtual LU flag 27 of the last write command and the virtual LU flag 27 of the write command that is determined to be equal to or less than the threshold value before the last write command. Set.
  • step 908 the MP 520 responds to the hosts 54a and 54b that issued the last write command with a check condition for the last write command.
  • the check condition is defined in the SCSI specification.
  • step 909 the MP 520 discards the last write command. Note that the discarding of the write command returns all information related to the write command to a state where the write command has not been received.
  • the MP 520 returns to Step 901.
  • the write contention mode is # 0
  • the operation of the MP 520 does not depend on the status of the write command in the queue 21, so whether the write contention mode is # 0 may be determined before step 907.
  • FIG. 10 is a diagram showing an example of a queue output processing flow.
  • the queue output processing flow is a processing flow of the queue output program 532, and the MP 520 of the MPPK 511 outputs a command from the queue 21 by executing the processing flow.
  • the MP 520 determines whether there is a command in the queue 21. If there is no command in the queue 21, that is, if step 931 is NO, step 931 is repeated until the command is added to the queue 21 in step 903 shown in FIG.
  • step 932 the MP 520 determines whether the head of the queue 21 is a write command. If it is not a write command, that is, if step 932 is NO, the process proceeds to step 941, where the MP 520 executes a command other than the write at the head of the queue 21, and discards the head command at step 942.
  • step 932 the MP 520 executes a command other than the write at the head of the queue 21, and discards the head command at step 942.
  • steps 932, 941, and 942 may be omitted.
  • step 932 If the head of the queue 21 is a write command, that is, if step 932 is YES, the process proceeds to step 933, and the MP 520 determines whether the virtual LU flag 27 corresponding to the head write command is set. If the virtual LU flag 27 is not set, that is, if step 933 is NO, the process proceeds to step 938, and the MP 520 executes the head write command. For example, in SCSI, information necessary for writing is included in the CDB included in the write command. Based on this information, the MP 520 controls to write data to the cache memory 513.
  • step 939 the MP 520 returns Good for the first write command to the hosts 54a and 54b that issued the first write command.
  • the MP 520 discards the first write command that has been executed.
  • the Good response in Step 939 is a response content for indicating that it is different from the check condition response in Step 908. If an error occurs in the execution of Step 938, a check condition may be returned. Further, discarding the head command in the queue 21 substantially means outputting a command from the queue 21.
  • step 934 the MP 520 allocates a new area from the storage pool to the virtual LU 14 and writes data to the new area. Execute the first write command. As described with reference to FIG. 3, the new area is allocated so as not to overlap with other allocated areas.
  • the newly allocated capacity may be the data size specified by the first write command.
  • step 935 the MP 520 sets the mapping information to the newly allocated area and the conflict flag in the virtual LU table 533. That is, the number of the storage pool assigned in step 934 is set to Pool # of the virtual LU table 533 shown in FIG. 6, the LBA of the host LU 13 included in the write command is set to LBA, and the write command to size is included The data size to be set is set, APP_TAG of the SCSI T10DIF code is set to the conflict flag, and the information of the area written in step 934 is set to the virtual LU allocation area.
  • step 936 the MP 520 returns Good for the first write command to the hosts 54a and 54b that issued the first write command.
  • the MP 520 discards the first write command that has been executed.
  • the Good response in step 936 is a response content indicating that it is different from the check condition response in step 908. If an error occurs in the execution of step 934, a check condition may be returned. Further, discarding the head command in the queue 21 substantially means outputting a command from the queue 21.
  • the write command has been described.
  • the read command may be processed in the queue in the same manner as described above.
  • the time intervals of the time stamps of a plurality of write commands in the queue are compared with the threshold value, but the path usage rate related to reading and writing of the cache memory 513 in the storage apparatus 51 is also set separately in advance. It may be determined whether or not the virtual LU flag is set by comparing with the threshold value.
  • the application program cannot be managed as in the case of read after write, and even if there is an access that is judged as an error when the written data does not match the read data, The read data can be matched, and frequent occurrence of errors can be suppressed. In addition, errors can be suppressed in this way, and the data written by one host can be read by the other host by a plurality of writes managed by a plurality of hosts.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 複数のホストに接続されるストレージ装置であって、前記ホストから受信したライトコマンドを、ライトコマンド格納のタイムスタンプと共に、格納するキューと、プロセッサとを有し、前記プロセッサは、第1の判定として、前記キュー内に格納された複数のライトコマンドの前記タイムスタンプに格納された時刻の差が所定の閾値時間以下であるかを判定し、第2の判定として、前記第1の判定において閾値時間以下であると判定した場合、前記閾値時間以下の複数のライトコマンドが同一のライト領域が含むかを判定し、前記第2の判定において同一のライト領域を含むと判定した場合、前記同一のライト領域を含むライトコマンドの処理を決定するライト競合モードに基づき、ライトコマンドを処理する。

Description

ストレージ装置およびその制御方法
 本発明はストレージ装置およびその制御方法に関するものである。
 データ管理コストの削減などを目的として、複数のホストからストレージ装置を共用することは既に広く行われており、このための技術として、複数のホストが同一のデータ格納領域へアクセスし、他のホストによりデータが破壊されることを防ぐ技術であるLUNセキュリティなどが広く知られている。
 また、このような技術として、例えば特許文献1には「ホスト装置から命令を受けると、…命令からホストアドレスを抽出し、…予め格納しておいたホスト装置とオフセット情報の対応表からホスト装置に対応するオフセット情報を生成し…、ホスト装置からの命令中に書かれたディスクの論理アドレスとオフセット情報とを足し合わせ、ディスクの実領域アドレスを生成する。このようにして、ホスト装置から送られた命令を基に、ホスト装置毎に対応したディスクの領域がアクセスされる」技術が開示されている。
特開平10-074128号公報
 特許文献1に開示された技術を用いれば、ホストそれぞれが異なるデータ格納領域へアクセスすることは可能となる。しかしながら、複数のホストが1つの処理を分担するなどの協同した動作をする場合、複数のホストが同一のデータ格納領域へアクセスする必要もあり、ストレージ装置において必ずしも十分なアクセス制御となっていない。
 そこで、本発明の目的は、複数のホストから同一のデータ格納領域への適切なアクセス制御を提供することにある。
 本発明に係る代表的なストレージ装置は、複数のホストに接続されるストレージ装置であって、前記ホストから受信したライトコマンドを、ライトコマンド格納のタイムスタンプと共に、格納するキューと、プロセッサとを有し、前記プロセッサは、第1の判定として、前記キュー内に格納された複数のライトコマンドの前記タイムスタンプに格納された時刻の差が所定の閾値時間以下であるかを判定し、第2の判定として、前記第1の判定において閾値時間以下であると判定した場合、前記閾値時間以下の複数のライトコマンドが同一のライト領域が含むかを判定し、前記第2の判定において同一のライト領域を含むと判定した場合、前記同一のライト領域を含むライトコマンドの処理を決定するライト競合モードに基づき、ライトコマンドを処理することを特徴とする。
 また、本発明はストレージ装置の制御方法としても把握される。
 本発明によれば、複数のホストから同一のデータ格納領域への適切なアクセス制御が可能となる。
ライト競合モード#2のライト先の例を示す図である。 ライト競合モード#2のライトとリードの関係の例を示す図である。 ライト競合モード#1のライト先の例を示す図である。 ライト競合モード#1のライトとリードの関係の例を示す図である。 キューの例を示す図である。 同一LBAのライトの競合の例を示す図である。 ライト競合モード一覧の例を示す図である。 ストレージシステムの例を示す図である。 仮想LUテーブルの例を示す図である。 競合フラグテーブルの例を示す図である。 ホスト登録テーブルの例を示す図である。 キュー入力の処理フローの例を示す図である。 キュー出力の処理フローの例を示す図である。
 以下、図面を用いて好ましい実施の形態を説明する。まず、前提として、ホストがストレージ装置にデータをライトする場合、ホストがライトコマンドをストレージ装置へ発行し、その後、ホストがストレージ装置へライトデータを出力する。また、ライトコマンドが、ライトであることを識別するための情報と、ライト先のLU(Logical Unit)の番号(LUN:LU Number)と、ライト先のLUの中の特定のアドレスであるLBA(Logical Block Address)であって、ライトデータの先頭のLBAと、ライトデータのサイズ(ブロック数)とを含むことは、SCSI(Small Computer System Interface)の仕様にも規定された当該技術分野の技術常識である。
 図1Aは、ライト競合モード#2のライト先の例を示す図である。この例では、2つのライトコマンド、すなわちライトコマンドA11とライトコマンドB12とが順次にストレージ装置へ到着する。この2つのライトコマンドに対し、従来のストレージ装置は、先ずライトコマンドA11のライトデータをホストLU13のLBAが111100の領域へライトし、次にライトコマンドB12のライトデータを同領域へオーバーライトする。
 一般的に、複数のホストが処理の分担などの協同した動作をする場合、各ホストのアプリケーションプログラムは各ホストのライトコマンドの発行を同期させて、ライトデータの整合性を保証するため、ライトコマンドA11によりライトされたデータがライトコマンドB12によりオーバーライトされたとしても、それは本来の動作である。しかし、アプリケーションプログラムより下位層のプログラムにおいて、データが正しくライトされたことを確認するため、リードアフタライトを行い、ライトデータとリードデータの一致を確認するものもある。このようなプログラムは、アプリケーションプログラムのライトコマンドの発行の同期とは関係なく動作するため、ライトコマンドA11によりライトされたデータがオーバーライトにより異なるデータに変更される。
 このため、ライトコマンドA11のライトデータは、ライトコマンドB12のライトデータにより消される。そして、ライトコマンドB12の後で、ホストLU13のLBAが111100の領域をホストがリードすると、ホストは、ライトコマンドB12のデータをリードできるが、ライトコマンドA11のデータをリードできず、エラーと判断されてしまう。
 図1Aの例のストレージ装置は、ホストがライト先と指定するホストLU13と、ホストLU13にライトされるべきデータを格納する仮想LU14を有する。ライト競合モード#2が設定されたストレージ装置は、ライトコマンドA11とライトコマンドB12とに同一のLBAが含まれることを検出し、ホストLU13へデータをライトする代わりに、ライトコマンドA11のデータを仮想LU14のLBAがXXXの領域へライトし、ライトコマンドB12のデータを仮想LU14のLBAがYYYの領域へライトする。ここで、XXXとYYYは異なるアドレスであることを示す。
 そして、ライト競合モード#2が設定されたストレージ装置は、ホストLU13のLBAが111100の領域が、仮想LU14のLBAがXXXの領域と、仮想LU14のLBAがYYYの領域に対応することを記録し、この対応の情報をリード時に利用可能にする。
 図1Bは、ライト競合モード#2のライトとリードの関係の例を示す図である。ライトコマンドA11とライトコマンドB12は、図1Aを用いて既に説明したとおりであり、それぞれのライトコマンドでライトされるデータはMとNである。ライト競合モード#2が設定されたストレージ装置は、ライトコマンドA11のライトデータであるMを矢印15に示すようにLBAがXXXの領域で保持し、ライトコマンドB12のライトデータであるNを矢印16に示すようにLBAがYYYの領域で保持する。
 図示を省略したリードコマンドであって、ホストLU13のLBAが111100のアドレスの領域をリードする2つのコマンドを、ホストがライトコマンドB12の後で発行すると、ライト競合モード#2が設定されたストレージ装置は、矢印15に示すように保持さていたMをリードデータ13としてホストへ出力し、矢印16に示すように保持されていたNをリードデータ14としてホストへ出力する。このように、ライトコマンドA11のライトデータであるMは、消されることなく、リードされることが可能となる。なお、ホストLU13の代わりに仮想LU14へライトする条件、ライトする領域などは、後でさらに説明する。
 図1Cは、ライト競合モード#1のライト先の例を示す図である。ライトコマンドA11とライトコマンドB12とホストLU13は、図1Aを用いて既に説明したとおりである。ライト競合モード#1が設定されたストレージ装置は、ライトコマンドA11のライトデータをホストLU13のLBAが111100へライトし、ライトコマンドB12を破棄して、ライトコマンドB12のデータをライトしない。
 図1Dは、ライト競合モード#1のライトとリードの関係の例を示す図である。ライトコマンドA11とライトコマンドB12は、図1Bを用いて既に説明したとおりであり、ライトコマンドA11のライトデータはMである。ライト競合モード#1が設定されたストレージ装置は、ホストからライトコマンドA11が発行されると、矢印18に示すようにLBAが111100にライトデータであるMを保持する。
 これに対して、ライト競合モード#1が設定されたストレージ装置は、ライトコマンドB12を破棄し、ライトコマンドB12に対する応答として、チェックコンディション17をホストへ送信する。ホストは、チェックコンディション17を受信すると、ライトコマンドB12のライトデータNをストレージ装置へ送信しない。そして、LBAが111100の領域へライトされたMは保持されるため、図示を省略したリードコマンドであって、ホストLU13のLBAが111100のアドレスの領域をリードするコマンドを、ホストがライトコマンドB12の後で発行すると、ライト競合モード#1が設定されたストレージ装置は、矢印18に示すように保持されていたMをリードデータ13としてホストへ出力する。
 このように、ライトコマンドA11のライトデータであるMは、消されることなく、リードされることが可能となる。なお、破棄されるライトコマンドの条件などは、後でされに説明する。
 図2は、キューの例を示す図である。キュー21は、ホストが発行したコマンドを一時的に格納するメモリであり、ホストからコマンドを受け付け、実際にライトとリードを行う部位へコマンドを出力する。キュー21の中でコマンドとデータとが識別可能な情報を有する場合、キュー21はコマンド以外にデータを格納してもよい。また、キュー21はコマンドの種類に応じて個別の複数のキューから構成されてもよい。この例での説明は、ライトコマンドを一時的に格納する部分のみとし、他のコマンドとデータの格納に関しての説明は省略する。
 この例に示すキュー21は、FIFO(First In First Out)であり、ホストから来たコマンドが図2の上方からが入力され、入力されたコマンドは時間と共にキュー21の中を下方へ移動して、実際にライトとリードを行う部位へ出力される。このため、キュー21の最後尾に存在するライトコマンド22がホストから入力された最後のコマンドであり、キュー21の先頭に存在するライトコマンド25がキュー21の中でホストから入力された最も古いコマンドである。なお、キュー21内の複数のデータを隣接して表現するが、メモリ上で必ずしも隣接したアドレスにデータが配置される必要はない。
 各コマンドはLUNとLBAとサイズを含む。各コマンドは他の情報も含むが、この説明では省略する。キュー21は、各コマンドに対してタイムスタンプ26を有する。タイムスタンプ26は、対応するコマンドがキュー21の最後尾に格納された時刻である。例えば、ライトコマンド22とライトコマンド23のタイムスタップ26の差分を算出することにより、ストレージ装置は、ライトコマンド22とライトコマンド23とを受け取った時間差を得ることができる。ここで、タイムスタンプ26として記録される時刻は、複数のコマンドを受け取った時間差を得ることのできる時刻であれば、どのような開始基準と単位の時刻であってもよい。
 キュー21はタイムスタンプ26に対応して所定の閾値を有する。この閾値は、図示を省略した入力装置から予め設定される値であって、キュー21の外に格納されてもよい。この閾値は、例えばリードアフタライトのライトコマンドとリードコマンドの発行間隔でもよく、例えば500マイクロ秒であってもよい。キュー21の中の2つのライトコマンドのタイムスタンプ26の時間差が閾値以下の場合、その2つのライトコマンドは競合の第1の条件を満たすと判定される。このために、例えば、ライトコマンドがキュー21の最後尾に格納された時点で、キュー21の最後尾のタイムスタンプ26を基準として、閾値以下となるタイムスタンプ26が存在するかが判定されてもよい。
 図2においては、ライトコマンド23のタイムスタンプ26が閾値以下であるので、ライトコマンド22とライトコマンド23とは競合の第1の条件を満たすと判定される。ライトコマンド23は、キュー21の最後尾に存在するコマンド22に最も近いライトコマンドである。ライトコマンド23とライトコマンド24とは、ライトコマンド23がキュー21の最後尾に格納された時点で既に判定されており、ライトコマンド24とライトコマンド25とは、ライトコマンド24がキュー21の最後尾に格納された時点で既に判定されている。閾値以下に複数のライトコマンドが存在する場合、それらのライトコマンド間の時間差は既に判定されているので、キュー21の最後尾に最も近いライトコマンド23のみが判定の対象となればよい。
 仮想LUフラグ27は、図1Aを用いて説明した仮想LU14へデータが格納されることを示す情報である。タイムスタンプ26の閾値に関する判定の後の、次に説明する同一LBAを有するかの判定により、競合していると判定された場合に、仮想LUフラグ27が設定される。
 図3は、同一LBAのライトの競合の例を示す図である。この例では、各ライトコマンドのLUNは同一であるとする。ライトコマンドD32は、ライトデータの先頭のLBAが1000、ライトデータのサイズであるブロック数が1600であり、ライトコマンドE33は、ライトデータの先頭のLBAが2000、ライトデータのサイズであるブロック数が1000である場合、図3からも明らかなように、LBAが2000から2600の領域において、2つのライトデータが重複する。このような2つのライトコマンドは競合の第2の条件を満たすと判定される。ここで、ライトコマンドD32とライトコマンドE33のように、2つのライトデータの一部が重複すれば、競合の第2の条件が満たされると判定される。
 ライト競合モード#2において、以上で説明した第1の条件と第2の条件の両方が満たされた2つのライトコマンドに対応する仮想LUフラグ27が設定される。図2に示したライトコマンド23とライトコマンド24とが両方の条件を満たした場合、ライトコマンド22とライトコマンド23とが両方の条件を満たした時点で、ライトコマンド23の仮想LUフラグ27は既に設定されているが、ライトコマンド22の仮想LUフラグ27の設定と共に重複して設定されてもよいし、既に設定されている場合は、重複して設定されなくてもよい。
 図3に示したように、ライトコマンドD32とライトコマンドE33のライトデータの重複する領域は、LBAが2000から2600の領域であるので、ライト競合モード#2では、この領域のみが仮想LU14内の異なる領域に格納されてもよいが、例えばライトコマンドD32のライトデータをLBAが1000から2000の領域とLBAが2000から2600の領域とに分けて管理する必要があるため、LBAが1000から2600を1つのデータとし、仮想LU14のLBAがZZZを先頭にして格納されてもよい。ライトデータを1つとして管理することにより、ライトコマンドD32の仮想LUフラグ27は単に仮想LU14へ格納されるべきであるという情報のみで済む。
 ライト競合モード#2における仮想LU14へのライトデータの格納は、各ライトコマンドでライトされる領域が重複しなければよい。例えば、ライトコマンドD32のライトデータのために、仮想LU14のLBAがZZZからZZZ+1600まで割り当てられた場合、ライトコマンドE33のライトデータのために、仮想LU14のLBAがZZZ+1600からZZZ+2600までが割り当てられてもよい。ライトコマンドC31は、ライトコマンドD32あるいはライトコマンドE33と第1の条件が満たされると判定されても、第2の条件は満たされないため、ライトコマンドC31のライトデータは、ホストLU13のLBAが500から1000に格納され、ライトコマンドC31に対応する仮想LUフラグ27は設定されない。すべてのデータが仮想LU14へライトされないため、仮想LU14の容量を少なく抑えることができる。
 図4は、ライト競合モードの一覧の例を示す図であり、ライト競合モードに応じたストレージ装置の動作の例をまとめたものである。ライト競合モードは、図示を省略した入力装置から設定されてもよい。また、ライト競合モードの設定は、図5を用いて後で説明する1つのポート毎あるいは1つのインターフェイス毎の設定であってもよい。
 ライト競合モード#0は、キュー21の中では何も処理せず、キュー21から出力された順番にしたがってライトコマンドによるデータのライトをホストLU13へ行うモードである。先のライトコマンドによりライトされたデータは、後のライトコマンドによりライトされるデータによりオーバーライトされる。仮想LU14へはデータがライトされず、チェックコンディションの応答は、ホストLU13へのライトの状態に依存する。すなわち、ホストLU13へのデータのライトが成功すれば、チェックコンディションは応答されず、ホストLU13へのデータのライトが失敗すれば、チェックコンディションが応答される。
 ライト競合モード#1は、既に説明した第1の条件と第2の条件の両方が満たされる2つのライトコマンドにおいて、図1C、1Dを用いて説明したように、先のライトコマンドによりホストLU13へデータがライトされ、後のライトコマンドに対してチェックコンディションが応答されて、データがライトされないモードである。このため、チェックコンディションが必ず応答され、仮想LU14へはデータがライトされない。
 ライト競合モード#2は、既に説明した第1の条件と第2の条件の両方が満たされる2つのライトコマンドにおいて、図1A、1B、3を用いて説明したように、2つのライトコマンドの2つのライトデータは仮想LU14へそれぞれ格納される。この際、ライト競合モード#2では、ホストLU13へデータがライトされない。ただし、ホストLU13へデータがライト可能としてもよい。
 例えば、予め設定された補助的なモードにしたがって、図1Aに示した仮想LU14のLBAがXXXへ格納されるライトデータは、その格納の代わりに、ホストLU13のLBAが111100へ格納されてもよい。これにより、LBAがXXXの領域を割り当てる必要がなくなる。また、仮想LU14に格納された複数のデータの中のどのデータがリードされるべきかが判定できない場合に、ホストLU13に格納されたデータがリードされることにより、予め設定された補助的なモードにしたがったリードが可能となる。
 ライト競合モード#1でのチェックコンディションの応答は、仮想LU14へのライトの状態に依存する。また、補助的なモードが設定され、ホストLU13へのライトが可能な場合は、ホストLU13へのライトの状態に依存してもよい。
 図5は、ストレージシステムの例を示す図である。ストレージ装置51は、ホスト54a、54bからのライトコマンドとライトデータを回線55経由で受け取って、ライトデータを保持し、ホスト54a、54bからリードコマンドを回線55経由で受け取って、保持しているライトデータをリードデータとして回線55経由でホスト54a、54bへ送信する。
 ホスト54a、54bは、例えば一般的なコンピュータであって、サーバやクライアントであってもよい。また、ホスト54a、54bはそれぞれ複数の仮想マシンを有してもよい。1つのホスト54aが複数の仮想マシンを有する場合、ホスト54aは複数のホストであるように動作する。このため、以下の説明におけるホストという表現は仮想マシンであってもよい。
 回線55は、例えばネットワークであって、ファイバチャネルであってもよいが、ホスト54aとホスト54bのように複数のホストをストレージ装置51の1つのポートあるいは1つのインターフェイスへ接続できる回線が好ましい。また、ホスト54aとホスト54bのいずれのホストとの通信であるかを識別できる情報が、通信プロトコルの中に含まれる回線が好ましい。
 チャネル制御部512は、回線55経由でホスト54a、54bと通信するための制御部であり、回線55の通信プロトコルに関する制御を行ったり、回線55の通信プロトコルとストレージ装置51内の通信プロトコルとの変換を行ったりする。1つのチャネル制御部512は、それぞれに複数のホストが接続されるポートを複数有してもよい。また、1つのストレージ装置51は、チャネル制御部512を複数有してもよい。
 キャッシュメモリ513はストレージ装置において一般的なキャッシュであって、高速なメモリによりデータを一時的に保持する。共用メモリ514は、ストレージ装置51の設定される情報や、後で説明するMPPK511が複数存在する場合に、複数のMPPK511により共用されるメモリである。図5の例では、キャッシュメモリ513と共用メモリ514とは別のメモリであるが、1つのメモリであってもよい。あるいは、キャッシュメモリ513と共用メモリ514のそれぞれが複数のメモリから構成されてもよい。あるいは、キャッシュメモリ513と共用メモリ514は存在せず、キャッシュメモリ513と共用メモリ514に保持されるはずのデータまたは情報の一部または全てが、後で説明するローカルメモリ530に格納されてもよい。
 ディスク制御部515は、ストレージ装置51に内蔵されたストレージデバイス516あるいは外部ストレージデバイス56と通信可能に接続され、各ストレージデバイスのデータのライトとリードを制御する。ディスク制御部515は、例えばSATA(Serial ATA)やSAS(Serial Attached SCSI)やファイバチャネルにより、各ストレージデバイスと接続される。ストレージデバイス516と外部ストレージデバイス56のそれぞれは、HDD(Hard Disk Drive)やSSD(Solid State Drive)から構成される。
 ストレージデバイス516は、複数のHDDやSSDを含む。複数のHDDやSSDは、RAID(Redundant Arrays of Inexpensive Disks)を構成し、ストレージデバイス516は1つまたは複数のRAIDグループ(RAID_Grp)を含む。例えば、1つのRAIDグループを構成する複数のHDD518の一部にLU517が設定されてもよい。1つのRAIDグループに複数のLUが設定されてもよく、複数のRAIDグループに跨って1つのLUが設定されてもよい。HDD518とRAIDグループとLU517の関係は、共用メモリ514に予め設定された情報に基づき決定されてもよい。ホストLU13と仮想LU14のそれぞれは、LU517のような複数のLUの一部である。
 外部ストレージデバイス56は、HDDやSSDの個数が異なるとしても、ストレージデバイス516と同じ構造である。また、複数の外部ストレージデバイス56がエクスパンダなどにより、カスケード接続されてもよい。あるいは、外部ストレージデバイス56は存在しなくてもよい。あるいは、外部ストレージデバイス56の代わりに、他のストレージ装置が接続されてもよい。
 MPPK(MP Package)511は、ホスト54a、54bが発行したコマンドを、回線55とチャネル制御部512を介して受け取り、受け取ったコマンドに応じてキャッシュメモリ513とデータをライトやリードしたり、ディスク制御部515へライトやリードを指示したりする。MPPK511は、データのライトやリードのために、共用メモリ514に設定された情報を使用してもよく、1つのストレージ装置の中にMPPK511は複数存在してもよい。
 MP(Micro Processor)520は、例えば一般的なプロセッサであって、ローカルメモリ530に格納されたプログラムにしたがって、ローカルメモリ530へデータをライトしたり、ローカルメモリ530に格納されたデータをリードしたりして、チャネル制御部512とキャッシュメモリ513と共用メモリ514とディスク制御装置515と通信し、ストレージ装置51としてのデータのライトとリードを実現する。
 ローカルメモリ530は、MP520によりライトやリードされるメモリである。ローカルメモリ530には、ホスト54a、54bから受け取ったコマンドが、図2を用いて説明したデータ構造のキュー21として格納され、後でさらに説明するキュー入力プログラム531、キュー出力プログラム532、仮想LUテーブル533が格納される。ここで、仮想LUテーブル533は共用メモリ514に格納され、共用メモリ514からローカルメモリ530へロードされてもよい。なお、ローカルメモリ530にはコマンドがライトであるかリードであるかを解釈するプログラムや、キュー21から出力されたコマンドに応じて、データのリードやライトを制御するプログラムも含まれるが、ここでは説明を省略する。
 なお、MPPK511はMP520とローカルメモリ530に限定されるものではなく、その一部が専用の回路であってもよい。例えばキュー21は専用のメモリとキューとして動作するための専用の回路であってもよく、以降で説明するローカルメモリ530内のプログラムに基づくMP520の動作の一部が専用の回路であってもよい。また、その全部が専用の回路であってもよい。さらに、MP520の中にプログラムがファームウェアとして焼き込まれた専用の回路であってもよい。そして、以下の説明では、図1A~4を用いて説明した動作を、MPPK511の動作として、さらに説明する。
 なお、キャッシュメモリ513は、ストレージデバイス516や外部ストレージデバイス56をマッピングした記憶領域であり、透過的なメモリであるので、キャッシュメモリ513へのライトやリードは、キャッシュメモリ513自体のメモリアドレスではなく、ストレージデバイス516や外部ストレージデバイス56のLUやLBAを使用する。このため、ストレージ装置51はキャッシュメモリ513を有しなくてもよい。また、キャッシュメモリ513にライトされたデータは、各ストレージデバイスへ適切なタイミングでデステージされるが、デステージの動作の説明は省略する。
 ストレージ装置51は図示を省略した表示装置と入力装置を有し、操作者へ情報を表示すると共に、操作者から情報が入力されてもよい。また、ストレージ装置51は図示を省略したネットワークインターフェイス部を有し、操作者へ表示する情報をネットワークへ送信すると共に、操作者から入力された情報をネットワークから受信してもよい。
 以下の説明では、テーブルという表現で情報を説明するが、これらの情報は各図を用いて説明する情報間の関係、例えばテーブルの1つの列に含まれる情報は同じ種類の情報であり、テーブルの1つの行に含まれる情報はその一部の情報がインデックスとなって、同一行の情報を取得できるなどの関係が維持されれば、テーブル以外のデータ構造で表現されてもよい。
 図6は、仮想LUテーブルの例を示す図である。仮想LUテーブル533は、図1Aを用いて説明したホストLU13のLBAと仮想LU14のLBAとの関係を管理するための情報である。仮想LU14は、ライト競合モード#2において競合の発生したライトデータのみを格納できる容量があればよいので、いわゆるストレージプールから容量を割り当てる。Pool#はストレージプールのプールを識別するための番号である。LBAは、ホストLU13のLBAである。サイズはライトデータのサイズであって、ブロック数を単位とする。
 競合フラグは、図1Bを用いて説明した矢印15と矢印16に対応する情報である。競合フラグは、ライトコマンドに対して設定され、競合フラグの設定されたライトデータをリード時に参照される。すなわち、ライト時の競合フラグとリード時の競合フラグが一致するようにしてもよい。競合フラグの値を格納するために、SCSIのT10DIFコードのAPP_TAGが使用されてもよい。競合フラグの値のついては、図7を用いて後で説明する。仮想LU割当て領域は、仮想LU14の実際にデータが格納される領域の情報である。仮想LU14における領域は、ホストLU13における領域と対応がつけば、LUとして管理される必要はない。このため、仮想LU割当て領域は、物理的なRAIDグループを識別するRAID_Grp番号と、そのRAIDグループ内のLBAであってもよい。
 図6に示した例では、図1Aを用いて説明したように、ホストLU13のLBAが111100に格納されるデータが、仮想LU14を含むRAID_Grp1のLBAがXXXの領域とLBAがYYYの領域とに格納される対応関係を表す。そして、この2つの領域は競合フラグのAAとBBにより識別される。なお、仮想LU割当て領域は、このような情報に限定されるものではない。例えば、プールとRAIDグループとが対応している場合は、仮想LU割当て領域のRAIDグループを省略し、Pool#を使用してもよい。仮想LU14に実際のLUを割当てて、仮想LU割当て領域は、RAIDグループの代わりにLUNを含んでもよい。
 また、ホストLU13のLBAにより領域を指定したデリートコマンドやアンマップコマンドにより、競合フラグが一致して、ホストLU13のLBAにより指定された領域に対応する仮想LU14内の領域が解放されてもよい。そして、解放された領域はストレージプールへ戻されてもよい。この時に、仮想LUテーブル533から解放された領域に関する情報が削除されてもよい。
 複数のホストLU13が必要な場合、1つのホストLU13に1つの仮想LUテーブル533が対応し、複数の仮想LUテーブル533がローカルメモリ530に格納されてもよい。この構成では、図6に示すように、仮想LUテーブル533はホストLU13のLUNを含まなくてもよい。また、複数のホストLU13が必要な場合、複数のホストLU13に1つの仮想LUテーブル533が対応してもよい。この構成では、仮想LUテーブル533は、ホストLU13のLUNを含み、そのLUNとLBAとの組合せにより、指定されたホストLU13内の領域が特定されてもよい。
 ストレージ装置51において、ホストLU13も物理的なRAIDグループへマッピングされるため、そのマッピングのテーブルの一部に仮想LUテーブル533は含まれてもよい。例えば、ホストLU13内のLBAとRAIDグループ内のLBAとの対応関係に、競合フラグの情報が含まれて、仮想LU14としての独立したテーブルを有しなくてもよい。
 図7は、競合フラグテーブルの例を示す図である。競合フラグテーブルのホストは、例えばホスト54aとホスト54bとを識別する情報である。1つのホストは、図示を省略した1つまたは複数のHBA(Host Bus Adapter)を有し、ネットワーク55がファイバチャネルの場合、HBAの各ファイバチャネルポートはWWN(World Wide Name)という識別情報が規定される。図7に示した例では、3つの異なるホストに3つの異なるWWNがそれぞれ規定されている。
 競合フラグテーブルの競合フラグは、仮想LUテーブル533の競合フラグに対応するものである。図7に示した例では、H000のホストとH001のホストとは、競合フラグがAAとBBで異なるため、仮想LU14に割当てられた領域が異なる。また、H000とH002の両方のホストは、同じ競合フラグであるAAであるため、仮想LU14に割当てられた同一の領域へデータがライトされ、そのデータがリードされる。また、H000の1つのホストにおいて、2つの異なる競合フラグが割り当てられて、仮想LU14に割当てられた異なる領域へデータがライトされ、そのデータがリードされてもよい。これにより、H000の1つのホストにおいて、例えば1つのアプリケーションプログラムが2つのインスタンスとして実行された場合に、各インスタンスの同一領域へのライトが分離可能となる。
 図8は、ホスト登録テーブルの例を示す図である。ホスト登録テーブルのホストLUは、複数のホストLU13を識別するための情報である。この例では、ホストLU13を識別する表現としてLUNではなく名称で表現している。アクセスホスト数は、ホストLUで識別される1つのホストLU13へアクセスするホストの数である。ホスト登録テーブルのホストは、アクセスホスト数の各ホストを識別する情報であり、競合フラグテーブルのホストに対応する。このホスト登録テーブルにより、各ホストLU13はどのホストにより使用されるかが管理可能となる。なお、図7、8を用いて説明した競合フラグテーブルとホスト登録テーブルは、ローカルメモリ530に格納されてもよいし、格納されなくてもよい。
 図9は、キュー入力の処理フローの例を示す図である。キュー入力の処理フローは、キュー入力プログラム531の処理フローであって、MPPK511のMP520が処理フローを実行することにより、キュー21へコマンドを入力する。まず、ステップ901でMP520は、ホスト54a、54bからコマンドを受信したかを判定する。このために、MP520がチャネル制御部512へコマンドの受信を問い合わせてもよいし、チャネル制御部512が割り込みなどによりMP520へコマンドの受信を通知してもよい。コマンドを受信していない場合すなわちステップ901がNOの場合は、コマンドを受信するまでステップ901を繰り返す。
 コマンドを受信した場合すなわちステップ901がYESの場合、ステップ902へ進み、MP520は、受信したコマンドがライトであるかを判定する。コマンドがライトであるかの判定は、例えばSCSIのCDB(Command Descriptor Block)のオペレーションコードが特定の値であるかを判定してもよい。コマンドがライトでない場合すなわちステップ902のNOの場合、ステップ911へ進み、MP520はライト以外のコマンドの処理を実行する。ここでは、ライト以外のコマンドの処理に関する説明は省略する。
 コマンドがライトの場合すなわちステップ902がYESの場合、ステップ903へ進み、MP520は、受信したライトコマンドをキュー21の最後尾へ追加する。そして、ステップ904でMP520は、ステップ903でキュー21の最後尾に追加されたライトコマンド以外のライトコマンドが、キュー21内に有るかを判定する。この判定は、キュー21の中の検索による判定であってもよいし、キュー21へライトコマンドが追加されるたびにカウントアップして、キュー21からライトコマンドが出力(破棄)されるたびにカウントダウンするカウンタの値の判定であってもよい。
 最後尾以外にライトコマンドが無い場合すなわちステップ904がNOの場合、図2を用いて説明した閾値以下にライトコマンドはキュー内に存在せず、キュー21へライトコマンドを追加するだけでよいので、MP520はステップ901へ戻る。最後尾以外にライトコマンドが有る場合すなわちステップ904でYESの場合、ステップ905へ進み、MP520は、最後尾のライトコマンドとその最後尾より前のライトコマンドとの時間差が閾値以下であるかを判定する。
 この判定は、キュー21の最後尾からライトコマンドを検索して、見つかったライトコマンドのタイムスタンプ26の値の判定であってもよいし、キュー21へ追加された最後の2つのライトコマンドのタイムスタンプ26を記録し、その記録された値の判定であってもよい。後者の場合、2つのライトコマンドのタイムスタンプ26は、ライトコマンドがキュー21へ追加されるたび、常に最後の2つとなるように更新することで、その2つのタイムスタンプ26の時間差を算出し、閾値と比較してもよく、キュー21内にすべてのコマンドのタイムスタップ26を記録する必要がなくなる。
 最後尾と前のライトコマンドとの時間差が閾値より大きい場合すなわちステップ905がNOの場合、キュー21へライトコマンドを追加するだけでよいので、MP520はステップ901へ戻る。最後尾と前のライトコマンドとの時間差が閾値以下の場合すなわちステップ905がYESの場合、ステップ906へ進み、時間差が閾値以下の2つのライトコマンドのライト領域に重複が有るかを判定する。ライト領域の重複の判定は、先ずライトコマンドに含まれるLUNを使用し、そして、図3を用いて説明したように、ライトコマンドに含まれるライト領域の先頭のLBAとライトデータのサイズを使用する。
 例えば、2つのライトコマンドに含まれるLUNが一致することを判定した後、一方のライトコマンドに含まれる先頭のLBAの第1の値と、他方のライトコマンドに含まれる先頭のLBAにサイズを加算した第2の値とで、第1の値より第2の値が小さい場合、あるいは一方のライトコマンドに含まれる先頭のLBAにサイズを加算した第3の値と、他方のライトコマンドに含まれる先頭のLBAの第4の値とで、第3の値より第4の値が大きい場合は、ライト領域に重複が無いと判定し、ライト領域に重複が無いと判定しない場合は、ライト領域に重複が有ると判定してもよい。
 ライト領域に重複が無い場合すなわちステップ906がNOの場合、MP520はステップ901へ戻る。ライト領域に重複が有る場合すなわちステップ906がYESの場合、ステップ907へ進み、MP520は、ライト競合モードが#0か#1か#2かを判定する。このために、ライト競合モードが格納される記憶領域をリードして、リードした値を判定してもよい。ライト競合モードが#2の場合、ステップ910へ進み、MP520は、最後尾のライトコマンドの仮想LUフラグ27と、最後尾の前であって閾値以下と判定されたライトコマンドの仮想LUフラグ27を設定する。
 ライト競合モードが#1の場合、ステップ908へ進み、MP520は、最後尾のライトコマンドを発行したホスト54a、54bへ、最後尾のライトコマンドに対するチェックコンディションを応答する。チェックコンディションはSCSIの仕様に規定されている。ステップ909でMP520は、最後尾のライトコマンドを破棄する。なお、ライトコマンドの破棄は、そのライトコマンドに関するすべての情報を、そのライトコマンドの受信のなかった状態に戻す。
 ライト競合モードが#0の場合、MP520はステップ901へ戻る。ライト競合モードが#0の場合は、キュー21内のライトコマンドの状況にMP520の動作が依存しないため、ライト競合モードが#0であるかは、ステップ907より前で判定されてもよい。
 図10は、キュー出力の処理フローの例を示す図である。キュー出力の処理フローは、キュー出力プログラム532の処理フローであって、MPPK511のMP520が処理フローを実行することにより、キュー21からコマンドを出力する。まず、ステップ931でMP520はキュー21にコマンドが有るかを判定する。キュー21にコマンドが無い場合すなわちステップ931がNOの場合は、図9に示したステップ903でコマンドがキュー21へ追加されるまで、ステップ931を繰り返す。
 キュー21にコマンドが有る場合すなわちステップ931がYESの場合、ステップ932へ進み、MP520は、キュー21の先頭がライトコマンドかを判定する。ライトコマンドでない場合すなわちステップ932がNOの場合、ステップ941へ進み、MP520は、キュー21の先頭にあるライト以外のコマンドを実行し、ステップ942で先頭のコマンドを破棄する。ここでは、ライト以外のコマンドの実行に関する説明は省略する。また、キュー21がライトコマンド専用のキューである場合は、ステップ932、941、942を省略してもよい。
 キュー21の先頭がライトコマンドの場合すなわちステップ932がYESの場合、ステップ933へ進み、MP520は、先頭のライトコマンドに対応する仮想LUフラグ27が設定されているかを判定する。仮想LUフラグ27が設定されていない場合すなわちステップ933がNOの場合、ステップ938へ進み、MP520は、先頭のライトコマンドを実行する。例えばSCSIでは、ライトコマンドに含まれるCDBにライトに必要な情報が含まれているため、その情報に基づいて、MP520はキャッシュメモリ513へデータをライトするように制御する。
 ステップ939でMP520は、先頭のライトコマンドを発行したホスト54a、54bへ、先頭のライトコマンドに対するGoodを応答する。ステップ940でMP520は、実行の終了した先頭のライトコマンドを破棄する。なお、ステップ939におけるGoodの応答は、ステップ908におけるチェックコンディションの応答と異なることを示すための応答内容であり、ステップ938の実行においてエラーが発生した場合は、チェックコンディションを応答してもよい。また、キュー21の先頭のコマンドの破棄は、実質的にキュー21からのコマンドの出力を意味する。
 仮想LUフラグが設定されていた場合すなわちステップ933がYESの場合、ステップ934へ進み、MP520は、ストレージプールから仮想LU14に新規の領域を割り当てて、その新規の領域へデータをライトするように、先頭のライトコマンドを実行する。新規の領域の割当ては、図3を用いて説明したように、他の割当て領域と重複しないように割り当てる。新規に割当てる容量は、先頭のライトコマンドで指定されるデータのサイズであってもよい。
 ステップ935でMP520は、新規に割当てた領域へのマッピング情報と競合フラグを仮想LUテーブル533へ設定する。すなわち、図6に示した仮想LUテーブル533のPool#へステップ934で割り当てられたストレージプールの番号を設定し、LBAへライトコマンドに含まれるホストLU13のLBAを設定し、サイズへライトコマンドに含まれるデータサイズを設定し、競合フラグへSCSIのT10DIFコードのAPP_TAGを設定し、仮想LU割当て領域へステップ934でライトされた領域の情報を設定する。
 ステップ936でMP520は、先頭のライトコマンドを発行したホスト54a、54bへ、先頭のライトコマンドに対するGoodを応答する。ステップ937でMP520は、実行の終了した先頭のライトコマンドを破棄する。なお、ステップ936におけるGoodの応答は、ステップ908におけるチェックコンディションの応答と異なることを示すための応答内容であり、ステップ934の実行においてエラーが発生した場合は、チェックコンディションを応答してもよい。また、キュー21の先頭のコマンドの破棄は、実質的にキュー21からのコマンドの出力を意味する。
 以上の説明ではライトコマンドに関して説明したが、リードコマンドに関してもキュー内で、以上の説明と同じ処理を行ってもよい。また、以上の説明ではキュー内での複数のライトコマンドのタイムスタンプの時刻の間隔と閾値とを比較したが、ストレージ装置51内のキャッシュメモリ513のリードとライトに関するパスの使用率も予め別に設定された閾値と比較して、仮想LUフラグを設定するか否かを判定してもよい。
 以上で説明したように、リードアフタライトのように、アプリケーションプルグラムは管理できず、ライトしたデータとリードしたデータとが一致しない場合にエラーと判断されてしまうアクセスがあっても、ライトしたデータとリードしたデータとを一致させることができ、エラーの頻発を抑止できる。また、このようにエラーを抑止できると共に、複数のホストにより管理された複数のライトにより、一方のホストがライトしたデータを他方のホストがリードすることも可能になる。
 さらに、ライト競合モードにしたがって、リードアフタライトのようなアクセスが重なった場合、先頭のライトがライト対象の領域をリザーブしたように後続のライトをリジェクトできると共に、複数のホストにより管理された複数のライトにより、一方のホストがライトしたデータを他方のホストがリードすることも可能になる。
13  ホストLU
14  仮想LU
21  キュー
51  ストレージ装置
531 キュー入力プログラム
532 キュー出力プログラム
533 仮想LUテーブル

Claims (12)

  1.  複数のホストに接続されるストレージ装置であって、
     前記ホストから受信したライトコマンドを、ライトコマンド格納のタイムスタンプと共に、格納するキューと、
     プロセッサと
    を有し、
     前記プロセッサは、
     第1の判定として、前記キュー内に格納された複数のライトコマンドの前記タイムスタンプに格納された時刻の差が所定の閾値時間以下であるかを判定し、
     第2の判定として、前記第1の判定において閾値時間以下であると判定した場合、前記閾値時間以下の複数のライトコマンドが同一のライト領域が含むかを判定し、
     前記第2の判定において同一のライト領域を含むと判定した場合、前記同一のライト領域を含むライトコマンドの処理を決定するライト競合モードに基づき、ライトコマンドを処理すること
    を特徴とするストレージ装置。
  2.  前記プロセッサは、
     前記第1の判定として、前記キューの最後尾に格納されたライトコマンドのタイムスタンプと、前記キュー内の最後尾より前に格納されたライトコマンドのタイムスタンプとの差分により、前記時刻の差を算出し、前記算出した時刻の差が所定の閾値時間以下であるかを判定すること
    を特徴とする請求項1に記載のストレージ装置。
  3.  前記プロセッサは、
     前記第2の判定として、前記閾値時間以下と判定されたライトコマンドに含まれるLUNとライトデータの先頭LBAとサイズに基づき、前記LUNが同一であるかを判定し、前記先頭のLBAとサイズを加算して値と前記先頭のLBAとを比較して、同一のライト領域が含むかを判定すること
    を特徴とする請求項2に記載のストレージ装置。
  4.  前記キューは、前記キューに格納されたライトコマンドそれぞれに対応して、仮想LUフラグの領域を有し、
     前記プロセッサは、
     前記第2の判定において同一のライト領域を含むと判定した場合、前記ライト競合モードに基づき、前記同一のライト領域を含むライトコマンドに対応した前記仮想LUフラグを設定すること
    を特徴とする請求項1に記載のストレージ装置。
  5.  前記プロセッサは、
     前記キューから出力されるライトコマンドに対応する前記仮想LUフラグが設定されている場合、前記出力されるライトコマンドに含まれるLUNおよびライトデータの先頭LBAの第1の領域とは異なる第2の領域へ、前記出力されるライトコマンドのデータをライトすること
    を特徴とする請求項4に記載のストレージ装置。
  6.  前記プロセッサは、
     前記キューから出力されるライトコマンドに対応する前記仮想LUフラグが設定されている場合、前記第1の領域と前記第2の領域との対応関係を記録すること
    を特徴とする請求項5に記載のストレージ装置。
  7.  前記プロセッサは、
     前記ホストから受信したT10DIFコードのAPP_TAGに基づき異なる前記第2の領域へデータをライトし、前記記録する対応関係に前記APP_TAGを含めること
    を特徴とする請求項6に記載のストレージ装置。
  8.  前記プロセッサは、
     前記キューから出力されるライトコマンドに対応する前記仮想LUフラグが設定されていない場合、前記第1の領域へ、前記出力されるライトコマンドのデータをライトすること
    を特徴とする請求項7に記載のストレージ装置。
  9.  前記プロセッサは、
     前記第2の判定において同一のライト領域を含むと判定した場合、前記ライト競合モードに基づき、前記同一のライト領域を含むライトコマンドの1つを前記キューに残し、前記同一のライト領域を含むライトコマンドの他を前記キューから破棄すること
    を特徴とする請求項1に記載のストレージ装置。
  10.  前記プロセッサは、
     前記キューに残すこととして、前記同一のライト領域を含むライトコマンドの中でライトコマンドに対応するタイムスタンプの最も古いライトコマンドを残すこと
    を特徴とする請求項9に記載のストレージ装置。
  11.  前記プロセッサは、
     前記キューから破棄することとして、前記受信したライトコマンドの送信元となったホストへチェックコンディションを応答し、前記キューから破棄すること
    を特徴とする請求項10に記載のストレージ装置。
  12.  複数のホストに接続されるストレージ装置の制御方法であって、
     前記ホストから受信したライトコマンドを、ライトコマンド格納のタイムスタンプと共に、前記ストレージ装置内のキューに格納する第1のステップと、
     前記キュー内に格納された複数のライトコマンドの前記タイムスタンプに格納された時刻の差が所定の閾値時間以下であるかを判定する第2のステップと、
     前記第2のステップにおいて閾値時間以下であると判定した場合、前記閾値時間以下の複数のライトコマンドが同一のライト領域が含むかを判定する第3のステップと、
     前記第3のステップにおいて同一のライト領域を含むと判定した場合、前記同一のライト領域を含むライトコマンドの処理を決定するライト競合モードに基づき、前記キューに含まれる仮想LUフラグであって、前記同一のライト領域を含むライトコマンドに対応した前記仮想LUフラグを設定する第4のステップと、
     前記キューから出力されるライトコマンドに対応する前記仮想LUフラグが設定されている場合、前記出力されるライトコマンドに含まれるLUNおよびライトデータの先頭LBAの第1の領域とは異なる第2の領域へ、前記出力されるライトコマンドのデータをライトする第5のステップと、
     前記第5のステップでデータをライトした場合、前記第1の領域と前記第2の領域との対応関係を記録する第6のステップと
    を有することを特徴とするストレージ装置の制御方法。
PCT/JP2014/083451 2014-12-17 2014-12-17 ストレージ装置およびその制御方法 WO2016098202A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/083451 WO2016098202A1 (ja) 2014-12-17 2014-12-17 ストレージ装置およびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/083451 WO2016098202A1 (ja) 2014-12-17 2014-12-17 ストレージ装置およびその制御方法

Publications (1)

Publication Number Publication Date
WO2016098202A1 true WO2016098202A1 (ja) 2016-06-23

Family

ID=56126125

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/083451 WO2016098202A1 (ja) 2014-12-17 2014-12-17 ストレージ装置およびその制御方法

Country Status (1)

Country Link
WO (1) WO2016098202A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210189098A1 (en) * 2019-09-26 2021-06-24 Shofu Inc. Curable composition containing transition metal adsorbent

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530742A (ja) * 1998-11-16 2002-09-17 インフィネオン・テクノロジーズ・アーゲー 外部デバイスへのアクセスを優先順序付けるための方法および装置
JP2005216299A (ja) * 2004-01-28 2005-08-11 Hewlett-Packard Development Co Lp ストレージネットワークにおける書き込みオペレーション制御
JP2005228217A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の制御方法
JP2011523144A (ja) * 2008-06-06 2011-08-04 ピボット3 分散型raid実装のための方法およびシステム
JP2014154023A (ja) * 2013-02-12 2014-08-25 Toshiba Corp ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530742A (ja) * 1998-11-16 2002-09-17 インフィネオン・テクノロジーズ・アーゲー 外部デバイスへのアクセスを優先順序付けるための方法および装置
JP2005216299A (ja) * 2004-01-28 2005-08-11 Hewlett-Packard Development Co Lp ストレージネットワークにおける書き込みオペレーション制御
JP2005228217A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の制御方法
JP2011523144A (ja) * 2008-06-06 2011-08-04 ピボット3 分散型raid実装のための方法およびシステム
JP2014154023A (ja) * 2013-02-12 2014-08-25 Toshiba Corp ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210189098A1 (en) * 2019-09-26 2021-06-24 Shofu Inc. Curable composition containing transition metal adsorbent

Similar Documents

Publication Publication Date Title
JP6729914B2 (ja) ソリッドステートストレージドライブ、システム、および方法
US9055044B2 (en) Computer system and method of controlling computer system
JP4402997B2 (ja) ストレージ装置
JP5090941B2 (ja) ストレージサブシステム及びストレージシステム
JP4775846B2 (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
JP4751123B2 (ja) ストレージシステム、フォーマット方法及びコンピュータプログラム
US8359431B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
US8095752B2 (en) Storage access device issuing I/O requests, in an associated logical unit environment
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
US9304710B2 (en) Storage system and data transfer method of storage system
US20120221809A1 (en) Storage apparatus and data processing method of the same
US8549243B2 (en) Regeneration of deleted data
US8713266B2 (en) Storage apparatus and method including page discard processing for primary and secondary volumes configured as a copy pair
US11074010B2 (en) Storage system and control method thereof
US8527732B2 (en) Storage system and method of controlling storage system
US8799573B2 (en) Storage system and its logical unit management method
US10649909B2 (en) Logical block addressing range collision crawler
US8566558B2 (en) Storage apparatus and data management method
WO2016098202A1 (ja) ストレージ装置およびその制御方法
US8943237B1 (en) Performance improvement for attached multi-storage devices
US20040168026A1 (en) Write posting memory interface with block-based read-ahead mechanism
JP2009294699A (ja) ストレージ装置
JP6247792B2 (ja) ストレージ装置及びその制御方法
JP2005346426A (ja) データ共有ディスク装置

Legal Events

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

Ref document number: 14908412

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: 14908412

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP