System, control method thereof, and storage medium

By introducing SDS into the storage node, using virtual logical volumes and mapping information to manage I/O requests, the problem of binding of existing storage control software and hardware is solved, and data access and system scalability that is not related to hardware expansion is achieved.

CN114647382BActive Publication Date: 2025-08-26HITACHI VANDALA CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202210316408.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-11-30
Filing Date
2018-08-28
Publication Date
2025-08-26
Estimated Expiration
2038-08-28

AI Technical Summary

Technical Problem

Existing storage control software is usually bound to specific hardware and is difficult to scale on a general-purpose server. Shared memory processing depends on hardware, limiting the scalability of the system and data access flexibility.

Method used

By introducing SDS (Software Defined Storage) into the storage node, virtual logical volumes and mapping information are used to manage I/O requests, and data access across storage nodes is achieved, independent of the hardware expansion structure.

Benefits of technology

It realizes data access methods that are not related to hardware expansion, improves the system's scalability and flexibility of data access, and supports flexible expansion and data sharing of storage nodes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114647382B_ABST
    Figure CN114647382B_ABST
Patent Text Reader

Abstract

The present invention provides a highly scalable system, a control method thereof, and a storage medium storing a program. The system includes a cluster consisting of multiple storage nodes, each storage node including a storage control unit that executes I / O processing corresponding to an I / O request from a superior device. A storage node that receives a logical volume generation instruction based on a request from a management device generates a virtual first logical volume that can be identified within the cluster. The first logical volume generates a virtual second logical volume that can be identified within the node corresponding to the storage control unit. The correspondence between the generated first logical volume and the second logical volume is registered as mapping information. The storage node that receives the I / O request from the superior device determines, based on the mapping information, whether the storage control unit corresponding to the first logical volume specified in the I / O request is configured on the node, thereby determining whether the I / O request is to be processed by the node.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of application No. 201810986526.X filed on August 28, 2018. Technical Field

[0002] The present invention relates to a system, a control method thereof, and a storage medium, and is applicable, for example, to an information processing system having multiple storage nodes, each of which has one or more SDSs (Software Defined Storage) installed. Hereinafter, an SDS refers to a storage device constructed by installing software with storage functionality on a general-purpose server device. Background Art

[0003] Currently, existing control software for storage device controllers (storage control software) is dedicated to the hardware on which it is installed. Consequently, installing this storage control software directly on bare metal servers can make it difficult to assemble a scale-out configuration due to architectural differences.

[0004] This is because the existing storage control software is structured to target only processing performed within the storage device itself and, therefore, cannot be used in a scale-out architecture. Furthermore, Patent Document 1 below discloses that two storage devices in an HA configuration collaborate to perform offloaded data replication, but this also involves collaboration between two storage devices.

[0005] Furthermore, since the shared memory processing executed by the conventional storage control software depends on the hardware, there is also a problem that the same processing cannot be executed in a general-purpose server device.

[0006] In contrast, the development of SDS (Software Design Services)—built by installing storage control software on general-purpose servers—has been steadily advancing in recent years. SDS requires no dedicated hardware and offers high scalability, leading to increasing demand. For example, Patent Document 2 below discloses a technology for transmitting I / O (Input / Output) between servers in an SDS configuration.

[0007] Prior art literature

[0008] Patent Literature

[0009] Patent Document 1: U.S. Patent Application Publication No. 2017 / 0017433

[0010] Patent Document 2: U.S. Patent Application Publication No. 2016 / 0173598 Summary of the Invention

[0011] Problems to be solved by the invention

[0012] However, in recent years, the amount of data stored in businesses and government agencies has been steadily increasing. In view of this situation, it is desirable that the storage device be configured to be easily expandable.

[0013] In addition, after outward expansion, it is also considered that if the system can be constructed in such a way that the upper device can easily access the desired data without being concerned about the storage device that should be the destination of the I / O request, the setting of the upper device after outward expansion will not be necessary, and the scalability of the system can be improved.

[0014] The present invention has been developed in consideration of the above points, and proposes a system and a control method and a program thereof that can improve scalability.

[0015] Technical solutions to problems

[0016] In order to solve the above-mentioned problem, the present invention provides a system comprising a cluster composed of multiple storage nodes, wherein the storage nodes include: a storage control unit that performs I / O processing corresponding to the assigned I / O (Input / Output) request; and a front-end unit that assigns the I / O request sent from the upper-level device to the storage control unit in the node or the corresponding other storage nodes, providing the upper-level device with one or more virtual first logical volumes as storage areas for reading and writing data, and in the storage node, a virtual second logical volume corresponding to any one of the first logical volumes is generated corresponding to the storage control unit configured in the storage node, and the upper-level device will generate a virtual second logical volume corresponding to the first logical volume. The I / O request with the logical volume as the I / O destination is sent to the storage node, and the front-end part manages the correspondence between the first logical volume and the second logical volume as mapping information. When the I / O request is sent from the upper device, based on the mapping information, the storage node configured with the storage control part corresponding to the first logical volume specified as the I / O destination in the I / O request via the second logical volume is determined. When the determined storage node is the current node, the I / O request is assigned to the storage control part within the current node. When the determined storage node is another storage node, the I / O request is assigned to the storage node.

[0017] The present invention also provides a control method for a system including a cluster composed of multiple storage nodes, wherein the storage node includes a storage control unit that performs I / O processing corresponding to an assigned I / O (Input / Output) request, and provides one or more virtual first logical volumes used as storage areas for reading and writing data to the upper-level device. The control method of the system includes: a first step, in the storage node, corresponding to the storage control unit configured in the storage node, generating a virtual second logical volume corresponding to any one of the first logical volumes, and establishing a correspondence between the first logical volume and the second logical volume. The mapping information is managed separately in each storage node; the second step is, when the I / O request with the first logical volume as the I / O destination is sent from the upper device, based on the mapping information, the storage node configured with the storage control unit corresponding to the first logical volume specified as the I / O destination in the I / O request via the second logical volume is determined; and the third step is, when the determined storage node is the current node, the I / O request is assigned to the storage control unit in the current node, and when the determined storage node is another storage node, the I / O request is assigned to the storage node.

[0018] The present invention also provides a program, which is executed in a system including a cluster composed of multiple storage nodes, wherein the program is executed in the storage node, the storage node has a storage control unit that performs I / O processing corresponding to the assigned I / O (Input / Output) request, and provides one or more virtual first logical volumes as storage areas for reading and writing data to the upper device, and the program causes the storage node to perform processing including the following steps: a first step, in the storage node, corresponding to the storage control unit configured in the storage node, generating a virtual second logical volume corresponding to any of the first logical volumes, and connecting the first logical volume to the the correspondence between the first logical volume and the second logical volume is managed as mapping information; the second step, when the I / O request with the first logical volume as the I / O destination is sent by the upper device, based on the mapping information, the storage node configured with the storage control unit corresponding to the first logical volume specified as the I / O destination in the I / O request via the second logical volume is determined; and the third step, when the determined storage node is the current node, the I / O request is allocated to the storage control unit within the current node, and when the determined storage node is another storage node, the I / O request is allocated to the storage node.

[0019] According to the system, control method, and program of the present invention, regardless of whether or not storage nodes are scaled out, the host device can read and write desired data without being concerned about the storage node to which the I / O request is issued.

[0020] Effects of the Invention

[0021] According to the present invention, a system and a control method thereof and a program capable of improving scalability can be realized. Other problems, structures, and effects than those described above will be clarified by describing the following embodiments of the invention. BRIEF DESCRIPTION OF THE DRAWINGS

[0022] Figure 1 This is a block diagram showing the overall configuration of the information processing system according to this embodiment.

[0023] Figure 2 This is a block diagram showing the hardware structure of a storage node.

[0024] Figure 3 It is a block diagram showing the software structure of a storage node.

[0025] Figure 4 This is a block diagram for explaining the correspondence relationship between storage areas of storage nodes.

[0026] Figure 5 This is a diagram showing a configuration example of a table in a storage control unit.

[0027] Figure 6 This is a diagram showing an example of the structure of a front-end volume table.

[0028] Figure 7 This is a diagram showing a structural example of a mapping table.

[0029] Figure 8 This is a diagram showing an example of the structure of a front-end object table.

[0030] Figure 9 This is a diagram showing a structural example of a storage control unit information management table.

[0031] Figure 10 This is a diagram showing an example structure of a global pool volume table.

[0032] Figure 11 This is a conceptual diagram for explaining the correspondence relationship between information in each table.

[0033] Figure 12 This is a sequence diagram showing the flow of processing when an internal volume is created.

[0034] Figure 13 This is a sequence diagram showing the flow of a series of processes executed in a cluster when a storage node in the cluster fails.

[0035] Figure 14 This is a sequence diagram showing the flow of a series of processes executed in a cluster when a storage node is added to the cluster.

[0036] Figure 15 This is a sequence diagram showing the flow of write processing executed in this information processing system.

[0037] Figure 16 This is a sequence diagram showing the flow of read processing executed in this information processing system. DETAILED DESCRIPTION

[0038] Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings. The following description and drawings are examples for illustrating the present invention, and for the sake of clarity of the description, omissions and simplifications may be made as appropriate. In addition, not all combinations of features described in the embodiments are required in the solution of the invention. The present invention is not limited to the embodiments, and all application examples consistent with the concept of the present invention are included in the technical scope of the present invention. If the present invention is performed by a person skilled in the art, various additions and changes can be made within the scope of the present invention. The present invention can also be implemented in various other ways. Unless otherwise specified, each component may be multiple or single.

[0039] In the following description, various information may be described using terms such as "table," "form," "list," and "queue." However, various information may also be represented using data structures other than these. To avoid reliance on data structure, "XX table," "XX list," and the like may be referred to as "XX information." When describing the content of each piece of information, terms such as "identification information," "identifier," "name," "ID," and "number" may be used, but these are interchangeable.

[0040] In addition, in the following description, when the same type of elements are described without distinguishing them, reference symbols or common numbers in the reference symbols are used. When the same type of elements are described with distinction, the reference symbol of the element is sometimes used or the ID assigned to the element is used instead of the reference symbol.

[0041] In addition, in the following description, the processing performed by executing a program is sometimes described, but the program is executed by at least one processor (such as a CPU), thereby appropriately using storage resources (such as memory) and / or interface devices (such as communication ports) to perform prescribed processing, so the subject of the processing may also be a processor. Similarly, the subject of the processing performed by executing a program may also be a controller, device, system, computer, node, storage system, storage device, server, management computer, client or host with a processor. The subject of the processing performed by executing a program (such as a processor) may also include a part or all of the hardware circuits that perform the processing. For example, the subject of the processing performed by executing a program may also include hardware circuits that perform encryption and decoding, or compression and decompression. The processor acts according to the program, thereby acting as a functional unit that realizes a predetermined function. Devices and systems that include processors are devices and systems that include these functional units.

[0042] The program can also be installed from a program source to a device such as a computer. The program source can also be, for example, a program distribution server or a computer-readable storage medium. In the case where the program source is a program distribution server, the program distribution server can also include a processor (such as a CPU) and storage resources, and the storage resources further store the distribution program and the program to be distributed. Moreover, the processor of the program distribution server executes the distribution program, thereby, the processor of the program distribution server can also distribute the program to be distributed to other computers. In addition, in the following description, two or more programs can also be implemented as one program, and one program can also be implemented as two or more programs.

