170 likes | 287 Views
This article explores the consistency mechanisms of Network File System (NFS) and Andrew File System (AFS). NFS utilizes client caching to reduce network load, offering weak consistency through write-through caching and periodic polling by clients. In contrast, AFS, developed at CMU, employs a more robust caching system where files are stored on client disks and callbacks are recorded by the server. The session semantics in AFS ensure updates are visible only upon file closure, enhancing consistency.
E N D
Network File System (NFS) • Uses client caching to reduce network load • Built on top of RPC Server cache: X Client A cache: X Client B cache: X
NFS Weak Consistency Protocol • Write-through caching: A write updates the server immediately • Other clients poll the server periodically for changes • No guarantees for multiple writers
Andrew File System (AFS) • Developed at CMU • Design principles • Files are cached on each client’s disks • NFS caches only in clients’ memory • Callbacks: The server records who has the copy of a file • Write-back cache on file close. The server then tells all clients that own an old copy. • Session semantics: Updates are only visible on close
NFS Summary + Simple and highly portable - May become inconsistent sometimes • Does not happen very often
AFS Illustrated Server cache: X Client A Client B
read X AFS Illustrated callback list of X client A Server cache: X Client A Client B read X
read X AFS Illustrated callback list of X client A Server cache: X Client A cache: X Client B read X
read X AFS Illustrated callback list of X client A Server cache: X Client A cache: X Client B read X
read X AFS Illustrated callback list of X client A client B Server cache: X Client A cache: X Client B read X
read X AFS Illustrated callback list of X client A client B Server cache: X Client A cache: X Client B cache: X read X
AFS Illustrated Server cache: X Client A cache: X Client B cache: X write X, X X
X X AFS Illustrated Server cache: X Client A cache: X Client B cache: X close X
X X AFS Illustrated Server cache: X Client A cache: X Client B cache: X close X
AFS Illustrated Server cache: X Client A cache: X Client B cache: X close X
X AFS Illustrated Server cache: X Client A cache: X Client B cache: X open X
X AFS Illustrated Server cache: X Client A cache: X Client B cache: X open X