1. A method of selecting suitable nodes to host virtual machines (VMs) in a grid containing a plurality of nodes, wherein said plurality of nodes includes a set of machine nodes capable of hosting VMs, said method comprising: maintaining information indicating corresponding resources available for hosting VMs in each of said set of machine nodes, wherein said information is maintained distributed over a set of management nodes contained in said plurality of nodes; receiving an indication that a first VM requiring a first set of resources is sought to be hosted; identifying based on said distributed information a first machine node having available said first set of resources, wherein said first machine node is contained in said set of machine nodes; and provisioning said first VM on said first machine node.