[0043] (1) Configuration of the Information Processing System of the Present Embodiment

[0044] Figure 1 1 is a diagram showing the configuration of an information processing system 1 according to this embodiment. The information processing system 1 includes a plurality of computing nodes 2 , a plurality of storage nodes 3 , and a management node 4 .

[0045] Compute nodes 2, storage nodes 3, and management nodes 4 are connected via a storage service network 5 composed of, for example, Fibre Channel (FC), Ethernet (registered trademark), InfiniBand, or a wireless Local Area Network (LAN). Furthermore, each storage node 3 is connected to another via a backend network 6 composed of, for example, Ethernet (registered trademark), InfiniBand, or a wireless LAN.

[0046] However, the storage service network 5 and the backend network 6 may be formed by the same network. In addition, each computing node 2 and each storage node 3 may be connected to a management network other than the storage service network 5 or the backend network 6 .

[0047] Compute node 2 is a general-purpose computer device that functions as a host (superior device) for storage node 3. Compute node 2 may also be a virtual computer device such as a virtual machine. Based on user operations or requests from installed applications, compute node 2 sends read or write requests (hereinafter referred to as I / O (Input / Output) requests) to storage node 3 via storage service network 5.

[0048] The storage node 3 is a general physical server device that provides a storage area for reading and writing data to the computing node 2. Figure 2 As shown, the storage node 3 includes a CPU (Central Processing Unit) 10, a memory 11, a plurality of storage devices 12, and first and second communication devices 13 and 14. The CPU 10 and the storage devices 12, as well as the first and second communication devices 13 and 14, are connected via an internal network 15. Each storage node 3 has at least one CPU 10, one memory 11, one storage device 12, and one or more first and second communication devices 13 and 14.

[0049] The CPU 10 is a processor that manages the overall operation of the storage node 3. The memory 11, comprised of volatile semiconductor memory such as SRAM (Static RAM (Random Access Memory)) or DRAM (Dynamic RAM), serves as the CPU 10's working memory, temporarily storing various programs and necessary data. By executing programs stored in the memory 11, at least one CPU 10 executes various processes for the entire storage node 3, as described below.

[0050] The storage device 12 is composed of a large-capacity non-volatile storage device such as an NVMe (Non-Volatile Memory) drive or a SAS (Serial Attached SCSI (Small Computer System Interface)) drive, SATA (Serial ATA (Advanced Technology Attachment)), SSD (Solid State Drive) or SCM (Storage Class Memory), which provides a storage area for reading and writing data to the computing node 2.

[0051] The first communication device 13 is an interface used by the storage node 3 to communicate with the computing node 2 and the management node 4 via the storage service network 5 and is composed of, for example, an FC card or a wireless LAN card. The first communication device 13 performs protocol control when communicating with the computing node 2 and the management node.

[0052] The second communication device 14 is an interface used by the storage node 3 to communicate with other storage nodes 3 via the backend network 6 and is composed of, for example, a NIC (Network Interface Card) or a wireless LAN card. The second communication device 14 performs protocol control when communicating with other storage nodes 3.

[0053] Furthermore, in the case of this embodiment, Figure 1 As shown, each storage node 3 is aggregated with one or more other storage nodes 3 into a group called a cluster 7 , and is managed in units of clusters 7 . Figure 1 In the example shown in FIG, only one cluster 7 is set, but a plurality of clusters 7 may be set in the information processing system 1. The cluster 7 may also be called a distributed storage system.

[0054] The management node 4 is a computer device used by the administrator of the information processing system 1 (hereinafter referred to as the system administrator) to manage the configuration and perform various settings of the information processing system 1. The management node 4 sends necessary instructions to the computing nodes 2 and storage nodes 3 according to the system administrator's operations.

[0055] Figure 3 The logical structure of the storage node 3 of this embodiment is shown. Figure 3 As shown, each storage node 3 includes a data plane 24 and a control plane 27. The data plane 24 includes a front-end unit 20, one or more storage control units 21, a capacity control unit 22, and a back-end unit 23. The control plane 27 includes a cluster control unit 25 and a node control unit 26. The data plane 24 is a functional unit that performs I / O processing related to reading and writing data, while the control plane 27 is a functional unit that controls the entire cluster 7 (Figure) and the node itself.

[0056] The front-end unit 20 is software that functions as a front-end for I / O processing related to scale-out of storage nodes 3. For example, when a compute node 2 sends an I / O request, the front-end unit 20 distributes the I / O request to the storage control unit 21 within the compute node 2 to execute the I / O request, or to another storage node 3 equipped with a storage control unit 21 to execute the I / O request.

[0057] The storage control unit 21 is software that functions as a controller for SDS (Software Defined Storage). This unit can also be referred to as storage control software or a storage control program. The storage control unit 21 receives I / O requests from the compute nodes 2 via the front-end unit 20 and distributes I / O instructions corresponding to the received I / O requests to the back-end unit 23.

[0058] In this embodiment, each storage control unit 21 installed in a storage node 3 is paired with another storage control unit 21 arranged in another storage node 3 to form a redundant structure. This pair is hereinafter referred to as a storage control unit pair 28 .

[0059] also, Figure 3 The figure shows a case where two storage control units 21 constitute a storage control unit pair 28. The following description will also assume that the storage control unit pair 28 is composed of two storage control units 21. However, a redundant structure can also be formed by using more than three storage control units 21.

[0060] In the storage control unit pair 28, one storage control unit 21 is set to a state in which it can receive I / O requests from the computing node 2 (the state of the currently used storage control unit, hereinafter referred to as the active mode), and the other storage control unit 21 is set to a state in which it does not receive I / O requests from the computing node 2 (the state of the standby storage control unit, hereinafter referred to as the passive mode).

[0061] Furthermore, in the storage control unit pair 28, if a failure occurs in the storage control unit (hereinafter referred to as the active storage control unit) 21 set to active mode or in the storage node 3 equipped with the active storage control unit 21, the state of the storage control unit (hereinafter referred to as the passive storage control unit) 21 previously set to passive mode is switched to active mode. Thus, if the active storage control unit 21 becomes inoperable, the I / O processing previously executed by the active storage control unit 21 can be taken over by the passive storage control unit 21 constituting the same storage control unit pair 28.

[0062] The capacity control unit 22 is a storage control unit pair 28 configured to allocate storage devices 12 in the node or in other nodes to the active storage control unit 21 in the node. Figure 2 ) The capacity control unit 22 may also be referred to as capacity control software or a capacity control program.

[0063] The backend unit 23 is software that functions as the backend for I / O processing of the storage node 3. For example, based on the I / O commands sent from the active storage control unit 21, the backend unit 23 reads and writes data in the storage area allocated by the capacity control unit 22 to the storage control unit pair 28 formed by the active storage control unit 21.

[0064] On the other hand, the cluster control unit 25 is software that has the function of executing control processes related to the entire cluster 7 and control processes related to the expansion of the cluster 7. The cluster control unit 25 can also be called cluster control software or a cluster control program. In this information processing system 1, one of the cluster control units 25 installed in each storage node 3 within the cluster 7 is set as the master. Only the cluster control unit 25 set as the master (hereinafter referred to as the master cluster control unit) 25 executes various control processes while maintaining the compatibility of the entire cluster 7.

[0065] For example, the master cluster control unit 25 sets a storage control unit pair 28 in the cluster 7 in response to a request from the management node 4, and registers the set storage control unit pair 28 in the information about the cluster 7. Figure 5 The table 30 is managed by a storage control unit described later.

[0066] Furthermore, the cluster control units 25 other than the master cluster control unit 25 have a function for preventing a failure of the master cluster control unit 25 and are set to either a hot standby mode or a warm standby mode.

[0067] The hot standby mode is an operating mode in which the active standby state is maintained so as to immediately take over the processing previously executed by the master cluster control unit 25 when a failure occurs in the master cluster control unit 25 or the storage node 3 on which the master cluster control unit 25 is mounted.

[0068] The cluster control unit 25 in the hot standby mode maintains the table 30 ( Figure 5 ) and other management information managed by the master cluster control unit 25.

[0069] Moreover, when the management information maintained by the main cluster control unit 25 is updated, the difference before and after the update is given as difference data from the main cluster control unit 25 via the back-end network 6 to all cluster control units 25 in hot standby mode. Based on the difference data, the management information maintained by the cluster control unit 25 is also updated to the management information maintained by the main cluster control unit 25 through the cluster control unit 25.

[0070] In this way, the cluster control unit 25 in hot standby mode always maintains the same management information as the master cluster control unit 25. Therefore, even if a failure occurs in the master cluster control unit 25 and the cluster control unit 25 that has been in hot standby mode is switched to the "master" mode, the control processing previously performed by the original master cluster control unit 25 can be taken over by the cluster control unit (master cluster control unit) 25 that has switched to the "master" mode.

[0071] When the number of cluster control units set to hot standby mode falls below a preset threshold, the state of any cluster control unit 25 set to warm standby mode is switched to hot standby mode.

[0072] Furthermore, to prevent a situation where there are two or more master cluster control units 25, the master cluster control unit 25 operates three or more cluster control units 25 and selects a master cluster control unit 25 from among these operating cluster control units 25 based on majority rule. The remaining operating cluster control units 25 are then set to hot standby mode.

[0073] The node control unit 26 is a program that executes various control processes within its own node in response to requests from the main cluster control unit 25. The node control unit 26 can also be referred to as node control software or a node control program. In practice, the main cluster control unit 25 requests the node control unit 26 of each storage node 3 to execute processes performed within each storage node 3, without concentrating the load on itself. Upon receiving this request, the node control unit 26 executes control processes for its own node's data plane 24 in accordance with the request.

[0074] In this manner, in the present information processing system 1, commands or requests are sent from the master cluster control unit 25 to the front-end unit 20 and storage control unit 21 within each storage node 3 via the node control unit 26 of the storage node 3. However, for ease of understanding, the following description will describe commands or requests from the master cluster control unit 25 to the front-end unit 20 and storage control unit 21 within each storage node 3 as commands or requests sent directly from the master cluster control unit 25 to the front-end unit 20 and storage control unit 21.

[0075] Figure 4 The corresponding relationship of the storage areas in the information processing system 1 of this embodiment is shown. Figure 4 As shown, in this embodiment, the capacity control unit 22 divides the physical storage area provided by the storage device 12 in each storage node 3 into storage areas of a predetermined size (hereinafter referred to as physical blocks) PC for management.

[0076] In addition, the capacity control unit 22 corresponds multiple physical blocks PC provided by the storage devices 12 in different storage nodes 3 to logical storage areas (hereinafter referred to as logical blocks) LC of the same size as the physical blocks PC, and corresponds the logical blocks LC to the pool volume PLVOL of the same size as the logical blocks LC via the external volume ExtVOL.

