Storage system and communicating method

A storage system according to the present invention includes: a plurality of storage devices, wherein each of a plurality of the storage devices including: a control unit; and a storage unit that stores data, wherein the control unit of the storage device that receives a request specifies the storage device that includes the storage unit in that target data targeted by the request is stored among a plurality of the storage devices, and the control unit of the storage device that is specified transmits, as a response to the request, the target data and header information in that a destination identifier indicating a destination of the request is set to a source identifier of the response, and a source identifier indicating a source of the request is set to a destination identifier of the response.

This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2017-061121, filed on Mar. 27, 2017, the disclosure of which is incorporated herein in its entirety by reference.

TECHNICAL FIELD

The present disclosure relates to a storage system and a communicating method.

BACKGROUND ART

As information is increasingly electronized, a technology for managing an enormous amount of information is attracting attention. For example, one of technologies for managing an enormous amount of information is a technology for extending performance or capacity of a storage. Specifically, there has been proposed a scale-out type storage which allocates one logical disk configured with a plurality of storages to a server. For example, as a technology relating to the scale-out type storage, Japanese Unexamined Patent Application Publication No. 2016-024679 discloses a technology for controlling an order of write access to a plurality of nodes and preventing occurrence of mismatching among mirror data.

Note that Japanese Unexamined Patent Application Publication No. 2004-280862 describes, as a technology for managing an enormous amount of information, a technology for connecting a disk array controller, disk devices, and a host by one interface in a system that implements redundant arrays of independent disks (RAID), thereby decreasing the number of interfaces among these devices and implementing low cost. Further, Japanese Unexamined Patent Application Publication No. 2003-085017 discloses a technology for storing copy data of a master disk in a remote disk. Further, Japanese Unexamined Patent Application Publication No. 2013-045379 discloses a technology for distributed arrangement of data into a plurality of storage nodes by using a technique of a key-value store (KVS).

SUMMARY

For example, when a server transmits an input/output (I/O) command to one storage among a plurality of storages and data targeted by the I/O command is stored in another storage, the targeted data are transmitted from the another storage to the one storage, and are then transmitted from the one storage to the server. Therefore, there is a possibility of increasing frequency of data communication between the storages.

Further, there is a method in which a server stores storage locations of all data when the server transmits an I/O command to a storage that stores data targeted by the I/O command. In this case, however, the server needs to perform an operation of specifying the storage to which the I/O command is to be transmitted, from the stored storage locations of the data. In other words, a new function needs to be added to the server.

The present disclosure has been made in view of the issue described above, and provides a technology for decreasing frequency of data communication between storages without adding a new function to a server.

A storage system according to example aspect of the present invention includes: a plurality of storage devices, wherein each of a plurality of the storage devices including: a control unit; and a storage unit that stores data, wherein the control unit of the storage device that receives a request specifies the storage device that includes the storage unit in that target data targeted by the request is stored among a plurality of the storage devices, and the control unit of the storage device that is specified transmits, as a response to the request, the target data and header information in that a destination identifier indicating a destination of the request is set to a source identifier of the response, and a source identifier indicating a source of the request is set to a destination identifier of the response.

A communicating method according example aspect of the present invention is for a storage system that includes a plurality of storage devices. The communicating method includes: by a storage device, receiving a request and specifying a storage device having a storage in which target data targeted by the request are stored among the plurality of storage devices; and by the storage device that is specified, transmitting, as a response to the request, the target data and header information in that a destination identifier indicating a destination of the request is set to a source identifier of the response, and in that a source identifier indicating a source of the request is set to a destination identifier of the response.

EXAMPLE EMBODIMENT

An example embodiment in the present disclosure will hereinafter be described in detail with reference to the drawings.

First Example Embodiment

FIG. 1is a diagram illustrating an example of an overall configuration of a storage system1according to a first example embodiment. The storage system1includes a server device10, a switch20, a first storage device30, and a second storage device40. The switch20is implemented by, for example, a fiber channel (FC) switch.

The server device10and the switch20are mutually connected via a wired or wireless network. Further, the server device10communicates data with each of the storage devices via the switch20.

The switch20is connected to the first storage device30and the second storage device40via an FC. Further, the first storage device30and the second storage device40are mutually connected via a wired or wireless network.

In FC communication, one sequence (data) is transported by using one or a plurality of frames. At this time, a reception side can recognize that transport of a series of frames is completed, by receiving a frame (a last frame) that includes a last data row.

