Presented By: Samreen Tahir WHAT IS IT? Coda is a network file system and a descendent of the Andrew File System 2. It was designed to be: Highly secure Available Transparent to its users. Andrew File System: • Architecture of Coda is based on Andrew File System • AFS was developed at Carnegie Mellon University • It was designed to support the CMU community that meant serving 10, 000 workstations Limitations of AFS: Limited form of replication posed scaling problems Non-availability of services when servers and network components fail No catering for mobile use of portable computers Coda was designed to overcome the problems associated with AFS. How does Coda work? It works by implementing two COMPLEMENTARY functionalities : 1. Availability of files by replicating a file volume across many servers 2. Disconnected mode of operation by caching files at the client machine The Coda architecture is based on AFS: The Andrew File System Transparent access to a Vice file server AFS is divided into two types of nodes: 1. Vice nodes: dedicated file servers 2. Virtue nodes: client machines Virtue Client Vice file server The internal organization of a virtue workstation: Virtue Client Machine User process User process Venus process RPC client stub Local file system interface Virtual file system layer Local OS Network Venus: A process that is hosted on each Virtue system. VFS: Virtual File System, intercepts the calls from client application or user processes and forwards them either to the local file system or Venus. How do the server and client communicate in Coda? Answer: Through Remote Procedure Calls (RPC) RPC call Client (Blocking) File Server Reply May take arbitrary amount of time 1. The server keeps sending back messages to the client that it is still working on the problem. 2. If the server dies and the client notices that it is not receiving any messages it reports back failure to the client application. (contd.) F File F Updated File F Invalidate F F F F File server client When a server notices updates in a file, it must inform the client which are caching a copy of it to invalidate that copy. COMMUNICATION: (contd.) There are two ways to invalidate a file: A better approach: Client Client Server Server Client Client Time Sending invalidation message one at a time. This method is inefficient since a client may crash before giving a reply to the server. Time Sending invalidation messages in parallel. Coda uses RPC2: more sophisticated than the traditional RPC used by NFS RPC2 implements a functionality called side effect: a separate connection is opened when a remote procedure is called. This separate connection is for the application specific protocol between the client and the server. RPC2 contd. Client Application Server RPC Client side effect RPC client stub Application-specific protocol Server side effect RPC protocol Side-effects in Coda’s RPC2 system. RPC server stub Naming: Coda uses name space implementation analogous to that of UNIX. Volumes are the building units of the entire file system and are mounted at a mount point. Clients in coda have access to a single shared namespace Naming inherited from server’s namespace Client A afs Client B Server local bin afs pkg pkg bin Exported directory mounted by client Exported directory mounted by client Network Clients in Coda have access to a single shared namespace. File Identifiers: Client Caching: Server Replication: Fault Tolerance: Disconnected Operation Fault Tolerance: Disconnected Operation