[0077] Furthermore, the capacity control unit 22 aggregates a plurality of pool volumes PLVOL corresponding to the logical blocks LC to generate a pool PL, and allocates the generated pool PL to the storage control unit pair 28 ( Figure 3 In this way, the capacity control unit 22 allocates the pool PL as a dedicated storage area to each storage control unit pair 28.

[0078] Furthermore, one or more virtual internal volumes IVOL, serving as logical volumes, are generated within these pools PL in response to instructions from the system administrator via the management node 4. These internal volumes IVOL are defined within the storage node 3 in which the active storage control unit 21 is configured, of the two storage control units 21 constituting the storage control unit pair 28 corresponding to the pool PL.

[0079] In addition, each internal volume IVOL corresponds one-to-one to a virtual logical volume, namely, a global pool volume GVOL, defined in each storage node 3 in which these active storage control units 21 and passive storage control units 21 are configured, via a virtual port (hereinafter referred to as a virtual port) VPT defined in the active storage control unit 21 that constitutes the corresponding storage control unit pair 28 (the storage control unit pair 28 corresponding to the internal volume IVOL via the pool PL) and a virtual port VPT defined in the passive storage control unit 21 that constitutes the storage control unit pair 28.

[0080] Furthermore, all the global pool volumes GVOL within the cluster 7 are aggregated and managed as one pool (hereinafter referred to as a global pool) GPL spanning all the storage nodes 3 within the cluster 7 .

[0081] Each global pool volume GVOL is associated with a host volume HVOL, a virtual logical volume defined in a pair of N pairs ...

[0082] In addition, each host volume HVOL corresponds one-to-one to the physical port PPT of the storage node 3 via a target TG defined in the storage node 3 where the active storage control unit 21 of the storage control unit pair 28 corresponding to the internal volume IVOL corresponding to the host volume HVOL and the global pool volume GVOL is configured.

[0083] Furthermore, the global pool volume GVOL is generated within the cluster 7 by assigning a unique identification number in response to a generation instruction from the system administrator via the management node 4. At this time, an internal volume IVOL corresponding one-to-one to the global pool volume GVOL is generated in association with the designated storage control unit pair 28.

[0084] When the system administrator creates a target TG in the storage node 3 via the management node 4 , the global pool volume GVOL is registered with the target TG, thereby being associated with the host volume HVOL corresponding to the target TG.

[0085] Furthermore, the global pool volume GVOL exists to prevent duplication of identification numbers for internal volumes IVOLs corresponding to host volumes HVOLs within cluster 7. In practice, in this embodiment, the IVOL numbers of internal volumes IVOLs corresponding to each storage control unit pair 28 are unique within the storage node 3, but not within cluster 7. Therefore, in this embodiment, by providing a global pool volume GVOL with a unique GVOL number within cluster 7 between the internal volumes IVOLs and the host volumes HVOLs, the correspondence between the host volumes HVOLs and the internal volumes IVOLs can be uniquely determined.

[0086] On the other hand, on the computing node 2 side, the plurality of storage nodes 3 constituting the cluster 7 are regarded as one storage device, and the host volume HVOL is recognized as a storage area provided to the computing node by the storage device.

[0087] However, the host volumes HVOLs recognized by each computing node 2 are only those set by the system administrator to the computing node 2 via the management node 4. Therefore, the computing node 2 recognizes only the host volumes HVOLs set by the management node 4 as storage areas provided by the storage device.

[0088] Each computing node 2 also manages a path from its own physical port (not shown) to a target TG defined in any storage node 3 within the cluster 7. Furthermore, when the host computer 2 reads or writes data to a desired host volume HVOL, it sends an I / O request specifying the target host volume HVOL and the target storage area within the host volume HVOL as the data length of the target data to the target TG identified by the host computer 2.

[0089] At this time, in each storage node 3, the front end 20 ( Figure 3 )Use About Figure 6 The front-end table 31 described later, and Figure 7 The mapping table 32 described later, and Figure 10The global pool volume table 35 described later manages the correspondence between the host volume HVOL, the global pool volume GVOL, and the internal volume IVOL. The storage control unit 21 uses a management table (not shown) to manage the correspondence between the internal volume IVOL and the logical block LC. The capacity control unit 22 ( Figure 3 ) A management table (not shown) is used to manage the correspondence between logical blocks LC and physical blocks PC.

[0090] Moreover, when the front-end unit 20 receives an I / O request from the computing node 2, it refers to the mapping table 32 and the global pool volume table 35 to determine the storage node 3 configured with the active storage control unit 21 corresponding to the host volume HVOL specified in the I / O request via the global pool volume GVOL and the internal volume IVOL in sequence.

[0091] Moreover, when the determined storage node 3 is the current node, the front-end unit 20 updates the volume number of the host volume HVOL of the read / write destination contained in the I / O request to the volume number of the internal volume IVOL corresponding to the host volume HVOL via the global pool volume GVOL, and then transmits the I / O request to the active storage control unit 21 within the current node.

[0092] Furthermore, when the identified storage node 3 is another storage node 3, and when the front-end unit 20 determines that the I / O request in the storage node 3 is a request that should be executed in the other storage node 3, the front-end unit 20 transmits the I / O request to the identified storage node 3 via the back-end network 6. Therefore, the front-end unit 20 of the storage node 3 to which the I / O request is transmitted updates the volume number of the host volume HVOL, which is the read / write destination included in the I / O request, to the volume number of the internal volume IVOL corresponding to the host volume HVOL via the global pool volume GVOL, and then transmits the I / O request to the corresponding active storage control unit 21 in the node.

[0093] Moreover, the active storage control unit 21 that receives the I / O request uses the above-mentioned management table (not shown) to determine the logical block LC and the storage area within the logical block LC corresponding to the internal volume IVOL specified in the I / O request and the storage area within the internal volume IVOL via the pool PL and the external volume ExtVOL in sequence.

[0094] Therefore, in the storage node 3, if the I / O request is a write request, the back end unit 23 writes data to the storage areas corresponding to all the physical blocks PC corresponding to the logical block LC. Alternatively, if the I / O request is a read request, the back end unit 23 reads data from one of the physical blocks PC corresponding to the logical block LC and transmits the data to the compute node 2 that sent the read request.

[0095] Furthermore, in this embodiment, as described above, data from compute node 2 is redundantly stored in multiple physical blocks PC corresponding to the logical blocks LC corresponding to the host volume HVOL specified in the I / O request, sequentially via the global pool volume GVOL and internal volume IVOL. Therefore, the number of physical blocks PC associated with each logical block LC by the capacity control unit 22 is determined by the redundancy method settings in the information processing system 1.

[0096] For example, when setting up data for duplex storage, two physical blocks PC correspond to one logical block LC, and when setting up data for triplicate or higher storage, three or more necessary physical blocks PC correspond to one logical block LC.

[0097] In this case, when selecting a physical block PC corresponding to a logical block LC from a physical block PC in a storage node 3 different from the storage node 3 equipped with the active storage control unit 21, the capacity control unit 22, having received an I / O command from the active storage control unit 21, must communicate with the storage node 3 that provided the physical block PC when reading or writing data to the physical block PC. This deteriorates the overall responsiveness of the system. Therefore, when assigning multiple physical block PCs to the logical block LC, it is preferable to select one of the physical block PCs provided by the storage device 12 in the storage node 3 equipped with the active storage control unit 21 from the perspective of overall system responsiveness.

[0098] In addition, in the event that a failure occurs in the storage node 3 of the active storage control unit 21 configured with the storage control unit pair 28, when considering that the passive storage control unit 21 switches to the active mode, for the same reasons as above, from the perspective of the overall response performance of the system, one of the physical block PCs corresponding to the logical block LC is preferably selected from the physical block PCs provided by the storage device 12 within the storage node 3 configured with the passive storage control unit 21.

[0099] Therefore, in the present information processing system 1, when the capacity control unit 22 of each storage node 3 allocates a logical block LC to the storage control unit pair 28 and makes multiple physical blocks PC correspond to the logical block LC, the physical block PC provided by the storage device 12 in the storage node 3 of the active storage control unit 21 configured with the storage control unit pair 28 and the physical block PC provided by the storage device 12 in the storage node 3 of the passive storage control unit 21 configured with the storage control unit pair 28 are preferentially made to correspond to the logical block LC.

[0100] (2) Structure of various tables

[0101] Figures 5 to 10The following shows an example of the structure of various tables included in a database (not shown) held in the memory 11 of each storage node 2 to manage the structure of each storage control unit pair 28 and the correspondence between the host volume HVOL, global pool volume GVOL, and internal volume IVOL.

[0102] In these tables, Figure 5 The storage control unit shown in Table 30, Figure 6 The front-end table shown in Table 31, Figure 7 The mapping table 32 shown, Figure 8 The front-end target table 33 shown, and Figure 10 The global pool volume 35 shown is managed by the front end 20. Figure 9 The storage control unit configuration information table 34 shown is managed by the storage control unit 21 .

[0103] In addition, when the storage control unit updates table 30, front-end table volume table 31, mapping table 32, front-end target table 33 and global pool volume table 35 on any storage node 3 in the cluster 7, it synchronizes with the updates and similarly updates all other storage nodes 3, thereby always maintaining the same content between each storage node 3.

[0104] The storage control unit table 30 is used by the master cluster control unit 25 ( Figure 4 ) manages the storage control unit 28 ( Figure 3 ) table, such as Figure 5 As shown, the storage control unit pair table 30 includes a pairing number column 30A, an active column 30B, and a passive column 30C. Each row in the storage control unit pair table 30 corresponds to one storage control unit pair 28 , and all storage control unit pairs 28 in the cluster 7 are registered in the storage control unit pair table 30 .

[0105] Furthermore, the pairing number column 30A stores an identification number (pairing number) unique to the storage control unit pair 28 , which is assigned to the corresponding storage control unit pair 28 .

[0106] The active column 30B is divided into a node number column 30BA and a storage control unit column 30BB. The node number column 30BA stores the identification number (node ​​number) of the storage node 3 where the active storage control unit 21 of the two storage control units 21 constituting the corresponding storage control unit pair 28 is located, while the storage control unit number column 30BB stores the identification number (storage control unit number) of the active storage control unit 21.

[0107] Similarly, the passive column 30C is divided into a node number column 30CA and a storage control unit number column 30CB. The node number column 30CA stores the node number of the storage node 3 where the passive storage control unit 21 of the two storage control units 21 constituting the corresponding storage control unit pair 28 is located, while the storage control unit number column 30CB stores the storage control unit number of the passive storage control unit 21.

[0108] Therefore, in Figure 5 In the example case, the storage control unit pair 28 assigned the pairing number "1" is composed of an active storage control unit 21 with the storage control unit number "0" configured at the storage node 3 with the node number "0" and a passive storage control unit 21 with the storage control unit number "1" configured at the storage node 3 with the node number "1".

[0109] On the other hand, the front-end volume table 31 is a table for managing the correspondence between the host volume HVOL and the internal volume IVOL. Figure 6 As shown, the front-end volume table 31 includes a host volume ID column 31A, a UUID column 31B, a first node identification information column 31C, a second node identification information column 31D, an active-side node identification information column 31E, a storage control unit number column 31F, a virtual port number column 31G, and an internal volume number column 31H. Each row in the front-end volume table 31 corresponds to one host volume HVOL, and all host volumes HVOLs within the cluster 7 are registered.

[0110] The volume number column 31A stores a volume number unique to the corresponding host volume HVOL assigned to each host volume HVOL. The volume number is an identification number (volume number) for the host volume HVOL recognized by the computing node 2.

[0111] The UUID column 31B stores a UUID (Universally Unique Identifier) ​​unique to the corresponding host volume HVOL, which is assigned to the corresponding host volume HVOL within the cluster 7 , and the internal volume number column 31H stores the volume number of the internal volume IVOL corresponding to the corresponding host volume HVOL.

[0112] Furthermore, the first node identification information column 31C stores information for identifying the storage node 3 configured with the active storage control unit 21 of the storage control unit pair 28 corresponding to the corresponding internal volume IVOL (hereinafter referred to as storage node identification information), and the second node identification information column 31D stores storage node identification information for the storage node 3 configured with the passive storage control unit 21 of the storage control unit pair 28. In this embodiment, the IP (Internet Protocol) address of the corresponding storage node 3 on the storage service network 5 is used as this storage node identification information.

[0113] Furthermore, the active-side node identification information column 31E stores the storage node identification information of the storage node 3, of the two storage nodes 3, that is equipped with the active storage control unit 21. Furthermore, the storage control unit number column 31F stores the storage control unit number of the active storage control unit 21, and the virtual port number column 31G stores the identification number (port number) of the virtual port VPT defined in the active storage control unit 21, which is connected to the corresponding host volume HVOL and the corresponding internal volume IVOL.

[0114] therefore, Figure 6 The example case shows that an internal volume IVOL with a volume number of "1" is defined on the pool PL allocated to the storage control unit pair 28 consisting of the active storage control unit 21 with the storage control unit number "1" of the storage node 3 configured with the node identification information of "sn1" and the passive storage control unit 21 of the storage node 3 configured with the node identification information of "sn2", and the internal volume IVOL corresponds to the host volume HVOL with a volume number of "1" via the virtual port VPT with the port number "Cl1-a" defined in the active storage control unit 21. In addition, Figure 6 It also indicates that the UUID of the host volume HVOL in cluster 7 is "Xxxxxxxxxxx".

[0115] On the other hand, the mapping table 32 is a table for managing the correspondence between the global pool volume GVOL and the internal volume IVOL. Figure 7 As shown, the mapping table 32 includes a global pool volume number column 32A, a UUID column 32B, an internal volume number column 32C, a node number column 32D, and a storage control unit number column 32E. In the mapping table 32, one row corresponds to one global pool volume GVOL, and all global pool volumes GVOL in the cluster 7 are registered.

[0116] Furthermore, the volume number of the corresponding global pool volume GVOL is stored in the global pool volume number column 32A, and the UUID within the cluster 7 of the global pool volume GVOL is stored in the UUID column 32B.

[0117] The internal volume number column 32C stores the volume number of the internal volume IVOL corresponding to the global pool volume GVOL. The node number column 32D stores the node number of the storage node 3 (usually, the storage node 3 to which the corresponding active storage control unit 21 is assigned) associated with the internal volume IVOL.

[0118] In addition, the storage control unit number column 32E stores the storage control unit number of the active storage control unit 21 of the two storage control units 21 constituting the storage control unit pair 28 corresponding to the internal volume IVOL (the storage control unit pair 28 that defines the internal volume IVOL on the allocated pool PL).

[0119] therefore, Figure 7 The example situation shows that the global pool volume GVOL with volume number "1" is assigned UUID "Xxxxxxxxxxxx" in cluster 7, and corresponds to the internal volume IVOL with volume number "1" defined in the storage node 3 with node number "2" of the active storage control unit 21 configured with storage control unit number "1".

[0120] The front-end target table 33 is used to manage the physical ports PPT ( Figure 4 ) target TG set one by one ( Figure 4 ) and the corresponding relationship between the host volume HVOL. Figure 8 As shown, the front-end target table 33 includes a target number column 33A, a target name column 33B, a UUID column 33C, a target IP column 33D, a host volume number list column 33E, and an initiator name column 33F. Each row in the front-end target table 33 corresponds to one target TG, and all target TGs defined within the cluster 7 are registered.

[0121] The target number column 33A stores an identification number (target number) unique to the target TG, and the target name column 33B stores a name (target name) assigned to the target TG. The target name is assigned by a user or the management node 4.

[0122] The UUID column 33C stores the UUID assigned to the corresponding target TG within the cluster 7. The target IP column 33D stores the IP address on the storage service network 5 to which the physical port PPT of the target TG is set.

[0123] The host volume number list column 33E stores the volume numbers of all host volumes HVOL corresponding to the corresponding target TG, and the initiator name column 33F stores the name of the compute node 2 (initiator name) that can log in to the corresponding target TG.

[0124] therefore, Figure 8 The example situation shows that in the target TG with a target name of "AAAA" and a target number of "1", the UUID of "Xxxxxxxxxxxxx" is assigned in the cluster 7, the IP address of the storage service network 5 of the physical port PPT of the target TG is set to "xx.xx.xx.xx", and corresponding to the target TG, multiple host volumes HVOL with volume numbers of "1", "2", ... "N" are assigned, and the computing node 2 with the initiator name of "lqn.xxxx.xxx" is set at the login location of the target TG.

[0125] The storage control unit configuration information table 34 is a table for managing the correspondence between the virtual port VPT and the internal volume IVOL. Figure 9 As shown in FIG. 3 , the storage control unit configuration information table 34 includes a virtual port number column 34A and an internal volume number column 34B. The storage control unit configuration information table 34 is generated for each storage control unit 21 and is managed by the corresponding storage control unit 21 .

[0126] The virtual port number column 34A stores the port number of the virtual port VPT defined in the corresponding storage control unit 21 , and the internal volume number column 34B stores the volume number of the internal volume IVOL connected to the virtual port VPT.

[0127] therefore, Figure 9 In the example case, the internal volume IVOL with the volume number “1” is connected to the virtual port VPT of “C11-a” of the corresponding storage control unit 21.

[0128] The global pool volume table 35 is a table for managing the global pool volume GVOL defined in the cluster 7. Figure 10 As shown, the global pool volume table 35 includes a global pool volume number column 35A, a target number column 35B, and a host volume number column 35C. In the global pool volume table 35, one row corresponds to one global pool volume GVOL, and all global pool volumes GVOL defined in the cluster 7 are registered.

[0129] The global pool volume number column 35A stores an identification number (volume number) unique to the corresponding global pool volume GVOL, and the host volume number column 35C stores the volume numbers of all host volumes HVOL corresponding to the corresponding global pool volume GVOL. Furthermore, the target number column 35B stores the target number of the target TG corresponding to the corresponding host volume HVOL.

[0130] therefore, Figure 10 In the case of at least the host volume HVOL assigned the volume number "1" corresponds to the global target volume GVOL assigned the volume number "1", and the host volume HVOL corresponds to the target TG assigned the target number "1" and the target TG assigned the target number "2" (refer to Figure 4 ).

[0131] In addition, the correspondence between the front-end volume table 31, the mapping table 32, the front-end target table 33, the storage control unit configuration information table 34, and the global pool volume 35 is recorded in the table. Figure 11 Indicated in.

[0132] If the Figure 11 As shown, the virtual port number column 31G ( Figure 6 ) and internal volume number column 31H ( Figure 6 ) respectively stored in the virtual port number and volume number, and the virtual port VPT ( Figure 4 ) of the virtual port number column 34A ( Figure 9 ) and the internal volume number column 34B ( Figure 9 ) corresponds to the virtual port number and volume number stored in .

[0133] Therefore, between the front-end volume table 31 and the storage control unit configuration information management table 34, the correspondence between rows can be identified using the combination of the port number of the virtual port VPT and the volume number of the internal volume IVOL corresponding to the virtual port VPT as a key.

[0134] In addition, the global pool volume number column 32A ( Figure 7 ) corresponds to the volume number stored in the global pool volume number column 35A of the global pool volume table 35. Therefore, the correspondence between the rows can be identified between the mapping table 32 and the global pool volume table 35 using the volume number of the global pool volume GVOL as a key.

[0135] In addition, the internal volume number column 32C ( Figure 7 ) and the internal volume IVOL ( Figure 4 ) of the internal volume number column 34B ( Figure 9 Therefore, between the mapping table 33 and the storage control unit configuration information management table 34, the correspondence between the rows can be identified using the volume number of the internal volume IVOL as a key.

[0136] In addition, the target number column 35B ( Figure 10 ) and the target number stored in the front-end target table 33 ( Figure 8 ) corresponds to the target number stored in the target number column 33A. Therefore, between the global pool volume table 35 and the front end target table 33, the correspondence between the rows can be identified using the target number as a key.

[0137] (3) Internal volume generation process

[0138] Next, refer to Figure 12 Description Generate information about Figure 4 The internal volume IVOL described above corresponds to the host volume HVOL and performs a series of processing for various settings related to the internal volume IVOL.

[0139] In the present information processing system 1, when generating a new host volume HVOL to be provided to the computing node 2, the system administrator operates the management node 4, thereby sending a request for generating a global pool volume GVOL corresponding to the host volume HVOL to be generated at this time (hereinafter referred to as a global pool volume generation request) to the storage node 3 configured with the main cluster control unit 25 (S1).

[0140] The master cluster control unit 25 that receives the global pool volume creation request first analyzes the received instruction (global pool volume creation request) (S2), and when it recognizes that the instruction is a global pool volume creation request, selects the storage control unit pair 28 that is optimal for the global pool volume GVOL to be created at this time ( Figure 3 )(S3). For example, in step S3, the master cluster control unit 25 selects the storage control unit pair 28 in which the active storage control unit 21 is arranged in the storage node 3 with the lowest load.

[0141] In addition, the main cluster control unit 25 sends an instruction to generate the contents of the global pool volume GVOL (hereinafter referred to as the global pool volume generation instruction) and an instruction to generate the contents of the internal volume IVOL (hereinafter referred to as the internal volume generation instruction) via the backend network 6 to the storage node 3 configured with the active storage control unit 21 in the storage control unit 21 constituting the storage control unit pair 28 selected in step S3 (S4A, S4B).

[0142] Therefore, the front-end unit 20 of the storage node 3 that has received the global pool volume creation instruction creates a global pool volume GVOL in the node (S5A). In addition, the active storage control unit 21 of the storage node 3 creates a pool PL (S5A) in the node according to the internal volume creation instruction and the storage control unit pair 28 configured by the active storage control unit 21. Figure 4) and generates an internal volume IVOL corresponding to the global pool volume GVOL generated in step S5A (S5B).

[0143] Furthermore, the global pool volume GVOL and the internal volume IVOL are virtual logical volumes that do not have entities. Therefore, the generation of these global pool volume GVOL and internal volume IVOL is achieved by registering this information in the global pool volume table 35 ( Figure 10 ) and the corresponding storage control unit configuration information table 34 ( Figure 9 ) and proceed.

[0144] In fact, the front-end 20 manages the global pool volume table 35 ( Figure 10 ) Add a new row and in the global pool volume number column 35A ( Figure 10 ) stores the volume number assigned to the global pool volume GVOL.

[0145] Then, the front-end unit 20 notifies the master cluster control unit 25 of the volume number of the global pool volume GVOL thus generated and the volume number of the internal volume IVOL corresponding to the global pool volume GVOL via the back-end network 6 ( S6A).

[0146] In addition, the active storage control unit 21 configures the storage control unit configuration information table 34 ( Figure 9 ) Add a new row and add the internal volume number column 34B ( Figure 9 ) stores the volume number of the internal volume IVOL to be generated at this time, and in the virtual port number column 34A ( Figure 9 ) stores the virtual port VPT ( Figure 4 ) port number.

[0147] Then, the active storage control unit 21 notifies the master cluster control unit 25 via the backend network 6 of a completion notification including the volume number of the internal volume IVOL generated in this manner and the port number of the virtual port VPT corresponding to the internal volume IVOL ( S6B).

[0148] On the other hand, the master cluster control unit 25 that has received these completion notifications registers the global pool volume GVOL and the internal volume IVOL in the front-end volume table 31 in the own node ( Figure 6 )、Mapping Table 32( Figure 7 ) and global pool volume table 35 ( Figure 10 ) method, gives an instruction to the front end 20 in the node. Therefore, the front end 20 that receives the instruction sends the data to the memory 11 ( Figure 2 )'s front-end volume table 31, mapping table 32, and global pool volume table 35 ( Figure 10) registers these global pool volumes GVOL and the internal volume IVOL (S7).

[0149] Specifically, the front end 20 stores the data in the memory 11 ( Figure 2 ) adds a new row to the front-end table volume table 31, and determines the information column 31C ( Figure 6 ) stores the storage node identification information of the storage node 3 in which one storage control unit 21 constituting the storage control unit pair 28 selected in step S3 is configured. In addition, the front end unit 20 stores the storage node identification information column 31D ( Figure 6 ) is stored in the storage node identification information of the storage node 3 of the other storage control unit 21 constituting the storage control unit pair 28 selected in step S3.

[0150] In addition, the front end unit 20 determines the information column 31E ( Figure 6 ) stores the storage node identification information of the storage node 3 of the active storage control unit 21 of the two storage control units 21 constituting the above-mentioned storage control unit pair 28, and in the storage control unit number column 31F ( Figure 6 ) stores the storage control unit number of the active storage control unit 21.

[0151] In addition, the front end unit 20 sets the virtual port number column 31G ( Figure 6 ) stores the port number of the virtual port VPT included in the completion notification sent from the corresponding storage control unit 21 received in step S7, and in the internal volume number column 31H ( Figure 6 ) stores the volume number of the internal volume contained in the completion notification.

[0152] Similarly, the front end 20 maps the mapping table 32 ( Figure 7 ) append a new row, in which the global pool volume number column 32A ( Figure 7 ) and UUID column 32B ( Figure 7 ) respectively store the volume number and UUID of the global pool volume GVOL generated at this time, and the internal volume number column 32C ( Figure 7 ) stores the volume number of the internal volume IVOL corresponding to the global pool volume GVOL.

[0153] In addition, the front end portion 20 is in the node number column 32D ( Figure 7 ) stores the node number of the storage node 3 of the active storage control unit 21 configured with the storage control unit pair 28 selected in step S3, and in the storage control unit number column 32E ( Figure 7 ) stores the storage control unit number of the active storage control unit 21.

[0154] In addition, the front-end unit 20 checks the global pool volume table 35 ( Figure 10 ) append a new line and in the global pool volume number column 35A ( Figure 10 ) stores the volume number of the global pool volume GVOL generated at this time.

[0155] Moreover, as described above, when the front-end part 20 in this node registers the global pool volume GVOL and the internal volume IVOL to the front-end table volume table 31, the mapping table 32 and the global pool volume table 35 in this node and ends, the main cluster control unit 25 sets the differences before and after the update of these front-end table volume table 31, the mapping table 32 and the global pool volume table 35 as difference data, and sends them to each storage node 3 other than this node in the cluster 7 via the back-end network 6 (S8).

[0156] Therefore, the front-end unit 20 of each storage node 3 that has received the difference data updates the front-end volume table 31, mapping table 32, and global pool volume table 35 of the node, based on the difference data, in the same manner as the front-end volume table 31, mapping table 32, and global pool volume table 35 of the storage node 3 where the master cluster control unit 25 is located (S9). By synchronously updating the front-end volume table 31, mapping table 32, and global pool volume table 35 of each storage node 3 in this manner, the contents of these front-end volume table 31, mapping table 32, and global pool volume table 35 are always kept consistent across all storage nodes 3 in the cluster 7.

[0157] When the front-end units 20 complete updating of the front-end volume table 31 , mapping table 32 , and global pool volume table 35 in their own nodes, they transmit a completion notification to the master cluster control unit 25 via the back-end network 6 ( S10 ).

[0158] When the front-end units 20 of all storage nodes 3 other than the host node 7 receive the completion notification of step S10, the master cluster control unit 25 transmits a completion notification to the management node 4 indicating that the requested global pool volume GVOL generation has been completed (S11).

[0159] On the other hand, when the management node 4 receives the completion notification of the above step S11 from the master cluster control unit 25, it will generate a target TG ( Figure 4 ) (hereinafter referred to as a target creation request) is sent to the master cluster control unit 25 via the storage service network 5 (S12). The target creation request also includes the target name of the target TG to be created, the volume number of the host volume HVOL corresponding to the target TG, and the IP address of the target TG.

[0160] Then, upon receiving the target generation request, the master cluster control unit 25 sends an instruction to the front-end unit 20 in its own node to generate the requested target TGs in the two storage nodes 3, each of which is equipped with a storage control unit 21 constituting the storage control unit pair 28 selected in step S3 (S13). However, these target TGs are virtual targets without entities, and therefore, the generation of these target TGs is performed by registering the front-end target table 33 ( Figure 8 )Re-register the information of these target TGs.

[0161] In fact, the front-end unit 20 that has received the instruction from the master cluster control unit 28 checks the front-end target table 33 ( Figure 8 ) Append two new rows, and in the target name column 33B ( Figure 8 )、Target IP column 33D( Figure 8 ) and host volume number column 33E ( Figure 8 ) are stored in the corresponding information of the target name and network IP of the new target TG specified in the target creation request sent from the management node 4 in step S12 and the volume number of the host volume HVOL. In addition, the front end 20 stores the corresponding information of the target name and network IP of the new target TG and the volume number of the host volume HVOL in the UUID column 33C ( Figure 8 ) respectively stores the UUID inherent in cluster 7 assigned to the corresponding target TG.

[0162] The master cluster control unit 28 then instructs the front-end unit 20 in the own node to map the global pool volume GVOL generated in step S5A, the internal volume IVOL generated in step S5B, and the host volume HVOL to be generated at this time ( S14 ).

[0163] Therefore, the front-end unit 20 that has received the instruction updates the front-end volume table 31 ( Figure 6 ) Volume number column 31A of the newly added row ( Figure 6 ) stores the volume number of the host volume HVOL to be generated at this time, which is specified in the target generation request. In addition, the front end 20 assigns a UUID unique to the cluster 7 to the host volume HVOL and stores the assigned UUID in the UUID column 31B ( Figure 6 ).

[0164] In addition, as described above, the front-end unit 20 in step S7 in the global pool volume table 35 ( Figure 10 ) The target number column 35B of the newly added row stores the target number of each target TG generated at this time specified in the target generation request, and the volume number of the host volume HVOL to be generated at this time is stored in the host volume number column 35C of the row.

[0165] Moreover, when the main cluster control unit 25 completes the generation of the requested target TG, the mapping of the global pool volume GVOL generated in step S5A, the internal volume IVOL generated in step S5B, and the host volume HVOL to be generated at this time as described above, the difference before and after the update of the front-end target table 33 updated in step S13 and the difference before and after the update of the front-end table volume table 31 and the global pool volume table 35 updated in step S14 are set as difference data, and are respectively sent to each storage node 3 other than the current node in the cluster 7 via the back-end network 6 (S15).

[0166] Therefore, the front-end part 20 of each storage node 3 that receives the difference data updates the front-end target table 33, the front-end table volume table 31, and the global pool volume table 35 in the storage node 3 configured with the main cluster control unit 25 based on the difference data (S16).

[0167] When the front-end units 20 complete updating of the front-end target table 33, the front-end volume table 31, and the global pool volume table 35 in their own nodes, they transmit a completion notification to the master cluster control unit 25 via the back-end network 6 (S17).

[0168] When the front-end units 20 of all storage nodes 3 other than the host node 3 in the cluster 7 receive the completion notification of step S17, the master cluster control unit 25 transmits a completion notification indicating completion of the requested target TG generation to the management node 4 (S18).

[0169] On the other hand, when the master cluster control unit 25 receives a completion notification of step S18, the management node 4 transmits an initiator registration request to the master cluster control unit 25 (S19), indicating that the target TG generated by the processing of steps S12 to S18 should be associated with the compute node 2 (initiator) that is permitted to access the host volume HVOL corresponding to the target TG. The initiator registration request includes the node name of the compute node 19 and the target name of the target TG.

[0170] Furthermore, upon receiving the initiator registration request, the master cluster control unit 25 sends an instruction to the front-end unit 20 in the node to register the compute node 2 specified in the initiator registration request as an initiator that can access the target TG generated in step S13. Therefore, the front-end unit 20 that receives the instruction registers the compute node 2 as an initiator that can access the target TG (S20). Specifically, the front-end unit 20 stores the data in the memory 11 ( Figure 2 ) of the trigger column 33F of the front target table 33 ( Figure 8 ) stores the node name of computing node 2 specified in the initiator registration request.

[0171] Moreover, when the main cluster unit 25 completes registering the above-mentioned computing node 2 as an initiator that can access the above-mentioned target TG as described above, the difference before and after the update of the front-end target table 33 is set as difference data, and is sent to each storage node 3 other than this node in the cluster 7 via the back-end network 6 (S21).

[0172] Therefore, the front end unit 20 of each storage node 3 that has received the difference data updates the front end target table 33 in the same manner as the front end target table 33 in the storage node 3 where the master cluster control unit 25 is arranged based on the difference data ( S22 ).

[0173] When the front-end units 20 complete updating of the front-end target table 33 in their own nodes, they transmit a completion notification to that effect to the main cluster control unit 25 via the back-end network 6 ( S23 ).

[0174] When the front-end units 20 of all storage nodes 3 other than the master cluster control unit 25 in the cluster 7 receive the completion notification of step S23, the master cluster control unit 25 transmits a completion notification to the management node 4 indicating that the registration of the requested initiator has been completed (S24). This completes the series of processing.

[0175] (4) Flow of handling when a storage node fails or when adding a new one

[0176] Next, a description will be given of a flow of processing in the present information processing system 1 when a failure occurs in any storage node 3 constituting the cluster 7 and when an additional storage node 3 is added to the cluster 7 .

[0177] (4-1) Processing flow when a storage node failure occurs

[0178] Figure 13 This diagram shows the flow of a series of processes executed within the cluster 7 when a failure occurs in any of the storage nodes 3 constituting the cluster 7 .

[0179] In this embodiment, the master cluster control unit 25 performs regular health checks on each storage node 3. Furthermore, if the master cluster control unit 25 detects a failure in any storage node 3 during the health check, it identifies the other storage control unit (passive storage control unit) 21 constituting the storage control unit pair 28, similarly to the active storage control unit 21 configured for the failed storage node (hereinafter referred to as the failed storage node) 3 (S30).

[0180] Specifically, the master cluster control unit 25 refers to the storage control unit table 30 ( Figure 5 ), the storage control unit determines the active column 30B ( Figure 5 )'s node number column 30BA( Figure 5 ) stores the node number of the failed storage node 3, and obtains the passive column 30C ( Figure 5 ) is stored in the storage control unit number column 30CB ( Figure 5 ) and the storage control unit number of the passive column 30C are stored in the node number column 30CA ( Figure 5 ) of the node.

[0181] Next, the master cluster control unit 25 switches the state of the storage control unit 21 determined in step S30 to the active mode (S31). Specifically, the master cluster control unit 25 sets the active column 30B ( Figure 5 )'s node number column 30BA( Figure 5 ) and storage control unit number column 30BB ( Figure 5 ) stores the corresponding node number and storage control unit number obtained in step S30. Furthermore, the master cluster control unit 25 sends the difference data representing the difference between the updated storage control unit pair table 30 and the updated storage control unit pair table 30 to each storage node 3 other than the master node within the cluster 7, thereby similarly updating the storage control unit pair table 30 in each of these storage nodes 3.

[0182] Furthermore, the master cluster control unit 25 activates the storage control unit 21 assigned the storage control unit number obtained in the storage node 3 assigned the node number obtained in step S30 ( S32 ), and causes the storage control unit 21 to execute necessary failure processing ( S33 ).

[0183] Meanwhile, the master cluster control unit 25 also sends the same failure processing execution instruction as that in step S31 to the front-end unit 20 mounted on the storage node 3 having the node number identified in step S30 via the backend network 6 ( S34 ).

[0184] Moreover, the front-end unit 20 that receives the fault processing execution instruction executes the fault processing (S35) for switching the corresponding destination of the internal volume IVOL corresponding to the storage control unit 21 switched to the active mode in step S32 to the storage control unit 21 switched to the active mode in step S32.

[0185] Specifically, the front-end unit 20 first determines the storage control unit numbers of the current storage control unit 21 and the active storage control unit 21 constituting the storage control unit pair 28 stored in the storage control unit number column 31F ( Figure 6 ) in the row.

[0186] Then, the front end unit 20 stores the active-side node identification information column 31E ( Figure 6 ) is updated to the node identification information of the current node, and the storage control unit number stored in the storage control unit number column 31F of the row is changed to the storage control unit number of the storage control unit 21 switched to the active mode in step S31. In addition, the front end unit 20 changes the virtual port number column 31G ( Figure 6 ) is updated to the virtual port VPT ( Figure 4 ), that is, the port number of the virtual port VPT corresponding to the corresponding host volume HVOL.

[0187] In addition, the front end 20 is for the mapping table 32 ( Figure 7 ), first determine that the storage control unit numbers of the present storage control unit 21 and the active storage control unit 21 constituting the storage control unit pair 28 are stored in the storage control unit number column 32E ( Figure 6 Then, the front end 20 stores the node number column 32D ( Figure 6 ) is updated to the node number of this node. In addition, the front-end unit 20 updates the storage control unit number stored in the storage control unit number column 32E of the row to the storage control unit number of the storage control unit 21 switched to the active mode in step S31.

[0188] In addition, the front end unit 20 is concerned with the front end target table 33 ( Figure 8 ), determines the row in which the volume number of the host volume HVOL corresponding to the corresponding internal volume IVOL defined in the failed storage node 3 is stored in the host volume number list column 33E. Then, the front-end unit 20 updates the IP address stored in the target ID column 33D of the row to the physical port PPT in the local node ( Figure 4 ), that is, the IP address of the physical port PPT corresponding to the above host volume HVOL.

[0189] Moreover, the main cluster control unit 25 sends the difference data of the updated front-end volume table 31, mapping table 32 and front-end target table 33 before and after the update to the front-end unit 20 of each storage node 3 other than the current node in the cluster 7, thereby similarly updating the front-end volume table 31, mapping table 32 and front-end target table 33 in each of these storage nodes 3.

[0190] also, Figure 13 Although not shown in the figure, the main cluster control unit 25, together with the processing of steps S31 and S32, replaces the active storage control unit 21 configured in the failed storage node 3 and selects the storage control unit 21 that should constitute a new storage control unit pair 28 together with the storage control unit 21 switched to the active mode in step S32.

[0191] This storage control unit 21 is selected from the storage control units 21 that are not used at this time in any storage node 3 other than the faulty storage node 3 configured in the cluster 7 (no storage control unit 21 is set in the storage control unit 21 of the storage control unit pair 28), and the storage control units 21 configured in the storage node 3 other than the storage control unit 21 that is switched to the active mode in step S32.

[0192] Then, the master cluster control unit 25 updates the storage control unit pair table 30 ( ) in which the selected storage control unit 21 and the storage control unit 21 switched to the active mode in step S32 are set in the new storage control unit pair 28. Figure 5 ) and front-end table volume table 31 ( Figure 6 ).

[0193] Specifically, the master cluster control unit 25 determines the active column 30B ( Figure 5 )'s node number column 30BA( Figure 5 ) and storage control unit number column 30BB ( Figure 5 ) in which the node number and the storage control unit number obtained in step S30 are stored, and the passive column 30C ( Figure 5 ) is stored in the storage control unit number column 30CB ( Figure 5 ) is updated to the storage control unit number of the storage control unit 21 selected as described above, and the node number column 30CA ( Figure 5 ) is rewritten as the node number of the storage node 3 configured with the storage control unit 21.

[0194] In addition, the main cluster control unit 25 updates the node number of the faulty storage node 3 in any one of the first and second node identification information columns 31C and 31D stored in the corresponding row of the front-end table volume table 31 via the front-end unit 20 within this node to the node number of the storage node 3 configured with the storage control unit 21 selected as described above.

[0195] Moreover, the main cluster control unit 25 sends the difference data of the updated storage control unit pair table 30 and the front-end table volume table 31 before and after the update to the storage nodes 3 other than this node in the cluster 7, thereby similarly updating the storage control unit pair table 30 and the front-end table volume table 31 in these storage nodes 3.

[0196] (4-2) Processing flow when adding storage nodes

[0197] on the other hand, Figure 14 The flow of a series of processes executed in the cluster 7 when the storage node 3 is added to the cluster 7 is shown.

[0198] When a storage node 3 is added to the cluster 7, the system administrator notifies the master cluster control unit 25 of this fact via the management node 4. The master cluster control unit 25, having received this notification, distributes the load among the storage nodes 3 and selects a storage control unit (hereinafter referred to as a migration target storage control unit) 21 to be moved to the added storage node (hereinafter referred to as the added storage node) 3 (S40).

[0199] For example, the master cluster control unit 24 selects the active storage control unit 21 disposed in the storage node 3 with the highest load among the storage control units 21 in the cluster 7 as the storage control unit 21 to be moved.

[0200] Then, the master cluster control unit 25 executes a process ( S41 to S45 ) for replacing any currently unused storage control unit 21 arranged in the added storage node 3 with the migration target storage control unit 21 selected in step S40 .

[0201] Specifically, the main cluster control unit 25 first starts the storage control unit (hereinafter referred to as the selected storage control unit) 21 selected in step S40 of adding the storage node 3 (S41), and causes the selected storage control unit 21 to perform the prescribed addition processing (S42) for transferring the processing performed so far by the migration object storage control unit 21.

[0202] In addition, the master cluster control unit 25 causes the target storage control unit 21 to execute a predetermined installation-time process (S41, S42) for transferring the process executed by the target storage control unit 21 to the selected storage control unit 21. In addition, the installation-time process also includes transferring the storage control unit to the table 30 ( Figure 5 )、Front-end table volume table 31( Figure 6 )、Mapping Table 32( Figure 7 ), front-end target table 33 ( Figure 8 ) and global pool volume table 35 ( Figure 10 ) is transmitted to the front end portion 20 of the added storage node 3.

[0203] Then, the main cluster control unit 25 sends an instruction to the front-end unit 20 within this node, including switching the corresponding destination of the internal volume IVOL corresponding to the mobile object storage control unit 21 to the selected storage control unit 21, and setting the environment of the selected storage control unit 21 of the additional storage node 3 to be the same as the environment of the mobile object storage control unit 21 of the storage node 3 configured with the mobile object storage control unit 21 (S43).

[0204] Therefore, the front end 20 that receives the instruction updates the memory 11 ( Figure 2 ) of the storage control unit to table 30 ( Figure 5 )、Front-end table volume table 31( Figure 6 )、Mapping Table 32( Figure 7 ), front-end target table 33 ( Figure 8 ) and global pool volume table 35 ( Figure 10 )(S44).

[0205] Specifically, the front end unit 20 first determines the storage control unit number of the storage control unit 21 to be moved and stores it in the active column 30B ( Figure 5 )'s storage control unit number column 30BB ( Figure 5 ) row. The front end unit 20 further includes the node number column 30BA ( Figure 5 ) is updated to the node number of the newly added storage node 3, and the storage control unit number column 30BB ( Figure 5 ) is updated to the storage control unit number of the selected storage control unit 21.

[0206] Furthermore, the front-end unit 20 first determines the storage control unit number of the storage control unit 21 to be moved and stores it in the storage control unit number column 31F ( Figure 6 ) line.

[0207] Furthermore, the front end unit 20 stores the first and second node identification information columns 31C and 31D ( Figure 6 ) and the node identification information of the storage node 3 in which the migration target storage control unit 21 is configured and the node identification information stored in the active-side node identification information column 31E ( Figure 6 )'s node determination information of the storage node 3 is updated to the node determination information of the additional storage node 3.

[0208] In addition, the front end unit 20 updates the storage control unit number stored in the storage control unit number column 31F of the row to the storage control unit number of the selected storage control unit 21. In addition, the front end unit 20 updates the virtual port number column 31G ( Figure 6 ) is rewritten to the virtual port VPT ( ) corresponding to the migration target storage control unit 21 and defined in the selected storage control unit 21 corresponding to the corresponding host volume HVOL. Figure 4 ) virtual port number.

