DFS design and implementation
Networked File System(NFS)
Caching in the Sprite Network File System by Nelson et al
-Accessed via well-defined interface
– access via VFS
-Focus on consistent state
-mixed distribution models possible
client application machine
(file-system interface, vfs interface, local file system)
file server machine
Remote File Service: Extremes
Upload/Download
– like FTP, SVN…
local reads/ writes at client
entire file download/upload even for small access
True Remote File Access
– every access to remote file, nothing done locally
file access centralized, easy to reason about consitency
every file operation pays network cost
A more Pratical Remote File Access (with Caching)
1. allow client to store parts of files locally
low latency on file operations server load reduced => is more scalable
2. Force clients to interact w/server (frequently)
server has insights into what clients are doing server has control into which accesses can be permitted => easier to maintain consistency
however, server more complex, requires different file sharing semantics
Stateless vs. stateful file server
Caching State in a DFS(optimization)
-locally clients maintain portion of state(file blocks)
-locally clients perform operations on chached state(open/read/write)
File Sharing
-in client memory
-on client storage device(HDD/SDD…)
-in buffer cache in memory on server(usefulness will depend on clients load, request interleaving…)
File sharing semantics in DFS
UNIX semantics => every write visible immediately
Session semantics(between open-close => session)
– write back on close(), update on open()
– easy to reason, but may be insufficient
Periodic Updates
– client writes-back periodically
– server invalidates periodically