The present application claims priority from Japanese application JP2022-098666, filed on Jun. 20, 2022, the contents of which is hereby incorporated by reference into this application.
The present invention relates to a configuration technique of a constituent element related to management of data in a computer system including a storage system that is capable of arranging a plurality of instances in a plurality of subzones divided by risk boundaries.
For example, a cloud software defined storage (SDS) service is proposed that operates on a public cloud by applying an SDS technique of implementing a storage by operating storage software on a general-purpose server.
In order to implement high availability in the public cloud, for example, a plurality of data centers called availability zones or zones are prepared, and data and services span the plurality of data centers.
In recent years, even in the availability zone, the availability can be improved by utilizing subzones divided by risk boundaries such as power supply boundaries and rack boundaries.
As a related technique, U.S. patent Ser. No. 10/536,340 discloses a technique of a spread placement group (SPG) including a plurality of instances arranged in different subzones. U.S. Pat. No. 9,826,041 discloses a technique in which a replica of a partition of a volume is arranged across a power supply boundary. JP-A-2020-64473 discloses a technique of constructing a storage system having a high degree of freedom while ensuring a certain fault tolerance.
In a storage system, it is required to improve reliability such as high availability of data to be managed.
The invention is made in view of the above circumstances, and an object thereof is to provide a technique capable of easily and appropriately improving reliability in a storage system.
In order to achieve the above object, a computer system according to one aspect is a computer system including a storage system configured to provide a plurality of instances in any one of a plurality of subzones divided by risk boundaries, in which a processor of the computer system is configured to make a storage controller that controls I/O processing for a volume based on a capacity pool provided by a plurality of storages redundant to the plurality of instances provided in the plurality of subzones.
According to the invention, reliability in a storage system can be easily and appropriately improved.
Embodiments will be described with reference to drawings. The embodiment described below does not limit the invention according to the claims, and all elements and combinations thereof described in the embodiment are not necessarily essential to the solution of the invention.
In the following description, although information may be described by an expression of “AAA table”, the information may be expressed in any data structure. That is, in order to indicate that the information does not depend on the data structure, the “AAA table” may be referred to as “AAA information”.
In the following description, processing may be described using a “program” as a subject of an operation, whereas the program may be executed by a processor (for example, a central processing unit (CPU)) to execute predetermined processing while appropriately using a storage unit (for example, a memory) and/or an interface (for example, a port), and thus the subject of the operation of the processing may be the program. The processing described with the program as the subject of the operation may be processing executed by the processor or a computer (for example, a server) including the processor. A hardware circuit that executes a part or all of the processing to be executed by the processor may be provided. Alternatively, the program may be installed from a program source. The program source may be, for example, a program distribution server or a computer-readable (for example, non-transitory) recording medium. In the following description, two or more programs may be implemented as one program, or one program may be implemented as two or more programs.
A computer system 1 is an example of an environment in which a storage system operates, and includes one or more user terminals 3 and one or more regions 10. The user terminal 3 and the region 10 are connected via an internet 2 which is an example of a network.
The user terminal 3 is a terminal of a user who uses various services provided by the region 10. When there are a plurality of the regions 10, the regions 10 are formed in different countries, for example.
The region 10 includes a region gateway 11 and one or more availability zones 20. The region gateway 11 communicably connects each of the availability zones 20 and the internet 2.
The plurality of availability zones 20 in the region 10 are formed in, for example, different buildings, and power supplies, air-conditioning, and networks are independent so as not to affect the other availability zones 20.
The availability zone 20 includes an availability zone gateway 21 and resources 29 such as computing, a network, and a storage.
The availability zone 20 includes the availability zone gateway 21, a spine network switch 22, a cloud storage service 23, and a plurality of subzones 30.
The availability zone gateway 21 communicably connects the region gateway 11 and the spine network switch 22.
The cloud storage service 23 includes a plurality of storage devices and the like, and provides a function of storing various types of data to the subzone 30.
The spine network switch 22 mediates communication among the availability zone gateway 21, the cloud storage service 23, and the plurality of subzones 30. The spine network switch 22 and the plurality of subzones 30 are connected in a spine-leaf type.
The subzone 30 includes a leaf network switch 31, one or more bare metal servers 32, and a power distribution unit (PDU) 33. The subzone 30 may be provided with an uninterruptible power supply (UPS). The subzones 30 are divided by a power supply or network risk boundaries. That is, in the subzone 30, the PDU 33 and the leaf network switch 31 are provided independently for each subzone 30 such that the other subzones 30 are not affected by a failure. The subzone 30 may be implemented as, for example, one server rack, or may be implemented as a plurality of server racks.
The bare metal server 32 includes one or more instances 40. The instance 40 is a functional unit that executes processing, and may be, for example, a virtual machine (VM) activated on the bare metal server 32.
The leaf network switch 31 communicably connects each bare metal server 32 and the spine network switch 22. The PDU 33 is a unit that distributes and supplies electric power from a power supply (for example, a commercial power supply) to each bare metal server 32.
The availability zone 20 includes the instance 40 in which a storage client 42 is implemented, the instance 40 in which a software defined storage (SDS) cluster deployment management function 41 is implemented, a plurality of the instances 40 constituting an SDS cluster 45, and a virtual network switch 44 that communicably connects the instances 40.
The storage client 42 executes various types of processing using a storage region provided by the SDS cluster 45. The SDS cluster deployment management function 41 executes processing of managing deployment of the SDS cluster 45.
The SDS cluster 45 includes the plurality of instances 40. The SDS cluster 45 executes various types of processing as a storage system for managing data. In each instance of the SDS cluster 45, a redundant SDS cluster management function 71, a redundant storage controller function 72, a redundant capacity pool function 73, and the like, which will be described later, operate. The data to be managed by the SDS cluster 45 may be stored in a storage device inside the instance 40 or may be stored in a storage device outside the instance 40. The outside storage device is, for example, a volume provided by the cloud storage service 23.
Here, a spread placement group (SPG) 50 is a group including a plurality of instances 40 of a plurality of subzones 30 in a manner of one instance 40 for one subzone 30.
In the example illustrated in
Next, a hardware configuration of the bare metal server 32 will be described.
The bare metal server 32 includes a network interface card (NIC) 61, a CPU 62 which is an example of the processor, a memory 63, and a storage device 64.
The NIC 61 is an interface such as a wired LAN card or a wireless LAN card.
The CPU 62 executes various types of processing according to programs stored in the memory 63.
The memory 63 is, for example, a random access memory (RAM), and stores the programs executed by the CPU 62 and necessary information.
The storage device 64 may be an NVMe drive, a SAS drive, or a SATA drive. The storage device 64 stores the programs executed by the CPU 62 and data used by the CPU 62. The bare metal server 32 may not include the storage device 64.
Each configuration of the bare metal server 32 is virtually allocated to the instance 40 provided in the bare metal server 32.
The SDS cluster 45 includes one or more (three in the example in
The redundant group 70 includes one or more (one in
In one redundant group 70 (an RG #1 in
The redundant SDS cluster management function 71 is a function of making the SDS cluster management function redundant by the plurality of instances 40. In each RG 70, the redundant storage controller function 72 and the redundant capacity pool function 73 are implemented. The redundant storage controller function 72 is a function of making a storage controller redundant by the plurality of instances 40, and the redundant capacity pool function 73 is a function of making a capacity pool redundant.
In the example in
Next, scale-out of the SDS cluster 45 will be described.
When scaling out the SDS cluster 45, the redundant SDS cluster management function 71 expands the SDS cluster 45 in units of RG 70 as illustrated in (2) of
Next, another configuration example of the redundant group 70 will be described.
If the number of instances 40 necessary for the RG 70 is larger than the number of instances capable of being supported in the SPG, or is larger than the number of instances capable of being actually allocated to the SPG, the RG 70 may include a plurality of SPGs 50. In this case, a failure of deploying the SDS cluster and expanding the SDS cluster can be prevented.
In the example in
Next, a configuration example of the redundant capacity pool function will be described.
In the example in
Next, another configuration example of the redundant capacity pool function will be described.
In the example in
Next, a global capacity pool 84 in a case in which the SDS cluster 45 includes a plurality of RGs 70 will be described.
Each redundant capacity pool function 73 manages a plurality of redundant capacity pools 80 implemented in the SPGs 50 as one global capacity pool 84 provided by the SDS cluster 45.
Next, the redundant storage controller function 72 will be described.
In the example in
In the example in
Next, failover of the redundant storage controller function according to the embodiment will be described.
When the instance #1 fails, the standby controller #1-1 of the active controller #1 is promoted to the active controller #1 and operates. Then, the service volume #1-x managed by the instance #1 is managed by the active controller #1 of the instance #2.
For switching an access destination to the service volume 83 from the storage client 42 at the time of failover, a mechanism such as asymmetric logical unit access (ALUA), which is a known technique, can be used. Therefore, the storage client 42 issues an 10 request to the service volume #1-x, which was issued to the instance #1, to the instance #2 after switching.
Thereafter, when instance #2 further fails, the standby controller #1-2 is promoted to the active controller #1, the standby controller #2-1 is promoted to the active controller #2, and these active controllers of the instance #3 manage the service volumes #1-x and #2-x.
Next, the redundant SDS cluster management function 71 will be described.
In the example in
When the instances #1, #2, and #3 are all activated, the cluster management unit 92 (the primary master) of instance #1 manages the cluster. In this case, cluster management information (information on the instances constituting the cluster, service volumes, and the like) is synchronized with the instances #2 and #3.
Here, when the instance #1 is stopped, the cluster management unit 92 (the secondary master 1) of the instance #2 is promoted to the primary master to manage the cluster, and further, when the instance #2 is stopped, the secondary master 2 of the instance #3 is promoted to the primary master to manage the cluster.
Next, a configuration of the memory 63 of the instance 40 will be described in which the SDS cluster deployment management function 41 is implemented.
The memory 63 of the instance 40 in which the SDS cluster deployment management function 41 is implemented stores a redundant group (RG)-spread placement group (SPG) mapping table 101, a spread placement group (SPG)-instance mapping table 102, a spread placement group configuration table 103, an SDS cluster deployment program 104, and an SDS cluster expansion program 105.
The RG-SPG mapping table 101 stores a correspondence between the RG and the SPG included in the RG. The SPG-instance mapping table 102 stores a correspondence between the SPG and the instances constituting the SPG. The SPG configuration table 103 stores information on candidates for the configuration of the SPG. The SDS cluster deployment program 104 is executed by the CPU 62 of the instance 40, thereby executing SDS cluster deployment processing (see
Next, a configuration of the memory 63 of the instance 40 will be described in which the redundant SDS cluster management function 71 is implemented.
The memory 63 of the instance 40 in which the redundant SDS cluster management function 71 is implemented stores a service volume generation program 111. The service volume generation program 111 is executed by the CPU 62 of the instance 40, thereby executing service volume generation processing (see
Next, the RG-SPG mapping table 101 will be described.
Entries of the RG-SPG mapping table 101 include fields of a redundant group ID 101a and a spread placement group (SPG) ID 101b.
The redundant group ID 101a stores an identifier (a redundant group ID: an RG ID) of the redundant group. The SPG ID 101b stores an identifier of the SPG (an SPG ID) included in the redundant group of the same entry.
For example, according to the example of the RG-SPG mapping table 101 in
Next, the SPG-instance mapping table 102 will be described.
Entries of the SPG-instance mapping table 102 include fields of a spread placement group ID 102a, an instance ID 102b, and a redundant SDS cluster management function 102c.
The spread placement group ID 102a stores the SPG ID. The instance ID 102b stores an ID (an instance ID) of the instance included in the SPG having the SPG ID in the entry. The redundant SDS cluster management function 102c stores a type of the cluster management unit 92 of the redundant SDS cluster management function 71 that is activated in the instance corresponding to the entry. The type includes the primary master that indicates the active cluster management unit and the secondary master (the secondary master 1, the secondary master 2, . . . when there are a plurality of secondary masters) that indicates the standby cluster management unit. Information in the redundant SDS cluster management function 102c may be managed separately from the SPG-instance mapping table 102.
Next, the SPG configuration table 103 will be described.
The SPG configuration table 103 is provided in association with each RG constituting the SDS cluster 45. The SPG configuration table 103 stores entries for each option of the SPG configuration in the RG. Entries of the SPG configuration table 103 include an option #103a, the number of groups 103b, and the number of elements 103c.
The option #103a stores an option number corresponding to the entry. The number of groups 103b stores the number of SPGs in a configuration of the option corresponding to the entry. The number of elements 103c stores the number of elements (constituent elements, which are instances in this example) included in the SPG of the option corresponding to the entry.
Here, as illustrated in (1) of
Next, the SDS cluster deployment processing will be described. The SDS cluster deployment processing is executed when, for example, the SDS cluster deployment program 104 receives an instruction to deploy the SDS cluster from the user terminal 3.
The SDS cluster deployment program 104 (strictly speaking, the CPU 62 that executes the SDS cluster deployment program 104) executes option calculation processing (see
Next, the SDS cluster deployment program 104 executes instance deployment processing (see
Next, the SDS cluster deployment program 104 creates a mapping (the RG-SPG mapping table 101) of the correspondence between the SPG in which the instances are deployed and the RG including the SPG (S13).
Next, the SDS cluster deployment program 104 constructs the redundant SDS cluster management function 71 in a plurality of instances 40 of any one of the redundant groups (S14). Here, the SDS cluster management unit of the redundant SDS cluster management function 71 may not be constructed in all the instances 40 of the redundant group, and may be constructed in, for example, necessary redundancy degree+1 instances 40.
Next, the SDS cluster deployment program 104 executes processing (S15 to S17) of a loop 1 for each redundant group. Here, a redundant group to be processed in the loop 1 is referred to as a target redundant group.
In the processing of the loop 1, the SDS cluster deployment program 104 constructs the redundant storage controller function 72 in a plurality of instances 40 of the target redundant group (S15). Next, the SDS cluster deployment program 104 constructs the redundant capacity pool function 73 in a plurality of instances 40 of the target redundant group (S16). Next, the SDS cluster deployment program 104 registers the redundant capacity pool 80 of the target redundant group in the global capacity pool 84 (S17).
The SDS cluster deployment program 104 executes the processing of the loop 1 for each redundant group, and ends the SDS cluster deployment processing when the processing is completed for all redundant groups.
According to the SDS cluster deployment processing, a redundant SDS cluster capable of withstanding failures can be created.
Next, the option calculation processing (S11) will be described.
The SDS cluster deployment program 104 determines the number of groups of the redundant groups and the number IR of instances of each redundant group (S21). Here, the number of groups of the redundant groups and the number IR of instances may be determined based on, for example, a total number of instances in an SDS cluster specified by the user and a minimum number (a minimum necessary number of instances) of instances necessary for implementing protection (redundancy) of the specified data.
For example, when the total number of instances is 12 and the 4D2P configuration is specified for the data protection, the minimum necessary number of instances is 6, and thus the number of redundant groups may be 12/6=2. If the total number of instances is 20, the number of redundant groups may be 3 by truncating a decimal part of 20/6=3.33 . . . In this case, the number of instances of each redundant group may be 7, 7, 6, or 8, 6, 6. When the total number of instances is less than the minimum necessary number of instances, the number of redundant groups may be set to 1, and the number of instances may be set to the minimum necessary number of instances. The number of groups of the redundant groups and the number IR of instances of each redundant group may be specified by the user.
Next, the SDS cluster deployment program 104 calculates a maximum number Gmax of groups (S22). Here, Gmax=max (Rd, Rc, Rm), in which Rd refers to a redundancy degree of data in the specified data protection, Re refers to a redundancy degree of the redundant storage controller function, and Rm refers to a redundancy degree of the redundant SDS cluster management function.
Here, the redundancy degree refers to a number at which failures can be withstood. For example, the redundancy degree of data is 1 when the data has a mirror configuration, and the redundancy degree of the data is 2 when the data has a 4D2P configuration. When the storage controllers include three storage controllers of active, standby, and standby storage controllers, the redundancy degree of the redundant storage controller function is 2.
Next, the SDS cluster deployment program 104 executes processing of a loop 2 (S23 to S26) for the number i of groups (i is in ascending order from 1 to Gmax).
In the processing of the loop 2, the SDS cluster deployment program 104 sets a value obtained by dividing the number IR of instances of the redundant group by i as a basic number ei of elements of the SPG (S23). If IR is not divisible by i, a value obtained by rounding up a decimal part of a divided value is set as the basic number ei of elements of the SPG.
Next, the SDS cluster deployment program 104 determines whether a predetermined option exclusion condition is satisfied (S24). Here, the option exclusion condition is a condition for determining an option in which an appropriate SDS cluster cannot be constructed, and specifically includes, for example, a case in which the basic number ei of elements is larger than a maximum number (a maximum number of supported elements) of elements supported in the SPG, a case in which the number i of redundant groups constructing the SDS cluster management function is larger than Rm, and a case in which i is larger than RC and RD.
As a result, when it is determined that the predetermined option exclusion condition is not satisfied (S24: No), the SDS cluster deployment program 104 registers, in the SPG configuration table 103, an entry of an option in which the number of groups is set as the number i of groups, and in which the number of elements is set as the basic number ei of elements (S25). If IR is not divisible by i in step S23, several SPGs have the basic number ei of elements, and one SPG has the remaining number of elements. For example, when the number IR of instances is 7 and i is 2, the basic number of elements ei is 4. Therefore, for one SPG, the number of instances is 4, which is set as the basic number ei of elements, and for the remaining SPG, the number of elements is 3, which is obtained by subtracting the basic number ei of elements from the number IR of instances.
On the other hand, when it is determined that the predetermined option exclusion condition is satisfied (S24: Yes), the SDS cluster deployment program 104 excludes the case of the number i of groups from the options (S26), and ends the processing of the loop 2 for the number i of groups.
The SDS cluster deployment program 104 executes the processing of the loop 2 for each number i of groups, and ends the option calculation processing when the processing is completed for all the number of groups.
Next, the instance deployment processing (S12) will be described.
The SDS cluster deployment program 104 executes processing of a loop 3 (a loop 4 (S31, S32)) for each redundant group of all redundant groups.
In the processing of the loop 3, the SDS cluster deployment program 104 executes the processing (S31, S32) of the loop 4 for the option of each option number i (in ascending order of option numbers).
In the processing of the loop 4, for the number of groups corresponding to the option number i, the SDS cluster deployment program 104 specifies SPGs having the number of elements corresponding to the option number i, and attempts to deploy the instances (S31).
Next, the SDS cluster deployment program 104 determines whether the deployment of the instances in step S31 is succeeded (S32).
As a result, when the deployment of the instances is succeeded (S32: Yes), the SDS cluster deployment program 104 exits the loop 4 and executes the processing of the loop 3 with a next redundant group as a processing target, and when the processing is executed for all the redundant groups, the SDS cluster deployment program 104 exits the processing of the loop 3 and ends the instance deployment processing.
On the other hand, when the deployment of the instances is not succeeded even if the processing is tried for all the option numbers (S32: No), the SDS cluster deployment program 104 exits the loop 4 and ends the instance deployment processing as abnormal end.
Next, the SDS cluster expansion processing will be described. The SDS cluster expansion processing is executed when, for example, the SDS cluster expansion program 105 receives an instruction to expand the SDS cluster from the user terminal 3.
The SDS cluster expansion program 105 (strictly speaking, the CPU 62 that executes the SDS cluster expansion program 105) executes the option calculation processing (see
Next, the SDS cluster expansion program 105 executes the instance deployment processing (see
Next, the SDS cluster expansion program 105 adds, to the mapping (the RG-SPG mapping table 101), a correspondence between the SPG in which the instances serving as the expanded part in the cluster are deployed and the RG including the SPG (S43).
Next, the SDS cluster expansion program 105 executes processing (S44, and S15 to S17) of a loop 5 with an added redundant group as a target. Here, the redundant group to be processed in the loop 5 is referred to as a target redundant group.
In the processing of the loop 5, the SDS cluster expansion program 105 adds the instances of the target redundant group to management targets of the redundant SDS cluster management function 71 (S44). Next, the SDS cluster expansion program 105 executes the processing of steps S15, S16, and S17.
The SDS cluster expansion program 105 executes the processing of the loop 5 for each added redundant group, and ends the SDS cluster expansion processing when the processing is completed for all redundant groups.
According to the SDS cluster expansion processing, the SDS cluster can be expanded to withstand failures.
Next, the service volume generation processing will be described.
The service volume generation program 111 (strictly speaking, the CPU 62 that executes the service volume generation program 111) selects, from the global capacity pool 84, the redundant capacity pool 80 having a free capacity specified as the service volume to be created (S51).
Next, the service volume generation program 111 allocates a capacity from the selected redundant capacity pool 80 to the service volume 83 (S52).
Next, the service volume creation program 111 selects any of the active controllers of the instances 40 belonging to the redundant group 70 provided by the selected redundant capacity pool 80, allocates the created service volume 83 (S53), and ends the processing. After this processing, according to a known technique, a path or the like is registered for the storage client 42 so as to be accessible to the service volume 83.
The invention is not limited to the embodiment described above, and may be appropriately modified and implemented without departing from the gist of the invention.
For example, in the embodiment described above, a part or all of the processing executed by the CPU may be executed by a hardware circuit. The programs in the embodiment described above may be installed from a program source. The program source may be a program distribution server or a storage medium (for example, a portable storage medium).
Number | Date | Country | Kind |
---|---|---|---|
2022-098666 | Jun 2022 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
9826041 | Dhoolam | Nov 2017 | B1 |
10063427 | Brown | Aug 2018 | B1 |
10536340 | Manning | Jan 2020 | B1 |
10789267 | Dhoolam | Sep 2020 | B1 |
11048546 | Shibayama | Jun 2021 | B1 |
11394777 | Hall | Jul 2022 | B2 |
11416298 | Barker, Jr. | Aug 2022 | B1 |
11461192 | Brahmadesam | Oct 2022 | B1 |
20090125680 | Ninose | May 2009 | A1 |
20100042794 | Tsai | Feb 2010 | A1 |
20100205482 | Kaneko | Aug 2010 | A1 |
20120023292 | Saito | Jan 2012 | A1 |
20120185643 | DeKoning | Jul 2012 | A1 |
20140025886 | Tanoue | Jan 2014 | A1 |
20150324145 | Akutsu | Nov 2015 | A1 |
20160203080 | Bert | Jul 2016 | A1 |
20200034206 | Dimitrov | Jan 2020 | A1 |
20200125258 | Chiba et al. | Apr 2020 | A1 |
20210089379 | Aikawa | Mar 2021 | A1 |
20220027051 | Kant | Jan 2022 | A1 |
20220083245 | Kant | Mar 2022 | A1 |
20220129359 | Toda | Apr 2022 | A1 |
Number | Date | Country |
---|---|---|
2020-064473 | Apr 2020 | JP |
Number | Date | Country | |
---|---|---|---|
20230409207 A1 | Dec 2023 | US |