[0209] Furthermore, the front end unit 20 first determines the storage control unit number of the storage control unit 21 to be moved and stores it in the storage control unit number column 32E ( Figure 7) row. Then, the front end unit 20 updates the storage control unit number stored in the storage control unit number column 32E of the row to the selected storage control unit number. In addition, the front end unit 20 updates the node number column 32D ( Figure 7 ) is updated to the node number of the newly added storage node 3.

[0210] Furthermore, the front-end unit 20 first determines the host volume number list column 33E ( Figure 8 ) in which the volume number of the corresponding host volume HVOL is stored. The volume number can be obtained as the volume number stored in the host volume number column 32A of the row specified in the mapping table 32 as described above.

[0211] Furthermore, the front-end unit 20 updates the IP address stored in the target IP column of the row to the physical port PPT ( ) corresponding to the corresponding host volume HVOL in the added storage node 3. Figure 4 )'s storage service network 5( Figure 1 ) on the IP address.

[0212] Moreover, when the main cluster control unit 25 completes the update of the storage control unit table 30, the front-end table volume table 31, the mapping table 32 and the front-end target table 33, it sends the difference data of the updated storage control unit table 30, the front-end table volume table 31, the mapping table 32 and the front-end target table 33 before and after the update to the storage nodes 3 other than this node in the cluster 7, thereby similarly updating these storage control unit tables 30, the front-end table volume table 31, the mapping table 32 and the front-end target table 33.

