1NFSDCLD(8) NFSDCLD(8)
2
3
4
6 nfsdcld - NFSv4 Client Tracking Daemon
7
9 nfsdcld [-d] [-F] [-p path] [-s stable storage dir]
10
12 nfsdcld is the NFSv4 client tracking daemon. It is not necessary to run
13 this daemon on machines that are not acting as NFSv4 servers.
14
15 When a network partition is combined with a server reboot, there are
16 edge conditions that can cause the server to grant lock reclaims when
17 other clients have taken conflicting locks in the interim. A more
18 detailed explanation of this issue is described in RFC 3530, section
19 8.6.3.
20
21 In order to prevent these problems, the server must track a small
22 amount of per-client information on stable storage. This daemon
23 provides the userspace piece of that functionality.
24
26 -d, --debug
27 Enable debug level logging.
28
29 -F, --foreground
30 Runs the daemon in the foreground and prints all output to stderr
31
32 -p path, --pipefsdir=path
33 Location of the rpc_pipefs filesystem. The default value is
34 /var/lib/nfs/rpc_pipefs.
35
36 -s storage_dir, --storagedir=storage_dir
37 Directory where stable storage information should be kept. The
38 default value is /var/lib/nfs/nfsdcld.
39
41 The following values are recognized in the [nfsdcld] section of the
42 /etc/nfs.conf configuration file:
43
44 storagedir
45 Equivalent to -s/--storagedir.
46
47 debug
48 Setting "debug = 1" is equivalent to -d/--debug.
49
50 In addition, the following value is recognized from the [general]
51 section:
52
53 pipefs-directory
54 Equivalent to -p/--pipefsdir.
55
57 The Linux kernel NFSv4 server has historically tracked this information
58 on stable storage by manipulating information on the filesystem
59 directly, in the directory to which /proc/fs/nfsd/nfsv4recoverydir
60 points.
61
62 This changed with the original introduction of nfsdcld upcall in kernel
63 version 3.4, which was later deprecated in favor of the nfsdcltrack(8)
64 usermodehelper program, support for which was added in kernel version
65 3.8. However, since the usermodehelper upcall does not work in
66 containers, support for a new version of the nfsdcld upcall was added
67 in kernel version 5.2.
68
69 This daemon requires a kernel that supports the nfsdcld upcall. On
70 older kernels, if the legacy client name tracking code was in use, then
71 the kernel would not create the pipe that nfsdcld uses to talk to the
72 kernel. On newer kernels, nfsd attempts to initialize client tracking
73 in the following order: First, the nfsdcld upcall. Second, the
74 nfsdcltrack usermodehelper upcall. Finally, the legacy client
75 tracking.
76
77 This daemon should be run as root, as the pipe that it uses to
78 communicate with the kernel is only accessable by root. The daemon
79 however does drop all superuser capabilities after starting. Because of
80 this, the storagedir should be owned by root, and be readable and
81 writable by owner.
82
83 The daemon now supports different upcall versions to allow the kernel
84 to pass additional data to be stored in the on-disk database. The
85 kernel will query the supported upcall version from nfsdcld during
86 client tracking initialization. A restart of nfsd is not necessary
87 after upgrading nfsdcld, however nfsd will not use a later upcall
88 version until restart. A restart of nfsd is necessary after
89 downgrading nfsdcld, to ensure that nfsd does not use an upcall version
90 that nfsdcld does not support. Additionally, a downgrade of nfsdcld
91 requires the schema of the on-disk database to be downgraded as well.
92 That can be accomplished using the nfsdclddb(8) utility.
93
95 /var/lib/nfs/nfsdcld/main.sqlite
96
98 nfsdcltrack(8), nfsdclddb(8)
99
101 The nfsdcld daemon was developed by Jeff Layton <jlayton@redhat.com>
102 with modifications from Scott Mayhew <smayhew@redhat.com>.
103
104
105
106 2011-12-21 NFSDCLD(8)