Network File System (NFS)
- Skills: Version Control · Networking · Modular Programming · Operating Systems · Concurrent Programming · C (Programming Language)
- Github URL: Project Link
Developed a comprehensive Network File System (NFS) capable of handling scalable, distributed file storage with features tailored to enhance usability, reliability, and fault tolerance. The project was built with team members on GitHub enabling efficient division of tasks.
Key Components:
Clients:
Designed to serve as interfaces for end-users to perform file operations such as read, write, create, delete, and stream audio files.
Enabled asynchronous and synchronous writing for better performance and prioritization flexibility.
Implemented functionality for querying metadata and accessing comprehensive directory listings.
Naming Server (NM):
Centralized server responsible for mapping files and folders to the appropriate Storage Servers (SS)
Optimized path lookup using efficient data structures like Tries and Hashmaps
Integrated LRU Caching to expedite subsequent file operations
Managed client-server communication with robust error handling and well-defined error codes.
Implemented failure detection and logging for traceability and debugging.
Storage Servers (SS):
Responsible for physical data storage and replication for fault tolerance.
Supported dynamic addition and registration of new servers.
Key Features:
Concurrency: Supported multiple clients with concurrent file access. Managed exclusive file writing and prioritized client responses for low-latency operations.
Fault Tolerance:
Implemented replication strategies to maintain data integrity during server failures.
Facilitated seamless recovery of Storage Servers and reintegration of backed-up data.
Audio Streaming: Supported real-time audio streaming directly from the NFS using binary data transfer.
Error Handling: Developed a robust system for returning descriptive error codes to users for seamless debugging.
Technologies & Practices:
Version Control: Collaborated with peers on GitHub to track changes, and resolve conflicts efficiently.
Advanced Caching: Leveraged LRU caching for frequently accessed paths