[0213] Furthermore, the master cluster control unit 25 accesses the selected storage control unit 21 and enters the virtual port number column 34A ( Figure 9 ) and the internal volume number column 34B ( Figure 9 ) and the virtual port number column 31G ( Figure 6 ) and internal volume number column 31H ( Figure 6 ) has the same value as the value of .

[0214] Through the above-described processing, the environment of the selected storage control unit 21 of the additional storage node 3 is set to be identical to the environment of the migration target storage control unit 21 of the storage node 3 where the migration target storage control unit 21 is arranged.

[0215] On the other hand, the computing node 2 then executes a path installation process (S46) to set up a path from the computing node itself to the corresponding target TG defined in the installation process of step S44 within the added storage node 3, based on the system administrator's operational input and in accordance with instructions from the management node 4. Furthermore, the computing node 2 transmits a login request to the front end 20 of the added storage node 3 via the path thus set, requesting that the content be logged into the target TG (S47).

[0216] Then, upon receiving the login request, the front end unit 20 of the added storage node 3 executes a login process corresponding to the login request (S48), and transmits the processing result to the computing node 2 that is the source of the login request (S49).

[0217] (5) The flow of writing and reading in this information processing system

[0218] (5-1) Write Processing Flow

[0219] Next, the flow of the write process in the present information processing system 1 will be described. Figure 15 The flow of write processing executed in cluster 7 when a write request is sent to any storage node 3 in cluster 7 composed of compute nodes 2 is shown. Hereinafter, a storage node 3 receiving a write request in cluster 7 is appropriately referred to as a "write request receiving node."

