Patent ID: 8819230

Claim:
A method to provide virtual private storage array service over a computer network for cloud servers in a public or a private cloud, comprising: receiving parameters for a virtual private storage array over the computer network, the parameters for the virtual private storage array including a virtual controller hardware model for each virtual controller in the virtual private storage array, drive characteristics for the virtual private storage array, and a drive quantity for the virtual private storage array; creating the virtual private storage array from processor/memory complexes and physical drives available from server computers; creating one or more volumes from the virtual private storage array; exposing the one or more volumes over the computer network to one or more cloud servers; and handling access requests to the exposed one or more volumes over the computer network from the one or more cloud servers; wherein: each server computer runs software including at least one of a storage node and a compute agent; and said creating the virtual private storage array, said creating one or more volumes, said exposing the one or more volumes, and said handling access requests comprise: selecting a set of the physical drives that meets or exceeds the drive characteristics and the drive quantity, the selected physical drives being from a set of the server computers; instructing storage nodes on the set of the server computers to allocate virtual drives to the virtual private storage array, the storage nodes being configured to: create the virtual drives from the selected physical drives, each virtual drive being a partition that is one entire selected physical drive or a part of one selected physical drive; and expose the virtual drives to virtual controllers in the virtual private storage array; selecting a set of the processor/memory complexes that each meets or exceeds the virtual controller hardware model, the selected processor/memory complexes being from an other set of the server computers; instructing compute agents on the other set of the server computers to spawn virtual machines for the virtual controllers, the compute agents being configured to: spawn one virtual machine on at least part of each selected processor/memory complex dedicated to the virtual machine; and start one virtual controller per virtual machine so each virtual controller in the virtual private storage array runs on a different server computer, one or more of the virtual controllers being configured to: discover the exposed virtual drives; create one or more virtual pools comprising the exposed virtual drives; implement a data protection scheme on the one or more virtual pools; create the one or more volumes from the one or more virtual pools; expose the one or more volumes over the computer network to the one or more cloud servers; and handle the access requests to the exposed one or more volumes over the computer network from the one or more cloud servers.