Disconnected operation in the Coda File System
ACM Transactions on Computer Systems (TOCS)
ACM Transactions on Computer Systems (TOCS)
Practical Byzantine fault tolerance
OSDI '99 Proceedings of the third symposium on Operating systems design and implementation
Feasibility of a serverless distributed file system deployed on an existing set of desktop PCs
Proceedings of the 2000 ACM SIGMETRICS international conference on Measurement and modeling of computer systems
Win32 System Programming: A Windows 2000 Application Developer's Guide
Win32 System Programming: A Windows 2000 Application Developer's Guide
Competitive Hill-Climbing Strategies for Replica Placement in a Distributed File System
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Cooperative Task Management Without Manual Stack Management
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
A Secure Directory Service based on Exclusive Encryption
ACSAC '02 Proceedings of the 18th Annual Computer Security Applications Conference
Process structuring, synchronization, and recovery using atomic actions
Proceedings of an ACM conference on Language design for reliable software
Reclaiming Space from Duplicate Files in a Serverless Distributed File System
ICDCS '02 Proceedings of the 22 nd International Conference on Distributed Computing Systems (ICDCS'02)
Large-Scale Simulation of Replica Placement Algorithms for a Serverless Distributed File System
MASCOTS '01 Proceedings of the Ninth International Symposium in Modeling, Analysis and Simulation of Computer and Telecommunication Systems
Farsite: federated, available, and reliable storage for an incompletely trusted environment
OSDI '02 Proceedings of the 5th symposium on Operating systems design and implementationCopyright restrictions prevent ACM from being able to make the PDFs for this conference available for downloading
The SMART way to migrate replicated stateful services
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
Single instance storage in Windows® 2000
WSS'00 Proceedings of the 4th conference on USENIX Windows Systems Symposium - Volume 4
Distributed directory service in the farsite file system
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
LH*RSP2P: a scalable distributed data structure for P2P environment
NOTERE '08 Proceedings of the 8th international conference on New technologies in distributed systems
Lithium: virtual machine storage for the cloud
Proceedings of the 1st ACM symposium on Cloud computing
Market design & analysis for a P2P backup system
Proceedings of the 11th ACM conference on Electronic commerce
LH*RSP2P: a fast and high churn resistant scalable distributed data structure for P2P systems
International Journal of Internet Technology and Secured Transactions
StrobeLight: lightweight availability mapping and anomaly detection
USENIX'09 Proceedings of the 2009 conference on USENIX Annual technical conference
Cooperative caching versus proactive replication for location dependent request patterns
Journal of Network and Computer Applications
Replica placement in peer-assisted clouds: an economic approach
Proceedings of the 11th IFIP WG 6.1 international conference on Distributed applications and interoperable systems
Hi-index | 0.00 |
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 105 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.