Wide-area Cooperative Storage with CFS Dabek, Kaashoek, Karger, Morris, Stoica SOSP, 2001 Design and prototype implementation of Cooperative File System (CFS): a block-by-block, decentralized, read-only, peer-to-peer file system. The file system and its semantics are built on top of "Dhash," which stores the blocks themselves, and "Chord" which maintains the routing tables to find blocks. Blocks are stored in "virtual servers" of which a given actual machine may have many. These virtual servers are the units of load balancing and distribution: blocks and naming are distributed evenly among virtual servers, so a system which wants to reduce its load should reduce its number of virtual servers. In a nice division of purpose, the CFS servers, made up of Dhash and Chord layers, are oblivious to fs semantics. This and any anonymity and most system security are left to higher levels. As they state in the paper: "CFS relies on the assumption that large amounts of space disk space are available." No discussion is given to the possibility that caches become full, and it appears that whenever a block passes through a virtual server, the virtual server adds it to its cache. "CFS uses the Chord protocol to locate blocks. Chord supports just one operation: given a key, it will determine the node responsible for that key." There is a nice description of the Chord lookup and redundancy algorithm in 4.3. The authors make a big deal about how choosing the right server to get blocks from is important, but then this "server selection" algorithm is only applied to twelve virtual servers in their experiments. They say they get about the same performance as FTP, but their actual throughput numbers seem pretty poor. File system structure comes from SFSRO. Compares itself with PAST and OceanStore. One item of particular future development is a scalable distributed search engine.