A system for operating a virtual Storage Area Network, SAN, the system comprising: a virtual SAN cluster comprising a plurality of hosts (257a-257e), wherein each host of the plurality of hosts is configured to execute a hypervisor, and wherein each hypervisor is configured to manage at least one Virtual Machine, VM; a plurality of Uninterruptible Power Supplies, UPSs (256a-256f), each UPS of the plurality of UPSs being coupled to a respective host of the plurality of hosts, and being configured to provide power to the respective host; and a computing device being communicatively coupled to the virtual SAN cluster and to the plurality of UPSs, and being configured to: determine that the plurality of UPSs includes a first group of critical UPSs and a second group of non-critical UPSs, wherein the first group of critical UPSs comprises UPSs subject to a set of conditions which may cause the UPSs to shut down; determine a fault tolerance level, wherein the fault tolerance level comprises a threshold number of UPSs; determine whether a number of UPSs in the first group of critical UPSs exceeds the fault tolerance level; and characterised in that the computing device is further configured to: migrate, in response to determining that the number of UPSs in the first group of critical UPSs does not exceed a fault tolerance level, VMs managed by hypervisors executed by respective hosts coupled to the first group of critical UPSs to hypervisors executed by respective hosts coupled to the second group of non-critical UPSs. a virtual SAN cluster comprising a plurality of hosts (257a-257e), wherein each host of the plurality of hosts is configured to execute a hypervisor, and wherein each hypervisor is configured to manage at least one Virtual Machine, VM; wherein each host of the plurality of hosts is configured to execute a hypervisor, and wherein each hypervisor is configured to manage at least one Virtual Machine, VM; a plurality of Uninterruptible Power Supplies, UPSs (256a-256f), each UPS of the plurality of UPSs being coupled to a respective host of the plurality of hosts, and being configured to provide power to the respective host; and a computing device being communicatively coupled to the virtual SAN cluster and to the plurality of UPSs, and being configured to: determine that the plurality of UPSs includes a first group of critical UPSs and a second group of non-critical UPSs, wherein the first group of critical UPSs comprises UPSs subject to a set of conditions which may cause the UPSs to shut down; determine a fault tolerance level, wherein the fault tolerance level comprises a threshold number of UPSs; determine whether a number of UPSs in the first group of critical UPSs exceeds the fault tolerance level; and characterised in that the computing device is further configured to: migrate, in response to determining that the number of UPSs in the first group of critical UPSs does not exceed a fault tolerance level, VMs managed by hypervisors executed by respective hosts coupled to the first group of critical UPSs to hypervisors executed by respective hosts coupled to the second group of non-critical UPSs. determine that the plurality of UPSs includes a first group of critical UPSs and a second group of non-critical UPSs, wherein the first group of critical UPSs comprises UPSs subject to a set of conditions which may cause the UPSs to shut down; determine a fault tolerance level, wherein the fault tolerance level comprises a threshold number of UPSs; determine whether a number of UPSs in the first group of critical UPSs exceeds the fault tolerance level; and characterised in that the computing device is further configured to: migrate, in response to determining that the number of UPSs in the first group of critical UPSs does not exceed a fault tolerance level, VMs managed by hypervisors executed by respective hosts coupled to the first group of critical UPSs to hypervisors executed by respective hosts coupled to the second group of non-critical UPSs.