1. A system for managing a storage array having a set of storage components, comprising: a storage array controller, the storage array controller including a computing device configured for hosting a plurality of virtual machines, wherein the plurality of virtual machines including: a first virtual machine running a first instance of a controller firmware, the first virtual machine being configured to control storage components in a privileged domain, wherein the privileged domain includes all storage components of the storage array; and a second virtual machine running a second instance of the controller firmware, the second virtual machine being configured to control storage components in a first non-privileged array domain, wherein the first non-privileged array domain includes a subset of the storage components of the storage array; wherein each of the set of storage components is inserted into a corresponding storage component slot in the storage array, wherein only the storage components in the subset of the storage components in the first non-privileged array domain are presented to the first non-privileged array domain as being inserted, and wherein storage component slots for other storage components not in the subset of the storage components in the first non-privileged array domain are presented to the first non-privileged array domain as empty storage component slots; and wherein the first virtual machine is further configured to: handle a provision request and determine whether the provision request relates to the first non-privileged array domain, and present at least one additional storage component to the first non-privileged array domain when the provision request relates to the first non-privileged array domain.