Whamcloud - gitweb
d4a1aaf8b02fd39decffb7cc186dccbb6ec25c8f
[doc/manual.git] / SystemConfigurationUtilities.xml
1 <?xml version='1.0' encoding='UTF-8'?>
2 <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US" xml:id="systemconfigurationutilities">
3   <title xml:id="systemconfigurationutilities.title">System Configuration Utilities</title>
4   <para>This chapter includes system configuration utilities and includes the following sections:</para>
5   <itemizedlist>
6     <listitem>
7       <para><xref linkend="dbdoclet.50438219_55923"/></para>
8     </listitem>
9     <listitem>
10       <para><xref linkend="dbdoclet.l_getidentity"/></para>
11     </listitem>
12     <listitem>
13       <para><xref linkend="dbdoclet.50438219_38274"/></para>
14     </listitem>
15     <listitem>
16       <para><xref linkend="dbdoclet.50438219_58217"/></para>
17     </listitem>
18     <listitem>
19       <para><xref linkend="dbdoclet.50438219_44971"/></para>
20     </listitem>
21     <listitem>
22       <para><xref linkend="dbdoclet.50438219_84890"/></para>
23     </listitem>
24     <listitem>
25       <para><xref linkend="dbdoclet.50438219_90386"/></para>
26     </listitem>
27     <listitem>
28       <para><xref linkend="dbdoclet.50438219_23232"/></para>
29     </listitem>
30     <listitem>
31       <para><xref linkend="dbdoclet.50438219_23648"/></para>
32     </listitem>
33     <listitem>
34       <para><xref linkend="dbdoclet.50438219_64286"/></para>
35     </listitem>
36     <listitem>
37       <para><xref linkend="dbdoclet.50438219_90218"/></para>
38     </listitem>
39     <listitem>
40       <para><xref linkend="dbdoclet.50438219_54734"/></para>
41     </listitem>
42     <listitem>
43       <para><xref linkend="dbdoclet.50438219_63667"/></para>
44     </listitem>
45     <listitem>
46       <para><xref linkend="dbdoclet.50438219_75432"/></para>
47     </listitem>
48     <listitem>
49       <para><xref linkend="dbdoclet.50438219_12635"/></para>
50     </listitem>
51     <listitem>
52       <para><xref linkend="dbdoclet.50438219_82679"/></para>
53     </listitem>
54     <listitem>
55       <para><xref linkend="dbdoclet.50438219_51496"/></para>
56     </listitem>
57     <listitem>
58       <para><xref linkend="dbdoclet.50438219_39574"/></para>
59     </listitem>
60     <listitem>
61       <para><xref linkend="dbdoclet.50438219_99928"/></para>
62     </listitem>
63   </itemizedlist>
64   <section xml:id="dbdoclet.50438219_55923">
65       <title><indexterm><primary>e2scan</primary></indexterm>
66                   e2scan</title>
67     <para>The e2scan utility is an ext2 file system-modified inode scan program. The e2scan program uses libext2fs to find inodes with ctime or mtime newer than a given time and prints out their pathname. Use e2scan to efficiently generate lists of files that have been modified. The e2scan tool is included in the e2fsprogs package, located at:</para>
68     <para><link xl:href="http://downloads.whamcloud.com/public/e2fsprogs/latest/">http://downloads.whamcloud.com/public/e2fsprogs/latest/</link></para>
69     <section remap="h5">
70       <title>Synopsis</title>
71       <screen>e2scan [options] [-f file] block_device</screen>
72     </section>
73     <section remap="h5">
74       <title>Description</title>
75       <para>When invoked, the e2scan utility iterates all inodes on the block device, finds modified inodes, and prints their inode numbers. A similar iterator, using libext2fs(5), builds a table (called parent database) which lists the parent node for each inode. With a lookup function, you can reconstruct modified pathnames from root.</para>
76     </section>
77     <section remap="h5">
78       <title>Options</title>
79       <informaltable frame="all">
80         <tgroup cols="2">
81           <colspec colname="c1" colwidth="50*"/>
82           <colspec colname="c2" colwidth="50*"/>
83           <thead>
84             <row>
85               <entry>
86                 <para><emphasis role="bold">Option</emphasis></para>
87               </entry>
88               <entry>
89                 <para><emphasis role="bold">Description</emphasis></para>
90               </entry>
91             </row>
92           </thead>
93           <tbody>
94             <row>
95               <entry>
96                 <para> <literal>-b <replaceable>inode buffer blocks</replaceable></literal></para>
97               </entry>
98               <entry>
99                 <para> Sets the readahead inode blocks to get excellent performance when scanning the block device.</para>
100                 <para>&#160;</para>
101               </entry>
102             </row>
103             <row>
104               <entry>
105                 <para> <literal>-o <replaceable>output file</replaceable></literal></para>
106               </entry>
107               <entry>
108                 <para> If an output file is specified, modified pathnames are written to this file. Otherwise, modified parameters are written to stdout.</para>
109               </entry>
110             </row>
111             <row>
112               <entry>
113                 <para> <literal>-t <replaceable>inode</replaceable>| <replaceable>pathname</replaceable></literal></para>
114               </entry>
115               <entry>
116                 <para> Sets the e2scan type if type is inode. The e2scan utility prints modified inode numbers to stdout. By default, the type is set as pathname.</para>
117                 <para>The e2scan utility lists modified pathnames based on modified inode numbers.</para>
118               </entry>
119             </row>
120             <row>
121               <entry>
122                 <para> <literal>-u</literal></para>
123               </entry>
124               <entry>
125                 <para> Rebuilds the parent database from scratch. Otherwise, the current parent database is used.</para>
126               </entry>
127             </row>
128           </tbody>
129         </tgroup>
130       </informaltable>
131     </section>
132   </section>
133   <section xml:id="dbdoclet.l_getidentity">
134     <title><indexterm><primary>l_getidentity</primary></indexterm>
135 l_getidentity</title>
136     <para>The l_getidentity tool normally handles Lustre user/group mapping
137       upcall.</para>
138     <section remap="h5">
139       <title>Synopsis</title>
140       <screen>l_getidentity { $FSNAME-MDT{xxxx}| -d} {uid}</screen>
141     </section>
142     <section remap="h5">
143       <title>Description</title>
144       <para>The <literal>l_getidentity</literal> utility is called from the
145         MDS to map a numeric UID value into the list of supplementary group
146         values for that UID, and writes this into the
147         <literal>mdt.*.identity_info</literal> parameter file.  The list of
148         supplementary groups is cached in the kernel to avoid repeated
149         upcalls.  See <xref linkend="dbdoclet.identity_upcall"/> for more
150         details.</para>
151       <para>The <literal>l_getidentity</literal> utility can also be run
152         directly for debugging purposes to ensure that the UID mapping for a
153         particular user is configured correctly, by using the
154         <literal>-d</literal> argument instead of the MDT name.
155       </para>
156     </section>
157     <section remap="h5">
158       <title>Options</title>
159       <informaltable frame="all">
160         <tgroup cols="2">
161           <colspec colname="c1" colwidth="50*"/>
162           <colspec colname="c2" colwidth="50*"/>
163           <thead>
164             <row>
165               <entry>
166                 <para><emphasis role="bold">Option</emphasis></para>
167               </entry>
168               <entry>
169                 <para><emphasis role="bold">Description</emphasis></para>
170               </entry>
171             </row>
172           </thead>
173           <tbody>
174             <row>
175               <entry>
176                 <para>
177                   <literal>${FSNAME}-MDT{xxxx}</literal></para>
178               </entry>
179               <entry>
180                 <para> Metadata server target name</para>
181               </entry>
182             </row>
183             <row>
184               <entry>
185                 <para> <literal>uid</literal></para>
186               </entry>
187               <entry>
188                 <para> User identifier</para>
189               </entry>
190             </row>
191           </tbody>
192         </tgroup>
193       </informaltable>
194     </section>
195     <section remap="h5">
196       <title>Files</title>
197       <para>The l_getidentity files are located at:</para>
198       <screen>/proc/fs/lustre/mdt/${FSNAME}-MDT{xxxx}/identity_upcall</screen>
199     </section>
200   </section>
201   <section xml:id="dbdoclet.50438219_38274">
202     <title><indexterm><primary>lctl</primary></indexterm>
203 lctl</title>
204     <para>The lctl utility is used for root control and configuration. With lctl you can directly control Lustre via an ioctl interface, allowing various configuration, maintenance and debugging features to be accessed.</para>
205     <section remap="h5">
206       <title>Synopsis</title>
207       <screen>lctl [--device <replaceable>devno</replaceable>] <replaceable>command [args]</replaceable></screen>
208     </section>
209     <section remap="h5">
210       <title>Description</title>
211       <para>The lctl utility can be invoked in interactive mode by issuing the lctl command. After that, commands are issued as shown below. The most common lctl commands are:</para>
212       <screen>dl
213 dk
214 device
215 network <replaceable>up|down</replaceable>
216 list_nids
217 ping <replaceable>nid</replaceable>help
218 quit</screen>
219       <para>For a complete list of available commands, type <literal>help</literal> at the <literal>lctl</literal> prompt. To get basic help on command meaning and syntax, type <literal>help <replaceable>command</replaceable></literal>. Command completion is activated with the TAB key (depending on compile options), and command history is available via the up- and down-arrow keys.</para>
220       <para>For non-interactive use, use the second invocation, which runs the command after connecting to the device.</para>
221     </section>
222     <section remap="h5">
223       <title>Setting Parameters with lctl</title>
224       <para>Lustre parameters are not always accessible using the procfs interface, as it is platform-specific. As a solution, lctl {get,set}_param has been introduced as a platform-independent interface to the Lustre tunables. Avoid direct references to /proc/{fs,sys}/{lustre,lnet}. For future portability, use lctl {get,set}_param .</para>
225       <para>When the file system is running, use the <literal>lctl set_param</literal> command on the affected node(s) to <emphasis>temporarily</emphasis> set parameters (mapping to items in /proc/{fs,sys}/{lnet,lustre}). The <literal>lctl set_param</literal> command uses this syntax:</para>
226       <screen>lctl set_param [-n] [-P] [-d] <replaceable>obdtype.obdname.property</replaceable>=<replaceable>value</replaceable></screen>
227       <para>For example:</para>
228       <screen>mds# lctl set_param mdt.testfs-MDT0000.identity_upcall=NONE</screen>
229       <para condition='l25'>Use <literal>-P</literal> option to set parameters permanently. Option <literal>-d </literal>deletes permanent parameters. For example:
230               <screen>mgs# lctl set_param -P mdt.testfs-MDT0000.identity_upcall=NONE
231 mgs# lctl set_param -P -d mdt.testfs-MDT0000.identity_upcall</screen></para>
232       <para>Many permanent parameters can be set with <literal>lctl conf_param</literal>. In general, <literal>lctl conf_param</literal> can be used to specify any OBD device parameter settable in a /proc/fs/lustre file. The <literal>lctl conf_param</literal> command must be run on the MGS node, and uses this syntax:</para>
233       <screen><replaceable>obd|fsname</replaceable>.obdtype.property=<replaceable>value</replaceable>) </screen>
234       <para>For example:</para>
235       <screen>mgs# lctl conf_param testfs-MDT0000.mdt.identity_upcall=NONE
236 $ lctl conf_param testfs.llite.max_read_ahead_mb=16 </screen>
237       <caution>
238         <para>The <literal>lctl conf_param</literal> command <emphasis>permanently</emphasis> sets parameters in the file system configuration for all nodes of the specified type.</para>
239       </caution>
240       <para>To get current Lustre parameter settings, use the <literal>lctl get_param</literal> command on the desired node with the same parameter name as <literal>lctl set_param</literal>:</para>
241       <screen>lctl get_param [-n] <replaceable>obdtype.obdname.parameter</replaceable></screen>
242       <para>For example:</para>
243       <screen>mds# lctl get_param mdt.testfs-MDT0000.identity_upcall</screen>
244       <para>To list Lustre parameters that are available to set, use the <literal>lctl list_param</literal> command, with this syntax:</para>
245       <screen>lctl list_param [-R] [-F] <replaceable>obdtype.obdname.*</replaceable></screen>
246       <para>For example, to list all of the parameters on the MDT:</para>
247       <screen>oss# lctl list_param -RF mdt</screen>
248       <para>For more information on using lctl to set temporary and permanent parameters, see <xref linkend="dbdoclet.50438194_51490"/>.</para>
249       <para><emphasis role="bold">Network Configuration</emphasis></para>
250       <informaltable frame="all">
251         <tgroup cols="2">
252           <colspec colname="c1" colwidth="50*"/>
253           <colspec colname="c2" colwidth="50*"/>
254           <thead>
255             <row>
256               <entry>
257                 <para><emphasis role="bold">Option</emphasis></para>
258               </entry>
259               <entry>
260                 <para><emphasis role="bold">Description</emphasis></para>
261               </entry>
262             </row>
263           </thead>
264           <tbody>
265             <row>
266               <entry>
267                 <para> <literal>network up|down|tcp|elan</literal></para>
268               </entry>
269               <entry>
270                 <para> Starts or stops LNet, or selects a network type for other <literal>lctl</literal> LNet commands.</para>
271               </entry>
272             </row>
273             <row>
274               <entry>
275                 <para> <literal>list_nids</literal></para>
276               </entry>
277               <entry>
278                 <para> Prints all NIDs on the local node. LNet must be running.</para>
279               </entry>
280             </row>
281             <row>
282               <entry>
283                 <para> <literal>which_nid <replaceable>nidlist</replaceable></literal></para>
284               </entry>
285               <entry>
286                 <para> From a list of NIDs for a remote node, identifies the NID on which interface communication will occur.</para>
287               </entry>
288             </row>
289             <row>
290               <entry>
291                 <para> <literal>ping <replaceable>nid</replaceable></literal></para>
292               </entry>
293               <entry>
294                 <para> Checks LNet connectivity via an LNet ping. This uses the fabric appropriate to the specified NID.</para>
295               </entry>
296             </row>
297             <row>
298               <entry>
299                 <para> <literal>interface_list</literal></para>
300               </entry>
301               <entry>
302                 <para> Prints the network interface information for a given <emphasis>network</emphasis> type.</para>
303               </entry>
304             </row>
305             <row>
306               <entry>
307                 <para> <literal>peer_list</literal></para>
308               </entry>
309               <entry>
310                 <para> Prints the known peers for a given <emphasis>network</emphasis> type.</para>
311               </entry>
312             </row>
313             <row>
314               <entry>
315                 <para> <literal>conn_list</literal></para>
316               </entry>
317               <entry>
318                 <para> Prints all the connected remote NIDs for a given <emphasis>network</emphasis> type.</para>
319               </entry>
320             </row>
321             <row>
322               <entry>
323                 <para> <literal>active_tx</literal></para>
324               </entry>
325               <entry>
326                 <para> This command prints active transmits. It is only used for the Elan <emphasis>network</emphasis> type.</para>
327               </entry>
328             </row>
329             <row>
330               <entry>
331                 <para> <literal>route_list</literal></para>
332               </entry>
333               <entry>
334                 <para> Prints the complete routing table.</para>
335               </entry>
336             </row>
337           </tbody>
338         </tgroup>
339       </informaltable>
340       <para><emphasis role="bold">Device Selection</emphasis></para>
341       <informaltable frame="all">
342         <tgroup cols="3">
343           <colspec colname="c1" colwidth="33*"/>
344           <colspec colname="c2" colwidth="33*"/>
345           <colspec colname="c3" colwidth="33*"/>
346           <thead>
347             <row>
348               <entry>
349                 <para><emphasis role="bold">Option</emphasis></para>
350               </entry>
351               <entry>
352                 <para><emphasis role="bold">&#160;</emphasis></para>
353               </entry>
354               <entry>
355                 <para><emphasis role="bold">Description</emphasis></para>
356               </entry>
357             </row>
358           </thead>
359           <tbody>
360             <row>
361               <entry>
362                 <para> <literal>device <replaceable>devname</replaceable></literal></para>
363               </entry>
364               <entry>
365                 <para> &#160;</para>
366               </entry>
367               <entry>
368                 <para> This selects the specified OBD device. All other commands depend on the device being set.</para>
369               </entry>
370             </row>
371             <row>
372               <entry>
373                 <para> <literal>device_list</literal></para>
374               </entry>
375               <entry>
376                 <para> &#160;</para>
377               </entry>
378               <entry>
379                 <para> Shows the local Lustre OBDs, a/k/a <literal>dl</literal>.</para>
380               </entry>
381             </row>
382           </tbody>
383         </tgroup>
384       </informaltable>
385       <para><emphasis role="bold">Device Operations</emphasis></para>
386       <informaltable frame="all">
387         <tgroup cols="3">
388           <colspec colname="c1" colwidth="33*"/>
389           <colspec colname="c2" colwidth="33*"/>
390           <colspec colname="c3" colwidth="33*"/>
391           <thead>
392             <row>
393               <entry nameend="c2" namest="c1">
394                 <para><emphasis role="bold">Option</emphasis></para>
395               </entry>
396               <entry>
397                 <para><emphasis role="bold">Description</emphasis></para>
398               </entry>
399             </row>
400           </thead>
401           <tbody>
402             <row>
403               <entry nameend="c2" namest="c1">
404                 <para> <literal>list_param [-F|-R] <replaceable>parameter</replaceable> <replaceable>[parameter ...]</replaceable></literal></para>
405               </entry>
406               <entry>
407                 <para> Lists the Lustre or LNet parameter name.</para>
408                 <para>&#160;</para>
409               </entry>
410             </row>
411             <row>
412               <entry>
413                 <para> &#160;</para>
414               </entry>
415               <entry>
416                 <para> <literal>-F</literal></para>
417               </entry>
418               <entry>
419                 <para> Adds &apos;/&apos;, &apos;@&apos; or &apos;=&apos; for directories, symlinks and writeable files, respectively.</para>
420               </entry>
421             </row>
422             <row>
423               <entry>
424                 <para> &#160;</para>
425               </entry>
426               <entry>
427                 <para> <literal>-R</literal></para>
428               </entry>
429               <entry>
430                 <para> Recursively lists all parameters under the specified path. If <literal>param_path</literal> is unspecified, all parameters are shown.</para>
431               </entry>
432             </row>
433             <row>
434               <entry nameend="c2" namest="c1">
435                 <para> <literal>get_param [-n|-N|-F] <replaceable>parameter</replaceable> <replaceable>[parameter ...]</replaceable></literal></para>
436               </entry>
437               <entry>
438                 <para> Gets the value of a Lustre or LNet parameter from the specified path.</para>
439               </entry>
440             </row>
441             <row>
442               <entry>
443                 <para> &#160;</para>
444               </entry>
445               <entry>
446                 <para> <literal>-n</literal></para>
447               </entry>
448               <entry>
449                 <para> Prints only the parameter value and not the parameter name.</para>
450               </entry>
451             </row>
452             <row>
453               <entry>
454                 <para> &#160;</para>
455               </entry>
456               <entry>
457                 <para> <literal>-N</literal></para>
458               </entry>
459               <entry>
460                 <para> Prints only matched parameter names and not the values; especially useful when using patterns.</para>
461               </entry>
462             </row>
463             <row>
464               <entry>
465                 <para> &#160;</para>
466               </entry>
467               <entry>
468                 <para> <literal>-F</literal></para>
469               </entry>
470               <entry>
471                 <para> When <literal>-N</literal> is specified, adds &apos;/&apos;, &apos;@&apos; or &apos;=&apos; for directories, symlinks and writeable files, respectively.</para>
472               </entry>
473             </row>
474             <row>
475               <entry nameend="c2" namest="c1">
476                 <para> <literal>set_param [-n] <replaceable>parameter</replaceable>=<replaceable>value</replaceable></literal></para>
477               </entry>
478               <entry>
479                 <para> Sets the value of a Lustre or LNet parameter from the specified path.</para>
480               </entry>
481             </row>
482             <row>
483               <entry>
484                 <para> &#160;</para>
485               </entry>
486               <entry>
487                 <para> <literal>-n</literal></para>
488               </entry>
489               <entry>
490                 <para> Disables printing of the key name when printing values.</para>
491               </entry>
492             </row>
493             <row>
494               <entry nameend="c2" namest="c1">
495                 <para><literal>conf_param [-d] <replaceable>device|fsname</replaceable> <replaceable>parameter</replaceable>=<replaceable>value</replaceable></literal></para>
496               </entry>
497               <entry>
498                 <para> Sets a permanent configuration parameter for any device via the MGS. This command must be run on the MGS node.</para>
499                 <para>All writeable parameters under <literal>lctl list_param</literal> (e.g. <literal>lctl list_param -F osc.*.* | grep</literal> =) can be permanently set using <literal>lctl conf_param</literal>, but the format is slightly different. For <literal>conf_param</literal>, the device is specified first, then the obdtype. Wildcards are not supported. 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). For system-wide parameters, <replaceable>device</replaceable> is ignored.</para>
500                 <para>For more information on setting permanent parameters and <literal>lctl conf_param</literal> command examples, see <xref linkend="dbdoclet.50438194_64195"/> (Setting Permanent Parameters).</para>
501               </entry>
502             </row>
503             <row>
504               <entry>
505                 <para> &#160;</para>
506               </entry>
507               <entry>
508                 <para><literal>-d <replaceable>device|fsname</replaceable>.<replaceable>parameter</replaceable></literal></para>
509                 <para>&#160;</para>
510               </entry>
511               <entry>
512                 <para> Deletes a parameter setting (use the default value at the next restart). A null value for <replaceable>value</replaceable> also deletes the parameter setting.</para>
513               </entry>
514             </row>
515             <row>
516               <entry nameend="c2" namest="c1">
517                 <para> <literal>activate</literal></para>
518               </entry>
519               <entry>
520                 <para> Re-activates an import after the deactivate operation. This setting is only effective until the next restart (see <literal>conf_param</literal>).</para>
521               </entry>
522             </row>
523             <row>
524               <entry nameend="c2" namest="c1">
525                 <para> <literal>deactivate</literal></para>
526               </entry>
527               <entry>
528                 <para> Deactivates an import, in particular meaning do not assign new file stripes to an OSC. Running lctl deactivate on the MDS stops new objects from being allocated on the OST. Running lctl deactivate on Lustre clients causes them to return -EIO when accessing objects on the OST instead of waiting for recovery.</para>
529               </entry>
530             </row>
531             <row>
532               <entry nameend="c2" namest="c1">
533                 <para> <literal>abort_recovery</literal></para>
534               </entry>
535               <entry>
536                 <para> Aborts the recovery process on a re-starting MDT or OST.</para>
537               </entry>
538             </row>
539           </tbody>
540         </tgroup>
541       </informaltable>
542       <note>
543         <para>Lustre tunables are not always accessible using the procfs interface, as it is platform-specific. As a solution, <literal>lctl {get,set,list}_param</literal> has been introduced as a platform-independent interface to the Lustre tunables. Avoid direct references to <literal>/proc/{fs,sys}/{lustre,lnet}</literal>. For future portability, use <literal>lctl {get,set,list}_param</literal> instead.</para>
544       </note>
545       <para><emphasis role="bold">Virtual Block Device Operations</emphasis></para>
546       <para>Lustre can emulate a virtual block device upon a regular file. This emulation is needed when you are trying to set up a swap space via the file.</para>
547       <informaltable frame="all">
548         <tgroup cols="2">
549           <colspec colname="c1" colwidth="50*"/>
550           <colspec colname="c2" colwidth="50*"/>
551           <thead>
552             <row>
553               <entry>
554                 <para><emphasis role="bold">Option</emphasis></para>
555               </entry>
556               <entry>
557                 <para><emphasis role="bold">Description</emphasis></para>
558               </entry>
559             </row>
560           </thead>
561           <tbody>
562             <row>
563               <entry>
564                 <para><literal>blockdev_attach <replaceable>filename</replaceable> <replaceable>/dev/lloop_device</replaceable></literal></para>
565               </entry>
566               <entry>
567                 <para> Attaches a regular Lustre file to a block device. If the device node does not exist, <literal>lctl</literal> creates it. It is recommend that a device node is created by <literal>lctl</literal> since the emulator uses a dynamical major number.</para>
568               </entry>
569             </row>
570             <row>
571               <entry>
572                 <para><literal>blockdev_detach <replaceable>/dev/lloop_device</replaceable></literal></para>
573               </entry>
574               <entry>
575                 <para> Detaches the virtual block device.</para>
576               </entry>
577             </row>
578             <row>
579               <entry>
580                 <para><literal>blockdev_info <replaceable>/dev/lloop_device</replaceable></literal></para>
581               </entry>
582               <entry>
583                 <para> Provides information about the Lustre file attached to the device node.</para>
584               </entry>
585             </row>
586           </tbody>
587         </tgroup>
588       </informaltable>
589       <para><emphasis role="bold">Changelogs</emphasis></para>
590       <informaltable frame="all">
591         <tgroup cols="2">
592           <colspec colname="c1" colwidth="50*"/>
593           <colspec colname="c2" colwidth="50*"/>
594           <thead>
595             <row>
596               <entry>
597                 <para><emphasis role="bold">Option</emphasis></para>
598               </entry>
599               <entry>
600                 <para><emphasis role="bold">Description</emphasis></para>
601               </entry>
602             </row>
603           </thead>
604           <tbody>
605             <row>
606               <entry>
607                 <para> <literal>changelog_register</literal></para>
608               </entry>
609               <entry>
610                 <para> Registers a new changelog user for a particular device.
611                 Changelog entries are saved persistently on the MDT with each
612                 filesystem operation, and are only purged beyond all registered
613                 user&apos;s minimum set point (see
614                 <literal>lfs changelog_clear</literal>). This may cause the
615                 Changelog to consume a large amount of space, eventually
616                 filling the MDT, if a changelog user is registered but never
617                 consumes those records.</para>
618               </entry>
619             </row>
620             <row>
621               <entry>
622                 <para>changelog_deregister <replaceable>id</replaceable></para>
623               </entry>
624               <entry>
625                 <para> Unregisters an existing changelog user. If the
626                 user&apos;s &quot;clear&quot; record number is the minimum for
627                 the device, changelog records are purged until the next minimum.
628                 </para>
629               </entry>
630             </row>
631           </tbody>
632         </tgroup>
633       </informaltable>
634       <para><emphasis role="bold">Debug</emphasis></para>
635       <informaltable frame="all">
636         <tgroup cols="2">
637           <colspec colname="c1" colwidth="50*"/>
638           <colspec colname="c2" colwidth="50*"/>
639           <thead>
640             <row>
641               <entry>
642                 <para><emphasis role="bold">Option</emphasis></para>
643               </entry>
644               <entry>
645                 <para><emphasis role="bold">Description</emphasis></para>
646               </entry>
647             </row>
648           </thead>
649           <tbody>
650             <row>
651               <entry>
652                 <para> <literal>debug_daemon</literal></para>
653               </entry>
654               <entry>
655                 <para> Starts and stops the debug daemon, and controls the output filename and size.</para>
656               </entry>
657             </row>
658             <row>
659               <entry>
660                 <para> <literal>debug_kernel <replaceable>[file]</replaceable> [raw]</literal></para>
661               </entry>
662               <entry>
663                 <para> Dumps the kernel debug buffer to stdout or a file.</para>
664               </entry>
665             </row>
666             <row>
667               <entry>
668                 <para><literal>debug_file <replaceable>input_file</replaceable> <replaceable>[output_file]</replaceable></literal></para>
669               </entry>
670               <entry>
671                 <para> Converts the kernel-dumped debug log from binary to plain text format.</para>
672               </entry>
673             </row>
674             <row>
675               <entry>
676                 <para> <literal>clear</literal></para>
677               </entry>
678               <entry>
679                 <para> Clears the kernel debug buffer.</para>
680               </entry>
681             </row>
682             <row>
683               <entry>
684                 <para> <literal>mark <replaceable>text</replaceable></literal></para>
685               </entry>
686               <entry>
687                 <para> Inserts marker text in the kernel debug buffer.</para>
688               </entry>
689             </row>
690             <row>
691               <entry>
692                 <para> <literal>filter <replaceable>subsystem_id|debug_mask</replaceable></literal></para>
693               </entry>
694               <entry>
695                 <para> Filters kernel debug messages by subsystem or mask.</para>
696               </entry>
697             </row>
698             <row>
699               <entry>
700                 <para> <literal>show <replaceable>subsystem_id|debug_mask</replaceable></literal></para>
701               </entry>
702               <entry>
703                 <para> Shows specific types of messages.</para>
704               </entry>
705             </row>
706             <row>
707               <entry>
708                 <para> <literal>debug_list <replaceable>subsystems|types</replaceable></literal></para>
709               </entry>
710               <entry>
711                 <para> Lists all subsystem and debug types.</para>
712               </entry>
713             </row>
714             <row>
715               <entry>
716                 <para> <literal>modules <replaceable>path</replaceable></literal></para>
717               </entry>
718               <entry>
719                 <para> Provides GDB-friendly module information.</para>
720               </entry>
721             </row>
722           </tbody>
723         </tgroup>
724       </informaltable>
725     </section>
726     <section remap="h5">
727       <title>Options</title>
728       <para>Use the following options to invoke lctl.</para>
729       <informaltable frame="all">
730         <tgroup cols="2">
731           <colspec colname="c1" colwidth="50*"/>
732           <colspec colname="c2" colwidth="50*"/>
733           <thead>
734             <row>
735               <entry>
736                 <para><emphasis role="bold">Option</emphasis></para>
737               </entry>
738               <entry>
739                 <para><emphasis role="bold">Description</emphasis></para>
740               </entry>
741             </row>
742           </thead>
743           <tbody>
744             <row>
745               <entry>
746                 <para> <literal>--device</literal></para>
747               </entry>
748               <entry>
749                 <para> Device to be used for the operation (specified by name or number). See device_list.</para>
750               </entry>
751             </row>
752             <row>
753               <entry>
754                 <para> <literal>--ignore_errors | ignore_errors</literal></para>
755               </entry>
756               <entry>
757                 <para> Ignores errors during script processing.</para>
758               </entry>
759             </row>
760           </tbody>
761         </tgroup>
762       </informaltable>
763     </section>
764     <section remap="h5">
765       <title>Examples</title>
766       <para><literal>lctl</literal></para>
767       <screen>$ lctl
768 lctl &gt; dl 
769    0 UP mgc MGC192.168.0.20@tcp btbb24e3-7deb-2ffa-eab0-44dffe00f692 5 
770    1 UP ost OSS OSS_uuid 3 
771    2 UP obdfilter testfs-OST0000 testfs-OST0000_UUID 3 
772 lctl &gt; dk /tmp/log Debug log: 87 lines, 87 kept, 0 dropped. 
773 lctl &gt; quit</screen>
774     </section>
775     <section remap="h5">
776       <title>See Also</title>
777       <itemizedlist>
778         <listitem>
779           <para> <xref linkend="dbdoclet.50438219_75432"/> </para>
780         </listitem>
781         <listitem>
782           <para> <xref linkend="dbdoclet.50438219_12635"/> </para>
783         </listitem>
784         <listitem>
785           <para> <xref linkend="dbdoclet.50438219_38274"/> </para>
786         </listitem>
787         <listitem>
788           <para> <xref linkend="dbdoclet.50438206_94597"/> </para>
789         </listitem>
790       </itemizedlist>
791     </section>
792   </section>
793   <section xml:id="dbdoclet.50438219_58217">
794     <title><indexterm><primary>ll_decode_filter_fid</primary></indexterm>
795 ll_decode_filter_fid</title>
796     <para>The ll_decode_filter_fid utility displays the Lustre object ID and MDT parent FID.</para>
797     <section remap="h5">
798       <title>Synopsis</title>
799       <screen>ll_decode_filter_fid object_file [object_file ...]</screen>
800     </section>
801     <section remap="h5">
802       <title>Description</title>
803       <para>The ll_decode_filter_fid utility decodes and prints the Lustre OST object ID, MDT FID,
804         stripe index for the specified OST object(s), which is stored in the &quot;trusted.fid&quot;
805         attribute on each OST object. This is accessible to <literal>ll_decode_filter_fid</literal>
806         when the OST file system is mounted locally as type ldiskfs for maintenance.</para>
807       <para>The &quot;trusted.fid&quot; extended attribute is stored on each OST object when it is first modified (data written or attributes set), and is not accessed or modified by Lustre after that time.</para>
808       <para>The OST object ID (objid) is useful in case of OST directory corruption, though normally the ll_recover_lost_found_objs(8) utility is able to reconstruct the entire OST object directory hierarchy. The MDS FID can be useful to determine which MDS inode an OST object is (or was) used by. The stripe index can be used in conjunction with other OST objects to reconstruct the layout of a file even if the MDT inode was lost.</para>
809     </section>
810     <section remap="h5">
811       <title>Examples</title>
812       <screen>root@oss1# cd /mnt/ost/lost+found
813 root@oss1# ll_decode_filter_fid #12345[4,5,8]
814 #123454: objid=690670 seq=0 parent=[0x751c5:0xfce6e605:0x0]
815 #123455: objid=614725 seq=0 parent=[0x18d11:0xebba84eb:0x1]
816 #123458: objid=533088 seq=0 parent=[0x21417:0x19734d61:0x0]</screen>
817       <para>This shows that the three files in lost+found have decimal object IDs - 690670, 614725, and 533088, respectively. The object sequence number (formerly object group) is 0 for all current OST objects.</para>
818       <para>The MDT parent inode FIDs are hexadecimal numbers of the form sequence:oid:idx. Since the sequence number is below 0x100000000 in all these cases, the FIDs are in the legacy Inode and Generation In FID (IGIF) namespace and are mapped directly to the MDT inode = seq and generation = oid values; the MDT inodes are 0x751c5, 0x18d11, and 0x21417 respectively. For objects with MDT parent sequence numbers above 0x200000000, this indicates that the FID needs to be mapped via the MDT Object Index (OI) file on the MDT to determine the internal inode number.</para>
819       <para>The idx field shows the stripe number of this OST object in the Lustre RAID-0 striped file.</para>
820     </section>
821     <section remap="h5">
822       <title>See Also</title>
823       <para><xref linkend="dbdoclet.50438219_44971"/></para>
824     </section>
825   </section>
826   <section xml:id="dbdoclet.50438219_44971" condition='l28'>
827     <title><indexterm><primary>ll_recover_lost_found_objs</primary></indexterm>
828 ll_recover_lost_found_objs</title>
829     <para>The <literal>ll_recover_lost_found_objs</literal> utility was
830       used to help recover Lustre OST objects (file data) from the
831       <literal>lost+found</literal> directory of an OST and return them to
832       their correct locations based on information stored in the
833       <literal>trusted.fid</literal> extended attribute stored on every
834       OST object containing data.</para>
835     <note condition="l26"><para>This utility is not needed with Lustre 2.6
836       and later, and is removed in Lustre 2.8 since <literal>LFSCK</literal>
837       online scanning will automatically move objects from
838       <literal>lost+found</literal> to the proper place in the OST.</para>
839     </note>
840     <note condition='l25'>
841       <para>The <literal>ll_recover_lost_found_objs</literal> tool is not
842         strictly necessary to bring an OST back online, it just avoids losing
843         access to objects that were moved to the lost+found directory due to
844         directory corruption on the OST.</para>
845     </note>
846     <section remap="h5">
847       <title>Synopsis</title>
848       <screen>$ ll_recover_lost_found_objs [-hv] -d directory</screen>
849     </section>
850     <section remap="h5">
851       <title>Description</title>
852       <para>The first time Lustre modifies an object, it saves the MDS inode number and the objid as an extended attribute on the object, so in case of directory corruption of the OST, it is possible to recover the objects. Running e2fsck fixes the corrupted OST directory, but it puts all of the objects into a lost and found directory, where they are inaccessible to Lustre. Use the ll_recover_lost_found_objs utility to recover all (or at least most) objects from a lost and found directory and return them to the O/0/d* directories.</para>
853       <para>To use ll_recover_lost_found_objs, mount the file system locally (using the <literal>-t ldiskfs</literal>, or <literal>-t zfs</literal> command), run the utility and then unmount it again. The OST must not be mounted by Lustre when ll_recover_lost_found_objs is run.</para>
854     </section>
855     <section remap="h5">
856       <title>Options</title>
857       <informaltable frame="all">
858         <tgroup cols="2">
859           <colspec colname="c1" colwidth="50*"/>
860           <colspec colname="c2" colwidth="50*"/>
861           <thead>
862             <row>
863               <entry>
864                 <para><emphasis role="bold">Option</emphasis></para>
865               </entry>
866               <entry>
867                 <para><emphasis role="bold">Description</emphasis></para>
868               </entry>
869             </row>
870           </thead>
871           <tbody>
872             <row>
873               <entry>
874                 <para> <literal>-h</literal></para>
875               </entry>
876               <entry>
877                 <para> Prints a help message</para>
878               </entry>
879             </row>
880             <row>
881               <entry>
882                 <para> <literal>-v</literal></para>
883               </entry>
884               <entry>
885                 <para> Increases verbosity</para>
886               </entry>
887             </row>
888             <row>
889               <entry>
890                 <para> <literal>-d <replaceable>directory</replaceable></literal></para>
891               </entry>
892               <entry>
893                 <para> Sets the lost and found directory path</para>
894               </entry>
895             </row>
896           </tbody>
897         </tgroup>
898       </informaltable>
899     </section>
900     <section remap="h5">
901       <title>Example</title>
902       <screen>ll_recover_lost_found_objs -d /mnt/ost/lost+found </screen>
903     </section>
904   </section>
905   <section xml:id="dbdoclet.50438219_84890">
906     <title><indexterm><primary>llodbstat</primary></indexterm>
907 llobdstat</title>
908     <para>The llobdstat utility displays OST statistics.</para>
909     <section remap="h5">
910       <title>Synopsis</title>
911       <screen>llobdstat ost_name [interval]</screen>
912     </section>
913     <section remap="h5">
914       <title>Description</title>
915       <para>The llobdstat utility displays a line of OST statistics for the given ost_name every interval seconds. It should be run directly on an OSS node. Type <literal>CTRL-C</literal> to stop statistics printing.</para>
916     </section>
917     <section remap="h5">
918       <title>Example</title>
919       <screen># llobdstat liane-OST0002 1
920 /usr/bin/llobdstat on /proc/fs/lustre/obdfilter/liane-OST0002/stats
921 Processor counters run at 2800.189 MHz
922 Read: 1.21431e+07, Write: 9.93363e+08, create/destroy: 24/1499, stat: 34, p\
923 unch: 18
924 [NOTE: cx: create, dx: destroy, st: statfs, pu: punch ]
925 Timestamp Read-delta ReadRate Write-delta WriteRate
926 --------------------------------------------------------
927 1217026053 0.00MB 0.00MB/s 0.00MB 0.00MB/s
928 1217026054 0.00MB 0.00MB/s 0.00MB 0.00MB/s
929 1217026055 0.00MB 0.00MB/s 0.00MB 0.00MB/s
930 1217026056 0.00MB 0.00MB/s 0.00MB 0.00MB/s
931 1217026057 0.00MB 0.00MB/s 0.00MB 0.00MB/s
932 1217026058 0.00MB 0.00MB/s 0.00MB 0.00MB/s
933 1217026059 0.00MB 0.00MB/s 0.00MB 0.00MB/s st:1</screen>
934     </section>
935     <section remap="h5">
936       <title>Files</title>
937       <screen>/proc/fs/lustre/obdfilter/<replaceable>ostname</replaceable>/stats</screen>
938     </section>
939   </section>
940   <section xml:id="dbdoclet.50438219_90386">
941     <title><indexterm><primary>llog_reader</primary></indexterm>
942 llog_reader</title>
943     <para>The llog_reader utility translates a Lustre configuration log into human-readable form.</para>
944     <section remap="h5">
945       <title>Synopsis</title>
946       <screen>llog_reader filename</screen>
947     </section>
948     <section remap="h5">
949       <title>Description</title>
950       <para>The llog_reader utility parses the binary format of Lustre&apos;s on-disk configuration logs. Llog_reader can only read logs; use tunefs.lustre to write to them.</para>
951       <para>To examine a log file on a stopped Lustre server, mount its backing file system as ldiskfs or zfs, then use llog_reader to dump the log file&apos;s contents, for example:</para>
952       <screen>mount -t ldiskfs /dev/sda /mnt/mgs 
953 llog_reader /mnt/mgs/CONFIGS/tfs-client</screen>
954       <para>To examine the same log file on a running Lustre server, use the ldiskfs-enabled debugfs utility (called debug.ldiskfs on some distributions) to extract the file, for example:</para>
955       <screen>debugfs -c -R &apos;dump CONFIGS/tfs-client /tmp/tfs-client&apos; /dev/sda 
956 llog_reader /tmp/tfs-client</screen>
957       <caution>
958         <para>Although they are stored in the CONFIGS directory, mountdata files do not use the configuration log format and will confuse the llog_reader utility.</para>
959       </caution>
960     </section>
961     <section remap="h5">
962       <title>See Also</title>
963       <para><xref linkend="dbdoclet.50438219_39574"/></para>
964     </section>
965   </section>
966   <section xml:id="dbdoclet.50438219_23232">
967     <title><indexterm><primary>llstat</primary></indexterm>
968 llstat</title>
969     <para>The llstat utility displays Lustre statistics.</para>
970     <section remap="h5">
971       <title>Synopsis</title>
972       <screen>llstat [-c] [-g] [-i <replaceable>interval</replaceable>] <replaceable>stats_file
973 </replaceable></screen>
974     </section>
975     <section remap="h5">
976       <title>Description</title>
977       <para>The llstat utility displays statistics from any of the Lustre statistics files that share a common format and are updated at <literal>interval</literal> seconds. To stop statistics printing, use <literal>ctrl</literal>-<literal>c.</literal></para>
978     </section>
979     <section remap="h5">
980       <title>Options</title>
981       <informaltable frame="all">
982         <tgroup cols="2">
983           <colspec colname="c1" colwidth="50*"/>
984           <colspec colname="c2" colwidth="50*"/>
985           <thead>
986             <row>
987               <entry>
988                 <para><emphasis role="bold">Option</emphasis></para>
989               </entry>
990               <entry>
991                 <para><emphasis role="bold">Description</emphasis></para>
992               </entry>
993             </row>
994           </thead>
995           <tbody>
996             <row>
997               <entry>
998                 <para> <literal>-c</literal></para>
999               </entry>
1000               <entry>
1001                 <para> Clears the statistics file.</para>
1002               </entry>
1003             </row>
1004             <row>
1005               <entry>
1006                 <para> <literal>-i</literal></para>
1007               </entry>
1008               <entry>
1009                 <para> Specifies the polling period (in seconds).</para>
1010               </entry>
1011             </row>
1012             <row>
1013               <entry>
1014                 <para> <literal>-g</literal></para>
1015               </entry>
1016               <entry>
1017                 <para> Specifies graphable output format.</para>
1018               </entry>
1019             </row>
1020             <row>
1021               <entry>
1022                 <para> <literal>-h</literal></para>
1023               </entry>
1024               <entry>
1025                 <para> Displays help information.</para>
1026               </entry>
1027             </row>
1028             <row>
1029               <entry>
1030                 <para> <literal>stats_file</literal></para>
1031               </entry>
1032               <entry>
1033                 <para> Specifies either the full path to a statistics file or the shorthand reference, <literal>mds</literal> or <literal>ost</literal></para>
1034               </entry>
1035             </row>
1036           </tbody>
1037         </tgroup>
1038       </informaltable>
1039     </section>
1040     <section remap="h5">
1041       <title>Example</title>
1042       <para>To monitor /proc/fs/lustre/ost/OSS/ost/stats at 1 second intervals, run;</para>
1043       <screen>llstat -i 1 ost</screen>
1044     </section>
1045     <section remap="h5">
1046       <title>Files</title>
1047       <para>The llstat files are located at:</para>
1048       <screen>/proc/fs/lustre/mdt/MDS/*/stats
1049 /proc/fs/lustre/mdt/*/exports/*/stats
1050 /proc/fs/lustre/mdc/*/stats
1051 /proc/fs/lustre/ldlm/services/*/stats
1052 /proc/fs/lustre/ldlm/namespaces/*/pool/stats
1053 /proc/fs/lustre/mgs/MGS/exports/*/stats
1054 /proc/fs/lustre/ost/OSS/*/stats
1055 /proc/fs/lustre/osc/*/stats
1056 /proc/fs/lustre/obdfilter/*/exports/*/stats
1057 /proc/fs/lustre/obdfilter/*/stats
1058 /proc/fs/lustre/llite/*/stats
1059 </screen>
1060     </section>
1061   </section>
1062   <section xml:id="dbdoclet.50438219_23648">
1063     <title><indexterm><primary>llverdev</primary></indexterm>
1064 llverdev</title>
1065     <para>The llverdev verifies a block device is functioning properly over its full size.</para>
1066     <section remap="h5">
1067       <title>Synopsis</title>
1068       <screen>llverdev [-c <replaceable>chunksize</replaceable>] [-f] [-h] [-o <replaceable>offset</replaceable>] [-l] [-p] [-r] [-t <replaceable>timestamp</replaceable>] [-v] [-w] <replaceable>device</replaceable></screen>
1069     </section>
1070     <section remap="h5">
1071       <title>Description</title>
1072       <para>Sometimes kernel drivers or hardware devices have bugs that prevent them from accessing the full device size correctly, or possibly have bad sectors on disk or other problems which prevent proper data storage. There are often defects associated with major system boundaries such as 2^32 bytes, 2^31 sectors, 2^31 blocks, 2^32 blocks, etc.</para>
1073       <para>The llverdev utility writes and verifies a unique test pattern across the entire device to ensure that data is accessible after it was written, and that data written to one part of the disk is not overwriting data on another part of the disk.</para>
1074       <para>It is expected that llverdev will be run on large size devices (TB). It is always better to run llverdev in verbose mode, so that device testing can be easily restarted from the point where it was stopped.</para>
1075       <para>Running a full verification can be time-consuming for very large devices. We recommend starting with a partial verification to ensure that the device is minimally sane before investing in a full verification.</para>
1076     </section>
1077     <section remap="h5">
1078       <title>Options</title>
1079       <informaltable frame="all">
1080         <tgroup cols="3">
1081           <colspec colname="c1" colwidth="33*"/>
1082           <colspec colname="c2" colwidth="33*"/>
1083           <colspec colname="c3" colwidth="33*"/>
1084           <thead>
1085             <row>
1086               <entry>
1087                 <para><emphasis role="bold">Option</emphasis></para>
1088               </entry>
1089               <entry>
1090                 <para><emphasis role="bold">&#160;</emphasis></para>
1091               </entry>
1092               <entry>
1093                 <para><emphasis role="bold">Description</emphasis></para>
1094               </entry>
1095             </row>
1096           </thead>
1097           <tbody>
1098             <row>
1099               <entry nameend="c2" namest="c1">
1100                 <para> <literal>-c|--chunksize</literal></para>
1101               </entry>
1102               <entry>
1103                 <para> I/O chunk size in bytes (default value is 1048576).</para>
1104               </entry>
1105             </row>
1106             <row>
1107               <entry nameend="c2" namest="c1">
1108                 <para> <literal>-f|--force</literal></para>
1109               </entry>
1110               <entry>
1111                 <para> Forces the test to run without a confirmation that the device will be overwritten and all data will be permanently destroyed.</para>
1112               </entry>
1113             </row>
1114             <row>
1115               <entry nameend="c2" namest="c1">
1116                 <para> <literal>-h|--help</literal></para>
1117               </entry>
1118               <entry>
1119                 <para> Displays a brief help message.</para>
1120               </entry>
1121             </row>
1122             <row>
1123               <entry nameend="c2" namest="c1">
1124                 <para> <literal>-o <replaceable>offset</replaceable></literal></para>
1125               </entry>
1126               <entry>
1127                 <para> Offset (in kilobytes) of the start of the test (default value is 0).</para>
1128               </entry>
1129             </row>
1130             <row>
1131               <entry nameend="c2" namest="c1">
1132                 <para> <literal>-l|--long</literal></para>
1133               </entry>
1134               <entry>
1135                 <para> Runs a full check, writing and then reading and verifying every block on the disk.</para>
1136               </entry>
1137             </row>
1138             <row>
1139               <entry nameend="c2" namest="c1">
1140                 <para> <literal>-p|--partial</literal></para>
1141               </entry>
1142               <entry>
1143                 <para> Runs a partial check, only doing periodic checks across the device (1 GB steps).</para>
1144               </entry>
1145             </row>
1146             <row>
1147               <entry nameend="c2" namest="c1">
1148                 <para> <literal>-r|--read</literal></para>
1149               </entry>
1150               <entry>
1151                 <para> Runs the test in read (verify) mode only, after having previously run the test in <literal>-w</literal> mode.</para>
1152               </entry>
1153             </row>
1154             <row>
1155               <entry nameend="c2" namest="c1">
1156                 <para> <literal>-t <replaceable>timestamp</replaceable></literal></para>
1157               </entry>
1158               <entry>
1159                 <para> Sets the test start time as printed at the start of a previously-interrupted
1160                   test to ensure that validation data is the same across the entire file system
1161                   (default value is the current time()).</para>
1162               </entry>
1163             </row>
1164             <row>
1165               <entry nameend="c2" namest="c1">
1166                 <para> <literal>-v|--verbose</literal></para>
1167               </entry>
1168               <entry>
1169                 <para> Runs the test in verbose mode, listing each read and write operation.</para>
1170               </entry>
1171             </row>
1172             <row>
1173               <entry nameend="c2" namest="c1">
1174                 <para> <literal>-w|--write</literal></para>
1175               </entry>
1176               <entry>
1177                 <para> Runs the test in write (test-pattern) mode (default runs both read and write).</para>
1178               </entry>
1179             </row>
1180           </tbody>
1181         </tgroup>
1182       </informaltable>
1183     </section>
1184     <section remap="h5">
1185       <title>Examples</title>
1186       <para>Runs a partial device verification on /dev/sda:</para>
1187       <screen>llverdev -v -p /dev/sda 
1188 llverdev: permanently overwrite all data on /dev/sda (yes/no)? y 
1189 llverdev: /dev/sda is 4398046511104 bytes (4096.0 GB) in size 
1190 Timestamp: 1009839028 
1191 Current write offset: 4096 kB</screen>
1192       <para>Continues an interrupted verification at offset 4096kB from the start of the device, using the same timestamp as the previous run:</para>
1193       <screen>llverdev -f -v -p --offset=4096 --timestamp=1009839028 /dev/sda 
1194 llverdev: /dev/sda is 4398046511104 bytes (4096.0 GB) in size 
1195 Timestamp: 1009839028 
1196 write complete 
1197 read complete </screen>
1198     </section>
1199   </section>
1200   <section xml:id="dbdoclet.50438219_64286">
1201     <title><indexterm><primary>lshowmount</primary></indexterm>
1202 lshowmount</title>
1203     <para>The lshowmount utility shows Lustre exports.</para>
1204     <section remap="h5">
1205       <title>Synopsis</title>
1206       <screen>lshowmount [-ehlv]</screen>
1207     </section>
1208     <section remap="h5">
1209       <title>Description</title>
1210       <para>The lshowmount utility shows the hosts that have Lustre mounted to a server. This utility looks for exports from the MGS, MDS, and obdfilter.</para>
1211     </section>
1212     <section remap="h5">
1213       <title>Options</title>
1214       <informaltable frame="all">
1215         <tgroup cols="2">
1216           <colspec colname="c1" colwidth="50*"/>
1217           <colspec colname="c2" colwidth="50*"/>
1218           <thead>
1219             <row>
1220               <entry>
1221                 <para><emphasis role="bold">Option</emphasis></para>
1222               </entry>
1223               <entry>
1224                 <para><emphasis role="bold">Description</emphasis></para>
1225               </entry>
1226             </row>
1227           </thead>
1228           <tbody>
1229             <row>
1230               <entry>
1231                 <para> <literal>-e|--enumerate</literal></para>
1232               </entry>
1233               <entry>
1234                 <para> Causes lshowmount to list each client mounted on a separate line instead of trying to compress the list of clients into a hostrange string.</para>
1235               </entry>
1236             </row>
1237             <row>
1238               <entry>
1239                 <para> <literal>-h|--help</literal></para>
1240               </entry>
1241               <entry>
1242                 <para> Causes lshowmount to print out a usage message.</para>
1243               </entry>
1244             </row>
1245             <row>
1246               <entry>
1247                 <para> <literal>-l|--lookup</literal></para>
1248               </entry>
1249               <entry>
1250                 <para> Causes lshowmount to try to look up the hostname for NIDs that look like IP addresses.</para>
1251               </entry>
1252             </row>
1253             <row>
1254               <entry>
1255                 <para> <literal>-v|--verbose</literal></para>
1256               </entry>
1257               <entry>
1258                 <para> Causes lshowmount to output export information for each service instead of only displaying the aggregate information for all Lustre services on the server.</para>
1259               </entry>
1260             </row>
1261           </tbody>
1262         </tgroup>
1263       </informaltable>
1264     </section>
1265     <section remap="h5">
1266       <title>Files</title>
1267       <screen>/proc/fs/lustre/mgs/<replaceable>server</replaceable>/exports/<replaceable>uuid</replaceable>/nid
1268 /proc/fs/lustre/mds/<replaceable>server</replaceable>/exports/<replaceable>uuid</replaceable>/nid
1269 /proc/fs/lustre/obdfilter/<replaceable>server</replaceable>/exports/<replaceable>uuid</replaceable>/nid</screen>
1270     </section>
1271   </section>
1272   <section xml:id="dbdoclet.50438219_90218">
1273     <title><indexterm><primary>lst</primary></indexterm>
1274 lst</title>
1275     <para>The lst utility starts LNet self-test.</para>
1276     <section remap="h5">
1277       <title>Synopsis</title>
1278       <screen>lst</screen>
1279     </section>
1280     <section remap="h5">
1281       <title>Description</title>
1282       <para>LNet self-test helps site administrators confirm that Lustre Networking (LNet) has been properly installed and configured. The self-test also confirms that LNet and the network software and hardware underlying it are performing as expected.</para>
1283       <para>Each LNet self-test runs in the context of a session. A node can be associated with only one session at a time, to ensure that the session has exclusive use of the nodes on which it is running. A session is create, controlled and monitored from a single node; this is referred to as the self-test console.</para>
1284       <para>Any node may act as the self-test console. Nodes are named and allocated to a self-test session in groups. This allows all nodes in a group to be referenced by a single name.</para>
1285       <para>Test configurations are built by describing and running test batches. A test batch is a named collection of tests, with each test composed of a number of individual point-to-point tests running in parallel. These individual point-to-point tests are instantiated according to the test type, source group, target group and distribution specified when the test is added to the test batch.</para>
1286     </section>
1287     <section remap="h5">
1288       <title>Modules</title>
1289       <para>To run LNet self-test, load these modules: libcfs, lnet, lnet_selftest and any one of the klnds (ksocklnd, ko2iblnd...). To load all necessary modules, run modprobe lnet_selftest, which recursively loads the modules on which lnet_selftest depends.</para>
1290       <para>There are two types of nodes for LNet self-test: the console node and test nodes. Both node types require all previously-specified modules to be loaded. (The userspace test node does not require these modules).</para>
1291       <para>Test nodes can be in either kernel or in userspace. A console user can invite a kernel test node to join the test session by running lst add_group NID, but the user cannot actively add a userspace test node to the test session. However, the console user can passively accept a test node to the test session while the test node runs lst client to connect to the console.</para>
1292     </section>
1293     <section remap="h5">
1294       <title>Utilities</title>
1295       <para>LNet self-test includes two user utilities, lst and lstclient.</para>
1296       <para>lst is the user interface for the self-test console (run on the console node). It provides a list of commands to control the entire test system, such as create session, create test groups, etc.</para>
1297       <para>lstclient is the userspace self-test program which is linked with userspace LNDs and LNet. A user can invoke lstclient to join a self-test session:</para>
1298       <screen>lstclient -sesid CONSOLE_NID group NAME</screen>
1299     </section>
1300     <section remap="h5">
1301       <title>Example Script</title>
1302       <para>This is a sample LNet self-test script which simulates the traffic pattern of a set of Lustre servers on a TCP network, accessed by Lustre clients on an IB network (connected via LNet routers), with half the clients reading and half the clients writing.</para>
1303       <screen>#!/bin/bash
1304 export LST_SESSION=$$
1305 lst new_session read/write
1306 lst add_group servers 192.168.10.[8,10,12-16]@tcp
1307 lst add_group readers 192.168.1.[1-253/2]@o2ib
1308 lst add_group writers 192.168.1.[2-254/2]@o2ib
1309 lst add_batch bulk_rw
1310 lst add_test --batch bulk_rw --from readers --to servers     brw read check\
1311 =simple size=1M
1312 lst add_test --batch bulk_rw --from writers --to servers     brw write chec\
1313 k=full size=4K
1314 # start running
1315 lst run bulk_rw
1316 # display server stats for 30 seconds
1317 lst stat servers &amp; sleep 30; kill $!
1318 # tear down
1319 lst end_session </screen>
1320     </section>
1321   </section>
1322   <section xml:id="dbdoclet.50438219_54734">
1323     <title><indexterm><primary>lustre_rmmod.sh</primary></indexterm>
1324 lustre_rmmod.sh</title>
1325     <para>The lustre_rmmod.sh utility removes all Lustre and LNet modules (assuming no Lustre services are running). It is located in /usr/bin.</para>
1326     <note>
1327       <para>The lustre_rmmod.sh utility does not work if Lustre modules are being used or if you have manually run the lctl network up command.</para>
1328     </note>
1329   </section>
1330   <section xml:id="dbdoclet.50438219_63667">
1331     <title><indexterm><primary>lustre_rsync</primary></indexterm>
1332 lustre_rsync</title>
1333     <para>The lustre_rsync utility synchronizes (replicates) a Lustre file system to a target file system.</para>
1334     <section remap="h5">
1335       <title>Synopsis</title>
1336       <screen>lustre_rsync --source|-s <replaceable>src</replaceable> --target|-t <replaceable>tgt</replaceable> 
1337    --mdt|-m <replaceable>mdt</replaceable> [--user|-u <replaceable>userid</replaceable>]
1338    [--xattr|-x <replaceable>yes|no</replaceable>] [--verbose|-v]
1339    [--statuslog|-l <replaceable>log</replaceable>] [--dry-run] [--abort-on-err] 
1340  
1341 lustre_rsync --statuslog|-l <replaceable>log</replaceable>
1342  
1343 lustre_rsync --statuslog|-l <replaceable>log</replaceable> --source|-s <replaceable>source</replaceable>
1344    --target|-t <replaceable>tgt</replaceable> --mdt|-m <replaceable>mdt</replaceable></screen>
1345     </section>
1346     <section remap="h5">
1347       <title>Description</title>
1348       <para>The lustre_rsync utility is designed to synchronize (replicate) a Lustre file system (source) to another file system (target). The target can be a Lustre file system or any other type, and is a normal, usable file system. The synchronization operation is efficient and does not require directory walking, as lustre_rsync uses Lustre MDT changelogs to identify changes in the Lustre file system.</para>
1349       <para>Before using lustre_rsync:</para>
1350       <itemizedlist>
1351         <listitem>
1352           <para>A changelog user must be registered (see lctl (8) changelog_register)</para>
1353         </listitem>
1354       </itemizedlist>
1355       <para>- AND -</para>
1356       <itemizedlist>
1357         <listitem>
1358           <para>Verify that the Lustre file system (source) and the replica file system (target) are identical before the changelog user is registered. If the file systems are discrepant, use a utility, e.g. regular rsync (not lustre_rsync) to make them identical.</para>
1359         </listitem>
1360       </itemizedlist>
1361     </section>
1362     <section remap="h5">
1363       <title>Options</title>
1364       <informaltable frame="all">
1365         <tgroup cols="2">
1366           <colspec colname="c1" colwidth="50*"/>
1367           <colspec colname="c2" colwidth="50*"/>
1368           <thead>
1369             <row>
1370               <entry>
1371                 <para><emphasis role="bold">Option</emphasis></para>
1372               </entry>
1373               <entry>
1374                 <para><emphasis role="bold">Description</emphasis></para>
1375               </entry>
1376             </row>
1377           </thead>
1378           <tbody>
1379             <row>
1380               <entry>
1381                 <para> <literal>--source=<replaceable>src</replaceable></literal></para>
1382               </entry>
1383               <entry>
1384                 <para> The path to the root of the Lustre file system (source) which will be synchronized. This is a mandatory option if a valid status log created during a previous synchronization operation (--statuslog) is not specified.</para>
1385               </entry>
1386             </row>
1387             <row>
1388               <entry>
1389                 <para> <literal>--target=<replaceable>tgt</replaceable></literal></para>
1390               </entry>
1391               <entry>
1392                 <para> The path to the root where the source file system will be synchronized (target). This is a mandatory option if the status log created during a previous synchronization operation (--statuslog) is not specified. This option can be repeated if multiple synchronization targets are desired.</para>
1393               </entry>
1394             </row>
1395             <row>
1396               <entry>
1397                 <para> <literal>--mdt=<replaceable>mdt</replaceable></literal></para>
1398               </entry>
1399               <entry>
1400                 <para> The metadata device to be synchronized. A changelog user must be registered for this device. This is a mandatory option if a valid status log created during a previous synchronization operation (--statuslog) is not specified.</para>
1401               </entry>
1402             </row>
1403             <row>
1404               <entry>
1405                 <para> <literal>--user=<replaceable>userid</replaceable></literal></para>
1406               </entry>
1407               <entry>
1408                 <para> The changelog user ID for the specified MDT. To use lustre_rsync, the changelog user must be registered. For details, see the changelog_register parameter in the lctl man page. This is a mandatory option if a valid status log created during a previous synchronization operation (--statuslog) is not specified.</para>
1409               </entry>
1410             </row>
1411             <row>
1412               <entry>
1413                 <para> <literal>--statuslog=<replaceable>log</replaceable></literal></para>
1414               </entry>
1415               <entry>
1416                 <para> A log file to which synchronization status is saved. When lustre_rsync starts, the state of a previous replication is read from here. If the status log from a previous synchronization operation is specified, otherwise mandatory options like --source, --target and --mdt options may be skipped. By specifying options like --source, --target and/or --mdt in addition to the --statuslog option, parameters in the status log can be overridden. Command line options take precedence over options in the status log.</para>
1417               </entry>
1418             </row>
1419             <row>
1420               <entry>
1421                 <para> <literal>--xattr<replaceable>yes|no</replaceable></literal></para>
1422               </entry>
1423               <entry>
1424                 <para> Specifies whether extended attributes (xattrs) are synchronized or not. The default is to synchronize extended attributes.</para>
1425                 <para>NOTE: Disabling xattrs causes Lustre striping information not to be synchronized.</para>
1426               </entry>
1427             </row>
1428             <row>
1429               <entry>
1430                 <para> <literal>--verbose</literal></para>
1431               </entry>
1432               <entry>
1433                 <para> Produces a verbose output.</para>
1434               </entry>
1435             </row>
1436             <row>
1437               <entry>
1438                 <para> <literal>--dry-run</literal></para>
1439               </entry>
1440               <entry>
1441                 <para> Shows the output of lustre_rsync commands (copy, mkdir, etc.) on the target file system without actually executing them.</para>
1442               </entry>
1443             </row>
1444             <row>
1445               <entry>
1446                 <para> <literal>--abort-on-err</literal></para>
1447               </entry>
1448               <entry>
1449                 <para> Shows the output of lustre_rsync commands (copy, mkdir, etc.) on the target file system without actually executing them.</para>
1450               </entry>
1451             </row>
1452           </tbody>
1453         </tgroup>
1454       </informaltable>
1455     </section>
1456     <section remap="h5">
1457       <title>Examples</title>
1458       <para>Register a changelog user for an MDT (e.g., MDT lustre-MDT0000).</para>
1459       <screen>$ ssh 
1460 $ MDS lctl changelog_register \
1461            --device lustre-MDT0000 -n 
1462 cl1</screen>
1463       <para>Synchronize/replicate a Lustre file system (/mnt/lustre) to a target file system (/mnt/target).</para>
1464       <screen>$ lustre_rsync --source=/mnt/lustre --target=/mnt/target \ 
1465            --mdt=lustre-MDT0000 --user=cl1 \ 
1466            --statuslog replicate.log  --verbose 
1467 Lustre filesystem: lustre 
1468 MDT device: lustre-MDT0000 
1469 Source: /mnt/lustre 
1470 Target: /mnt/target 
1471 Statuslog: sync.log 
1472 Changelog registration: cl1 
1473 Starting changelog record: 0 
1474 Errors: 0 
1475 lustre_rsync took 1 seconds 
1476 Changelog records consumed: 22
1477 </screen>
1478       <para>After the file system undergoes changes, synchronize the changes with the target file system. Only the statuslog name needs to be specified, as it has all the parameters passed earlier.</para>
1479       <screen>$ lustre_rsync --statuslog replicate.log --verbose 
1480 Replicating Lustre filesystem: lustre 
1481 MDT device: lustre-MDT0000 
1482 Source: /mnt/lustre 
1483 Target: /mnt/target 
1484 Statuslog: replicate.log 
1485 Changelog registration: cl1 
1486 Starting changelog record: 22 
1487 Errors: 0 
1488 lustre_rsync took 2 seconds 
1489 Changelog records consumed: 42</screen>
1490       <para>Synchronize a Lustre file system (/mnt/lustre) to two target file systems (/mnt/target1 and /mnt/target2).</para>
1491       <screen>$ lustre_rsync --source=/mnt/lustre \ 
1492    --target=/mnt/target1 --target=/mnt/target2 \ 
1493    --mdt=lustre-MDT0000 --user=cl1 
1494    --statuslog replicate.log</screen>
1495     </section>
1496     <section remap="h5">
1497       <title>See Also</title>
1498       <para><xref linkend="dbdoclet.50438206_94597"/></para>
1499     </section>
1500   </section>
1501   <section xml:id="dbdoclet.50438219_75432">
1502     <title><indexterm><primary>mkfs.lustre</primary></indexterm>
1503 mkfs.lustre</title>
1504     <para>The <literal>mkfs.lustre</literal> utility formats a disk for a Lustre service.</para>
1505     <section remap="h5">
1506       <title>Synopsis</title>
1507       <screen>mkfs.lustre <replaceable>target_type</replaceable> [options] <replaceable>device</replaceable></screen>
1508       <para>where <replaceable>target_type</replaceable> is one of the following:</para>
1509       <informaltable frame="all">
1510         <tgroup cols="2">
1511           <colspec colname="c1" colwidth="50*"/>
1512           <colspec colname="c2" colwidth="50*"/>
1513           <thead>
1514             <row>
1515               <entry>
1516                 <para><emphasis role="bold">Option</emphasis></para>
1517               </entry>
1518               <entry>
1519                 <para><emphasis role="bold">Description</emphasis></para>
1520               </entry>
1521             </row>
1522           </thead>
1523           <tbody>
1524             <row>
1525               <entry>
1526                 <para> <literal>--ost</literal></para>
1527               </entry>
1528               <entry>
1529                 <para> Object storage target (OST)</para>
1530               </entry>
1531             </row>
1532             <row>
1533               <entry>
1534                 <para> <literal>--mdt</literal></para>
1535               </entry>
1536               <entry>
1537                 <para> Metadata storage target (MDT)</para>
1538               </entry>
1539             </row>
1540             <row>
1541               <entry>
1542                 <para> <literal>--network=<replaceable>net,...</replaceable></literal></para>
1543               </entry>
1544               <entry>
1545                 <para> Network(s) to which to restrict this OST/MDT. This option can be repeated as necessary.</para>
1546               </entry>
1547             </row>
1548             <row>
1549               <entry>
1550                 <para> <literal>--mgs</literal></para>
1551               </entry>
1552               <entry>
1553                 <para> Configuration management service (MGS), one per site. This service can be
1554                   combined with one <literal>--mdt</literal> service by specifying both
1555                   types.</para>
1556               </entry>
1557             </row>
1558           </tbody>
1559         </tgroup>
1560       </informaltable>
1561     </section>
1562     <section remap="h5">
1563       <title>Description</title>
1564       <para><literal>mkfs.lustre</literal> is used to format a disk device for use as part of a
1565         Lustre file system. After formatting, a disk can be mounted to start the Lustre service
1566         defined by this command.</para>
1567       <para>When the file system is created, parameters can simply be added as a
1568           <literal>--param</literal> option to the <literal>mkfs.lustre</literal> command. See <xref
1569           linkend="dbdoclet.50438194_17237"/>.</para>
1570       <informaltable frame="all">
1571         <tgroup cols="3">
1572           <colspec colname="c1" colwidth="1*"/>
1573           <colspec colname="c2" colwidth="1*"/>
1574           <colspec colname="c3" colwidth="3*"/>
1575           <thead>
1576             <row>
1577               <entry nameend="c2" namest="c1">
1578                 <para><emphasis role="bold">Option</emphasis></para>
1579               </entry>
1580               <entry>
1581                 <para><emphasis role="bold">Description</emphasis></para>
1582               </entry>
1583             </row>
1584           </thead>
1585           <tbody>
1586             <row>
1587               <entry nameend="c2" namest="c1">
1588                 <para> <literal>--backfstype=<replaceable>fstype</replaceable></literal></para>
1589               </entry>
1590               <entry>
1591                 <para> Forces a particular format for the backing file system such as ldiskfs (the default) or zfs.</para>
1592               </entry>
1593             </row>
1594             <row>
1595               <entry nameend="c2" namest="c1">
1596                 <para> <literal>--comment=<replaceable>comment</replaceable></literal></para>
1597               </entry>
1598               <entry>
1599                 <para> Sets a user comment about this disk, ignored by the Lustre software.</para>
1600               </entry>
1601             </row>
1602             <row>
1603               <entry nameend="c2" namest="c1">
1604                 <para> <literal>--device-size=<replaceable>#</replaceable>>KB</literal></para>
1605               </entry>
1606               <entry>
1607                 <para>Sets the device size for loop devices.</para>
1608               </entry>
1609             </row>
1610             <row>
1611               <entry nameend="c2" namest="c1">
1612                 <para> <literal>--dryrun</literal></para>
1613               </entry>
1614               <entry>
1615                 <para>Only prints what would be done; it does not affect the disk.</para>
1616               </entry>
1617             </row>
1618             <row>
1619               <entry nameend="c2" namest="c1"
1620                     ><literal>--servicenode=<replaceable>nid,...</replaceable></literal></entry>
1621               <entry>Sets the NID(s) of all service nodes, including primary and failover partner
1622                 service nodes. The <literal>--servicenode</literal> option cannot be used with
1623                   <literal>--failnode</literal> option. See <xref
1624                   xmlns:xlink="http://www.w3.org/1999/xlink" linkend="dbdoclet.50438188_92688"/> for
1625                 more details.</entry>
1626             </row>
1627             <row>
1628               <entry nameend="c2" namest="c1">
1629                 <para> <literal>--failnode=<replaceable>nid,...</replaceable></literal></para>
1630               </entry>
1631               <entry>
1632                 <para>Sets the NID(s) of a failover service node for a primary server for a target.
1633                   The <literal>--failnode</literal> option cannot be used with
1634                     <literal>--servicenode</literal> option. See <xref
1635                     xmlns:xlink="http://www.w3.org/1999/xlink" linkend="dbdoclet.50438188_92688"/>
1636                   for more details.<note>
1637                     <para>When the <literal>--failnode</literal> option is used, certain
1638                       restrictions apply (see <xref xmlns:xlink="http://www.w3.org/1999/xlink"
1639                         linkend="dbdoclet.50438188_92688"/>).</para>
1640                   </note></para>
1641               </entry>
1642             </row>
1643             <row>
1644               <entry nameend="c2" namest="c1">
1645                 <para> <literal>--fsname=<replaceable>filesystem_name</replaceable></literal></para>
1646               </entry>
1647               <entry>
1648                 <para> The Lustre file system of which this service/node will be a part. The default
1649                   file system name is <literal>lustre</literal>.</para>
1650                 <para>&#160;</para>
1651                 <note>
1652                   <para>The file system name is limited to 8 characters.</para>
1653                 </note>
1654               </entry>
1655             </row>
1656             <row>
1657               <entry nameend="c2" namest="c1">
1658                 <para>
1659                   <literal>--index=<replaceable>index_number</replaceable></literal></para>
1660               </entry>
1661               <entry>
1662                 <para>Specifies the OST or MDT number (0...N). This allows mapping between the OSS
1663                   and MDS node and the device on which the OST or MDT is located.</para>
1664               </entry>
1665             </row>
1666             <row>
1667               <entry nameend="c2" namest="c1">
1668                 <para> <literal>--mkfsoptions=<replaceable>opts</replaceable></literal></para>
1669               </entry>
1670               <entry>
1671                 <para>  Formats options for the backing file system. For example, ext3 options could be set here.</para>
1672               </entry>
1673             </row>
1674             <row>
1675               <entry nameend="c2" namest="c1">
1676                 <para> <literal>--mountfsoptions=<replaceable>opts</replaceable></literal></para>
1677               </entry>
1678               <entry>
1679                 <para>  Sets the mount options used when the backing file system is mounted.</para>
1680                 <warning><para>Unlike earlier versions of <literal>mkfs.lustre</literal>, this version completely replaces
1681                     the default mount options with those specified on the command line, and issues a
1682                     warning on stderr if any default mount options are omitted.</para></warning>
1683                 <para>The defaults for ldiskfs are:</para>
1684                 <para>MGS/MDT: <literal>errors=remount-ro,iopen_nopriv,user_xattr</literal></para>
1685                 <para>OST: <literal>errors=remount-ro,extents,mballoc</literal></para>
1686                 <para condition='l25'>OST: <literal>errors=remount-ro</literal></para>
1687                 <para>Use care when altering the default mount options.</para>
1688               </entry>
1689             </row>
1690             <row>
1691               <entry nameend="c2" namest="c1">
1692                 <para> <literal>--network=<replaceable>net,...</replaceable></literal></para>
1693                 <para>&#160;</para>
1694               </entry>
1695               <entry>
1696                 <para>  Network(s) to which to restrict this OST/MDT. This option can be repeated as necessary.</para>
1697               </entry>
1698             </row>
1699             <row>
1700               <entry nameend="c2" namest="c1">
1701                 <para> <literal>--mgsnode=<replaceable>nid,...</replaceable></literal></para>
1702               </entry>
1703               <entry>
1704                 <para> Sets the NIDs of the MGS node, required for all targets other than the MGS.</para>
1705               </entry>
1706             </row>
1707             <row>
1708               <entry nameend="c2" namest="c1">
1709                 <para> <literal>--param <replaceable>key</replaceable>=<replaceable>value</replaceable></literal></para>
1710               </entry>
1711               <entry>
1712                 <para> Sets the permanent parameter <replaceable>key</replaceable> to value <replaceable>value</replaceable>. This option can be repeated as necessary. Typical options might include:</para>
1713               </entry>
1714             </row>
1715             <row>
1716               <entry>
1717                 <para> &#160;</para>
1718               </entry>
1719               <entry>
1720                 <para> <literal>--param sys.timeout=40</literal>></para>
1721               </entry>
1722               <entry>
1723                 <para> System obd timeout.</para>
1724               </entry>
1725             </row>
1726             <row>
1727               <entry>
1728                 <para> &#160;</para>
1729               </entry>
1730               <entry>
1731                 <para> <literal>--param lov.stripesize=2M</literal></para>
1732               </entry>
1733               <entry>
1734                 <para> Default stripe size.</para>
1735               </entry>
1736             </row>
1737             <row>
1738               <entry>
1739                 <para> &#160;</para>
1740               </entry>
1741               <entry>
1742                 <para> <literal>param lov.stripecount=2</literal></para>
1743               </entry>
1744               <entry>
1745                 <para> Default stripe count.</para>
1746               </entry>
1747             </row>
1748             <row>
1749               <entry>
1750                 <para> &#160;</para>
1751               </entry>
1752               <entry>
1753                 <para> <literal>--param failover.mode=failout</literal></para>
1754               </entry>
1755               <entry>
1756                 <para> Returns errors instead of waiting for recovery.</para>
1757               </entry>
1758             </row>
1759             <row>
1760               <entry nameend="c2" namest="c1">
1761                 <para> <literal>--quiet</literal></para>
1762               </entry>
1763               <entry>
1764                 <para> Prints less information.</para>
1765               </entry>
1766             </row>
1767             <row>
1768               <entry nameend="c2" namest="c1">
1769                 <para> <literal>--reformat</literal></para>
1770               </entry>
1771               <entry>
1772                 <para> Reformats an existing Lustre disk.</para>
1773               </entry>
1774             </row>
1775             <row>
1776               <entry nameend="c2" namest="c1">
1777                 <para> <literal>--stripe-count-hint=stripes</literal></para>
1778               </entry>
1779               <entry>
1780                 <para> Used to optimize the MDT&apos;s inode size.</para>
1781               </entry>
1782             </row>
1783             <row>
1784               <entry nameend="c2" namest="c1">
1785                 <para> <literal>--verbose</literal></para>
1786               </entry>
1787               <entry>
1788                 <para> Prints more information.</para>
1789               </entry>
1790             </row>
1791           </tbody>
1792         </tgroup>
1793       </informaltable>
1794     </section>
1795     <section remap="h5">
1796       <title>Examples</title>
1797       <para>Creates a combined MGS and MDT for file system <literal>testfs</literal> on, e.g., node <literal>cfs21</literal>:</para>
1798       <screen>mkfs.lustre --fsname=testfs --mdt --mgs /dev/sda1</screen>
1799       <para>Creates an OST for file system <literal>testfs</literal> on any node (using the above
1800         MGS):</para>
1801       <screen>mkfs.lustre --fsname=testfs --mgsnode=cfs21@tcp0 --ost --index=0 /dev/sdb</screen>
1802       <para>Creates a standalone MGS on, e.g., node <literal>cfs22</literal>:</para>
1803       <screen>mkfs.lustre --mgs /dev/sda1</screen>
1804       <para>Creates an MDT for file system <literal>myfs1</literal> on any node (using the above MGS):</para>
1805       <screen>mkfs.lustre --fsname=myfs1 --mdt --mgsnode=cfs22@tcp0 /dev/sda2</screen>
1806     </section>
1807     <section remap="h5">
1808       <title>See Also</title>
1809       <itemizedlist>
1810         <listitem>
1811           <para><xref linkend="dbdoclet.50438219_75432"/>mkfs.lustre, </para>
1812         </listitem>
1813         <listitem>
1814           <para><xref linkend="dbdoclet.50438219_12635"/>mount.lustre, </para>
1815         </listitem>
1816         <listitem>
1817           <para><xref linkend="dbdoclet.50438206_94597"/>lfs</para>
1818         </listitem>
1819       </itemizedlist>
1820     </section>
1821   </section>
1822   <section xml:id="dbdoclet.50438219_12635">
1823     <title><indexterm><primary>mount.lustre</primary></indexterm>
1824 mount.lustre</title>
1825     <para>The mount.lustre utility starts a Lustre client or target service.</para>
1826     <section remap="h5">
1827       <title>Synopsis</title>
1828       <screen>mount -t lustre [-o options] device mountpoint
1829 </screen>
1830     </section>
1831     <section remap="h5">
1832       <title>Description</title>
1833       <para>The mount.lustre utility starts a Lustre client or target service. This program should not be called directly; rather, it is a helper program invoked through mount(8), as shown above. Use the umount command to stop Lustre clients and targets.</para>
1834       <para>There are two forms for the device option, depending on whether a client or a target service is started:</para>
1835       <informaltable frame="all">
1836         <tgroup cols="2">
1837           <colspec colname="c1" colwidth="50*"/>
1838           <colspec colname="c2" colwidth="50*"/>
1839           <thead>
1840             <row>
1841               <entry>
1842                 <para><emphasis role="bold">Option</emphasis></para>
1843               </entry>
1844               <entry>
1845                 <para><emphasis role="bold">Description</emphasis></para>
1846               </entry>
1847             </row>
1848           </thead>
1849           <tbody>
1850             <row>
1851               <entry>
1852                 <para> <literal><replaceable>mgsname</replaceable>:/<replaceable>fsname</replaceable><replaceable>[/subdir]</replaceable></literal></para>
1853               </entry>
1854               <entry>
1855               <para> Mounts the Lustre file system named
1856               <replaceable>fsname</replaceable> (optionally starting at
1857               subdirectory <replaceable>subdir</replaceable> within the
1858               filesystem, if specified) on the client at the directory
1859               <replaceable>mountpoint</replaceable>, by contacting the Lustre
1860               Management Service at <replaceable>mgsname</replaceable>.  The
1861               format for <replaceable>mgsname</replaceable> is defined below. A
1862               client file system can be listed in <literal>fstab(5)</literal>
1863               for automatic mount at boot time, is usable like any local file
1864               system, and provides a full POSIX standard-compliant interface.
1865               </para>
1866               </entry>
1867             </row>
1868             <row>
1869               <entry>
1870                 <para> <replaceable>block_device</replaceable></para>
1871               </entry>
1872               <entry>
1873                 <para> Starts the target service defined by the
1874                 <literal>mkfs.lustre(8)</literal> command on the physical disk
1875                 <replaceable>block_device</replaceable>.  The
1876                 <replaceable>block_device</replaceable> may be specified using
1877                 <literal>-L <replaceable>label</replaceable></literal> to find
1878                 the first block device with that label (e.g.
1879                 <literal>testfs-MDT0000</literal>), or by UUID using the
1880                 <literal>-U <replaceable>uuid</replaceable></literal> option.
1881                 Care should be taken if there is a device-level backup of the
1882                 target filesystem on the same node, which would have a
1883                 duplicate label and UUID if it has not been changed with
1884                 <literal>tune2fs(8)</literal> or similar.  The mounted target
1885                 service filesystem mounted at
1886                 <replaceable>mountpoint</replaceable> is only useful for
1887                 <literal>df(1)</literal> operations and appears in
1888                 <literal>/proc/mounts</literal> to show the device is in use.
1889                 </para>
1890               </entry>
1891             </row>
1892           </tbody>
1893         </tgroup>
1894       </informaltable>
1895     </section>
1896     <section remap="h5">
1897       <title>Options</title>
1898       <informaltable frame="all">
1899         <tgroup cols="2">
1900           <colspec colname="c1" colwidth="50*"/>
1901           <colspec colname="c2" colwidth="50*"/>
1902           <thead>
1903             <row>
1904               <entry>
1905                 <para><emphasis role="bold">Option</emphasis></para>
1906               </entry>
1907               <entry>
1908                 <para><emphasis role="bold">Description</emphasis></para>
1909               </entry>
1910             </row>
1911           </thead>
1912           <tbody>
1913             <row>
1914               <entry>
1915                 <para> <literal>mgsname=<replaceable>mgsnode</replaceable>[:<replaceable>mgsnode</replaceable>]</literal></para>
1916               </entry>
1917               <entry>
1918                 <para><replaceable>mgsname</replaceable> is a colon-separated
1919                 list of <replaceable>mgsnode</replaceable> names where the MGS
1920                 service may run.  Multiple <replaceable>mgsnode</replaceable>
1921                 values can be specified if the MGS service is configured for
1922                 HA failover and may be running on any one of the nodes.
1923                 </para>
1924               </entry>
1925             </row>
1926             <row>
1927               <entry>
1928                 <para> <literal>mgsnode=<replaceable>mgsnid</replaceable>[,<replaceable>mgsnid</replaceable>]</literal></para>
1929               </entry>
1930               <entry>
1931                 <para> Each <replaceable>mgsnode</replaceable> may specify a
1932                 comma-separated list of NIDs, if there are different LNet
1933                 interfaces for that <literal>mgsnode</literal>.
1934                 </para>
1935               </entry>
1936             </row>
1937             <row>
1938               <entry>
1939                 <para> <literal>mgssec=<replaceable>flavor</replaceable></literal></para>
1940               </entry>
1941               <entry>
1942                 <para>Specifies the encryption flavor for the initial network
1943                 RPC connection to the MGS.  Non-security flavors are:
1944                 <literal>null</literal>, <literal>plain</literal>, and
1945                 <literal>gssnull</literal>, which respectively disable, or
1946                 have no encryption or integrity features for testing purposes.
1947                 Kerberos flavors are: <literal>krb5n</literal>,
1948                 <literal>krb5a</literal>, <literal>krb5i</literal>, and
1949                 <literal>krb5p</literal>.  Shared-secret key flavors are:
1950                 <literal>skn</literal>, <literal>ska</literal>,
1951                 <literal>ski</literal>, and <literal>skpi</literal>, see the
1952                 <xref linkend="lustressk"/> for more details.  The security
1953                 flavor for client-to-server connections is specified in the
1954                 filesystem configuration that the client fetches from the MGS.
1955                 </para>
1956               </entry>
1957             </row>
1958             <row>
1959               <entry>
1960                 <para> <literal>skpath=<replaceable>file|directory</replaceable></literal></para>
1961               </entry>
1962               <entry>
1963                 <para condition='l29'>
1964                 Path to a file or directory with the keyfile(s) to load for
1965                 this mount command.  Keys are inserted into the
1966                 <literal>KEY_SPEC_SESSION_KEYRING</literal> keyring in the
1967                 kernel with a description containing
1968                 <literal>lustre:</literal> and a suffix which depends on
1969                 whether the context of the mount command is for an MGS,
1970                 MDT/OST, or client.
1971                 </para>
1972               </entry>
1973             </row>
1974             <row>
1975               <entry>
1976                 <para> <literal>exclude=<replaceable>ostlist</replaceable></literal></para>
1977               </entry>
1978               <entry>
1979                 <para>Starts a client or MDT with a colon-separated list of
1980                 known inactive OSTs that it will not try to connect to.</para>
1981               </entry>
1982             </row>
1983           </tbody>
1984         </tgroup>
1985       </informaltable>
1986       <para>In addition to the standard mount(8) options, Lustre understands
1987       the following client-specific options:</para>
1988       <informaltable frame="all">
1989         <tgroup cols="2">
1990           <colspec colname="c1" colwidth="50*"/>
1991           <colspec colname="c2" colwidth="50*"/>
1992           <thead>
1993             <row>
1994               <entry>
1995                 <para><emphasis role="bold">Option</emphasis></para>
1996               </entry>
1997               <entry>
1998                 <para><emphasis role="bold">Description</emphasis></para>
1999               </entry>
2000             </row>
2001           </thead>
2002           <tbody>
2003             <row>
2004               <entry>
2005                 <para><literal>always_ping</literal></para>
2006               </entry>
2007               <entry>
2008                 <para condition='l29'>The client will periodically ping the server when it is
2009                 idle, even if the server <literal>ptlrpc</literal> module
2010                 is configured with the <literal>suppress_pings</literal>
2011                 option.  This allows clients to reliably use the filesystem
2012                 even if they are not part of an external client health
2013                 monitoring mechanism.
2014                 </para>
2015               </entry>
2016             </row>
2017             <row>
2018               <entry>
2019                 <para> <literal>flock</literal></para>
2020               </entry>
2021               <entry>
2022                 <para>Enables advisory file locking support between
2023                 participating applications using the <literal>flock(2)</literal>
2024                 system call.  This causes file locking to be coherent across all
2025                 client nodes also using this mount option.  This is useful if
2026                 applications need coherent userspace file locking across
2027                 multiple client nodes, but also imposes communications overhead
2028                 in order to maintain locking consistency between client nodes.
2029                 </para>
2030               </entry>
2031             </row>
2032             <row>
2033               <entry>
2034                 <para> <literal>localflock</literal></para>
2035               </entry>
2036               <entry>
2037                 <para>Enables client-local <literal>flock(2)</literal> support,
2038                 using only client-local advisory file locking.  This is faster
2039                 than using the global <literal>flock</literal> option, and can
2040                 be used for applications that depend on functioning
2041                 <literal>flock(2)</literal> but run only on a single node.
2042                 It has minimal overhead using only the Linux kernel's locks.
2043                 </para>
2044               </entry>
2045             </row>
2046             <row>
2047               <entry>
2048                 <para> <literal>noflock</literal></para>
2049               </entry>
2050               <entry>
2051                 <para>Disables <literal>flock(2)</literal> support entirely,
2052                 and is the default option. Applications calling
2053                 <literal>flock(2)</literal> get an
2054                 <literal>ENOSYS</literal> error. It is up to the administrator
2055                 to choose either the <literal>localflock</literal> or
2056                 <literal>flock</literal> mount option based on their
2057                 requirements.  It is possible to mount clients with different
2058                 options, and only those mounted with <literal>flock</literal>
2059                 will be coherent amongst each other.
2060                 </para>
2061               </entry>
2062             </row>
2063             <row>
2064               <entry>
2065                 <para> <literal>lazystatfs</literal></para>
2066               </entry>
2067               <entry>
2068                 <para>Allows <literal>statfs(2)</literal> (as used by
2069                 <literal>df(1)</literal> and <literal>lfs-df(1)</literal>) to
2070                 return even if some OST or MDT is unresponsive or has been
2071                 temporarily or permanently disabled in the configuration.
2072                 This avoids blocking until all of the targets are available.
2073                 This is the default behavior since Lustre 2.9.0.
2074                 </para>
2075               </entry>
2076             </row>
2077             <row>
2078               <entry>
2079                 <para> <literal>nolazystatfs</literal></para>
2080               </entry>
2081               <entry>
2082                 <para>Requires that <literal>statfs(2)</literal> block until all
2083                 OSTs and MDTs are available and have returned space usage.
2084                 </para>
2085               </entry>
2086             </row>
2087             <row>
2088               <entry>
2089                 <para> <literal>user_xattr</literal></para>
2090               </entry>
2091               <entry>
2092                 <para>Enables get/set of extended attributes by regular users
2093                 in the <literal>user.*</literal> namespace. See the
2094                 <literal>attr(5)</literal> manual page for more details.
2095                 </para>
2096               </entry>
2097             </row>
2098             <row>
2099               <entry>
2100                 <para> <literal>nouser_xattr</literal></para>
2101               </entry>
2102               <entry>
2103                 <para>Disables use of extended attributes in the
2104                 <literal>user.*</literal> namespace by regular users. Root
2105                 and system processes can still use extended attributes.</para>
2106               </entry>
2107             </row>
2108             <row>
2109               <entry>
2110                 <para> <literal>verbose</literal></para>
2111               </entry>
2112               <entry>
2113                 <para> Enable extra mount/umount console messages.</para>
2114               </entry>
2115             </row>
2116             <row>
2117               <entry>
2118                 <para> <literal>noverbose</literal></para>
2119               </entry>
2120               <entry>
2121                 <para> Disable mount/umount console messages.</para>
2122               </entry>
2123             </row>
2124             <row>
2125               <entry>
2126                 <para> <literal>user_fid2path</literal></para>
2127               </entry>
2128               <entry>
2129                 <para>Enable FID-to-path translation by regular users.
2130                 </para>
2131                 <note><para>This option allows a potential security hole because
2132                   it allows regular users direct access to a file by its Lustre
2133                   File ID.  This bypasses POSIX path-based permission checks,
2134                   and could allow the user to access a file in a directory that
2135                   they do not have access to. Regular POSIX file mode and ACL
2136                   permission checks are still performed on the file itself, so
2137                   users cannot access a file to which they have no permission.
2138                 </para></note>
2139               </entry>
2140             </row>
2141             <row>
2142               <entry>
2143                 <para> <literal>nouser_fid2path</literal></para>
2144               </entry>
2145               <entry>
2146                 <para> Disable FID to path translation by
2147                 regular users. Root and processes with
2148                 <literal>CAP_DAC_READ_SEARCH</literal> can still perform FID
2149                 to path translation.
2150                 </para>
2151               </entry>
2152             </row>
2153           </tbody>
2154         </tgroup>
2155       </informaltable>
2156       <para>In addition to the standard mount options and backing disk type
2157       (e.g. ldiskfs) options, Lustre understands the following server-specific
2158       mount options:</para>
2159       <informaltable frame="all">
2160         <tgroup cols="2">
2161           <colspec colname="c1" colwidth="50*"/>
2162           <colspec colname="c2" colwidth="50*"/>
2163           <thead>
2164             <row>
2165               <entry>
2166                 <para><emphasis role="bold">Option</emphasis></para>
2167               </entry>
2168               <entry>
2169                 <para><emphasis role="bold">Description</emphasis></para>
2170               </entry>
2171             </row>
2172           </thead>
2173           <tbody>
2174             <row>
2175               <entry>
2176                 <para> <literal>nosvc</literal></para>
2177               </entry>
2178               <entry>
2179                 <para>  Starts the MGC (and MGS, if co-located) for a target service, not the actual service.</para>
2180               </entry>
2181             </row>
2182             <row>
2183               <entry>
2184                 <para> <literal>nomgs</literal></para>
2185               </entry>
2186               <entry>
2187                 <para>  Starts only the MDT (with a co-located MGS), without starting the MGS.</para>
2188               </entry>
2189             </row>
2190             <row>
2191               <entry>
2192                 <para> <literal>abort_recov</literal></para>
2193               </entry>
2194               <entry>
2195                 <para>  Aborts client recovery on that server and starts the target service immediately.</para>
2196               </entry>
2197             </row>
2198             <row>
2199               <entry>
2200                 <para> <literal>max_sectors_kb=<replaceable>KB</replaceable></literal></para>
2201               </entry>
2202               <entry>
2203                 <para condition='l210'>Sets the block device parameter
2204                 <literal>max_sectors_kb</literal> limit for the MDT or OST
2205                 target being mounted to specified maximum number of kilobytes.
2206                 When <literal>max_sectors_kb</literal> isn't specified as a
2207                 mount option, it will automatically be set to the
2208                 <literal>max_hw_sectors_kb</literal> (up to a maximum of 16MiB)
2209                 for that block device. This default behavior is suited for
2210                 most users. When <literal>max_sectors_kb=0</literal> is used,
2211                 the current value for this tunable will be kept.
2212                 </para>
2213               </entry>
2214             </row>
2215             <row>
2216               <entry>
2217                 <para> <literal>md_stripe_cache_size</literal></para>
2218               </entry>
2219               <entry>
2220                 <para>  Sets the stripe cache size for server-side disk with a striped RAID configuration.</para>
2221               </entry>
2222             </row>
2223             <row>
2224               <entry>
2225                 <para> <literal>recovery_time_soft=<replaceable>timeout</replaceable></literal></para>
2226               </entry>
2227               <entry>
2228                 <para>Allows <literal>timeout</literal> seconds for clients to
2229                 reconnect for recovery after a server crash. This timeout is
2230                 incrementally extended if it is about to expire and the server
2231                 is still handling new connections from recoverable clients.
2232                 </para>
2233                 <para>The default soft recovery timeout is 3 times the value
2234                 of the Lustre timeout parameter (see
2235                 <xref linkend="section_c24_nt5_dl"/>). The default Lustre
2236                 timeout is 100 seconds, which would make the soft recovery
2237                 timeout default to 300 seconds (5 minutes). The soft recovery
2238                 timeout is set at mount time and will not change if the Lustre
2239                 timeout is changed after mount time.
2240                 </para>
2241               </entry>
2242             </row>
2243             <row>
2244               <entry>
2245                 <para> <literal>recovery_time_hard=<replaceable>timeout</replaceable></literal></para>
2246               </entry>
2247               <entry>
2248                 <para>The server is allowed to incrementally extend its timeout
2249                 up to a hard maximum of <replaceable>timeout</replaceable>
2250                 seconds.
2251                 </para>
2252                 <para>The default hard recovery timeout is 9 times the value
2253                 of the Lustre timeout parameter (see
2254                 <xref linkend="section_c24_nt5_dl"/>). The default Lustre
2255                 timeout is 100 seconds, which would make the hard recovery
2256                 timeout default to 900 seconds (15 minutes). The hard recovery
2257                 timeout is set at mount time and will not change if the Lustre
2258                 timeout is changed after mount time.
2259                 </para>
2260               </entry>
2261             </row>
2262             <row>
2263               <entry>
2264                 <para> <literal>noscrub</literal></para>
2265               </entry>
2266               <entry>
2267                 <para>Typically the MDT will detect restoration from a
2268                 file-level backup during mount. This mount option prevents
2269                 the OI Scrub from starting automatically when the MDT is
2270                 mounted. Manually starting LFSCK after mounting provides finer
2271                 control over the starting conditions. This mount option also
2272                 prevents OI scrub from occurring automatically when OI
2273                 inconsistency is detected (see
2274                 <xref linkend="dbdoclet.lfsck_auto_scrub"/>).
2275                 </para>
2276               </entry>
2277             </row>
2278           </tbody>
2279         </tgroup>
2280       </informaltable>
2281     </section>
2282     <section remap="h5">
2283       <title>Examples</title>
2284       <para>Starts a client for the Lustre file system
2285       <replaceable>chipfs</replaceable> at mount point
2286       <replaceable>/mnt/chip</replaceable>. The Management Service is running on
2287       a node reachable from this client via the cfs21@tcp0 NID.</para>
2288       <screen>mount -t lustre cfs21@tcp0:/chipfs /mnt/chip</screen>
2289       <para condition='l29'>Similar to the above example, but mounting a
2290       subdirectory under <replaceable>chipfs</replaceable> as a fileset.
2291       <screen>mount -t lustre cfs21@tcp0:/chipfs/v1_0 /mnt/chipv1_0</screen>
2292       </para>
2293       <para>Starts the Lustre metadata target service from /dev/sda1 on mount point /mnt/test/mdt.</para>
2294       <screen>mount -t lustre /dev/sda1 /mnt/test/mdt</screen>
2295       <para>Starts the testfs-MDT0000 service (using the disk label), but aborts the recovery process.</para>
2296       <screen>mount -t lustre -L testfs-MDT0000 -o abort_recov /mnt/test/mdt</screen>
2297     </section>
2298     <section remap="h5">
2299       <title>See Also</title>
2300       <itemizedlist>
2301         <listitem>
2302           <para>  <xref linkend="dbdoclet.50438219_75432"/></para>
2303         </listitem>
2304         <listitem>
2305           <para>  <xref linkend="dbdoclet.50438219_39574"/></para>
2306         </listitem>
2307         <listitem>
2308           <para>  <xref linkend="dbdoclet.50438219_38274"/></para>
2309         </listitem>
2310         <listitem>
2311           <para>  <xref linkend="dbdoclet.50438206_94597"/></para>
2312         </listitem>
2313       </itemizedlist>
2314     </section>
2315   </section>
2316   <section xml:id="dbdoclet.50438219_82679">
2317     <title><indexterm><primary>plot-llstat</primary></indexterm>
2318 plot-llstat</title>
2319     <para>The plot-llstat utility plots Lustre statistics.</para>
2320     <section remap="h5">
2321       <title>Synopsis</title>
2322       <screen>plot-llstat results_filename [parameter_index]
2323 </screen>
2324     </section>
2325     <section remap="h5">
2326       <title>Description</title>
2327       <para>The plot-llstat utility generates a CSV file and instruction files for gnuplot from the output of llstat. Since llstat is generic in nature, plot-llstat is also a generic script. The value of parameter_index can be 1 for count per interval, 2 for count per second (default setting) or 3 for total count.</para>
2328       <para>The plot-llstat utility creates a .dat (CSV) file using the number of operations specified by the user. The number of operations equals the number of columns in the CSV file. The values in those columns are equal to the corresponding value of parameter_index in the output file.</para>
2329       <para>The plot-llstat utility also creates a .scr file that contains instructions for gnuplot to plot the graph. After generating the .dat and .scr files, the plot-llstat tool invokes gnuplot to display the graph.</para>
2330     </section>
2331     <section remap="h5">
2332       <title>Options</title>
2333       <informaltable frame="all">
2334         <tgroup cols="2">
2335           <colspec colname="c1" colwidth="50*"/>
2336           <colspec colname="c2" colwidth="50*"/>
2337           <thead>
2338             <row>
2339               <entry>
2340                 <para><emphasis role="bold">Option</emphasis></para>
2341               </entry>
2342               <entry>
2343                 <para><emphasis role="bold">Description</emphasis></para>
2344               </entry>
2345             </row>
2346           </thead>
2347           <tbody>
2348             <row>
2349               <entry>
2350                 <para> <literal>results_filename</literal></para>
2351               </entry>
2352               <entry>
2353                 <para> Output generated by plot-llstat</para>
2354               </entry>
2355             </row>
2356             <row>
2357               <entry>
2358                 <para> <literal>parameter_index</literal></para>
2359                 <para>&#160;</para>
2360               </entry>
2361               <entry>
2362                 <para> Value of parameter_index can be:</para>
2363                 <para> 1 - count per interval</para>
2364                 <para> 2 - count per second (default setting)</para>
2365                 <para> 3 - total count</para>
2366               </entry>
2367             </row>
2368           </tbody>
2369         </tgroup>
2370       </informaltable>
2371     </section>
2372     <section remap="h5">
2373       <title>Example</title>
2374       <screen>llstat -i2 -g -c lustre-OST0000 &gt; log
2375 plot-llstat log 3</screen>
2376     </section>
2377   </section>
2378   <section xml:id="dbdoclet.50438219_51496">
2379     <title><indexterm><primary>routerstat</primary></indexterm>
2380 routerstat</title>
2381     <para>The routerstat utility prints Lustre router statistics.</para>
2382     <section remap="h5">
2383       <title>Synopsis</title>
2384       <screen>routerstat [<replaceable>interval</replaceable>]</screen>
2385     </section>
2386     <section remap="h5">
2387       <title>Description</title>
2388       <para>The routerstat utility displays LNet router statistics. If no <literal><replaceable>interval</replaceable></literal> is specified, then statistics are sampled and printed only one time. Otherwise, statistics are sampled and printed at the specified <literal><replaceable>interval</replaceable></literal> (in seconds).</para>
2389     </section>
2390     <section remap="h5">
2391       <title>Output</title>
2392       <para>The routerstat output includes the following fields:</para>
2393       <informaltable frame="all">
2394         <tgroup cols="2">
2395           <colspec colname="c1" colwidth="50*"/>
2396           <colspec colname="c2" colwidth="50*"/>
2397           <thead>
2398             <row>
2399               <entry>
2400                 <para><emphasis role="bold">Output</emphasis></para>
2401               </entry>
2402               <entry>
2403                 <para><emphasis role="bold">Description</emphasis></para>
2404               </entry>
2405             </row>
2406           </thead>
2407           <tbody>
2408             <row>
2409               <entry>
2410                 <para> <literal>M</literal></para>
2411               </entry>
2412               <entry>
2413                 <para> Number of messages currently being processed by LNet (The maximum number of messages ever processed by LNet concurrently)</para>
2414               </entry>
2415             </row>
2416             <row>
2417               <entry>
2418                 <para> <literal>E</literal></para>
2419               </entry>
2420               <entry>
2421                 <para> Number of LNet errors</para>
2422               </entry>
2423             </row>
2424             <row>
2425               <entry>
2426                 <para> <literal>S</literal></para>
2427               </entry>
2428               <entry>
2429                 <para> Total size (length) of messages sent in bytes/ Number of messages sent</para>
2430               </entry>
2431             </row>
2432             <row>
2433               <entry>
2434                 <para> <literal>R</literal></para>
2435               </entry>
2436               <entry>
2437                 <para> Total size (length) of messages received in bytes/ Number of messages received</para>
2438               </entry>
2439             </row>
2440             <row>
2441               <entry>
2442                 <para> <literal>F</literal></para>
2443               </entry>
2444               <entry>
2445                 <para> Total size (length) of messages routed in bytes/ Number of messages routed</para>
2446               </entry>
2447             </row>
2448             <row>
2449               <entry>
2450                 <para> <literal>D</literal></para>
2451               </entry>
2452               <entry>
2453                 <para> Total size (length) of messages dropped in bytes/ Number of messages dropped</para>
2454               </entry>
2455             </row>
2456           </tbody>
2457         </tgroup>
2458       </informaltable>
2459       <para>When an <literal><replaceable>interval</replaceable></literal> is specified, additional lines of statistics are printed including the following fields:</para>
2460       <informaltable frame="all">
2461         <tgroup cols="2">
2462           <colspec colname="c1" colwidth="50*"/>
2463           <colspec colname="c2" colwidth="50*"/>
2464           <thead>
2465             <row>
2466               <entry>
2467                 <para><emphasis role="bold">Output</emphasis></para>
2468               </entry>
2469               <entry>
2470                 <para><emphasis role="bold">Description</emphasis></para>
2471               </entry>
2472             </row>
2473           </thead>
2474           <tbody>
2475             <row>
2476               <entry>
2477                 <para> <literal>M</literal></para>
2478               </entry>
2479               <entry>
2480                 <para> Number of messages currently being processed by LNet (The maximum number of messages ever processed by LNet concurrently)</para>
2481               </entry>
2482             </row>
2483             <row>
2484               <entry>
2485                 <para> <literal>E</literal></para>
2486               </entry>
2487               <entry>
2488                 <para> Number of LNet errors per second</para>
2489               </entry>
2490             </row>
2491             <row>
2492               <entry>
2493                 <para> <literal>S</literal></para>
2494               </entry>
2495               <entry>
2496                 <para> Rate of data sent in Mbytes per second/ Count of messages sent per second</para>
2497               </entry>
2498             </row>
2499             <row>
2500               <entry>
2501                 <para> <literal>R</literal></para>
2502               </entry>
2503               <entry>
2504                 <para> Rate of data received in Mbytes per second/ Count of messages received per second</para>
2505               </entry>
2506             </row>
2507             <row>
2508               <entry>
2509                 <para> <literal>F</literal></para>
2510               </entry>
2511               <entry>
2512                 <para> Rate of data routed in Mbytes per second/ Count of messages routed per second</para>
2513               </entry>
2514             </row>
2515             <row>
2516               <entry>
2517                 <para> <literal>D</literal></para>
2518               </entry>
2519               <entry>
2520                 <para> Rate of data dropped in Mbytes per second/ Count of messages dropped per second</para>
2521               </entry>
2522             </row>
2523           </tbody>
2524         </tgroup>
2525       </informaltable>
2526     </section>
2527     <section remap="h5">
2528       <title>Example</title>
2529       <screen># routerstat 1
2530 M 0(13) E 0 S 117379184/4250 R 878480/4356 F 0/0 D 0/0
2531 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2532 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2533 M   0( 13) E 0 S    8.00/     8 R    0.00/    16 F    0.00/     0 D 0.00/0
2534 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2535 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2536 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2537 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2538 M   0( 13) E 0 S    8.00/     8 R    0.00/    16 F    0.00/     0 D 0.00/0
2539 M   0( 13) E 0 S    7.00/     7 R    0.00/    14 F    0.00/     0 D 0.00/0
2540 ...</screen>
2541     </section>
2542     <section remap="h5">
2543       <title>Files</title>
2544       <para>The routerstat utility extracts statistics data from:</para>
2545       <screen>/proc/sys/lnet/stats</screen>
2546     </section>
2547   </section>
2548   <section xml:id="dbdoclet.50438219_39574">
2549     <title><indexterm><primary>tunefs.lustre</primary></indexterm>
2550 tunefs.lustre</title>
2551     <para>The tunefs.lustre utility modifies configuration information on a Lustre target disk.</para>
2552     <section remap="h5">
2553       <title>Synopsis</title>
2554       <screen>tunefs.lustre [options] <replaceable>/dev/device</replaceable></screen>
2555     </section>
2556     <section remap="h5">
2557       <title>Description</title>
2558       <para>tunefs.lustre is used to modify configuration information on a Lustre target disk. This does not reformat the disk or erase the target information, but modifying the configuration information can result in an unusable file system.</para>
2559       <caution>
2560         <para>Changes made here affect a file system only when the target is mounted the next time.</para>
2561       </caution>
2562       <para>With tunefs.lustre, parameters are &quot;additive&quot; -- new parameters are specified in addition to old parameters, they do not replace them. To erase all old tunefs.lustre parameters and just use newly-specified parameters, run:</para>
2563       <screen>$ tunefs.lustre --erase-params --param=<replaceable>new_parameters</replaceable> </screen>
2564       <para>The tunefs.lustre command can be used to set any parameter settable in a /proc/fs/lustre file and that has its own OBD device, so it can be specified as <replaceable>{obd|fsname}.obdtype.proc_file_name=value</replaceable>. For example:</para>
2565       <screen>$ tunefs.lustre --param mdt.identity_upcall=NONE /dev/sda1</screen>
2566     </section>
2567     <section remap="h5">
2568       <title>Options</title>
2569       <para>The tunefs.lustre options are listed and explained below.</para>
2570       <informaltable frame="all">
2571         <tgroup cols="2">
2572           <colspec colname="c1" colwidth="50*"/>
2573           <colspec colname="c2" colwidth="50*"/>
2574           <thead>
2575             <row>
2576               <entry>
2577                 <para><emphasis role="bold">Option</emphasis></para>
2578               </entry>
2579               <entry>
2580                 <para><emphasis role="bold">Description</emphasis></para>
2581               </entry>
2582             </row>
2583           </thead>
2584           <tbody>
2585             <row>
2586               <entry>
2587                 <para> <literal>--comment=<replaceable>comment</replaceable></literal></para>
2588               </entry>
2589               <entry>
2590                 <para> Sets a user comment about this disk, ignored by Lustre.</para>
2591               </entry>
2592             </row>
2593             <row>
2594               <entry>
2595                 <para> <literal>--dryrun</literal></para>
2596               </entry>
2597               <entry>
2598                 <para> Only prints what would be done; does not affect the disk.</para>
2599               </entry>
2600             </row>
2601             <row>
2602               <entry>
2603                 <para> <literal>--erase-params</literal></para>
2604               </entry>
2605               <entry>
2606                 <para> Removes all previous parameter information.</para>
2607               </entry>
2608             </row>
2609             <row>
2610               <entry>
2611                 <literal>--servicenode=<replaceable>nid,...</replaceable></literal></entry>
2612               <entry>Sets the NID(s) of all service nodes, including primary and failover partner
2613                 service nodes. The <literal>--servicenode</literal> option cannot be used with
2614                   <literal>--failnode</literal> option. See <xref
2615                   xmlns:xlink="http://www.w3.org/1999/xlink" linkend="dbdoclet.50438188_92688"/> for
2616                 more details.</entry>
2617             </row>
2618             <row>
2619               <entry>
2620                 <para> <literal>--failnode=<replaceable>nid,...</replaceable></literal></para>
2621               </entry>
2622               <entry>
2623                 <para>Sets the NID(s) of a failover service node for a primary server for a target.
2624                   The <literal>--failnode</literal> option cannot be used with
2625                     <literal>--servicenode</literal> option. See <xref
2626                     xmlns:xlink="http://www.w3.org/1999/xlink" linkend="dbdoclet.50438188_92688"/>
2627                   for more details.<note>
2628                     <para>When the <literal>--failnode</literal> option is used, certain
2629                       restrictions apply (see <xref xmlns:xlink="http://www.w3.org/1999/xlink"
2630                         linkend="dbdoclet.50438188_92688"/>).</para>
2631                   </note></para>
2632               </entry>
2633             </row>
2634             <row>
2635               <entry>
2636                 <para> <literal>--fsname=<replaceable>filesystem_name</replaceable></literal></para>
2637               </entry>
2638               <entry>
2639                 <para> The Lustre file system of which this service will be a part. The default file
2640                   system name is <literal>lustre</literal>.</para>
2641               </entry>
2642             </row>
2643             <row>
2644               <entry>
2645                 <para> <literal>--index=<replaceable>index</replaceable></literal></para>
2646               </entry>
2647               <entry>
2648                 <para> Forces a particular OST or MDT index.</para>
2649               </entry>
2650             </row>
2651             <row>
2652               <entry>
2653                 <para> <literal>--mountfsoptions=<replaceable>opts</replaceable></literal></para>
2654               </entry>
2655               <entry>
2656                 <para> Sets the mount options used when the backing file system is mounted.</para>
2657                 <warning><para> Unlike earlier versions of tunefs.lustre, this version completely replaces the existing mount options with those specified on the command line, and issues a warning on stderr if any default mount options are omitted.</para></warning>
2658                 <para>The defaults for ldiskfs are:</para>
2659                 <para>MGS/MDT: <literal>errors=remount-ro,iopen_nopriv,user_xattr</literal></para>
2660                 <para>OST: <literal>errors=remount-ro,extents,mballoc</literal></para>
2661                 <para condition='l25'>OST: <literal>errors=remount-ro</literal></para>
2662                 <para>Do not alter the default mount options unless you know what you are doing.</para>
2663               </entry>
2664             </row>
2665             <row>
2666               <entry>
2667                 <para> <literal>--network=<replaceable>net,...</replaceable></literal></para>
2668               </entry>
2669               <entry>
2670                 <para> Network(s) to which to restrict this OST/MDT. This option can be repeated as necessary.</para>
2671               </entry>
2672             </row>
2673             <row>
2674               <entry>
2675                 <para> <literal>--mgs</literal></para>
2676               </entry>
2677               <entry>
2678                 <para> Adds a configuration management service to this target.</para>
2679               </entry>
2680             </row>
2681             <row>
2682               <entry>
2683                 <para> <literal>--msgnode=<replaceable>nid,...</replaceable></literal></para>
2684               </entry>
2685               <entry>
2686                 <para> Sets the NID(s) of the MGS node; required for all targets other than the MGS.</para>
2687               </entry>
2688             </row>
2689             <row>
2690               <entry>
2691                 <para> <literal>--nomgs</literal></para>
2692               </entry>
2693               <entry>
2694                 <para> Removes a configuration management service to this target.</para>
2695               </entry>
2696             </row>
2697             <row>
2698               <entry>
2699                 <para> <literal>--quiet</literal></para>
2700               </entry>
2701               <entry>
2702                 <para> Prints less information.</para>
2703               </entry>
2704             </row>
2705             <row>
2706               <entry>
2707                 <para> <literal>--verbose</literal></para>
2708               </entry>
2709               <entry>
2710                 <para> Prints more information.</para>
2711               </entry>
2712             </row>
2713             <row>
2714               <entry>
2715                 <para> <literal>--writeconf</literal></para>
2716               </entry>
2717               <entry>
2718                 <para> Erases all configuration logs for the file system to which this MDT belongs,
2719                   and regenerates them. This is dangerous operation. All clients must be unmounted
2720                   and servers for this file system should be stopped. All targets (OSTs/MDTs) must
2721                   then be restarted to regenerate the logs. No clients should be started until all
2722                   targets have restarted.</para>
2723                 <para>The correct order of operations is:</para>
2724                 <orderedlist>
2725                   <listitem>
2726                     <para>Unmount all clients on the file system</para>
2727                   </listitem>
2728                   <listitem>
2729                     <para>Unmount the MDT and all OSTs on the file system</para>
2730                   </listitem>
2731                   <listitem>
2732                     <para>Run <literal>tunefs.lustre --writeconf
2733                         <replaceable>device</replaceable></literal> on every server</para>
2734                   </listitem>
2735                   <listitem>
2736                     <para>Mount the MDT and OSTs</para>
2737                   </listitem>
2738                   <listitem>
2739                     <para>Mount the clients</para>
2740                   </listitem>
2741                 </orderedlist>
2742               </entry>
2743             </row>
2744           </tbody>
2745         </tgroup>
2746       </informaltable>
2747     </section>
2748     <section remap="h5">
2749       <title>Examples</title>
2750       <para>Change the MGS&apos;s NID address. (This should be done on each target disk, since they should all contact the same MGS.)</para>
2751       <screen>tunefs.lustre --erase-param --mgsnode=<replaceable>new_nid</replaceable> --writeconf /dev/sda</screen>
2752       <para>Add a failover NID location for this target.</para>
2753       <screen>tunefs.lustre --param=&quot;failover.node=192.168.0.13@tcp0&quot; /dev/sda </screen>
2754     </section>
2755     <section remap="h5">
2756       <title>See Also</title>
2757       <itemizedlist>
2758         <listitem>
2759           <para><xref linkend="dbdoclet.50438219_75432"/></para>
2760         </listitem>
2761         <listitem>
2762           <para><xref linkend="dbdoclet.50438219_12635"/></para>
2763         </listitem>
2764         <listitem>
2765           <para><xref linkend="dbdoclet.50438219_38274"/></para>
2766         </listitem>
2767         <listitem>
2768           <para><xref linkend="dbdoclet.50438206_94597"/></para>
2769         </listitem>
2770       </itemizedlist>
2771     </section>
2772   </section>
2773   <section xml:id="dbdoclet.50438219_99928">
2774       <title><indexterm><primary>utilities</primary><secondary>system config</secondary></indexterm>
2775 Additional System Configuration Utilities</title>
2776     <para>This section describes additional system configuration utilities for Lustre.</para>
2777     <section remap="h3">
2778       <title><indexterm><primary>utilities</primary><secondary>application profiling</secondary></indexterm>
2779 Application Profiling Utilities</title>
2780       <para>The following utilities are located in /usr/bin.</para>
2781       <para><literal>lustre_req_history.sh</literal></para>
2782       <para>The lustre_req_history.sh utility (run from a client), assembles as much Lustre RPC request history as possible from the local node and from the servers that were contacted, providing a better picture of the coordinated network activity.</para>
2783     </section>
2784     <section remap="h3">
2785       <title>More /proc Statistics for Application Profiling</title>
2786       <para>The following utilities provide additional statistics.</para>
2787       <para><literal>vfs_ops_stats</literal></para>
2788       <para>The client vfs_ops_stats utility tracks Linux VFS operation calls into Lustre for a single PID, PPID, GID or everything.</para>
2789       <screen>/proc/fs/lustre/llite/*/vfs_ops_stats
2790 /proc/fs/lustre/llite/*/vfs_track_[pid|ppid|gid]
2791 </screen>
2792       <para><literal>extents_stats</literal></para>
2793       <para>The client extents_stats utility shows the size distribution of I/O calls from the client (cumulative and by process).</para>
2794       <screen>/proc/fs/lustre/llite/*/extents_stats, extents_stats_per_process
2795 </screen>
2796       <para><literal>offset_stats</literal></para>
2797       <para>The client offset_stats utility shows the read/write seek activity of a client by offsets and ranges.</para>
2798       <screen>/proc/fs/lustre/llite/*/offset_stats
2799 </screen>
2800       <para>Lustre includes per-client and improved MDT statistics:</para>
2801       <itemizedlist>
2802         <listitem>
2803           <para> Per-client statistics tracked on the servers</para>
2804         </listitem>
2805       </itemizedlist>
2806       <para>Each MDS and OSS now tracks LDLM and operations statistics for
2807       every connected client, for comparisons and simpler collection of
2808       distributed job statistics.</para>
2809       <screen>/proc/fs/lustre/mds|obdfilter/*/exports/
2810 </screen>
2811       <itemizedlist>
2812         <listitem>
2813           <para> Improved MDT statistics</para>
2814         </listitem>
2815       </itemizedlist>
2816       <para>More detailed MDT operations statistics are collected for better
2817       profiling.</para>
2818       <screen>/proc/fs/lustre/mdt/*/md_stats
2819 </screen>
2820     </section>
2821     <section remap="h3">
2822       <title><indexterm><primary>utilities</primary><secondary>debugging</secondary></indexterm><indexterm><primary>debug</primary><secondary>utilities</secondary></indexterm>
2823
2824 Testing / Debugging Utilities</title>
2825       <para>Lustre offers the following test and debugging utilities.</para>
2826       <section remap="h5">
2827         <title><indexterm><primary>lr_reader</primary></indexterm>
2828 lr_reader</title>
2829         <para>The lr_reader utility translates the content of the <literal>last_rcvd</literal> and <literal>reply_data</literal> files into human-readable form.</para>
2830         <para>The following utilities are part of the Lustre I/O kit. For more information, see <xref linkend="benchmarkingtests"/>.</para>
2831       </section>
2832       <section remap="h5">
2833         <title><indexterm>
2834             <primary>sgpdd-survey</primary>
2835           </indexterm> sgpdd-survey</title>
2836         <para>The <literal>sgpdd-survey</literal> utility tests &apos;bare metal&apos; performance,
2837           bypassing as much of the kernel as possible. The <literal>sgpdd-survey</literal> tool does
2838           not require Lustre, but it does require the sgp_dd package.</para>
2839         <caution>
2840           <para>The <literal>sgpdd-survey</literal> utility erases all data on the device.</para>
2841         </caution>
2842       </section>
2843       <section remap="h5">
2844         <title><indexterm>
2845             <primary>obdfilter-survey</primary>
2846           </indexterm>obdfilter-survey</title>
2847         <para>The <literal>obdfilter-survey</literal> utility is a shell script that tests
2848           performance of isolated OSTS, the network via echo clients, and an end-to-end test.</para>
2849       </section>
2850       <section remap="h5">
2851         <title><indexterm><primary>ior-survey</primary></indexterm>ior-survey</title>
2852         <para>The ior-survey utility is a script used to run the IOR benchmark. Lustre includes IOR version 2.8.6.</para>
2853       </section>
2854       <section remap="h5">
2855         <title><indexterm>
2856             <primary>ost-survey</primary>
2857           </indexterm>ost-survey</title>
2858         <para>The <literal>ost-survey</literal> utility is an OST performance survey that tests
2859           client-to-disk performance of the individual OSTs in a Lustre file system.</para>
2860       </section>
2861       <section remap="h5">
2862         <title><indexterm><primary>stats-collect</primary></indexterm>stats-collect</title>
2863         <para>The stats-collect utility contains scripts used to collect application profiling information from Lustre clients and servers.</para>
2864       </section>
2865     </section>
2866     <section remap="h3" condition='l29'>
2867       <title><indexterm><primary>fileset</primary></indexterm>Fileset Feature</title>
2868       <para> With the fileset feature, Lustre now provides subdirectory mount
2869       support.  Subdirectory mounts, also referred to as filesets, allow a
2870       client to mount a child directory of a parent filesystem, thereby limiting
2871       the filesystem namespace visibility on a specific client.  A common use
2872       case is for a client to use a subdirectory mount when there is a desire to
2873       limit the visibility of the entire filesystem namesapce to aid in the
2874       prevention of accidental file deletions outside of the subdirectory
2875       mount.</para>
2876       <para>It is important to note that invocation of the subdirectory mount is
2877       voluntary by the client and not does prevent access to files that are
2878       visible in multiple subdirectory mounts via hard links.  Furthermore, it
2879       does not prevent the client from subsequently mounting the whole file
2880       system without a subdirectory being specified.</para>
2881       <figure xml:id="understandinglustre.fig.fileset">
2882         <title>
2883         <indexterm>
2884           <primary>Lustre</primary>
2885           <secondary>fileset</secondary>
2886         </indexterm>Lustre fileset</title>
2887         <mediaobject>
2888           <imageobject>
2889             <imagedata scalefit="1" width="100%"
2890             fileref="./figures/fileset.png" />
2891           </imageobject>
2892           <textobject>
2893             <phrase>Lustre file system fileset feature</phrase>
2894           </textobject>
2895         </mediaobject>
2896       </figure>
2897       <section remap="h4">
2898         <title>Examples</title>
2899         <para>The following example will mount the
2900         <literal>chipfs</literal> filesystem on client1 and create a
2901         subdirectory <literal>v1_1</literal> within that filesystem.  Client2
2902         will then mount only the <literal>v1_1</literal> subdirectory as a
2903         fileset, thereby limiting access to anything else in the
2904         <literal>chipfs</literal> filesystem from client2.</para>
2905         <screen>client1# mount -t lustre mgs@tcp:/chipfs /mnt/chip
2906 client1# mkdir /mnt/chip/v1_1</screen>
2907         <screen>client2# mount -t lustre mgs@tcp:/chipfs/v1_1 /mnt/chipv1_1</screen>
2908     <para>You can check the created mounts in /etc/mtab. It should look like
2909     the following:</para>
2910     <screen><replaceable>client1</replaceable>
2911 mds@tcp0:/chipfs/ /mnt/chip lustre rw         0       0
2912 </screen><screen>
2913 <replaceable>client2</replaceable>
2914 mds@tcp0:/chipfs/v1_1 /mnt/chipv1_1 lustre rw         0       0</screen>
2915         <para>Create a directory under the /mnt/chip mount, and get its FID</para>
2916     <screen>client1# mkdir /mnt/chip/v1_2
2917 client1# lfs path2fid /mnt/chip/v1_2
2918 [0x200000400:0x2:0x0]
2919 </screen>
2920         <para>If you try resolve the FID of the <literal>/mnt/chip/v1_2</literal>
2921     path (as created in the example above) on client2, an error will be returned
2922     as the FID can not be resolved on client2 since it is not part of the
2923     mounted fileset on that client.  Recall that the fileset on client2 mounted
2924     the <literal>v1_1</literal> subdirectory beneath the top level
2925     <literal>chipfs</literal> filesystem.
2926     </para>
2927     <screen>client2# lfs fid2path /mnt/chip/v1_2 [0x200000400:0x2:0x0]
2928 fid2path: error on FID [0x200000400:0x2:0x0]: No such file or directory</screen>
2929     <para>Subdirectory mounts do not have the <literal>.lustre</literal>
2930     pseudo directory, which prevents clients from opening or accessing files
2931     only by FID.</para>
2932     <screen>client1# ls /mnt/chipfs/.lustre
2933         fid  lost+found</screen>
2934     <screen>client2# ls /mnt/chipv1_1/.lustre
2935         ls: cannot access /mnt/chipv1_1/.lustre: No such file or directory
2936     </screen>
2937       </section>
2938     </section>
2939   </section>
2940 </chapter>