+ <section remap="h5">
+ <title>Options</title>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">mdtname</emphasis></para>
+ </entry>
+ <entry>
+ <para> Metadata server target name</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">uid</emphasis></para>
+ </entry>
+ <entry>
+ <para> User identifier</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ <section remap="h5">
+ <title>Files</title>
+ <para>The l_getidentity files are located at:</para>
+ <screen>/proc/fs/lustre/mdt/${FSNAME}-MDT{xxxx}/identity_upcall</screen>
+ </section>
+ </section>
+ <section xml:id="dbdoclet.50438219_38274">
+ <title><indexterm><primary>lctl</primary></indexterm>
+lctl</title>
+ <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>
+ <section remap="h5">
+ <title>Synopsis</title>
+ <screen>lctl
+lctl --device <devno> <command [args]></screen>
+ </section>
+ <section remap="h5">
+ <title>Description</title>
+ <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>
+ <screen>dl
+dk
+device
+network <<emphasis>up/down</emphasis>>
+list_nids
+ping <emphasis>nid</emphasis>help
+quit</screen>
+ <para>For a complete list of available commands, type help at the lctl prompt. To get basic help on command meaning and syntax, type help<emphasis>command</emphasis>. Command completion is activated with the TAB key, and command history is available via the up- and down-arrow keys.</para>
+ <para>For non-interactive use, use the second invocation, which runs the command after connecting to the device.</para>
+ </section>
+ <section remap="h5">
+ <title>Setting Parameters with lctl</title>
+ <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>
+ <para>When the file system is running, use the lctl set_param command to set temporary parameters (mapping to items in /proc/{fs,sys}/{lnet,lustre}). The lctl set_param command uses this syntax:</para>
+ <screen>lctl set_param [-n] <obdtype>.<obdname>.<proc_file_name>=<value></screen>
+ <para>For example:</para>
+ <screen>$ lctl set_param ldlm.namespaces.*osc*.lru_size=$((NR_CPU*100))</screen>
+ <para>Many permanent parameters can be set with lctl conf_param. In general, lctl conf_param can be used to specify any parameter settable in a /proc/fs/lustre file, with its own OBD device. The lctl conf_param command uses this syntax:</para>
+ <screen><obd|fsname>.<obdtype>.<proc_file_name>=<value>) </screen>
+ <para>For example:</para>
+ <screen>$ lctl conf_param testfs-MDT0000.mdt.group_upcall=NONE
+$ lctl conf_param testfs.llite.max_read_ahead_mb=16 </screen>
+ <caution>
+ <para>The lctlconf_param command permanently sets parameters in the file system configuration.</para>
+ </caution>
+ <para>To get current Lustre parameter settings, use the lctl get_param command with this syntax:</para>
+ <screen>lctl get_param [-n] <obdtype>.<obdname>.<proc_file_name></screen>
+ <para>For example:</para>
+ <screen>$ lctl get_param -n ost.*.ost_io.timeouts </screen>
+ <para>To list Lustre parameters that are available to set, use the lctl list_param command, with this syntax:</para>
+ <screen>lctl list_param [-n] <obdtype>.<obdname></screen>
+ <para>For example:</para>
+ <screen>$ lctl list_param obdfilter.lustre-OST0000</screen>
+ <para>For more information on using lctl to set temporary and permanent parameters, see <xref linkend="dbdoclet.50438194_51490"/> (Setting Parameters with lctl).</para>
+ <para><emphasis role="bold">Network Configuration</emphasis></para>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">network</emphasis> <<emphasis>up/down</emphasis>>|<<emphasis>tcp/elan/myrinet</emphasis>></para>
+ </entry>
+ <entry>
+ <para> Starts or stops LNET, or selects a network type for other <emphasis role="bold">lctl</emphasis> LNET commands.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">list_nids</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints all NIDs on the local node. LNET must be running.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">which_nid</emphasis> <<emphasis>nidlist</emphasis>></para>
+ </entry>
+ <entry>
+ <para> From a list of NIDs for a remote node, identifies the NID on which interface communication will occur.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">ping</emphasis> <<emphasis>nid</emphasis>></para>
+ </entry>
+ <entry>
+ <para> Checks LNET connectivity via an LNET ping. This uses the fabric appropriate to the specified NID.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">interface_list</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints the network interface information for a given <emphasis role="bold">network</emphasis> type.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">peer_list</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints the known peers for a given <emphasis role="bold">network</emphasis> type.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">conn_list</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints all the connected remote NIDs for a given <emphasis role="bold">network</emphasis> type.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">active_tx</emphasis></para>
+ </entry>
+ <entry>
+ <para> This command prints active transmits. It is only used for the Elan <emphasis role="bold">network</emphasis> type.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">route_list</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints the complete routing table.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para><emphasis role="bold">Device Selection</emphasis></para>
+ <informaltable frame="all">
+ <tgroup cols="3">
+ <colspec colname="c1" colwidth="33*"/>
+ <colspec colname="c2" colwidth="33*"/>
+ <colspec colname="c3" colwidth="33*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold"> </emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">device</emphasis> <<emphasis>devname</emphasis>></para>
+ </entry>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> This selects the specified OBD device. All other commands depend on the device being set.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">device_list</emphasis></para>
+ </entry>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> Shows the local Lustre OBDs, a/k/a <emphasis role="bold">dl</emphasis>.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para><emphasis role="bold">Device Operations</emphasis></para>
+ <informaltable frame="all">
+ <tgroup cols="3">
+ <colspec colname="c1" colwidth="33*"/>
+ <colspec colname="c2" colwidth="33*"/>
+ <colspec colname="c3" colwidth="33*"/>
+ <thead>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">list_param</emphasis><emphasis>[-F|-R]</emphasis> <<emphasis>param_path ...</emphasis>></para>
+ </entry>
+ <entry>
+ <para> Lists the Lustre or LNET parameter name.</para>
+ <para> </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> -<emphasis role="bold">F</emphasis></para>
+ </entry>
+ <entry>
+ <para> Adds '/', '@' or '=' for directories, symlinks and writeable files, respectively.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> -<emphasis role="bold">R</emphasis></para>
+ </entry>
+ <entry>
+ <para> Recursively lists all parameters under the specified path. If <emphasis>param_path</emphasis> is unspecified, all parameters are shown.</para>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">get_param</emphasis><emphasis>[-n|-N|-F]</emphasis> <<emphasis>param_path ...</emphasis>></para>
+ </entry>
+ <entry>
+ <para> Gets the value of a Lustre or LNET parameter from the specified path.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> <emphasis role="bold">-n</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints only the parameter value and not the parameter name.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> <emphasis role="bold">-N</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints only matched parameter names and not the values; especially useful when using patterns.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> <emphasis role="bold">-F</emphasis></para>
+ </entry>
+ <entry>
+ <para> When <emphasis role="bold">-N</emphasis> is specified, adds '/', '@' or '=' for directories, symlinks and writeable files, respectively.</para>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">set_param</emphasis><emphasis>[-n]</emphasis><emphasis><param_path=value...></emphasis></para>
+ </entry>
+ <entry>
+ <para> Sets the value of a Lustre or LNET parameter from the specified path.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> <emphasis role="bold">-n</emphasis></para>
+ </entry>
+ <entry>
+ <para> Disables printing of the key name when printing values.</para>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">conf_param</emphasis><emphasis>[-d] <device|fsname>.<parameter>=<value></emphasis></para>
+ </entry>
+ <entry>
+ <para> Sets a permanent configuration parameter for any device via the MGS. This command must be run on the MGS node.</para>
+ <para>All writeable parameters under <emphasis role="bold">lctl list_param</emphasis> (e.g. <emphasis>lctl list_param -F osc.*.* | grep</emphasis> =) can be permanently set using <emphasis role="bold">lctl conf_param</emphasis>, but the format is slightly different. For <emphasis role="bold">conf_param</emphasis>, 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, <device> is ignored.</para>
+ <para>For more information on setting permanent parameters and <emphasis role="bold">lctl conf_param</emphasis> command examples, see <xref linkend="dbdoclet.50438194_64195"/> (Setting Permanent Parameters).</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>  </para>
+ </entry>
+ <entry>
+ <para> <emphasis role="bold">-d <device|fsname>.<parameter></emphasis></para>
+ <para> </para>
+ </entry>
+ <entry>
+ <para> Deletes a parameter setting (use the default value at the next restart). A null value for <emphasis role="bold"><value></emphasis> also deletes the parameter setting.</para>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">activate</emphasis></para>
+ </entry>
+ <entry>
+ <para> Re-activates an import after the deactivate operation. This setting is only effective until the next restart (see <emphasis role="bold">conf_param</emphasis>).</para>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">deactivate</emphasis></para>
+ </entry>
+ <entry>
+ <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>
+ </entry>
+ </row>
+ <row>
+ <entry nameend="c2" namest="c1">
+ <para> <emphasis role="bold">abort_recovery</emphasis></para>
+ </entry>
+ <entry>
+ <para> Aborts the recovery process on a re-starting MDT or OST.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <note>
+ <para>Lustre tunables are not always accessible using the procfs interface, as it is platform-specific. As a solution, lctl {get,set,list}_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,list}_param instead.</para>
+ </note>
+ <para><emphasis role="bold">Virtual Block Device Operations</emphasis></para>
+ <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>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">blockdev_attach</emphasis><emphasis><file name> <device node></emphasis></para>
+ </entry>
+ <entry>
+ <para> Attaches a regular Lustre file to a block device. If the device node does not exist, <emphasis role="bold">lctl</emphasis> creates it. We recommend that you create the device node by <emphasis role="bold">lctl</emphasis> since the emulator uses a dynamical major number.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">blockdev_detach</emphasis><emphasis><device node></emphasis></para>
+ </entry>
+ <entry>
+ <para> Detaches the virtual block device.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">blockdev_info</emphasis><emphasis><device node></emphasis></para>
+ </entry>
+ <entry>
+ <para> Provides information about the Lustre file attached to the device node.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para><emphasis role="bold">Changelogs</emphasis></para>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">changelog_register</emphasis></para>
+ </entry>
+ <entry>
+ <para> Registers a new changelog user for a particular device. Changelog entries are not purged beyond a registered user's set point (see <emphasis role="bold">lfs changelog_clear</emphasis>).</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">changelog_deregister</emphasis><emphasis><id></emphasis></para>
+ </entry>
+ <entry>
+ <para> Unregisters an existing changelog user. If the user's "clear" record number is the minimum for the device, changelog records are purged until the next minimum.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para><emphasis role="bold">Debug</emphasis></para>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">debug_daemon</emphasis></para>
+ </entry>
+ <entry>
+ <para> Starts and stops the debug daemon, and controls the output filename and size.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">debug_kernel</emphasis><emphasis>[file] [raw]</emphasis></para>
+ </entry>
+ <entry>
+ <para> Dumps the kernel debug buffer to stdout or a file.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">debug_file</emphasis><emphasis><input> [output]</emphasis></para>
+ </entry>
+ <entry>
+ <para> Converts the kernel-dumped debug log from binary to plain text format.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">clear</emphasis></para>
+ </entry>
+ <entry>
+ <para> Clears the kernel debug buffer.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">mark</emphasis><emphasis><text></emphasis></para>
+ </entry>
+ <entry>
+ <para> Inserts marker text in the kernel debug buffer.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">filter</emphasis><emphasis><subsystem id/debug mask></emphasis></para>
+ </entry>
+ <entry>
+ <para> Filters kernel debug messages by subsystem or mask.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">show</emphasis><emphasis><subsystem id/debug mask></emphasis></para>
+ </entry>
+ <entry>
+ <para> Shows specific types of messages.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">debug_list</emphasis><emphasis><subs/types></emphasis></para>
+ </entry>
+ <entry>
+ <para> Lists all subsystem and debug types.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">modules</emphasis><emphasis><path></emphasis></para>
+ </entry>
+ <entry>
+ <para> Provides GDB-friendly module information.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ <section remap="h5">
+ <title>Options</title>
+ <para>Use the following options to invoke lctl.</para>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold">Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">--device</emphasis></para>
+ </entry>
+ <entry>
+ <para> Device to be used for the operation (specified by name or number). See device_list.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">--ignore_errors | ignore_errors</emphasis></para>
+ </entry>
+ <entry>
+ <para> Ignores errors during script processing.</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ <section remap="h5">
+ <title>Examples</title>
+ <para><emphasis role="bold">lctl</emphasis></para>
+ <screen>$ lctl
+lctl > dl
+ 0 UP mgc MGC192.168.0.20@tcp btbb24e3-7deb-2ffa-eab0-44dffe00f692 5
+ 1 UP ost OSS OSS_uuid 3
+ 2 UP obdfilter testfs-OST0000 testfs-OST0000_UUID 3
+lctl > dk /tmp/log Debug log: 87 lines, 87 kept, 0 dropped.
+lctl > quit</screen>
+ </section>
+ <section remap="h5">
+ <title>See Also</title>
+ <itemizedlist>
+ <listitem>
+ <para> <xref linkend="dbdoclet.50438219_75432"/> </para>
+ </listitem>
+ <listitem>
+ <para> <xref linkend="dbdoclet.50438219_12635"/> </para>
+ </listitem>
+ <listitem>
+ <para> <xref linkend="dbdoclet.50438219_38274"/> </para>
+ </listitem>
+ <listitem>
+ <para> <xref linkend="dbdoclet.50438206_94597"/> </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+ <section xml:id="dbdoclet.50438219_58217">
+ <title><indexterm><primary>ll_decode_filter_fid</primary></indexterm>
+ll_decode_filter_fid</title>
+ <para>The ll_decode_filter_fid utility displays the Lustre object ID and MDT parent FID.</para>
+ <section remap="h5">
+ <title>Synopsis</title>
+ <screen>ll_decode_filter_fid object_file [object_file ...]</screen>
+ </section>
+ <section remap="h5">
+ <title>Description</title>
+ <para>The ll_decode_filter_fid utility decodes and prints the Lustre OST object ID, MDT FID, stripe index for the specified OST object(s), which is stored in the "trusted.fid" attribute on each OST object. This is accessible to ll_decode_filter_fid when the OST filesystem is mounted locally as type ldiskfs for maintenance.</para>
+ <para>The "trusted.fid" 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>
+ <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>
+ </section>
+ <section remap="h5">
+ <title>Examples</title>
+ <screen>root@oss1# cd /mnt/ost/lost+found
+root@oss1# ll_decode_filter_fid #12345[4,5,8]
+#123454: objid=690670 seq=0 parent=[0x751c5:0xfce6e605:0x0]
+#123455: objid=614725 seq=0 parent=[0x18d11:0xebba84eb:0x1]
+#123458: objid=533088 seq=0 parent=[0x21417:0x19734d61:0x0]</screen>
+ <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>
+ <para>The MDT parent inode FIDs are hexdecimal 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>
+ <para>The idx field shows the stripe number of this OST object in the Lustre RAID-0 striped file.</para>
+ </section>
+ <section remap="h5">
+ <title>See Also</title>
+ <para><xref linkend="dbdoclet.50438219_44971"/></para>
+ </section>
+ </section>
+ <section xml:id="dbdoclet.50438219_44971">
+ <title><indexterm><primary>ll_recover_lost_found_objs</primary></indexterm>
+ll_recover_lost_found_objs</title>
+ <para>The ll_recover_lost_found_objs utility helps recover Lustre OST objects (file data) from a lost and found directory and return them to their correct locations.</para>
+ <note>
+ <para>Running the ll_recover_lost_found_objs tool is not strictly necessary to bring an OST back online, it just avoids losing access to objects that were moved to the lost and found directory due to directory corruption.</para>
+ </note>
+ <section remap="h5">
+ <title>Synopsis</title>
+ <screen>$ ll_recover_lost_found_objs [-hv] -d directory</screen>
+ </section>
+ <section remap="h5">
+ <title>Description</title>
+ <para>The first time Lustre writes to 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>
+ <para>To use ll_recover_lost_found_objs, mount the file system locally (using the -t ldiskfs 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>
+ </section>
+ <section remap="h5">
+ <title>Options</title>
+ <informaltable frame="all">
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="50*"/>
+ <colspec colname="c2" colwidth="50*"/>
+ <thead>
+ <row>
+ <entry>
+ <para><emphasis role="bold">Option</emphasis></para>
+ </entry>
+ <entry>
+ <para><emphasis role="bold"> Description</emphasis></para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">-h</emphasis></para>
+ </entry>
+ <entry>
+ <para> Prints a help message</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">-v</emphasis></para>
+ </entry>
+ <entry>
+ <para> Increases verbosity</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para> <emphasis role="bold">-d</emphasis><emphasis> directory</emphasis></para>
+ </entry>
+ <entry>
+ <para> Sets the lost and found directory path</para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ <section remap="h5">
+ <title>Example</title>
+ <screen>ll_recover_lost_found_objs -d /mnt/ost/lost+found </screen>
+ </section>
+ </section>
+ <section xml:id="dbdoclet.50438219_84890">
+ <title><indexterm><primary>llodbstat</primary></indexterm>
+llobdstat</title>
+ <para>The llobdstat utility displays OST statistics.</para>
+ <section remap="h5">
+ <title>Synopsis</title>
+ <screen>llobdstat ost_name [interval]</screen>
+ </section>
+ <section remap="h5">
+ <title>Description</title>
+ <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 <emphasis>CTRL-C</emphasis> to stop statistics printing.</para>
+ </section>
+ <section remap="h5">
+ <title>Example</title>
+ <screen># llobdstat liane-OST0002 1
+/usr/bin/llobdstat on /proc/fs/lustre/obdfilter/liane-OST0002/stats
+Processor counters run at 2800.189 MHz
+Read: 1.21431e+07, Write: 9.93363e+08, create/destroy: 24/1499, stat: 34, p\