Network File System ( NFS ) is a distributed file system (DFS) developed by Sun Microsystems. This allows directory structures to be
spread over the net- worked computing systems.
NFS follows the directory structure almost same as that in non-NFS system but there are some differences between them with respect to:
- Naming
- Path Names
- Semantics
Naming:
Naming is a mapping between logical and physical objects. For
example, users refers to a file by a textual name, but it is mapped to disk
blocks. There are two notions regarding name mapping used in DFS.
- Location Transparency: The name of a file does not give any hint of file's physical storage location.
- Location Independence: The name of a file does not need to be changed when file's physical storage location changes.
A location
independent naming scheme is basically a dynamic mapping. NFS does not support
location in-dependency.
Mounting:
The mount protocol is used to establish the initial logical
connection between a server and a client. A mount operation includes the name
of the remote directory to be mounted and the name of the server machine
storing it. The server maintains an export list which specifies local file
system that it exports for mounting along with the permitted machine names.
Unix uses /etc/exports for this purpose. Since, the list has a maximum length,
NFS is limited in scalabilty. Any directory within an exported file system can
be mounted remotely on a machine. When the server receives a mount request, it
returns a file handle to the client. File handle is basically a data-structure
of length 32 bytes. It serves as the key for further access to files within the
mounted system. In Unix term, the file handle consists of a file system
identifier that is stored in super block and an inode number to identify the
exact mounted directory within the exported file system. In NFS, one new field
is added in inode that is called the generic number.
Mount can be is of three types - - Soft mount: A time bound is there.
- Hard mount: No time bound.
- Auto-mount: Mount operation done on demand.
NFS Protocol and Remote Operations:
The NFS protocol provides a set of RPCs for remote
operations like lookup, create, rename, getattr, setattr, read, write,
remove, mkdir etc. The procedures can be invoked only after a file handle
for the remotely mounted directory has been esta- blished. NFS servers are
stateless servers. A stateless file server avoids to keep state informations by
making each request self-contained. That is, each request iden- tifies the file
and the position of the file in full. So, the server needs not to store file
pointer. Moreover, it needs not to establish or terminate a connection by
opening a file or closing a file, repectively. For reading a directory, NFS
does not use any file pointer, it uses a magic cookie.
Except the opening and closing a file, there is almost one-to-one mapping
between Unix system calls for file operations and the NFS protocol RPCs. A
remote file operation can be translated directly to the corresponding RPC.
Though conceptu- ally, NFS adheres to the remote service paradigm, in practice,
it uses buffering and caching. File blocks and attributes are fetched by RPCs
and cached locally. Future remote operations use the cached data, subject to
consistency constraints. Since, NFS runs on RPC and RPC runs on UDP/IP which is unreliable, operations should be idempotent.
Cache Update Policy:
The policy used to write modified data blocks to the
server's master copy has critical effect on the system performance and
reliability. The simplest policy is to write through the disk as soon as
they are placed on any cache. It's advantageous because it ensures the
reliability but it gives poor performance. In server site this policy is often
followed. Another policy is delayed write. It does not ensure
reliability. Client sites can use this policy. Another policy is write-on-close.
It is a variation of delayed write. This is used by Andrews File System (AFS).
Time Skew:
Because of differences of time at server and client, this
problem occurs .This may lead to problems in performing some operations like
" make ".
Performance Issues:
To increase the reliability and system performance, the
following things are generally done.
- Cache, file blocks and directory information's are maintained.
- All attributes of file / directory are cached. These stay 3 sec. for files and 30 sec. for directory.
- For large caches, bigger block size ( 8K ) is beneficial.
This is a
brief description of NFS version 2. NFS version 3 has already been come out and
this new version is an enhancement of the previous version. It removes many of
the difficulties and drawbacks of NFS 2.
No comments:
Post a Comment