[0220] In addition, the write request specifies the volume number of the write destination host volume HVOL, the starting address of the write destination storage area of ​​the host volume HVOL, and the data length of the write target data (hereinafter referred to as write data) as described above.

[0221] When the first communication device 13 of the "write request receiving node" receives the write request (S50), it transmits the received write request to the front end 20 in the node (S51). Figure 2 ) secures a buffer area of ​​the necessary capacity (S52), and then sends a completion notification of the end of securing the contents of the buffer area to the computing node 2 that is the sending source of the write request via the first communication device 13 (S53, S54).

[0222] When the first communication device 13 of the "write request receiving node" subsequently transmits write data from the computing node 2 (S55), the first communication device 13 transmits the write data to the front end unit 20 in the own node (S56).

[0223] The front end unit 20 that has received the write data stores the received write data in the buffer area secured in step S52 ( S57 ), and then determines whether the write process according to the write request is a process to be executed in the own node ( S58 ).

[0224] This judgment refers to the mapping table 32 ( Figure 7 ) in each row of the node number column 32D ( Figure 7 ) is performed. Specifically, when the node number stored in the node number column 32D is the node number of the current node, the front-end unit 20 determines that the write processing based on the write request is a processing that should be executed on the current node. Alternatively, when the node number stored in the node number column 32D is the node number of another storage node 3, the front-end unit 20 determines that the write processing based on the write request is a processing that should be executed on the other storage node 3.