FIG. 2is a diagram for explaining a header (header information) of a frame. As illustrated inFIG. 2, the frame has a variable length up to 2148 bytes and is configured with an overhead portion of 36 bytes and a payload portion of 2112 bytes. The overhead portion indicates a start of frame (SOF) of 4 bytes which is attached to a start, a header of 24 bytes, an end of frame (EOF) of 4 bytes which is attached to an end of the frame, and a cyclic redundancy check (CRC) of 4 bytes. Further, the payload portion indicates an option of 64 bytes and data of 2048 bytes. Note that, the CRC indicates a code for checking an error. In the header of a frame, a header of a frame that is to be used in the following description will be described.

A Destination_Identifier (D_ID) is a destination address (which is also called a destination identifier), and is, for example, a port address of a destination of the frame.

A Source_Identifier (S_ID) is a source address (which is also called a source identifier), and is, for example, a port address of a source of the frame.

A Frame_Control (F_CTL) is a value representing an attribute of an exchange or a sequence, such as a head frame, a last frame, or whether a transmission side is an originator or a responder.

A Sequence_Identifier (SEQ_ID) is a number unique to each sequence, for a pair of a D_ID and an S_ID. A Sequence Count (SEQ_CNT) is each of serial numbers on a plurality of frames within one sequence, or each of serial numbers on a plurality of sequences within one exchange.

An Originator Exchange_Identifier (OX_ID) is an originator identifier that identifies an originator that starts each of exchanges on an originator side (a side that transmits a frame of a command) that starts an exchange indicating a unit of transaction processing.

Note that, transaction processing indicates a series of processes performed, for example, from when a Read command is transmitted from the server device10to each storage device via the switch20, until when target data of the Read command are transmitted back from each storage device to the server device10via the switch20.

A Responder Exchange_Identifier (RX_ID) is an identifier that specifies each exchange on a responder side (a side that receives a frame that configures a command) that responds to the originator.

The server device10, the first storage device30, and the second storage device40determine a source and a destination based on the S_ID, the D_ID and the OX_ID, and transmit and receive data. Since the OX_ID is the originator identifier that identifies the originator that starts each exchange, the server device10, the first storage device30, and the second storage device40find our which exchange a frame is related to by the OX_ID.

For example, the server device10transmits a Read command to the first storage device30. Then, the first storage device30transmits data targeted by the Read command to the server device10. At this time, when an S_ID, a D_ID, and an OX_ID of the Read command transmitted by the server device10do not match for an S_ID, a D_ID, and an OX_ID of the data transmitted by the first storage device30, the server device10determines that the Read command is abnormally processed, and does not receive the data. In other words, the server device10has an existing means for using an S_ID, a D_ID, and an OX_ID set in a frame, determining a relation between a destination and a source of data, and receiving the data.

FIG. 3is a functional block diagram illustrating an example of a configuration of the storage system1in the first example embodiment. The server device10has a control unit11and a storage unit12. The control unit11transmits, to the switch20, a command that includes data or an instruction of processing to data. Further, the control unit11receives data from the switch20. Further, the control unit11controls input process of data from the storage unit12and output process of data to the storage unit12. The storage unit12stores data. Data targeted by an instruction will hereinafter be called target data.

The switch20determines a destination of the frame based on a D_ID set in a transmitted frame, and transmits the frame to the determined destination.

The first storage device30includes a first server communication unit31, a first control unit32, a first storage communication unit33, a first storage unit34, and a first volume35. The second storage device40includes a second server communication unit41, a second control unit42, a second storage communication unit43, a second storage unit44, and a second volume45.

The first server communication unit31and the second server communication unit41communicate data with the switch20. The first storage communication unit33and the second storage communication unit43mutually communicate data.

Further, the first storage device30and the second storage device40construct a logical disk50with the first volume35and the second volume45. The first storage device30and the second storage device40allocates the constructed logical disk50to the server device10. Further, the logical disk50is also called a Logical Disk (LD). The logical disk50stores data.

The first storage unit34and the second storage unit44each store both of a storage table51illustrated inFIG. 4and a conversion table52illustrated inFIG. 5. The storage table51and the conversion table52are information for managing data stored in the logical disk50.

FIG. 4is a diagram for explaining the storage table51. The storage table51includes data510and a logical address511. The data510is data stored in the logical disk50. The logical address511is location information that indicates a storage location of the data510in a logical address space in the logical disk50.

FIG. 5is a diagram for explaining the conversion table52. The conversion table52includes the logical address511and a physical address512. The physical address512is location information that indicates a location on a physical address space relating to the logical address511in the first volume35or the second volume45.

