nfsd - special filesystem for controlling Linux NFS server
mount -t nfsd nfsd /proc/fs/nfsd
The nfsd filesystem is a special filesystem which provides access to the Linux NFS server. The filesystem consists of a single directory which contains a number of files. These files are actually gateways into the NFS server. Writing to them can affect the server. Reading from them can provide information about the server. This file system is only available in Linux 2.6 and later series kernels (and in the later parts of the 2.5 development series leading up to 2.6). This man page does not apply to 2.4 and earlier. As well as this filesystem, there are a collection of files in the procfs filesystem (normally mounted at /proc) which are used to control the NFS server. This manual page describes all of these files. The exportfs and mountd programs (part of the nfs-utils package) expect to find this filesystem mounted at /proc/fs/nfsd or /proc/fs/nfs. If it is not mounted, they will fall-back on 2.4 style functionality. This involves accessing the NFS server via a systemcall. This systemcall is scheduled to be removed after the 2.6 kernel series.
The three files in the nfsd filesystem are:
exports
This file contains a list of filesystems that are currently
exported and clients that each filesystem is exported to,
together with a list of export options for that
client/filesystem pair. This is similar to the
/proc/fs/nfs/exports file in 2.4. One difference is that a
client doesn't necessarily correspond to just one host. It can
respond to a large collection of hosts that are being treated
identically.
Each line of the file contains a path name, a client name, and a
number of options in parentheses. Any space, tab, newline or
back-slash character in the path name or client name will be
replaced by a backslash followed by the octal ASCII code for
that character.
threads
This file represents the number of nfsd thread currently
running. Reading it will show the number of threads. Writing
an ASCII decimal number will cause the number of threads to be
changed (increased or decreased as necessary) to achieve that
number.
filehandle
This is a somewhat unusual file in that what is read from it
depends on what was just written to it. It provides a
transactional interface where a program can open the file, write
a request, and read a response. If two separate programs open,
write, and read at the same time, their requests will not be
mixed up.
The request written to filehandle should be a client name, a
path name, and a number of bytes. This should be followed by a
newline, with white-space separating the fields, and octal
quoting of special characters.
On writing this, the program will be able to read back a
filehandle for that path as exported to the given client. The
filehandle's length will be at most the number of bytes given.
The filehandle will be represented in hex with a leading '\x'.
The directory /proc/net/rpc in the procfs filesystem contains a number
of files and directories. The files contain statistics that can be
display using the nfsstat program. The directories contain information
about various caches that the NFS server maintains to keep track of
access permissions that different clients have for different
filesystems. The caches are:
auth.domain
This cache maps the name of a client (or domain) to an internal
data structure. The only access that is possible is to flush
the cache.
auth.unix.ip
This cache contains a mapping from IP address to the name of the
authentication domain that the ipaddress should be treated as
part of.
nfsd.export
This cache contains a mapping from directory and domain to
export options.
nfsd.fh
This cache contains a mapping from domain and a filesystem
identifier to a directory. The filesystem identifier is stored
in the filehandles and consists of a number indicating the type
of identifier and a number of hex bytes indicating the content
of the identifier.
Each directory representing a cache can hold from 1 to 3 files. They
are:
flush When a number of seconds since epoch (1 Jan 1970) is written to
this file, all entries in the cache that were last updated
before that file become invalidated and will be flushed out.
Writing 1 will flush everything. This is the only file that
will always be present.
content
This file, if present, contains a textual representation of ever
entry in the cache, one per line. If an entry is still in the
cache (because it is actively being used) but has expired or is
otherwise invalid, it will be presented as a comment (with a
leading hash character).
channel
This file, if present, acts a channel for request from the
kernel-based nfs server to be passed to a user-space program for
handling.
When the kernel needs some information which isn't in the cache,
it makes a line appear in the channel file giving the key for
the information. A user-space program should read this, find
the answer, and write a line containing the key, an expiry time,
and the content. For example the kernel might make
nfsd 127.0.0.1
appear in the auth.unix.ip/content file. The user-space program
might then write
nfsd 127.0.0.1 1057206953 localhost
to indicate that 127.0.0.1 should map to localhost, at least for
now.
If the program uses select(2) or poll(2) to discover if it can
read from the channel then it will never see and end-of-file but
when all requests have been answered, it will block until
another request appears.
In the /proc filesystem there are 4 files that can be used to enabled
extra tracing of nfsd and related code. They are:
/proc/sys/sunrpc/nfs_debug
/proc/sys/sunrpc/nfsd_debug
/proc/sys/sunrpc/nlm_debug
/proc/sys/sunrpc/rpc_debug
They control tracing for the NFS client, the NFS server, the Network
Lock Manager (lockd) and the underlying RPC layer respectively.
Decimal numbers can be read from or written to these files. Each
number represents a bit-pattern where bits that are set cause certain
classes of tracing to be enabled. Consult the kernel header files to
find out what number correspond to what tracing.
nfsd(8), rpc.nfsd(8), exports(5), nfsstat(8), mountd(8) exportfs(8).
NeilBrown
3 July 2003 nfsd(7)
Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.
Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.
Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.
Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.
The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.
Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.
Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.
Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.