[0225] Furthermore, if the front-end unit 20 determines in step S58 that the write process according to the write request should be executed on the local node, it obtains the storage control unit number column 32E ( Figure 7 ) and transmits the write request to the storage control unit (active storage control unit) 21 in the local node to which the storage control unit number is assigned (S59). Furthermore, the front-end unit 20 updates the volume number of the host volume HVOL included in the write destination of the write request to the volume number of the internal volume IVOL corresponding to the host volume HVOL.

[0226] The storage control unit 21 that has received the write request refers to a management table (not shown) and determines the internal volume IVOL specified as the write destination in the write request and the logical block LC corresponding to the storage area in the internal volume IVOL. Figure 4 ) and the storage area within the logical block LC. Furthermore, the storage control unit 21 generates an I / O command that specifies the logical block LC of the write destination of the write data determined in this manner and the storage area within the logical block LC, and sends it to the back-end unit 23 within the own node (S60).

[0227] When the back end unit 23 receives the I / O command, it refers to a management table (not shown) and determines to provide each physical block PC corresponding to the logical block LC specified in the I / O command. Figure 4 ) of the storage device 12( Figure 2 ). In addition, when one of the determined storage devices 12 exists in the local node, the back-end unit 23 writes the write data to the storage area of ​​the physical block PC corresponding to the logical block LC specified by the I / O instruction and the storage area in the logical block LC in the storage device 12 (S61). Moreover, when the writing of the write data to the storage device 12 is completed, the back-end unit 23 sends a write completion notification of the content to the storage control unit (active storage control unit) 21 of the local node (S62).

[0228] Simultaneously with the processing of step S61, the back-end unit 23 transmits the aforementioned I / O command and write data via the back-end network 6 to the corresponding back-end unit 23 in the storage node 3 (hereinafter referred to as "the other node 2") where the storage device 12 providing the remaining physical blocks PC corresponding to the aforementioned logical block LC is located (S63). As a result, the storage node 3 ("the other node 2") performs the same write processing as in step S61 (S64). When the write processing is completed, a write completion notification to that effect is transmitted via the back-end network 6 to the storage control unit 21 of the "write request receiving node."

[0229] Upon receiving the aforementioned write completion notification from the backend unit 23 of the "write request receiving node" and the aforementioned write completion notifications from the backend unit 23 of all other necessary storage nodes 3, the storage control unit 21 notifies the frontend unit 20 of the completion notification of the requested write process (S76). Furthermore, upon receiving the completion notification, the frontend unit 20 transmits the completion notification of the write process in accordance with the write request via the first communication device 13 and the storage service network 5 to the computing node 2 that sent the write request (S77, S78). This completes the series of write processes in response to the write request.

[0230] On the other hand, if the front end 20 of the "write request receiving node" determines in step S58 that the write processing in response to the write request is a processing to be executed by another storage node 3, it assigns the write request stored in the mapping table 32 ( Figure 7 ), the node number column 32D ( Figure 7 ) transmits a write request to the storage node 3 (hereinafter referred to as "other node 1" as needed) with the node number of (S66). The transmission of the write request is performed via the backend network 6.

[0231] Then, the front end 20 of the "other node 1" that has received the write request writes data to the memory 11 ( Figure 2 ) to ensure a buffer area of ​​necessary capacity (S67).

[0232] The front-end unit 20 then refers to the mapping table 32 stored in the memory 11 in the local node, and obtains the storage control unit number column 32E ( Figure 7) and transmits the write request to the storage control unit (active storage control unit) 21 in the own node assigned the storage control unit number (S68). At this time, the front-end unit 20 notifies the storage control unit 21 of the information on whether a buffer area with the required capacity can be reserved in step S67 (hereinafter referred to as buffer reservation information).

[0233] Then, the storage control unit 88 that has received the write request determines whether a buffer area can be reserved based on the write request and the buffer reservation information provided by the front-end unit 20 as described above (S69), and sends the determination result to the front-end unit 20 of the own node (S70). Therefore, the front-end unit 20 that has received the completion notification sends the response in step S67 regarding whether a buffer area of ​​the required capacity can be reserved on the memory 11 to the front-end unit 20 of the "write request receiving node" via the back-end network 6 (S71).

[0234] The front end 20 of the "write request receiving node" that receives the response sends an error notification of the content to the computing node 2 that is the sending source of the write request via the first communication device 13 when the front end 20 of the "other node 1" cannot ensure a buffer area of ​​the required capacity on the memory 11, and ends the series of write processing.

[0235] In contrast, the front end 20 of the "write request receiving node" transmits the write data to the "other node 1" via the backend network 6 (S72) when the front end 20 of the "other node 1" can secure a buffer area of ​​the required capacity on the memory 11.

[0236] The front-end unit 20 of the "other node 1" that has received the write data stores the received write data in the buffer area secured in step S67 (S73). Then, in the "other node 1," the same data write process as described above is performed for steps S59 to S61 and S63 to S64 (S74). When the data write process is completed, a write completion notification is sent from the front-end unit 20 of the "other node 1" via the back-end network 6 to the storage control unit 21 of the "write request receiving node" (S75).

[0237] Therefore, at this point, when the storage control unit 21 of the "write request receiving node" receives the write completion notification from the backend unit 23 of the "other node 1" and the necessary write completion notifications from the backend units 23 of all other storage nodes 3, it notifies the frontend unit 20 of this node of the completion notification of the requested write process (S76). Furthermore, the frontend unit 20, having received this completion notification, transmits a completion notification of the write process in response to the write request via the first communication device 13 and the storage service network 5 to the computing node 2 that sent the write request (S77, S78). This completes the series of write processes in response to the aforementioned write request.

[0238] (5-2) Reading Process

[0239] on the other hand, Figure 16 The flow of read processing executed in cluster 7 when a read request is sent to any storage node 3 in cluster 7 composed of computing nodes 2 is shown. Hereinafter, a storage node 3 receiving a read request in cluster 7 is appropriately referred to as a "read request receiving node."

[0240] The read request specifies the volume number of the host volume HVOL to be read, the head address of the storage area to be read in the host volume HVOL, and the data length of the data to be read (hereinafter referred to as read data).

[0241] When the first communication device 13 of the "read request receiving node" receives the read request (S80), it transmits the received read request to the front-end unit 20 in the node (S81). Furthermore, the front-end unit 20 analyzes the transmitted read request and determines whether the read process in accordance with the read request is a process that should be executed in the node (S82).

