1. A method of building a computer system, comprising: determining an average memory storage per virtual machine M avg for a known number of virtual machines; determining a nominal number of virtual machines per host computer VM nom for a plurality of host computers to be assembled for the system; determining an amount of memory storage per memory pool MP max for one or more memory pools, wherein the one or more memory pools comprise at least part of one or more mass storage units; determining a maximum number of host computers that can share each of the one or more memory pools based on the average memory storage per virtual machine for the known number of virtual machines, the nominal number of virtual machines per host computer for the plurality of host computers, and the amount of memory storage per memory pool; determining a minimum number of host computers per memory pool needed to absorb a processing load of a failed host computer based on a normal processing load of each host computer L n , and a maximum sustainable processing load of the host computer L m and; assembling the one or more memory pools with the amount of storage per memory pool and assembling the plurality of host computers to include a number of host computers H within or including the maximum number of host computers and the minimum number of host computers for each of the one or more memory pools to handle the known number of virtual machines; wherein determining the maximum number of host computers for the at least one memory pool and the minimum number of host computers for the at least one memory pool is determined by MP max M avg × VM nom ≥ H ≥ L n L m - L n + 1.