]> arthur.barton.de Git - netatalk.git/blob - man/man8/cnid_dbd.8.tmpl
Merge remote branch 'sf/branch-allea' into branch-allea
[netatalk.git] / man / man8 / cnid_dbd.8.tmpl
1 '\" t
2 .\"     Title: cnid_dbd
3 .\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4 .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
5 .\"      Date: 01 Jan 2012
6 .\"    Manual: Netatalk 3.0
7 .\"    Source: Netatalk 3.0
8 .\"  Language: English
9 .\"
10 .TH "CNID_DBD" "8" "01 Jan 2012" "Netatalk 3.0" "Netatalk 3.0"
11 .\" -----------------------------------------------------------------
12 .\" * set default formatting
13 .\" -----------------------------------------------------------------
14 .\" disable hyphenation
15 .nh
16 .\" disable justification (adjust text to left margin only)
17 .ad l
18 .\" -----------------------------------------------------------------
19 .\" * MAIN CONTENT STARTS HERE *
20 .\" -----------------------------------------------------------------
21 .SH "NAME"
22 cnid_dbd \- implement access to CNID databases through a dedicated daemon process
23 .SH "SYNOPSIS"
24 .HP \w'\fBcnid_dbd\fR\fB\fR\fB\fR\fB\fR\fBcnid_dbd\fR\fB\fR\ 'u
25 \fBcnid_dbd\fR\fB\fR\fB\fR\fB\fR
26 .br
27 \fBcnid_dbd\fR\fB\fR \-v | \-V 
28 .SH "DESCRIPTION"
29 .PP
30 \fBcnid_dbd\fR
31 provides an interface for storage and retrieval of catalog node IDs (CNIDs) and related information to the
32 \fBafpd\fR
33 daemon\&. CNIDs are a component of Macintosh based file systems with semantics that map not easily onto Unix file systems\&. This makes separate storage in a database necessary\&.
34 \fBcnid_dbd\fR
35 is part of the
36 \fBCNID backend\fR
37 framework of
38 \fBafpd\fR
39 and implements the
40 \fBdbd\fR
41 backend\&.
42 .PP
43 \fBcnid_dbd\fR
44 is never started via the command line or system startup scripts but only by the
45 \fBcnid_metad\fR
46 daemon\&. There is one instance of
47 \fBcnid_dbd\fR
48 per netatalk volume\&.
49 .PP
50 \fBcnid_dbd\fR
51 uses the
52 \fBBerkleley DB\fR
53 database library and uses transactionally protected updates\&. The
54 \fBdbd\fR
55 backend with transactions will avoid corruption of the CNID database even if the system crashes unexpectedly\&.
56 .PP
57 \fBcnid_dbd\fR
58 inherits the effective userid and groupid from
59 \fBcnid_metad\fR
60 on startup, which is normally caused by
61 \fBafpd\fR
62 serving a netatalk volume to a client\&. It changes to the
63 \fBBerkleley DB\fR
64 database home directory
65 \fIdbdir\fR
66 that is associated with the volume\&. If the userid inherited from
67 \fBcnid_metad\fR
68 is 0 (root),
69 \fBcnid_dbd\fR
70 will change userid and groupid to the owner and group of the database home directory\&. Otherwise, it will continue to use the inherited values\&.
71 \fBcnid_dbd\fR
72 will then attempt to open the database and start serving requests using filedescriptor
73 \fIclntfd\fR\&. Subsequent instances of
74 \fBafpd\fR
75 that want to access the same volume are redirected to the running
76 \fBcnid_dbd\fR
77 process by
78 \fBcnid_metad\fR
79 via the filedescriptor
80 \fIctrlfd\fR\&.
81 .PP
82 \fBcnid_dbd\fR
83 can be configured to run forever or to exit after a period of inactivity\&. If
84 \fBcnid_dbd\fR
85 receives a TERM or an INT signal it will exit cleanly after flushing dirty database buffers to disk and closing
86 \fBBerkleley DB\fR
87 database environments\&. It is safe to terminate
88 \fBcnid_dbd\fR
89 this way, it will be restarted when necessary\&. Other signals are not handled and will cause an immediate exit, possibly leaving the CNID database in an inconsistent state (no transactions) or losing recent updates during recovery (transactions)\&.
90 .PP
91 The
92 \fBBerkleley DB\fR
93 database subsystem will create files named log\&.xxxxxxxxxx in the database home directory
94 \fIdbdir\fR, where xxxxxxxxxx is a monotonically increasing integer\&. These files contain ithe transactional database changes\&. They will be removed regularily, unless the
95 \fBlogfile_autoremove\fR
96 option is specified in the
97 \fIdb_param\fR
98 configuration file (see below) with a value of 0 (default 1)\&.
99 .PP
100 Do not use
101 \fBcnid_dbd\fR
102 for databases on NFS mounted file systems\&. It makes the whole point of securing database changes properly moot\&. Use the dbdir: Option in the appropriate
103 \fBAppleVolumes\fR
104 configuration file to put the database onto a local disk\&.
105 .SH "OPTIONS"
106 .PP
107 \fB\-v, \-V\fR
108 .RS 4
109 Show version and exit\&.
110 .RE
111 .SH "CONFIGURATION"
112 .PP
113 \fBcnid_dbd\fR
114 reads configuration information from the file
115 \fIdb_param\fR
116 in the database directory
117 \fIdbdir\fR
118 on startup\&. If the file does not exist or a parameter is not listed, suitable default values are used\&. The format for a single parameter is the parameter name, followed by one or more spaces, followed by the parameter value, followed by a newline\&. The following parameters are currently recognized:
119 .PP
120 \fBlogfile_autoremove\fR
121 .RS 4
122 If set to 0, unused Berkeley DB transactional logfiles (log\&.xxxxxxxxxx in the database home directory) are not removed on startup of
123 \fBcnid_dbd\fR
124 and on a reqular basis\&. Default: 1\&.
125 .RE
126 .PP
127 \fBcachesize\fR
128 .RS 4
129 Determines the size of the Berkeley DB cache in kilobytes\&. Default: 8192\&. Each
130 \fBcnid_dbd\fR
131 process grabs that much memory on top of its normal memory footprint\&. It can be used to tune database performance\&. The
132 \fBdb_stat\fR
133 utility with the
134 \fB\-m\fR
135 option that comes with Berkely DB can help you determine wether you need to change this value\&. The default is pretty conservative so that a large percentage of requests should be satisfied from the cache directly\&. If memory is not a bottleneck on your system you might want to leave it at that value\&. The
136 \fBBerkeley DB Tutorial and Reference Guide\fR
137 has a section
138 \fBSelecting a cache size\fR
139 that gives more detailed information\&.
140 .RE
141 .PP
142 \fBflush_frequency\fR, \fBflush_interval\fR
143 .RS 4
144 \fIflush_frequency\fR
145 (Default: 1000) and
146 \fIflush_interval\fR
147 (Default: 1800) control how often changes to the database are checkpointed\&. Both of these operations are performed if either i) more than
148 \fIflush_frequency\fR
149 requests have been received or ii) more than
150 \fIflush_interval\fR
151 seconds have elapsed since the last save/checkpoint\&. Be careful to check your harddisk configuration for on disk cache settings\&. Many IDE disks just cache writes as the default behaviour, so even flushing database files to disk will not have the desired effect\&.
152 .RE
153 .PP
154 \fBfd_table_size\fR
155 .RS 4
156 is the maximum number of connections (filedescriptors) that can be open for
157 \fBafpd\fR
158 client processes in
159 \fBcnid_dbd\&.\fR
160 Default: 512\&. If this number is exceeded, one of the existing connections is closed and reused\&. The affected
161 \fBafpd\fR
162 process will transparently reconnect later, which causes slight overhead\&. On the other hand, setting this parameter too high could affect performance in
163 \fBcnid_dbd\fR
164 since all descriptors have to be checked in a
165 \fBselect()\fR
166 system call, or worse, you might exceed the per process limit of open file descriptors on your system\&. It is safe to set the value to 1 on volumes where only one
167 \fBafpd\fR
168 client process is expected to run, e\&.g\&. home directories\&.
169 .RE
170 .PP
171 \fBidle_timeout\fR
172 .RS 4
173 is the number of seconds of inactivity before an idle
174 \fBcnid_dbd\fR
175 exits\&. Default: 600\&. Set this to 0 to disable the timeout\&.
176 .RE
177 .SH "UPDATING"
178 .PP
179 Note that the first version to appear
180 \fIafter\fR
181 Netatalk 2\&.1 ie Netatalk 2\&.1\&.1, will support BerkeleyDB updates on the fly without manual intervention\&. In other words Netatalk 2\&.1 does contain code to prepare the BerkeleyDB database for upgrades and to upgrade it in case it has been prepared before\&. That means it can\'t upgrade a 2\&.0\&.x version because that one didn\'t prepare the database\&.
182 .PP
183 In order to update between older Netatalk releases using different BerkeleyDB library versions, follow this steps:
184 .sp
185 .RS 4
186 .ie n \{\
187 \h'-04'\(bu\h'+03'\c
188 .\}
189 .el \{\
190 .sp -1
191 .IP \(bu 2.3
192 .\}
193 Stop the to be upgraded old version of Netatalk
194 .RE
195 .sp
196 .RS 4
197 .ie n \{\
198 \h'-04'\(bu\h'+03'\c
199 .\}
200 .el \{\
201 .sp -1
202 .IP \(bu 2.3
203 .\}
204 Using the old BerkeleyDB utilities run
205 \fBdb_recover \-h <path to \&.AppleDB>\fR
206 .RE
207 .sp
208 .RS 4
209 .ie n \{\
210 \h'-04'\(bu\h'+03'\c
211 .\}
212 .el \{\
213 .sp -1
214 .IP \(bu 2.3
215 .\}
216 Using the new BerkeleyDB utilities run
217 \fBdb_upgrade \-v \-h <path to \&.AppleDB> \-f cnid2\&.db\fR
218 .RE
219 .sp
220 .RS 4
221 .ie n \{\
222 \h'-04'\(bu\h'+03'\c
223 .\}
224 .el \{\
225 .sp -1
226 .IP \(bu 2.3
227 .\}
228 Again using the new BerkeleyDB utilities run
229 \fBdb_checkpoint \-1 \-h <path to \&.AppleDB>\fR
230 .RE
231 .sp
232 .RS 4
233 .ie n \{\
234 \h'-04'\(bu\h'+03'\c
235 .\}
236 .el \{\
237 .sp -1
238 .IP \(bu 2.3
239 .\}
240 Start the the new version of Netatalk
241 .RE
242 .SH "SEE ALSO"
243 .PP
244 \fBcnid_metad\fR(8),
245 \fBafpd\fR(8),
246 \fBdbd\fR(1)