Whamcloud - gitweb
f29cce910348ad2adf0e1824c3f53b4c44d7cbf7
[fs/lustre-release.git] / lustre / doc / lctl.8
1 .TH lctl 8 "2017 Jan 12" Lustre "configuration utilities"
2 .SH NAME
3 lctl \- Low level Lustre filesystem configuration utility
4 .SH SYNOPSIS
5 .br
6 .B lctl
7 .br
8 .B lctl --device <devno> <command [args]>
9 .br
10 .B lctl --version
11 .br
12 .B lctl --list-commands
13 .br
14 .SH DESCRIPTION
15 .B lctl
16 is used to directly control Lustre via an ioctl interface, allowing
17 various configuration, maintenance, and debugging features to be accessed.
18
19 .B lctl
20 can be invoked in interactive mode by issuing lctl command. After that, commands are issued as below. The most common commands in lctl are
21 .BR dl ,
22 .BR dk ,
23 .BR device ,
24 .B network
25 .IR <up/down> ,
26 .BR list_nids ,
27 .B ping
28 .IR nid ,
29 .BR help ,
30 .BR quit .
31
32 To get a complete listing of available commands, type
33 .B --list-commands
34 at the lctl prompt.  To get basic help on the meaning and syntax of a
35 command, type
36 .B help
37 .I command
38 .  Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys.
39
40 For non-interactive use, one uses the second invocation, which runs command after connecting to the device.
41
42 .SS Network Configuration
43 .TP
44 .BR network " <" up / down >|< tcp / o2ib >
45 Start or stop LNET, or select a network type for other
46 .I lctl
47 LNET commands
48 .TP
49 .BI list_nids
50 Print all Network Identifiers on the local node. LNET must be running.
51 .TP
52 .BI which_nid " <nidlist>"
53 From a list of nids for a remote node, show which interface communication
54 will take place on.
55 .TP
56 .BI replace_nids " <devicename> <nid1>[,nid2,nid3 ...]"
57 Replace the LNET Network Identifiers for a given device,
58 as when the server's IP address has changed.
59 This command must be run on the MGS node.
60 Only MGS server should be started (command execution returns error
61 in another cases). To start the MGS service only:
62 mount -t lustre <MDT partition> -o nosvc <mount point>
63 Note the replace_nids command skips any invalidated records in the configuration log.
64 The previous log is backed up with the suffix '.bak'.
65 .TP
66 .BI ping " <nid> timeout"
67 Check LNET connectivity via an LNET ping. This will use the fabric
68 appropriate to the specified NID. By default lctl will attempt to
69 reach the remote node up to 120 seconds and then timeout. To disable
70 the timeout just specify an negative timeout value.
71 .TP
72 .BI interface_list
73 Print the network interface information for a given
74 .B network
75 type.
76 .TP
77 .BI peer_list
78 Print the known peers for a given
79 .B network
80 type.
81 .TP
82 .BI conn_list
83 Print all the connected remote NIDs for a given
84 .B network
85 type.
86 .TP
87 .BI route_list
88 Print the complete routing table.
89 .PP
90 .SS Device Selection
91 .TP
92 .BI device " <devname> "
93 This will select the specified OBD device.  All other commands depend on the device being set.
94 .TP
95 .BI device_list
96 Show all the local Lustre OBDs. AKA
97 .B dl
98 .PP
99 .SS Device Operations
100 .TP
101 .BI list_param " [-F|-R] <param_search ...>"
102 List the Lustre or LNet parameter name
103 .B -F
104 Add '/', '@' or '=' for dirs, symlinks and writeable files, respectively.
105 .br
106 .B -R
107 Recursively list all parameters under the specified parameter search string. If
108 .I param_search
109 is unspecified, all the parameters will be shown.
110 .br
111 .B Examples:
112 .br
113 .B
114 # lctl list_param ost.*
115 .br
116   ost.OSS
117 .br
118   ost.num_refs
119 .br
120 .B
121 # lctl list_param -F ost.* debug
122 .br
123   ost.OSS/
124 .br
125   ost.num_refs
126 .br
127   debug=
128 .br
129 .B
130 # lctl list_param -R mdt
131 .br
132   mdt
133 .br
134   mdt.lustre-MDT0000
135 .br
136   mdt.lustre-MDT0000.capa
137 .br
138   mdt.lustre-MDT0000.capa_count
139 .br
140   mdt.lustre-MDT0000.capa_key_timeout
141 .br
142   mdt.lustre-MDT0000.capa_timeout
143 .br
144   mdt.lustre-MDT0000.commit_on_sharing
145 .br
146   mdt.lustre-MDT0000.evict_client
147 .br
148   ...
149 .TP
150 .BI get_param " [-F|-n|-N|-R] <parameter ...>"
151 Get the value of Lustre or LNET parameter.
152 .br
153 .B -F
154 When -N specified, add '/', '@' or '=' for directories, symlinks and writeable files, respectively.
155 .br
156 .br
157 .B -n
158 Print only the value and not parameter name.
159 .br
160 .B -N
161 Print only matched parameter names and not the values. (Especially useful when using patterns.)
162 .br
163 .B -R
164 Print all of the parameter names below the specified name.
165 .br
166 .B Examples:
167 .br
168 .B
169 # lctl get_param ost.*
170 .br
171   ost.OSS
172 .br
173   ost.num_refs
174 .br
175 .B
176 # lctl get_param -n debug timeout
177 .br
178   super warning dlmtrace error emerg ha rpctrace vfstrace config console
179 .br
180   20
181 .br
182 .B
183 # lctl get_param -N ost.* debug
184 .br
185   ost.OSS
186 .br
187   ost.num_refs
188 .br
189   debug
190 .br
191 lctl "get_param -NF" is equivalent to "list_param -F".
192 .TP
193 .BI set_param " [-n] [-P] [-d] <parameter=value ...>"
194 Set the value of Lustre or LNET parameter.
195 .br
196 .B -n
197 Disable printing of the key name when printing values.
198 .br
199 .B -P
200 Set the parameter permanently, filesystem-wide.
201 This parameters are only visible to 2.5.0 and later clients, older clients will not see these parameters.
202 .br
203 .B -d
204 Remove the permanent setting (only with -P option)
205 .br
206 .B Examples:
207 .br
208 .B
209 # lctl set_param fail_loc=0 timeout=20
210 .br
211   fail_loc=0
212 .br
213   timeout=20
214 .br
215 .B
216 # lctl set_param -n fail_loc=0 timeout=20
217 .br
218   0
219 .br
220   20
221 .br
222 .B
223 # lctl set_param -P osc.*.max_dirty_mb=32
224 .br
225 .TP
226 .BI conf_param " [-d] <device|fsname>.<parameter>=<value>"
227 Set a permanent configuration parameter for any device via the MGS.  This
228 command must be run on the MGS node.
229 .br
230 .B -d <device|fsname>.<parameter>
231 Delete a parameter setting (use the default value at the next restart).  A null value for <value> also deletes the parameter setting.
232 .br
233 .B Parameters:
234 .br
235 All of the writable parameters under
236 .B lctl list_param
237 (e.g.
238 .I lctl list_param -F osc.*.* | grep =
239 ) can be permanently set using
240 .B lctl conf_param
241 , but the format is slightly different.  For conf_param, the device is specified first, then the obdtype. (See examples below.)  Wildcards are not supported.
242 .br
243 Additionally, failover nodes may be added (or removed), and some system-wide parameters may be set as well (sys.at_max, sys.at_min, sys.at_extra, sys.at_early_margin, sys.at_history, sys.timeout, sys.ldlm_timeout.)  <device> is ignored for system wide parameters.
244 .br
245 .B Examples:
246 .br
247 # lctl conf_param testfs.sys.at_max=1200
248 .br
249 # lctl conf_param testfs.llite.max_read_ahead_mb=16
250 .br
251 # lctl conf_param testfs-MDT0000.lov.stripesize=2M
252 .br
253 # lctl conf_param lustre-OST0001.osc.active=0
254 .br
255 # lctl conf_param testfs-OST0000.osc.max_dirty_mb=29.15
256 .br
257 # lctl conf_param testfs-OST0000.ost.client_cache_seconds=15
258 .br
259 # lctl conf_param testfs-OST0000.failover.node=1.2.3.4@tcp1
260 .TP
261 .BI activate
262 Reactivate an import after deactivating, below.  This setting is only effective until the next restart (see
263 .B conf_param
264 ).
265 .TP
266 .BI deactivate
267 Deactivate an import, in particular meaning do not assign new file stripes
268 to an OSC.  This command should be used on the OSC in the MDT LOV
269 corresponding to a failed OST device, to prevent further attempts at
270 communication with the failed OST.
271 .TP
272 .BI abort_recovery
273 Abort the recovery process on a restarting MDT or OST device
274 .PP
275 .SS Changelogs
276 .TP
277 .BI changelog_register " [-n]"
278 Register a new changelog user for a particular device.  Changelog entries
279 will not be purged beyond any registered users' set point. (See lfs changelog_clear.)
280 .br
281 .B -n
282 Print only the ID of the newly registered user.
283 .TP
284 .BI changelog_deregister " <id>"
285 Unregister an existing changelog user.  If the user's "clear" record number
286 is the minimum for the device, changelog records will be purged until the
287 next minimum.
288 .PP
289 .SS Nodemap
290 An identity mapping feature that facilitates mapping of client UIDs and GIDs to
291 local file system UIDs and GIDs, while maintaining POSIX ownership, permissions,
292 and quota.
293
294 While the nodemap feature is enabled, all client file system access is subject
295 to the nodemap identity mapping policy, which consists of the 'default' catchall
296 nodemap, and any user-defined nodemaps. The 'default' nodemap maps all client
297 identities to 99:99 (nobody:nobody). Administrators can define nodemaps for a
298 range of client NIDs which map identities, and these nodemaps can be flagged as
299  'trusted' so identities are accepted without translation, as well as flagged
300 as 'admin' meaning that root is not squashed for these nodes.
301
302 Note: In the current phase of implementation, to use the nodemap functionality
303 you only need to enable and define nodemaps on the MDS. The MDSes must also be
304 in a nodemap with the admin and trusted flags set. To use quotas with nodemaps,
305 you must also use set_param to enable and define nodemaps on the OSS (matching
306 what is defined on the MDS). Nodemaps do not currently persist, unless you
307 define them with set_param and use the -P flag. Note that there is a hard limit
308 to the number of changes you can persist over the lifetime of the file system.
309
310 See also:
311
312 .PP
313 \fBlctl-nodemap-activate\fR(8)
314 .RS 4
315 Activate/deactivate the nodemap feature.
316 .RE
317 .PP
318 \fBlctl-nodemap-add\fR(8)
319 .RS 4
320 Add a new nodemap, to which NID ranges, identities, and properties can be added.
321 .RE
322 .PP
323 \fBlctl-nodemap-del\fR(8)
324 .RS 4
325 Delete an existing nodemap.
326 .RE
327 .PP
328 \fBlctl-nodemap-add-range\fR(8)
329 .RS 4
330 Define a range of NIDs for a nodemap.
331 .RE
332 .PP
333 \fBlctl-nodemap-del-range\fR(8)
334 .RS 4
335 Delete an existing NID range from a nodemap.
336 .RE
337 .PP
338 \fBlctl-nodemap-add-idmap\fR(8)
339 .RS 4
340 Add a UID or GID mapping to a nodemap.
341 .RE
342 .PP
343 \fBlctl-nodemap-del-idmap\fR(8)
344 .RS 4
345 Delete an existing UID or GID mapping from a nodemap.
346 .RE
347 .PP
348 \fBlctl-nodemap-modify\fR(8)
349 .RS 4
350 Modify a nodemap property.
351 .RE
352
353 .SS LFSCK
354 An on-line Lustre consistency check and repair tool. It is used for totally
355 replacing the old lfsck tool for kinds of Lustre inconsistency verification,
356 including: corrupted or lost OI mapping, corrupted or lost link EA, corrupted
357 or lost FID in name entry, dangling name entry, multiple referenced name entry,
358 unmatched MDT-object and name entry pairs, orphan MDT-object, incorrect
359 MDT-object links count, corrupted namespace, corrupted or lost lov EA, lost
360 OST-object, multiple referenced OST-object, unmatched MDT-object and OST-object
361 pairs, orphan OST-object, and so on.
362
363 See also:
364
365 .PP
366 \fBlctl-lfsck-start\fR(8)
367 .RS 4
368 Start LFSCK on the specified MDT or OST device with specified parameters.
369 .RE
370 .PP
371 \fBlctl-lfsck-stop\fR(8)
372 .RS 4
373 Stop LFSCK on the specified MDT or OST device.
374 .RE
375 .PP
376 \fBlctl-lfsck-query\fR(8)
377 .RS 4
378 Get the LFSCK global status via the specified MDT device.
379 .RE
380 .SS Debug
381 .TP
382 .BI debug_daemon
383 Start and stop the debug daemon, and control the output filename and size.
384 .TP
385 .BI debug_kernel " [file] [raw]"
386 Dump the kernel debug buffer to stdout or file.
387 .TP
388 .BI debug_file " <input> [output]"
389 Convert kernel-dumped debug log from binary to plain text format.
390 .TP
391 .BI clear
392 Clear the kernel debug buffer.
393 .TP
394 .BI mark " <text>"
395 Insert marker text in the kernel debug buffer.
396 .TP
397 .BI filter " <subsystem id/debug mask>"
398 Filter kernel debug messages by subsystem or mask.
399 .TP
400 .BI show " <subsystem id/debug mask>"
401 Show specific type of messages.
402 .TP
403 .BI debug_list " <subs/types>"
404 List all the subsystem and debug types.
405 .TP
406 .BI modules " <path>"
407 Provide gdb-friendly module information.
408
409 .SH OPTIONS
410 The following options can be used to invoke lctl.
411 .TP
412 .B --device
413 The device to be used for the operation. This can be specified by name or
414 number. See
415 .B device_list
416 .TP
417 .B --ignore_errors | ignore_errors
418 Ignore errors during script processing
419 .TP
420 .B lustre_build_version
421 Output the build version of the Lustre kernel modules
422 .TP
423 .B --version
424 Output the build version of the lctl utility
425 .TP
426 .B --list-commands
427 Output a list of the commands supported by the lctl utility
428 .TP
429 .B help
430 Provides brief help on the various arguments
431 .TP
432 .B exit/quit
433 Quit the interactive lctl session
434
435 .SH EXAMPLES
436 # lctl
437 .br
438 lctl > dl
439   0 UP mgc MGC192.168.0.20@tcp bfbb24e3-7deb-2ffa-eab0-44dffe00f692 5
440   1 UP ost OSS OSS_uuid 3
441   2 UP obdfilter testfs-OST0000 testfs-OST0000_UUID 3
442 .br
443 lctl > dk /tmp/log
444 Debug log: 87 lines, 87 kept, 0 dropped.
445 .br
446 lctl > quit
447
448 .SH AVAILABILITY
449 .B lctl
450 is part of the
451 .BR Lustre (7)
452 filesystem package.
453 .SH SEE ALSO
454 .BR lustre (7),
455 .BR mkfs.lustre (8),
456 .BR mount.lustre (8),
457 .BR lctl (8),
458 .BR lctl-lfsck-start (8),
459 .BR lctl-lfsck-stop (8),
460 .BR lctl-lfsck-query (8),
461 .BR lctl-network (8),
462 .BR lctl-nodemap-activate (8),
463 .BR lctl-nodemap-add-idmap (8),
464 .BR lctl-nodemap-add-range (8),
465 .BR lctl-nodemap-add (8),
466 .BR lctl-nodemap-del-idmap (8),
467 .BR lctl-nodemap-del-range (8),
468 .BR lctl-nodemap-del (8),
469 .BR lctl-nodemap-modify (8),
470 .BR lfs (1)