InFIG. 5, the logical address511and the physical address512are associated with each other. Therefore, the first control unit32and the second control unit42can specify which storage device stores the target data based on the storage table51and the conversion table52. Further, the first control unit32and the second control unit42share a location of data and the like which are stored in the logical disk50by communicating between storages via the first storage communication unit33and the second storage communication unit43. For example, when a location of data stored in the logical disk50is changed, the first control unit32updates the storage table51and the conversion table52that are stored in the first storage unit34. Then, the first control unit32transmits update information of the storage table51and the conversion table52which are stored in the first storage unit34, to the second storage device40via the first storage communication unit33. The second control unit42receives the update information of the storage table51and the conversion table52, from the first storage device30via the second storage communication unit43. Then, the second control unit42updates the storage table51and the conversion table52which are stored in the second storage unit44. In this way, the information in the storage tables51and the conversion tables52that are respectively stored in storage units are synchronized.

The first control unit32refers to the first storage unit34based on a Read command received from the switch20, and specifies a storage device that stores target data. Then, when the specified storage device is any storage device other than an own device, the first control unit32transfers an S_ID, a D_ID, and an OX_ID included in the Read command to the specified storage device.

FIG. 6is a flowchart illustrating an example of an operation of the storage system1in the first example embodiment. It is assumed that the operation shown below is an operation when the server device10transmits a Read command that targets data510“D3” stored in the second storage device40as target data, to the first storage device30.FIG. 6illustrates processing by the server device10on left side, and illustrates processing by the switch20on a right side of the processing by the server device10. Further,FIG. 6illustrates processing by the second storage device40on its right side, and illustrates processing by the first storage device30on a left side of the processing by the second storage device40.

Note that, a dotted arrow between the processing by the server device10and the processing by the first storage device30, and a dotted arrow between the processing by the first storage device30and the processing by the second storage device40respectively indicate flows of information.

The control unit11of the server device10transmits a Read command to read the data510“D3” to the switch20, while setting the first storage device30as a destination (step S401). Specifically, a frame that configures the Read command includes an S_ID that indicates an address of the server device10, a D_ID that indicates an address of the first storage device30, an OX_ID that indicates the address of the server device10, and an instruction to read the data510“D3” as target data.

The switch20receives the Read command from the server device10(step S402). Then, the switch20refers to the D_ID, and transmits the Read command to the first storage device30(step S403).

The first server communication unit31of the first storage device30receives the Read command from the switch20(step S404). Then, the first server communication unit31transmits the received Read command to the first control unit32. The first control unit32receives the Read command from the first server communication unit31.

The first control unit32refers to the storage table51and the conversion table52based on the received Read command, and specifies a storage device having a volume for storing the target data of the received Read command (step S405).

Specifically, the first control unit32refers to the storage table51in the first storage unit34by using the target data. With reference to the storage table51illustrated inFIG. 4, the first control unit32finds out that the data510“D3” is stored at a logical address511“LA3”. Accordingly, the first control unit32acquires the logical address511“LA3” from the storage table51. Then, the first control unit32refers to the conversion table52in the first storage unit34by using the logical address511“LA3”. With reference to the conversion table52illustrated inFIG. 5, the first control unit32finds that the logical address511“LA3” is associated to a physical address512“PA3”. Further, as illustrated inFIG. 5, the physical address512“PA3” indicates an address in the second volume45. Thus, the first control unit32detects that the data510“D3” which is the target data exist in the second storage device40. Accordingly, the storage device specified in step S405is the second storage device40.

Then, the first control unit32transmits a transfer command which includes an instruction to transfer the target data to the server device10, and the S_ID, the D_ID, and the OX_ID which are included in the Read command, to the first storage communication unit33. Then, the first storage communication unit33transmits the transfer command, and the S_ID, the D_ID, and the OX_ID that are included in the Read command (step S406) to the second storage device40.

The second storage communication unit43of the second storage device40receives the transfer command, and the S_ID, the D_ID, and the OX_ID that are included in the Read command from the first storage device30(step S407). The second storage communication unit43transmits the transfer command, and the S_ID, the D_ID, and the OX_ID that are included in the Read command to the second control unit42.

The second control unit42acquires the target data from the second volume45based on the received transfer command (step S408). Specifically, the second control unit42acquires the data510“D3” from the second volume45. Then, the second control unit42sets a response frame which becomes a response to the Read command based on the acquired data510“D3” and the received S_ID, D_ID, and OX_ID (step S409).

Specifically, the second control unit42sets an S_ID, a D_ID, and an OX_ID in a header of the response frame, based on the S_ID, the D_ID, the OX_ID, and the transfer command which are received from the second storage communication unit43. At this time, the S_ID set in the header of the response frame is the first storage device30. Further, the D_ID set in the header of the response frame is the server device10. Further, the OX_ID set in the header of the response frame is the server device10. Then, the second control unit42sets the data510“D3” which is the target data in a payload of the response frame.

