1. A method for storing snapshots of client data objects in a storage system, the method comprising: storing, by a computer, a plurality of logical pointer objects that are used to represent a single client data object stored in the storage system, each logical pointer object having a first address field; organizing, by the computer, a first set of the logical pointer objects into a hierarchical structure using the first address fields of the logical pointer objects in the first set to point only to other logical pointer objects, wherein the first set of the logical pointer objects are non-leaf nodes in the hierarchical structure that point only to other logical pointer objects; associating, by the computer, a second set of the logical pointer objects with corresponding logical data blocks that comprise the client data object, including using the first address fields of the logical pointer objects in the second set to point only to physical data blocks having deduplicated data that comprise data of the corresponding logical data blocks, wherein the second set of the logical pointer objects are leaf nodes in the hierarchical structure that point only to physical data blocks; using, by the computer, the first address field of some of the logical pointer objects in the first set to point to logical pointer objects in the second set; associating, by the computer, a root of the hierarchical structure with the client data object; and creating, by the computer, a snapshot of the client data object including making a copy of the root and associating the copied root with the snapshot.