Patent ID: 9747176
Date: 2017-08-29
CPC Classifications: G06F

Claim:
1. A data storage system comprising: at least two universal nodes each comprising: storage providers; and a system controller, wherein the storage virtualizer is attached to said storage providers through a storage bus organized so that a plurality of universal nodes have the same access to a fabric and storage providers attached to the fabric, wherein: each storage virtualizer in each universal node is allocated by the system controller a number of storage provider resources that it manages, the system controller being configured to maintain a map for dependency of storage consumers to storage provider resources, and storing context and state of each storage virtualizer such that each storage virtualizer is a slave device, each storage virtualizer is configured to provide storage to dependent storage consumers, said storage being through a network protocol to said storage providers, each storage virtualizer is configured to manage storage providers and is tolerant to fault conditions and the fault tolerance is achieved by an ability of the storage virtualizer to migrate to any other universal node, in which if any universal node fails any other universal node can be reconfigured by the system controller to take over the storage providers by recovering storage virtualizer context and state held by the system controller; the storage consumers include virtual appliances which are configured to run locally on a universal node where the storage virtualizer has migrated to or can be run on another universal node, and wherein the system controller is configured to execute an algorithm for each universal node to participate in a leadership election between a pair universal nodes for failover protection; wherein each universal node is configured to execute a leadership role, if elected, in which each universal node: is responsible for logically organizing the universal nodes into teams with vertical and horizontal failure links, creates a configuration of nodes in pairs, in which in the case of a node failure the remaining nodes use their knowledge of pairing to recover from the failure; wherein failover and/or failback of resources occurs between horizontally paired nodes and all nodes are responsible for ensuring that their vertical and horizontal paired nodes are present and functioning and should no horizontally paired node exist a vertically paired node will recover to workload.