1. 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 from a customer, 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 for the customer from processor/memory complexes and physical drives available from server computers, comprising: creating virtual drives from a set of physical drives that meets or exceeds the drive characteristics and the drive quantity, each virtual drive being one entire selected physical drive; and allocating the virtual drives to the virtual private storage array; creating one or more volumes from the virtual drives; 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, comprising using one or more private encryption keys of the customer, which are not shared with the virtual private storage service or other customers of the virtual private storage service, to encrypt and decrypt volume data on the one or more volumes.