Coda File System

advertisement
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
Download