xref: /freebsd/usr.sbin/nfsd/nfsd.8 (revision 85732ac8)
1.\" Copyright (c) 1989, 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"	@(#)nfsd.8	8.4 (Berkeley) 3/29/95
29.\" $FreeBSD$
30.\"
31.Dd August 5, 2018
32.Dt NFSD 8
33.Os
34.Sh NAME
35.Nm nfsd
36.Nd remote
37.Tn NFS
38server
39.Sh SYNOPSIS
40.Nm
41.Op Fl ardute
42.Op Fl n Ar num_servers
43.Op Fl h Ar bindip
44.Op Fl p Ar pnfs_setup
45.Op Fl m Ar mirror_level
46.Op Fl Fl maxthreads Ar max_threads
47.Op Fl Fl minthreads Ar min_threads
48.Sh DESCRIPTION
49The
50.Nm
51utility runs on a server machine to service
52.Tn NFS
53requests from client machines.
54At least one
55.Nm
56must be running for a machine to operate as a server.
57.Pp
58Unless otherwise specified, eight servers per CPU for
59.Tn UDP
60transport are started.
61.Pp
62The following options are available:
63.Bl -tag -width Ds
64.It Fl r
65Register the
66.Tn NFS
67service with
68.Xr rpcbind 8
69without creating any servers.
70This option can be used along with the
71.Fl u
72or
73.Fl t
74options to re-register NFS if the rpcbind server is restarted.
75.It Fl d
76Unregister the
77.Tn NFS
78service with
79.Xr rpcbind 8
80without creating any servers.
81.It Fl n Ar threads
82Specifies how many servers to create.  This option is equivalent to specifying
83.Fl Fl maxthreads
84and
85.Fl Fl minthreads
86with their respective arguments to
87.Ar threads .
88.It Fl Fl maxthreads Ar threads
89Specifies the maximum servers that will be kept around to service requests.
90.It Fl Fl minthreads Ar threads
91Specifies the minimum servers that will be kept around to service requests.
92.It Fl h Ar bindip
93Specifies which IP address or hostname to bind to on the local host.
94This option is recommended when a host has multiple interfaces.
95Multiple
96.Fl h
97options may be specified.
98.It Fl a
99Specifies that nfsd should bind to the wildcard IP address.
100This is the default if no
101.Fl h
102options are given.
103It may also be specified in addition to any
104.Fl h
105options given.
106Note that NFS/UDP does not operate properly when
107bound to the wildcard IP address whether you use -a or do not use -h.
108.It Fl p Ar pnfs_setup
109Enables pNFS support in the server and specifies the information that the
110daemon needs to start it.
111This option can only be used on one server and specifies that this server
112will be the MetaData Server (MDS) for the pNFS service.
113This can only be done if there is at least one FreeBSD system configured
114as a Data Server (DS) for it to use.
115.Pp
116The
117.Ar pnfs_setup
118string is a set of fields separated by ',' characters:
119.Bl -tag -width Ds
120Each of these fields specifies one DS.
121It consists of a server hostname, followed by a ':'
122and the directory path where the DS's data storage file system is mounted on
123this MDS server.
124This can optionally be followed by a '#' and the mds_path, which is the
125directory path for an exported file system on this MDS.
126If this is specified, it means that this DS is to be used to store data
127files for this mds_path file system only.
128If this optional component does not exist, the DS will be used to store data
129files for all exported MDS file systems.
130The DS storage file systems must be mounted on this system before the
131.Nm
132is started with this option specified.
133.br
134For example:
135.sp
136nfsv4-data0:/data0,nfsv4-data1:/data1
137.sp
138would specify two DS servers called nfsv4-data0 and nfsv4-data1 that comprise
139the data storage component of the pNFS service.
140These two DSs would be used to store data files for all exported file systems
141on this MDS.
142The directories
143.Dq /data0
144and
145.Dq /data1
146are where the data storage servers exported
147storage directories are mounted on this system (which will act as the MDS).
148.br
149Whereas, for the example:
150.sp
151nfsv4-data0:/data0#/export1,nfsv4-data1:/data1#/export2
152.sp
153would specify two DSs as above, however nfsv4-data0 will be used to store
154data files for
155.Dq /export1
156and nfsv4-data1 will be used to store data files for
157.Dq /export2 .
158.El
159.sp
160When using IPv6 addresses for DSs
161be wary of using link local addresses.
162The IPv6 address for the DS is sent to the client and there is no scope
163zone in it.
164As such, a link local address may not work for a pNFS client to DS
165TCP connection.
166When parsed,
167.Nm
168will only use a link local address if it is the only address returned by
169.Xr getaddrinfo 3
170for the DS hostname.
171.It Fl m Ar mirror_level
172This option is only meaningful when used with the
173.Fl p
174option.
175It specifies the
176.Dq mirror_level ,
177which defines how many of the DSs will
178have a copy of a file's data storage file.
179The default of one implies no mirroring of data storage files on the DSs.
180The
181.Dq mirror_level
182would normally be set to 2 to enable mirroring, but
183can be as high as NFSDEV_MAXMIRRORS.
184There must be at least
185.Dq mirror_level
186DSs for each exported file system on the MDS, as specified in the
187.Fl p
188option.
189This implies that, for the above example using "#/export1" and "#/export2",
190mirroring cannot be done.
191There would need to be two DS entries for each of "#/export1" and "#/export2"
192in order to support a
193.Dq mirror_level
194of two.
195.Pp
196If mirroring is enabled, the server must use the Flexible File
197layout.
198If mirroring is not enabled, the server will use the File layout
199by default, but this default can be changed to the Flexible File layout if the
200.Xr sysctl 1
201vfs.nfsd.default_flexfile
202is set non-zero.
203.It Fl t
204Serve
205.Tn TCP NFS
206clients.
207.It Fl u
208Serve
209.Tn UDP NFS
210clients.
211.It Fl e
212Ignored; included for backward compatibility.
213.El
214.Pp
215For example,
216.Dq Li "nfsd -u -t -n 6"
217serves
218.Tn UDP
219and
220.Tn TCP
221transports using six daemons.
222.Pp
223A server should run enough daemons to handle
224the maximum level of concurrency from its clients,
225typically four to six.
226.Pp
227The
228.Nm
229utility listens for service requests at the port indicated in the
230.Tn NFS
231server specification; see
232.%T "Network File System Protocol Specification" ,
233RFC1094,
234.%T "NFS: Network File System Version 3 Protocol Specification" ,
235RFC1813,
236.%T "Network File System (NFS) Version 4 Protocol" ,
237RFC3530 and
238.%T "Network File System (NFS) Version 4 Minor Version 1 Protocol" ,
239RFC5661.
240.Pp
241If
242.Nm
243detects that
244.Tn NFS
245is not loaded in the running kernel, it will attempt
246to load a loadable kernel module containing
247.Tn NFS
248support using
249.Xr kldload 2 .
250If this fails, or no
251.Tn NFS
252KLD is available,
253.Nm
254will exit with an error.
255.Pp
256If
257.Nm
258is to be run on a host with multiple interfaces or interface aliases, use
259of the
260.Fl h
261option is recommended.
262If you do not use the option NFS may not respond to
263UDP packets from the same IP address they were sent to.
264Use of this option
265is also recommended when securing NFS exports on a firewalling machine such
266that the NFS sockets can only be accessed by the inside interface.
267The
268.Nm ipfw
269utility
270would then be used to block nfs-related packets that come in on the outside
271interface.
272.Pp
273If the server has stopped servicing clients and has generated a console message
274like
275.Dq Li "nfsd server cache flooded..." ,
276the value for vfs.nfsd.tcphighwater needs to be increased.
277This should allow the server to again handle requests without a reboot.
278Also, you may want to consider decreasing the value for
279vfs.nfsd.tcpcachetimeo to several minutes (in seconds) instead of 12 hours
280when this occurs.
281.Pp
282Unfortunately making vfs.nfsd.tcphighwater too large can result in the mbuf
283limit being reached, as indicated by a console message
284like
285.Dq Li "kern.ipc.nmbufs limit reached" .
286If you cannot find values of the above
287.Nm sysctl
288values that work, you can disable the DRC cache for TCP by setting
289vfs.nfsd.cachetcp to 0.
290.Pp
291The
292.Nm
293utility has to be terminated with
294.Dv SIGUSR1
295and cannot be killed with
296.Dv SIGTERM
297or
298.Dv SIGQUIT .
299The
300.Nm
301utility needs to ignore these signals in order to stay alive as long
302as possible during a shutdown, otherwise loopback mounts will
303not be able to unmount.
304If you have to kill
305.Nm
306just do a
307.Dq Li "kill -USR1 <PID of master nfsd>"
308.Sh EXIT STATUS
309.Ex -std
310.Sh SEE ALSO
311.Xr nfsstat 1 ,
312.Xr kldload 2 ,
313.Xr nfssvc 2 ,
314.Xr nfsv4 4 ,
315.Xr pnfs 4 ,
316.Xr pnfsserver 4 ,
317.Xr exports 5 ,
318.Xr stablerestart 5 ,
319.Xr gssd 8 ,
320.Xr ipfw 8 ,
321.Xr mountd 8 ,
322.Xr nfsiod 8 ,
323.Xr nfsrevoke 8 ,
324.Xr nfsuserd 8 ,
325.Xr rpcbind 8
326.Sh HISTORY
327The
328.Nm
329utility first appeared in
330.Bx 4.4 .
331.Sh BUGS
332If
333.Nm
334is started when
335.Xr gssd 8
336is not running, it will service AUTH_SYS requests only. To fix the problem
337you must kill
338.Nm
339and then restart it, after the
340.Xr gssd 8
341is running.
342.Pp
343If mirroring is enabled via the
344.Fl m
345option and there are Linux clients doing NFSv4.1 mounts, those clients
346need to be patched to support the
347.Dq tightly coupled
348variant of
349the Flexible File layout or the
350.Xr sysctl 1
351vfs.nfsd.flexlinuxhack
352must be set to one on the MDS as a workaround.
353