{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:38:30Z","timestamp":1750307910073,"version":"3.41.0"},"reference-count":28,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2007,4,1]],"date-time":"2007-04-01T00:00:00Z","timestamp":1175385600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGOPS Oper. Syst. Rev."],"published-print":{"date-parts":[[2007,4]]},"abstract":"<jats:p>\n            The Farsite file system is a storage service that runs on the desktop computers of a large organization and provides the semantics of a central NTFS file server. The motivation behind the Farsite project was to harness the unused storage and network resources of desktop computers to provide a service that is reliable, available, and secure despite the fact that it runs on machines that are unreliable, often unavailable, and of limited security. A main premise of the project has been that building a scalable system requires more than scalable algorithms: To be scalable in a practical sense, a distributed system targeting 10\n            <jats:sup>5<\/jats:sup>\n            nodes must tolerate a significant (and never-zero) rate of machine failure, a small number of malicious participants, and a substantial number of opportunistic participants. It also must automatically adapt to the arrival and departure of machines and changes in machine availability, and it must be able to autonomically repartition its data and metadata as necessary to balance load and alleviate hotspots. We describe the history of the project, including its multiple versions of major system components, the unique programming style and software-engineering environment we created to facilitate development, our distributed debugging framework, and our experiences with formal system specification. We also report on the lessons we learned during this development.\n          <\/jats:p>","DOI":"10.1145\/1243418.1243422","type":"journal-article","created":{"date-parts":[[2007,6,6]],"date-time":"2007-06-06T14:37:16Z","timestamp":1181140636000},"page":"17-26","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":21,"title":["The Farsite project"],"prefix":"10.1145","volume":"41","author":[{"given":"William J.","family":"Bolosky","sequence":"first","affiliation":[{"name":"Microsoft Research, Redmond"}]},{"given":"John R.","family":"Douceur","sequence":"additional","affiliation":[{"name":"Microsoft Research, Redmond"}]},{"given":"Jon","family":"Howell","sequence":"additional","affiliation":[{"name":"Microsoft Research, Redmond"}]}],"member":"320","published-online":{"date-parts":[[2007,4]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Dec","author":"Adya A.","year":"2002","unstructured":"A. Adya , W. J. Bolosky , M. Castro , R. Chaiken , G. Cermak , J. R. Douceur , J. Howell , J. R. Lorch , M. Theimer , R. P. Wattenhofer . \"FARSITE : Federated, Available, and Reliable Storage for an Incompletely Trusted Environment,\" 5th OSDI , Dec 2002 . A. Adya, W. J. Bolosky, M. Castro, R. Chaiken, G. Cermak, J. R. Douceur, J. Howell, J. R. Lorch, M. Theimer, R. P. Wattenhofer. \"FARSITE: Federated, Available, and Reliable Storage for an Incompletely Trusted Environment,\" 5th OSDI, Dec 2002."},{"key":"e_1_2_1_2_1","volume-title":"USENIX Annual Technical Conference","author":"Adya A.","year":"2002","unstructured":"A. Adya , J. Howell , M. Theimer , B. Bolosky , J. Douceur . \" Cooperative Task Management without Manual Stack Management .\" USENIX Annual Technical Conference , 2002 . A. Adya, J. Howell, M. Theimer, B. Bolosky, J. Douceur. \"Cooperative Task Management without Manual Stack Management.\" USENIX Annual Technical Conference, 2002."},{"key":"e_1_2_1_3_1","volume-title":"April","author":"Bolosky W. J.","year":"1996","unstructured":"W. J. Bolosky , J. S. Barrera III, R. P. Draves , R. P. Fitzgerald , G. A. Gibson , M. B. Jones , S. P. Levi , N. P. Myhrvold , and R. F. Rashid . \" The Tiger Video Fileserver,\" in NOSSDAV '96 , April , 1996 . W. J. Bolosky, J. S. Barrera III, R. P. Draves, R. P. Fitzgerald, G. A. Gibson, M. B. Jones, S. P. Levi, N. P. Myhrvold, and R. F. Rashid. \"The Tiger Video Fileserver,\" in NOSSDAV '96, April, 1996."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/339331.339345"},{"key":"e_1_2_1_5_1","unstructured":"W. J. Bolosky S. Corbin D. Goebel J. R. Douceur. \"Single Instance Storage in Windows 2000.\" 4th Usenix Windows System Symposium Aug 2000.   W. J. Bolosky S. Corbin D. Goebel J. R. Douceur. \"Single Instance Storage in Windows 2000.\" 4th Usenix Windows System Symposium Aug 2000."},{"key":"e_1_2_1_6_1","volume-title":"USENIX","author":"Castro M.","year":"1999","unstructured":"M. Castro and B. Liskov , \" Practical Byzantine Fault Tolerance\", 3rd OSDI , USENIX , Feb 1999 . M. Castro and B. Liskov, \"Practical Byzantine Fault Tolerance\", 3rd OSDI, USENIX, Feb 1999."},{"key":"e_1_2_1_7_1","volume-title":"Large-Scale Simulation of a Replica Placement Algorithms for a Serverless Distributed File System.\" 9th MASCOTS","author":"Douceur J. R.","year":"2001","unstructured":"J. R. Douceur and R. P. Wattenhofer . \" Large-Scale Simulation of a Replica Placement Algorithms for a Serverless Distributed File System.\" 9th MASCOTS , IEEE , Aug 2001 . J. R. Douceur and R. P. Wattenhofer. \"Large-Scale Simulation of a Replica Placement Algorithms for a Serverless Distributed File System.\" 9th MASCOTS, IEEE, Aug 2001."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/647911.740494"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.5555\/645958.676110"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/RELDIS.2001.969727"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.5555\/850928.851884"},{"key":"e_1_2_1_12_1","unstructured":"J. R. Douceur A. Adya J. Benaloh W. J. Bolosky G. Yuval. \"A Secure Directory Service based on Exclusive Encryption.\" 18th ACSAC 2002.   J. R. Douceur A. Adya J. Benaloh W. J. Bolosky G. Yuval. \"A Secure Directory Service based on Exclusive Encryption.\" 18th ACSAC 2002."},{"key":"e_1_2_1_13_1","unstructured":"J. R. Douceur; J. Howell. \"Scalable Byzantine-Fault-Quantifying Clock Synchronization.\" Microsoft Research tech report MSR-TR-2003-67 2003.  J. R. Douceur; J. Howell. \"Scalable Byzantine-Fault-Quantifying Clock Synchronization.\" Microsoft Research tech report MSR-TR-2003-67 2003."},{"key":"e_1_2_1_14_1","unstructured":"J. R. Douceur J. Howell. \"Byzantine Fault Isolation in the Farsite Distributed File System.\" 5th IPTPS 2006.  J. R. Douceur J. Howell. \"Byzantine Fault Isolation in the Farsite Distributed File System.\" 5th IPTPS 2006."},{"key":"e_1_2_1_15_1","unstructured":"J. R. Douceur J. Howell. \"Distributed Directory Service in the Farsite File System.\" 7th OSDI 2006.   J. R. Douceur J. Howell. \"Distributed Directory Service in the Farsite File System.\" 7th OSDI 2006."},{"key":"e_1_2_1_16_1","volume-title":"Win32 System Programming: A Windows(R) 2000 Application Developer's Guide","author":"Hart J. M.","year":"2000","unstructured":"J. M. Hart . Win32 System Programming: A Windows(R) 2000 Application Developer's Guide , Second Edition, Addison-Wesley , 2000 . J. M. Hart. Win32 System Programming: A Windows(R) 2000 Application Developer's Guide, Second Edition, Addison-Wesley, 2000."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/146941.146942"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/279227.279229"},{"issue":"4","key":"e_1_2_1_19_1","first-page":"18","article-title":"Paxos made simple","volume":"32","author":"Lamport L.","year":"2001","unstructured":"L. Lamport . \" Paxos made simple .\" ACM SIGACT News , 32 ( 4 ): 18 -- 25 , Dec. 2001 . L. Lamport. \"Paxos made simple.\" ACM SIGACT News, 32(4): 18--25, Dec. 2001.","journal-title":"ACM SIGACT News"},{"key":"e_1_2_1_20_1","volume-title":"Specifying Systems","author":"Lamport L.","year":"2003","unstructured":"L. Lamport . Specifying Systems . Addison-Wesley , 2003 . L. Lamport. Specifying Systems. Addison-Wesley, 2003."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/390017.808319"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1217935.1217946"},{"key":"e_1_2_1_23_1","unstructured":"Microsoft Corporation. \"IFS Kit - Installable File System Kit.\" http:\/\/www.microsoft.com\/whdc\/Dev\/Tools\/IFSKit\/default.mspx  Microsoft Corporation. \"IFS Kit - Installable File System Kit.\" http:\/\/www.microsoft.com\/whdc\/Dev\/Tools\/IFSKit\/default.mspx"},{"key":"e_1_2_1_24_1","volume-title":"USENIX Annual Technical Conference","author":"Ousterhout J. K.","year":"1996","unstructured":"J. K. Ousterhout . \" Why Threads Are a Bad Idea (for most purposes).\" USENIX Annual Technical Conference , 1996 . J. K. Ousterhout. \"Why Threads Are a Bad Idea (for most purposes).\" USENIX Annual Technical Conference, 1996."},{"key":"e_1_2_1_25_1","first-page":"5","article-title":"Execution replay and debugging","author":"Ronsse M.","year":"2000","unstructured":"M. Ronsse , K. De Bosschere , J. C. de Kergommeaux . \" Execution replay and debugging .\" Automated and Algorithmic Debugging , pp. 5 -- 18 . 2000 . M. Ronsse, K. De Bosschere, J. C. de Kergommeaux. \"Execution replay and debugging.\" Automated and Algorithmic Debugging, pp. 5--18. 2000.","journal-title":"Automated and Algorithmic Debugging"},{"key":"e_1_2_1_26_1","unstructured":"S. T. Shafer \"The Enemy Within\" Red Herring Jan 2002.  S. T. Shafer \"The Enemy Within\" Red Herring Jan 2002."},{"key":"e_1_2_1_27_1","unstructured":"R. von Behren J. Condit E. Brewer. \"Why events are a bad idea (for high-concurrency servers).\" HotOS IX. May 2003.   R. von Behren J. Condit E. Brewer. \"Why events are a bad idea (for high-concurrency servers).\" HotOS IX . May 2003."},{"key":"e_1_2_1_28_1","volume-title":"A Simple Mechanism for Locating Files in a Distributed System,\" 6th ICDCS","author":"Welch B.","year":"1986","unstructured":"B. Welch , J. Ousterhout . \" Prefix Tables : A Simple Mechanism for Locating Files in a Distributed System,\" 6th ICDCS , 1986 . B. Welch, J. Ousterhout. \"Prefix Tables: A Simple Mechanism for Locating Files in a Distributed System,\" 6th ICDCS, 1986."}],"container-title":["ACM SIGOPS Operating Systems Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1243418.1243422","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1243418.1243422","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T14:47:49Z","timestamp":1750258069000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1243418.1243422"}},"subtitle":["a retrospective"],"short-title":[],"issued":{"date-parts":[[2007,4]]},"references-count":28,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2007,4]]}},"alternative-id":["10.1145\/1243418.1243422"],"URL":"https:\/\/doi.org\/10.1145\/1243418.1243422","relation":{},"ISSN":["0163-5980"],"issn-type":[{"type":"print","value":"0163-5980"}],"subject":[],"published":{"date-parts":[[2007,4]]},"assertion":[{"value":"2007-04-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}