Then, the second control unit42transmits the response frame to the second server communication unit41. The second server communication unit41receives the response frame from the second control unit42. Then, the second server communication unit41transmits the response frame to the switch20(step S410).

The switch20receives the response frame from the second storage device40(step S411). Then, the switch20transmits the response frame to the server device10based on the response frame (step S412). Specifically, the switch20refers to the D_ID set in the header of the response frame, and determines a destination to which the response frame is to be transmitted. At this time, the D_ID is the server device10, and hence the switch20transmits the response frame to the server device10.

The control unit11of the server device10receives the response frame from the switch20(step S413). At this time, the S_ID is the first storage device30. Further, the D_ID set in the header of the response frame is the server device10. Further, the OX_ID set in the header of the response frame is the server device10. Therefore, the server device10determines that processing related to the Read command is executed normally in the first storage device30.

Further, the second control unit42sets the similar S_ID, the similar D_ID, and the similar OX_ID the response frame into a Response frame which configures a Read command completion response (mentioned below). Then, the second control unit42transmits the completion response to the second server communication unit41. The second server communication unit41receives the completion response from the second control unit42. Then, the second server communication unit41transmits the completion response to the switch20(step S414).

The switch20receives the completion response from the second storage device40(step S415). Then, the switch20transmits the completion response to the server device10based on the D_ID set in the Response frame which configures the completion response (step S416).

The control unit11of the server device10receives the completion response from the switch20(step S417). Then, the processing terminates. The completion response is a notification indicating that the processing related to the Read command has terminated. Accordingly, the control unit11can determine that the processing related to the Read command has terminated based on the received completion response.

Note that, although the server device10is connected to the two storage devices in the present example embodiment, the server device10may be connected to three or more storage devices.

Further, although the switch20and the first storage device30, and the switch20and the second storage device40, are mutually connected by an FC, they may be mutually connected by an Internet Small Computer System Interface (iSCSI) in place of the FC.

As mentioned above, since the response frame including the data510“D3” as the target data is transmitted from the second storage device40to the server device10via the switch20, the second storage device40is set to the S_ID of the response frame in which the target data is set. However, when the second storage device40is set to the S_ID of the response frame in which the target data is set, the response frame is not related to the Read command transmitted by the server device10. Therefore, even when the server device10receives the response frame in which the target data is set, the server device10fails to recognize the response frame as a response to the Read command transmitted by the server device10.

Therefore, in order that the response frame is recognized as a response to the Read command transmitted by the server device10, for example, it is assumed that the second storage device40transmits the response frame to the server device10via the first storage device30. In this case, because the response frame needs to be transmitted, to the server device10, from a storage device which is set to the D_ID of the Read command by the server device10, there is a possibility that frequency of data communication between the storages becomes high.

Thereat, in order to pretend that the first storage device30sends the response frame to the server device10, the second storage device40rewrites the header of the response frame based on the S_ID, the D_ID, and the OX_ID which are included in the Read command. By this way, the server device10receives the target data such that the target data is transmitted by the first storage device30. Accordingly, the server device10does not need to execute any special action, but can execute an action as a normal Read command.

As described above, the storage system1according to the first example embodiment can decrease frequency of data communication between the storages without adding a new function to the server device10.

Second Example Embodiment

FIG. 7is a functional block diagram illustrating an example of a configuration of a storage system2according to a second example embodiment. The storage system2according to the present example embodiment is a minimum configuration for solving the issue to be solved by the present disclosure.

The storage system2includes a storage device60A and a storage device60B. The storage device60A includes a control unit61A and a storage unit62A that stores data. Further, the storage device60B includes a control unit61B and a storage unit62B that stores data. In the following explanation, when the storage device60A and the storage device60B are not distinguished from each other, each of these is called a storage device60. Further, when the control unit61A and the control unit61B are not distinguished from each other, each of these is called a control unit61. Moreover, when the storage unit62A and the storage unit62B are not distinguished from each other, each of these is called a storage unit62.

In other words, the storage system2includes a plurality of storage devices60. Further, each of the plurality of the storage devices60includes the control unit61and the storage unit62that stores data.

The control unit61of the storage device60that receives a request, among the plurality of the storage devices60, specifies the storage device60having the storage unit62in which the target data targeted by the request is stored, among the plurality of the storage devices60. The request includes a destination identifier that indicates a destination of the request, and a source identifier that indicates a source of the request.

