1. A method for accessing objects comprising: object access software on a server receiving from an application program an object write request, the write request including an object comprised of object data and meta data the object access software selecting a best storage node from a plurality of storage nodes on which to store the object including identifying and evaluating among a least busy storage node, a most used storage node and a least full storage node of the plurality of storage nodes the object access software selecting at least one additional storage node from the plurality of storage nodes on which to store the object the object access software sending the object and the object write request to the best storage node and concurrently sending the object to the at least one additional storage node the object access software receiving a first write success message from the best storage node, the first write success message including an object identifier, the object identifier including a version identifier, a location identifier and a unique identifier the object access software receiving a second write success message from the additional storage node the object access software reporting successful writing of the object to the application program the object access software receiving a read request for a requested object specifying the object identifier the object access software selecting to obtain the requested object from between at least the best storage node and the additional storage node according to criteria including a shortest path, a highest speed connection, and a least accessed.