Redundant array of independent servers
Various examples, systems, controllers, and methods are disclosed relating to distributed redundant storage across systems in a RAIS environment. Some systems can include a local array of drives configured to store data blocks and at least one configuration data structure including at least one mapping function for at least one logical block address. Some systems can include processing circuitry configured to perform a plurality of first operations to maintain distributed redundancy across a plurality of the systems and perform a plurality of second operations on the data blocks mapped to the local array of drives or remote data blocks on at least one remote array of drives of at least one remote system. The system and the remote system can share a distributed data mapping of the data blocks and share a distributed parity mapping of parity blocks and remote parity blocks.
1 . An integrated atomic server (IAS) system, comprising:
a local array of drives configured to store a plurality of data blocks and at least one configuration data structure comprising at least one mapping function for at least one logical block address; and
a first controller configured to:
perform, with a plurality of IAS systems, a plurality of operations to maintain distributed redundancy across the plurality of IAS systems, wherein performance of at least two of the plurality of operations occurs in parallel, the plurality of operations comprising at least:
transmitting, via a high-speed interconnect using an integrated switch, a first sequence of operations to a second controller of a second IAS system to cause the second controller to execute the first sequence of operations on a second plurality of data blocks; and
transmitting, in parallel with transmission of the first sequence of operations via the high-speed interconnect using the integrated switch, a second sequence of operations to a third controller of a third IAS system to cause the third controller to execute the second sequence of operations on a third plurality of data blocks;
wherein the IAS system, the second IAS system, and the third IAS system share a distributed data mapping of the plurality of data blocks of the IAS system, the second plurality of data blocks, and the third plurality of data blocks, and wherein the IAS system, the second IAS system, and the third IAS system share a distributed parity mapping of a plurality of parity blocks;
wherein each IAS system of the plurality of IAS systems corresponds to a hot-swappable module plugged into a slot within a chassis and interface via the integrated switch using a corresponding controller.
2 . The IAS system of claim 1 , wherein:
the first controller is further configured to read at least one data block of the plurality of data blocks mapped to the local array of drives based on the at least one mapping function to determine a physical address and retrieve the at least one data block, and wherein the read is at least one of a plurality of second operations; and
the IAS system is configured to synchronize a new IAS system responsive to adding the new IAS system to the chassis, wherein synchronizing comprises performing a plurality of third operations by the first controller with a plurality of controls of the plurality of IAS systems comprising the new IAS system.
3 . The IAS system of claim 1 , wherein:
the first controller is further configured to read at least one second data block of the second plurality of data blocks on at least one second array of drives of the second IAS system by transmitting a read command to the second IAS system, receiving the at least one second data block in response, and forwarding at least one remote second data block to a requesting application;
the second controller and the third controller execute parity block updates in parallel, each IAS system generating and storing a parity block corresponding to a subset of data blocks assigned by the distributed parity mapping.
4 . The IAS system of claim 1 , wherein:
the first controller is further configured to write new data to at least one of the plurality of data blocks mapped to the local array of drives by reading an old data block of the plurality of data blocks mapped to the local array of drives, performing an operation on the old data block with the new data to determine a partial parity block, and writing the new data to the local array of drives, and wherein the writing is at least one of a plurality of second operations and is based on the distributed parity mapping of the plurality of parity blocks;
the first controller configured to execute read, write, and recovery operations for the plurality of data blocks and the plurality of parity blocks stored locally and for the second plurality of data blocks, the third plurality of data blocks, and parity blocks stored in at least one remote IAS system connected using the integrated switch, based on the at least one mapping function.
5 . The IAS system of claim 1 , wherein the first controller is further configured to write new data to at least one of the second plurality of data blocks on at least one second array of drives of the second IAS system by transmitting the new data to the second IAS system, receiving a partial parity block determined by the second IAS system, and performing an operation with an old parity block of the plurality of parity blocks to generate a new parity block, and wherein the operation is at least one of the plurality of operations and is performed based on the distributed data mapping of the plurality of data blocks and the second plurality of data blocks and the distributed parity mapping of the plurality of parity blocks.
6 . The IAS system of claim 1 , wherein the first controller is further configured to perform data recovery by identifying a plurality of addresses for a plurality of lost data blocks of the plurality of data blocks mapped to the local array of drives or the second plurality of data blocks on at least one second array of drives of the second IAS system and corresponding parity blocks of the plurality of parity blocks using the at least one mapping function, generating a plurality of read commands for the plurality of addresses, receiving a plurality of read data blocks, performing a plurality of operations to reconstruct the plurality of lost data blocks using the plurality of parity blocks and the plurality of read data blocks, and remapping the reconstructed plurality of lost data blocks to a plurality of blocks in the local array of drives, and wherein the plurality of operations are performed based on the distributed data mapping of the plurality of data blocks and the second plurality of data blocks and the distributed parity mapping of the plurality of parity blocks.
7 . The IAS system of claim 1 , wherein the first controller is further configured to maintain at least one command queue comprising a plurality of priority levels, and to perform a plurality of commands in parallel when writing or reading one of the plurality of data blocks mapped to the local array of drives or one of the second plurality of data blocks on at least one second array of drives of the second IAS system.
8 . The IAS system of claim 1 , wherein the first controller is further configured to determine or update at least one distributed parity block of the plurality of parity blocks and a second plurality of parity blocks corresponding with one of the plurality of data blocks mapped to the local array of drives or one of the second plurality of data blocks on at least one second array of drives of the second IAS system, and wherein the determination or update is at least one of the plurality of operations, and wherein the at least one distributed parity block is stored in one of the plurality of IAS systems based on the distributed parity mapping of the plurality of parity blocks and the second plurality of parity blocks.
9 . The IAS system of claim 1 , wherein the IAS system is one of the plurality of IAS systems of a first data group of a plurality of data groups of a redundant array of independent servers (RAIS).
10 . A first integrated atomic server (IAS), comprising:
at least one storage device configured to store a plurality of data blocks, a plurality of parity blocks, parity data, and configuration data;
at least one controller configured to perform a plurality of parity operations based on the parity data and perform a plurality of redundant array of independent servers (RAIS) operations based on the configuration data, wherein performance of the plurality of parity operations or the plurality of RAIS operations occurs in parallel, the plurality of parity operations or the plurality of RAIS operations comprising at least:
transmitting, via a high-speed interconnect using an integrated switch, a first sequence of operations to a second controller of a second IAS to cause the second controller to execute the first sequence of operations on a second plurality of data blocks;
transmitting, in parallel with transmission of the first sequence of operations via the high-speed interconnect using the integrated switch, a second sequence of operations to a third controller of a third IAS to cause the third controller to execute the second sequence of operations on a third plurality of data blocks; and
at least one network interface configured to transmit and receive, via the high-speed interconnect, the plurality of data blocks to and from at least one second controller of the second IAS and the third controller of the third IAS;
wherein each of the first IAS, the second IAS, and the third IAS corresponds to a hot-swappable module plugged into a slot within a chassis and interface via the integrated switch using a corresponding controller.
11 . The first IAS of claim 10 , wherein the plurality of RAIS operations comprises at least storing the plurality of data blocks in the at least one storage device and striping a portion of the plurality of data blocks across the second IAS.
12 . The first IAS of claim 10 , wherein the plurality of RAIS operations comprise at least performing data recovery based on reconstructing at least one missing data block using the plurality of parity blocks and executing distributed parity computations in parallel with the second IAS and the third IAS.
13 . The first IAS of claim 10 , wherein the plurality of parity blocks comprises at least determining the plurality of parity blocks for a portion of the plurality of data blocks striped across the second IAS and the third IAS.
14 . The first IAS of claim 10 , wherein the configuration data comprises a plurality of instructions for mapping at least one logical block address (LBA) to at least one location in the at least one storage device or the second IAS.
15 . The first IAS of claim 10 , wherein the parity data comprises a plurality of data structures comprises a plurality of parity block locations, a plurality of redundancy levels, a plurality of error correction parameters, and a plurality of instructions for reconstructing at least one missing data block using distributed parity computations across the first IAS, the second IAS, and the third IAS.
16 . The first IAS of claim 10 , wherein the first IAS is one of a plurality of IASs of a first data group of a plurality of data groups of a RAIS.