The control unit61of the specified storage device60transmits, as a response to the request, the target data and header information in which the destination identifier that indicates the destination is set to the source identifier of the response and the source identifier that indicates the source of the request is set to the destination identifier of the response.

FIG. 8is a flowchart illustrating an example of an operation of the storage system2according to the second example embodiment.

The control unit61of the storage device60that is the destination of the request, the destination is indicated by the destination identifier included in the request, among the plurality of the storage devices60, receives the request (step S501). For example, when the destination identifier indicates the storage device60A, the control unit61A of the storage device60A receives the request.

Then, the control unit61of the storage device60specifies the storage device60that has the storage unit62in which the target data targeted by the received request are stored (step S502). For example, when the target data are stored in the storage unit62A of the storage device60A, the control unit61A of the storage device60A specifies the storage device60A in step S502. Alternatively, when the target data are stored in the storage unit62B of the storage device60B, the control unit61A of the storage device60A specifies the storage device60B in step S502.

After that, the control unit61of the specified storage device60transmits, as a response to the request, the target data and header information in which the destination identifier that indicates the destination of the request is set to the source identifier of the response, and the source identifier that indicates the source of the request is set to the destination identifier of the response (step S503).

For example, when the storage device60A is specified in step S502, the control unit61A of the storage device60A transmits, as a response to the request, the target data and header information in which information of the storage device60A that is the destination identifier of the request is set to the source identifier of the response, and the source identifier that indicates the source of the request is set to the destination identifier of the response. The processing then terminates.

Alternatively, when the storage device60B is specified in step S502, the control unit61B of the storage device60B transmits, as a response to the request, the target data and header information in which information of the storage device60A that is the destination identifier of the request is set to the source identifier of the response, and the source identifier that indicates the source of the request is set to the destination identifier of the response. The processing then terminates.

As such, the storage device60having the storage unit62in which the target data is stored transmits, as a response to the request, the target data and header information in which the destination identifier that indicates the destination of the request is set to the source identifier of the response, and the source identifier that indicates the source of the request is set to the destination identifier of the response.

By this way, the source of the request receives the response from the storage device60having the storage unit62in which the target data are stored such that the storage device60that receives the request transmits the response. Accordingly, even when the source of the request recognizes that the response from the storage device60to which the request is transmitted is a response to the request, for example, the source of the request does not execute a special action, and can execute an action as a normal response.

As described above, the storage system2according to the second example embodiment can decrease frequency of data communication between the storages, without adding a new function to the source of the request.

In each example embodiment in the present disclosure, each component of each system indicates a block of a functional unit. A whole or a part of each component of each system is implemented by any combination of an information processing device900and a program as illustrated inFIG. 9, for example. The information processing device900includes components as described below, as an example.A Central Processing Unit (CPU)901A Read Only Memory (ROM)902A Random Access Memory (RAM)903A program904loaded in the RAM903A storage device905that stores the program904A drive device907that reads and/or writes a recording medium906A communication interface908that connects to a communication network909An Input and/or Output (TO) interface910that inputs and/or outputs dataA bus911that connects the respective components

Each component of each system according to each example embodiment is implemented by the CPU901acquiring and executing the program904that implements these functions. The program904that implements a function of each component of each system is stored in advance, for example, in the storage device905or the RAM903. Then, the CPU901reads the program904as needed. Note that, the program904may be supplied to the CPU901via the communication network909. Alternatively, the program904may be stored in advance in the recording medium906. Then, the drive device907may read the program904and supply it to the CPU901.

The ROM902, the storage device905, and the recording medium906are non-transitory recording media. The RAM903is a transitory recording medium.

A method of implementing each system has various variations. For example, each system may be implemented by any combination of the information processing device900and a program for each component. Alternatively, a plurality of components included in each system may be implemented by any combination of one information processing device900and a program.

Further, a whole or a part of each component of each system is implemented by another general-purpose or dedicated circuit, a processor, or the like, or a combination thereof. These may be configured with a single chip, or may be configured with a plurality of chips connected via a bus.

A whole or a part of each component of each system may also be implemented by a combination of the above-mentioned circuit and the like, and a program.

When a whole or a part of each component of each system is implemented by a plurality of information processing devices, a plurality of circuits, and the like, the plurality of information processing devices, the plurality of circuits, and the like may be placed in a centralized manner or a distributed manner. For example, information processing devices, circuits, and the like may be implemented as a form of being connected to one another via a communication network, such as a client and server system or a cloud computing system.

Advantageous Effects of Invention

According to the present disclosure, it is possible to decrease frequency of data communication between storages, without adding a new function to a server.