1. A computer-implemented method, comprising: at a computing device: receiving a request for forming a virtual file system at the computing device, wherein the virtual file system is associated with a plurality of storage devices; in response to the request: retrieving one or more metadata blocks from at least one of the plurality of storage devices; building an adapter-block map for the at least one of the plurality of storage devices using the retrieved metadata blocks, wherein the adapter-block map identifies a plurality of adapters, each adapter configured to interact with a predefined type of storage devices; rendering a commit tree for the virtual file system in a top-down manner by processing the retrieved metadata blocks in a predefined order, wherein the commit tree includes a plurality of directory nodes and file nodes, each directory node or file node having metadata corresponding to a respective directory or file of the virtual file system, and information tracking past revisions to the virtual file system; and building an instance of the virtual file system at the computing device by traversing the plurality of directory nodes and file nodes in a recursive manner, the instance corresponding to one of the past revisions to the virtual file system, further including: generating a directory at the computing device in accordance with the metadata associated with a respective directory node; retrieving one or more data blocks from at least one of the plurality of storage devices using an adapter identified by the adapter-block map associated with the at least one of the plurality of storage devices and in accordance with the metadata associated with a respective file node; and generating a file at the computing device using the retrieved data blocks, wherein the commit tree includes one or more commit tree branches, each commit tree branch corresponding to a respective revision of the virtual file system and a respective commit tree branch includes at least one reference to another commit tree branch and the two commit tree branches correspond to two consecutive revisions of virtual file systems.