Spring 2017 :: CSE 506
Network File System (NFS)
Nima Honarmand
Network File System (NFS) Nima Honarmand Spring 2017 :: CSE 506 - - PowerPoint PPT Presentation
Spring 2017 :: CSE 506 Network File System (NFS) Nima Honarmand Spring 2017 :: CSE 506 Idea A client/server system to share the content of a file system over network NFS only specifies User the client/server Kernel protocol
Spring 2017 :: CSE 506
Nima Honarmand
Spring 2017 :: CSE 506
system over network
Source: Sandberg et al., 1985
the client/server protocol
implementations are possible
User Kernel
Spring 2017 :: CSE 506
RPC:
1) Receive the request from higher levels 2) Pack the procedure ID and all its arguments in an RPC request packet (a.k.a. serialization or marshalling) 3) Send the request to the server 4) Wait for the response, unpack the results (a.k.a. deserialization or unmarshalling) and return to the higher level
1) Wait for and receive the request packet 2) Deserialize the request content (procedure ID and arguments) into appropriate data structures 3) Service the request 4) Serialize the results into an RPC response packet and send it to the client
Spring 2017 :: CSE 506
lose packets)
Spring 2017 :: CSE 506
requests
past requests
request
cursor
Spring 2017 :: CSE 506
Spring 2017 :: CSE 506
NFSPROC_READ, NFSPROC_WRITE, NFSPROC_CREATE, NFSPROC_REMOVE, NFSPROC_MKDIR,
generation-number)
Spring 2017 :: CSE 506
1) Did the message get lost in the network (UDP)? 2) Did the server die? 3) Is the server slow? 4) Is the response lost or in transit?
→ Should make retries safe
Spring 2017 :: CSE 506
multiple times
twice
ignores duplicates
Spring 2017 :: CSE 506
Spring 2017 :: CSE 506
becomes root everywhere
“nobody”
Spring 2017 :: CSE 506
Spring 2017 :: CSE 506
make[2]: warning: Clock skew detected. Your build may be incomplete.
Spring 2017 :: CSE 506
server (perhaps multiple times)
issues when there are multiple copies of data Example:
Spring 2017 :: CSE 506
Spring 2017 :: CSE 506
timestamp to check the cached version’s timestamp
when opening a file
Spring 2017 :: CSE 506
Spring 2017 :: CSE 506
improve scalability