[0242] This judgment refers to the mapping table 33 ( Figure 7 ), the node number column 32D ( Figure 7 Specifically, when the node number stored in the node number column 32D is the node number of the current node, the front-end unit 20 determines that the read processing according to the read request is the processing that should be executed on the current node. In addition, when the node number stored in the node number column is the node number of another storage node 3, the front-end unit 20 determines that the read processing based on the read request is the processing that should be executed on the other storage node 3.

[0243] Furthermore, when the front end unit 20 determines in step S82 that the read process in response to the read request should be executed on the own node, it obtains the data stored in the memory 11 ( Figure 2 ) mapping table 32( Figure 7) in the storage control unit number column 32E ( Figure 7 ) and transmits the read request to the storage control unit (active storage control unit) 21 in the local node to which the storage control unit number is assigned (S83). Furthermore, the front-end unit 20 updates the volume number of the host volume HVOL, the read destination included in the read request, to the volume number of the internal volume IVOL corresponding to the host volume HVOL.

[0244] The storage control unit 21, having received the read request, refers to a management table (not shown) to identify the internal volume IVOL specified as the read destination in the read request, the logical block LC corresponding to the storage area within the internal volume IVOL, and the storage area within the logical block LC. The storage control unit 21 then generates an I / O command specifying the logical block LC and the storage area within the logical block LC as the read destination thus determined, and sends the command to the backend unit 23 within the local node (S84).

[0245] Upon receiving the I / O command, the backend unit 23 references a management table (not shown) and identifies a storage device 12 that provides one physical block PC from among the physical blocks PC corresponding to the logical block LC specified in the I / O command. The selected physical block PC is provided by the storage device 12 mounted on the "read request receiving node." The backend unit 23 then reads data stored in the storage area of ​​the physical block PC corresponding to the logical block LC specified in the I / O command and the storage area within the logical block LC within the identified storage device 12 (S85). The backend unit 23 then transmits the read data (read data) to the storage control unit 21 of its own node (S86).

[0246] Upon receiving the read data, the storage control unit 21 transmits the read data to the front-end unit 20 of its own node (S87). Furthermore, the front-end unit 20, having received the read data, transmits the read data to the computing node 2 that sent the read request via the first communication device 13 and the storage service network 5 (S88, S89). This completes the series of read processing in response to the read request.

[0247] On the other hand, if the front end 20 of the "read request receiving node" determines in step S82 that the read processing according to the read request is a processing to be executed in another storage node 3, it assigns the mapping table 32 ( Figure 7 ) in the node number column 32D ( Figure 7 ) transmits the read request to the storage node 3 (hereinafter referred to as "other node" as appropriate) having the node number stored in the backend network 6 (S90). The transmission of the read request is performed via the backend network 6.

[0248] Then, the front-end unit 20 of the "other node" that has received the read request analyzes the contents of the received read request (S91). In addition, the front-end unit 20 refers to the mapping table 32 stored in the memory 11 of the own node and obtains the storage control unit number column 32E ( Figure 7 ) and transmits the read request to the storage control unit (active storage control unit) 21 in the local node to which the storage control unit number is assigned (S92). At this time, the volume number of the host volume HVOL included in the read request is updated to the volume number of the internal volume IVOL corresponding to the host volume HVOL.

[0249] Then, the same data reading process as steps S84 to S86 is performed at the "other node" (S93), and the data (read data) read from the corresponding storage device 12 through the data reading process is sent from the front end 20 of the "other node" to the front end 20 of the "read request receiving node" via the back-end network 6 (S94).

[0250] Then, the front-end 20 of the "read request receiving node" that has received the read data transmits the read data to the computing node 2 that sent the read request via the first communication device 13 and the storage service network 6 (S88, S89). This completes the series of read processing in response to the read request.

[0251] (6) Effects of this embodiment

[0252] As described above, in the information processing system 1 of this embodiment, an internal volume IVOL is generated corresponding to the storage control unit 21 respectively configured in each storage node 3, and the generated internal volume IVOL is made to correspond to the host volume 2 provided to the computing node 2 as a storage area for reading / writing data.

[0253] In addition, in the present information processing system 1, when an I / O request from the computing node 2 is sent to the storage node 3, the front-end unit 20 of the storage node 3 determines the storage node 3 configured with the internal volume IVOL corresponding to the host volume HVOL specified as the read / write destination in the I / O request, and when the determined storage node 3 is the present node, transmits the I / O request to the corresponding storage control unit 21 within the present node; and when the determined storage node 3 is another storage node 3, transmits the I / O request to the storage node 3.

[0254] Therefore, according to this information processing system 1, regardless of whether the storage nodes 3 are scaled out, the computing nodes 2 can access the desired data without being concerned about the storage node 3 to which the I / O request is issued. Therefore, according to this embodiment, it is possible to realize this information processing system 1 with high scalability.

[0255] Furthermore, according to the present information processing system 1, all front-end units 20 are responsible for scale-out related processing, and the storage control unit 21 only executes processing to be completed within the node. Therefore, the storage control unit 21 can also use control software used in existing storage devices.

[0256] (7) Other Implementation Methods

[0257] Furthermore, in the above embodiment, a case where an internal volume IVOL and a host volume HVOL are in one-to-one correspondence has been described, but the present invention is not limited thereto, and multiple host volumes HVOLs may be associated with one internal volume IVOL.

[0258] In addition, in the above-mentioned embodiment, the present invention is applied to Figure 1 Although the case of the information processing system 1 having such a configuration has been described, the present invention is not limited thereto and is widely applicable to information processing systems having various other configurations.

[0259] Furthermore, in the above embodiment, the front-end unit 20, storage control unit 21, and back-end unit 23 in each storage node 2 are described as software configurations. However, the present invention is not limited thereto, and they may also be hardware configurations.

[0260] In addition, in the above-mentioned embodiment, a case is described in which a cluster control unit 25 is respectively configured in each storage node 3, one of the cluster control units 25 is selected as the main cluster control unit 25, and the main cluster control unit 25 performs the various processing described above. However, the present invention is not limited to this. It is also possible to not configure a cluster control unit 25 in each storage node 3, but to set a server device or the like having the function of the above-mentioned main cluster control unit 25 separately from the storage node 3.

[0261] In addition, a hypervisor can also operate on the server, and one or more virtual computers can operate on the hypervisor. Figure 3The various programs shown are run on the virtual computer. That is, if the various programs (control software 20, redundancy unit 22, cluster control unit 23) are run on the hardware of the physical computer, they can also be run on the virtual computer. Similarly, the computing node 2 can be an application program (host program) that runs on the virtual computer, or it can be a physical host computer (host computer). When the information processing system 1 has multiple servers, some of the servers can also be located in different locations. In addition, some or all of the servers of the information processing system 1 can also be located in the cloud and provide services to users via the network.

[0262] It can also be a structure (hyper-converged infrastructure) in which virtual computers operated by various programs (control software 20, redundancy unit 22, cluster control unit 23) and virtual computers operated by host programs are on the same server (node), or it can be a structure on different servers connected via a network.

[0263] Industrial applicability

[0264] The present invention can be widely applied to systems of various structures including multiple storage nodes.

[0265] Description of Reference Numerals

[0266] 1…information processing system, 2…compute node, 3…storage node, 4…management node, 5…storage service network, 6…back-end network, 7…cluster, 10…CPU, 12…storage device, 20…front-end unit, 21…storage control unit, 22…capacity control unit, 23…back-end unit, 25…cluster control unit, 28…storage control unit pair, 30…storage control unit pair table, 31…front-end volume table, 32…mapping table, 33…front-end target table, 34…storage control unit composition information management table, 35…global pool volume table, GVOL…global pool volume, HVOL…host volume, IVOL…internal volume, LC…logical block, PC…physical block, PPT…physical port, TG…target, VPT…virtual port

Claims

1. A system comprising a cluster consisting of a plurality of storage nodes, characterized in that: Each of the storage nodes includes a storage control unit that executes I / O processing in response to an I / O request from a higher-level device. The storage node, having received the logical volume creation instruction based on the request from the management device, creates a virtual first logical volume that can be identified within the cluster. According to the instruction from the management device, the first logical volume corresponds to the storage control unit and generates a virtual second logical volume that can be recognized in the node in the node. The generated correspondence between the first logical volume and the second logical volume is registered as mapping information. The storage node that receives the I / O request from the upper device determines, based on the mapping information, whether the storage control unit corresponding to the first logical volume specified in the I / O request is configured in this node, thereby determining whether the I / O request is processed by this node.

2. The system according to claim 1, wherein: Each of the first logical volumes is managed as a data pool across each of the storage nodes constituting the cluster.

3. The system according to claim 1, wherein: The mapping information is updated synchronously between the storage nodes. The storage node that receives the I / O request from the upper device determines, based on the mapping information, the storage node configured by the storage controller corresponding to the first logical volume designated as the I / O destination. If the determined storage node is the current node, the I / O request is forwarded to the storage control unit within the current node. If the determined storage node is another storage node, the I / O request is assigned to the storage node.

4. The system according to claim 1, wherein: The first logical volume is generated in correspondence with a virtual host volume provided to the host device as a storage area for reading and writing data, and the correspondence relationship with the second logical volume is registered together with the host volume as mapping information. The I / O request from the upper device includes information on the host volume corresponding to the upper device, and each storage node determines an I / O destination logical storage area in the own node based on the information and the mapping information.

5. The system according to claim 4, characterized in that: The host volume registers a table in which target information associated with the physical port of the storage node and identification information of the upper-level device that can access the target information are associated with each other. Each of the storage nodes identifies a higher-level device to which an I / O request is made based on the table.

6. The system according to claim 1, wherein: The storage control unit is configured as a storage control unit pair together with the storage control unit configured in the other storage node different from the node itself. One of the storage control units constituting the storage control unit pair is set as a current storage control unit, and the other storage control unit is set as a standby storage control unit. The second logical volume is generated using the storage node having the storage control unit set as the currently used storage control unit.

7. The system according to claim 6, characterized in that: It also includes a main cluster control device that performs control processing for the entire cluster. When receiving the request to create the logical volume from the management device, the master cluster control device selects the storage control unit pair suitable for creating the first logical volume, and outputs the logical volume creation instruction to any one of the storage nodes belonging to the storage control unit pair. The storage node that receives the logical volume creation instruction sends identification information of each of the created first logical volume and second logical volume to the primary cluster control device.

8. The system according to claim 7, characterized in that: The master cluster control device selects the storage control unit pair in which the storage node with the lowest load is set as the current storage control unit, and transmits the logical volume creation instruction to the storage node.

9. The system according to claim 6, characterized in that: The storage control unit of each storage node manages the logical storage area in the node corresponding to one or more storage devices as a processing destination of an I / O request. The logical storage areas of the storage nodes belonging to the storage control unit pair are managed as one pool, and the second logical volume is generated corresponding to the pool. The storage node of the current storage control unit in the storage control unit pair processes a data write request as an I / O request and forwards the corresponding data write request to the storage node of the standby storage control unit in the storage control unit pair.

10. The system according to claim 4, characterized in that: Part or all of the storage nodes are configured on the cloud, and communicate with the host device via the network to send I / O requests or result notifications.

11. A control method for a system including a cluster consisting of a plurality of storage nodes, characterized in that: Each of the storage nodes includes a storage control unit that executes I / O processing in response to an I / O request from a higher-level device. The control method performs: In a first step, the storage node, having received a logical volume creation instruction based on a request from a management device, creates a virtual first logical volume to be provided to a superior device and identifiable within the cluster. In a second step, according to an instruction from the management device, the first logical volume and the storage control unit generate a virtual second logical volume in the local node that can be identified in the local node; and In the third step, the generated correspondence between the first logical volume and the second logical volume is registered as mapping information, thereby The storage node that receives the I / O request from the upper device determines, based on the mapping information, whether the storage control unit corresponding to the first logical volume specified in the I / O request is configured in this node, thereby determining whether the I / O request is processed by this node.

12. A storage medium storing a program, characterized in that: The program is executed in a system including a cluster composed of a plurality of storage nodes and in the storage node. Each of the storage nodes includes a storage control unit that executes I / O processing in response to an I / O request from a higher-level device. The program performs: In a first step, the storage node, having received a logical volume creation instruction based on a request from a management device, creates a virtual first logical volume to be provided to a superior device and identifiable within the cluster. In a second step, according to an instruction from the management device, the first logical volume and the storage control unit generate a virtual second logical volume in the local node that can be identified in the local node; and In the third step, the generated correspondence between the first logical volume and the second logical volume is registered as mapping information, thereby The storage node that receives the I / O request from the upper device determines, based on the mapping information, whether the corresponding storage control unit is configured in this storage node via the first logical volume specified in the I / O request, thereby determining whether the I / O request is processed by this node.

Citation Information

Patent Citations

  • Clientless software defined grid

    US20160173598A1

  • Storage system, storage device, and data transfer method

    US20170017433A1

  • Storage system, and logical volume management method applied to the system

    JP2008097112A

  • Storage system equipped with two or more controller modules

    JP2009181402A