</itemizedlist>
<section xml:id="dbdoclet.50438210_69313">
<title>29.1 Overview and Prerequisites</title>
- <para>Lustre can be installed from either pre-built binary packages (RPMs) or freely-available source code. Installing from the package release is recommended unless you need to customize the Lustre server kernel or will be using an Linux kernel that has not been tested with Lustre. For a list of supported Linux distributions and architectures, see the topic <link xl:href="http://wiki.lustre.org/index.php/Lustre_2.0">Lustre_2.0</link> on the Lustre wiki. The procedure for installing Lustre from RPMs is describe in <xref linkend="installinglustre">Chapter 8</xref>.</para>
+ <para>Lustre can be installed from either pre-built binary packages (RPMs) or freely-available source code. Installing from the package release is recommended unless you need to customize the Lustre server kernel or will be using an Linux kernel that has not been tested with Lustre. For a list of supported Linux distributions and architectures, see the topic <link xl:href="http://wiki.lustre.org/index.php/Lustre_2.0">Lustre_2.0</link> on the Lustre wiki. The procedure for installing Lustre from RPMs is describe in <xref linkend="installinglustre"/>.</para>
<para>To install Lustre from source code, the following are required:</para>
<itemizedlist>
<listitem>
</listitem>
</itemizedlist>
<note>
- <para>When using third-party network hardware with Lustre, the third-party modules (typically, the drivers) must be linked against the Linux kernel. The LNET modules in Lustre also need these references. To meet these requirements, a specific process must be followed to install and recompile Lustre. See <xref linkend="dbdoclet.50438210_27248">Installing Lustre with a Third-Party Network Stack</xref>, for an example showing how to install Lustre 1.6.6 using the Myricom MX 1.2.7 driver. The same process can be used for other third-party network stacks.</para>
+ <para>When using third-party network hardware with Lustre, the third-party modules (typically, the drivers) must be linked against the Linux kernel. The LNET modules in Lustre also need these references. To meet these requirements, a specific process must be followed to install and recompile Lustre. See <xref linkend="dbdoclet.50438210_27248"/>, for an example showing how to install Lustre 1.6.6 using the Myricom MX 1.2.7 driver. The same process can be used for other third-party network stacks.</para>
</note>
</section>
<section xml:id="dbdoclet.50438210_65411">
<para>For more information on these prerequisites, see:</para>
<itemizedlist>
<listitem>
- <para> Hardware requirements in <xref linkend="settinguplustresystem">Chapter 5</xref>.</para>
+ <para> Hardware requirements in <xref linkend="settinguplustresystem"/>.</para>
</listitem>
<listitem>
- <para> Software and environmental requirements in <xref linkend="dbdoclet.50438261_99193">Preparing to Install the Lustre Software</xref></para>
+ <para> Software and environmental requirements in <xref linkend="dbdoclet.50438261_99193"/></para>
</listitem>
</itemizedlist>
</listitem>
lustre-source-1.6.5.1-\2.6.18_53.xx.xx.el5_lustre.1.6.5.1.custom_20081021.i686.rpm</screen>
<note>
- <para>If the steps to create the RPMs fail, contact Lustre Support by reporting a bug. See <xref linkend="dbdoclet.50438198_30989">Reporting a Lustre Bug</xref>.</para>
+ <para>If the steps to create the RPMs fail, contact Lustre Support by reporting a bug. See <xref linkend="dbdoclet.50438198_30989"/>.</para>
</note>
<note>
<para>Several features and packages are available that extend the core functionality of Lustre. These features/packages can be enabled at the build time by issuing appropriate arguments to the configure command. For a list of these features and packages, run <literal>./configure -help</literal> in the Lustre source tree. The configs/ directory of the kernel source contains the config files matching each the kernel version. Copy one to <literal>.config</literal> at the root of the kernel tree.</para>
<para>Example result:</para>
<screen>kernel-2.6.95.0.3.EL_lustre.1.6.5.1custom-1.i686.rpm</screen>
<note>
- <para><xref linkend="dbdoclet.50438210_41207">Step 3</xref> is only valid for RedHat and SuSE kernels. If you are using a stock Linux kernel, you need to get a script to create the kernel RPM.</para>
+ <para>Step <xref linkend="dbdoclet.50438210_41207"/> is only valid for RedHat and SuSE kernels. If you are using a stock Linux kernel, you need to get a script to create the kernel RPM.</para>
</note>
</listitem>
<listitem>
<para>Install the Lustre packages.</para>
- <para>Some Lustre packages are installed on servers (MDS and OSSs), and others are installed on Lustre clients. For guidance on where to install specific packages, see <xref linkend="installinglustre.tab.req">TABLE 8-1</xref> that lists required packages and for each package and where to install it. Depending on the selected platform, not all of the packages listed in <xref linkend="installinglustre.tab.req">TABLE 8-1</xref> need to be installed.</para>
+ <para>Some Lustre packages are installed on servers (MDS and OSSs), and others are installed on Lustre clients. For guidance on where to install specific packages, see <xref linkend="installinglustre.tab.req"/> that lists required packages and for each package and where to install it. Depending on the selected platform, not all of the packages listed in <xref linkend="installinglustre.tab.req"/> need to be installed.</para>
<note>
<para>Running the patched server kernel on the clients is optional. It is not necessary unless the clients will be used for multiple purposes, for example, to run as a client and an OST.</para>
</note>
</listitem>
<listitem>
<para>Reboot the servers.</para>
- <para>Once all the machines have rebooted, the next steps are to configure Lustre Networking (LNET) and the Lustre file system. See <xref linkend="configuringlustre">Configuring Lustre</xref>.</para>
+ <para>Once all the machines have rebooted, the next steps are to configure Lustre Networking (LNET) and the Lustre file system. See <xref linkend="configuringlustre"/>.</para>
</listitem>
</orderedlist>
</listitem>
<orderedlist>
<listitem>
<para>Install the necessary build tools.</para>
- <para>GCC and related tools must be installed. For more information, see <xref linkend="dbdoclet.50438261_37079">Required Software</xref>.</para>
+ <para>GCC and related tools must be installed. For more information, see <xref linkend="dbdoclet.50438261_37079"/>.</para>
<screen>$ yum install rpm-build redhat-rpm-config
$ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros</screen>
</listitem>
<listitem>
<para>Start Lustre.</para>
- <para>Once all the machines have rebooted, the next steps are to configure Lustre Networking (LNET) and the Lustre file system. See <xref linkend="configuringlustre">Chapter 10</xref>.</para>
+ <para>Once all the machines have rebooted, the next steps are to configure Lustre Networking (LNET) and the Lustre file system. See <xref linkend="configuringlustre"/>.</para>
</listitem>
</orderedlist>
</section>
</emphasis> - This tool is used with the debug_kernel option to manually dump the Lustre debugging log or post-process debugging logs that are dumped automatically. For more information about the lctl tool, see <xref linkend="dbdoclet.50438274_62472"/> and <xref linkend="dbdoclet.50438219_38274"/>.</para>
</listitem>
<listitem>
- <para><emphasis role="bold">Lustre subsystem asserts</emphasis> - A panic-style assertion (LBUG) in the kernel causes Lustre to dump the debug log to the file <literal>/tmp/lustre-log.<emphasis><timestamp></emphasis></literal> where it can be retrieved after a reboot. For more information, see <xref linkend="dbdoclet.50438198_40669">Viewing Error Messages</xref>.</para>
+ <para><replaceable role="bold">Lustre subsystem asserts</replaceable> - A panic-style assertion (LBUG) in the kernel causes Lustre to dump the debug log to the file <literal>/tmp/lustre-log.<replaceable><timestamp></replaceable></literal> where it can be retrieved after a reboot. For more information, see <xref linkend="dbdoclet.50438198_40669"/>.</para>
</listitem>
<listitem>
- <para><emphasis role="bold">
- <literal>lfs</literal>
- </emphasis> - This utility provides access to the extended attributes (EAs) of a Lustre file (along with other information). For more inforamtion about lfs, see <xref linkend="dbdoclet.50438206_94597">lfs</xref>.</para>
+ <para>
+ <literal><replaceable>lfs</replaceable></literal>
+ - This utility provides access to the extended attributes (EAs) of a Lustre file (along with other information). For more inforamtion about lfs, see <xref linkend="dbdoclet.50438206_94597"/>.</para>
</listitem>
</itemizedlist>
</section>
<section remap="h3">
<title>28.1.2 External Debugging Tools</title>
- <para>The tools described in this section are provided in the Linux kernel or are available at an external website. For information about using some of these tools for Lustre debugging, see <xref linkend="dbdoclet.50438274_23607">Lustre Debugging Procedures</xref> and <xref linkend="dbdoclet.50438274_80443">Lustre Debugging for Developers</xref>.</para>
+ <para>The tools described in this section are provided in the Linux kernel or are available at an external website. For information about using some of these tools for Lustre debugging, see <xref linkend="dbdoclet.50438274_23607"/> and <xref linkend="dbdoclet.50438274_80443"/>.</para>
<section remap="h4">
<title>28.1.2.1 Tools for Administrators and Developers</title>
<para>Some general debugging tools provided as a part of the standard Linux distro are:</para>
<itemizedlist>
<listitem>
<para><literal>
- <emphasis role="bold">leak_finder.pl</emphasis>
+ <replaceable role="bold">leak_finder.pl</replaceable>
</literal> . This program provided with Lustre is useful for finding memory leaks in the code.</para>
</listitem>
</itemizedlist>
</section>
<section xml:id='dbdoclet.50438274_62472'>
<title>28.2.2 Using the lctl Tool to View Debug Messages</title>
- <para>The <literal>lctl</literal> tool allows debug messages to be filtered based on subsystems and message types to extract information useful for troubleshooting from a kernel debug log. For a command reference, see <xref linkend="dbdoclet.50438219_38274">lctl</xref>.</para>
+ <para>The <literal>lctl</literal> tool allows debug messages to be filtered based on subsystems and message types to extract information useful for troubleshooting from a kernel debug log. For a command reference, see <xref linkend="dbdoclet.50438219_38274"/>.</para>
<para>You can use <literal>lctl</literal> to:</para>
<itemizedlist>
<listitem>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">DEBUG_REQ</emphasis>
+ <replaceable role="bold">DEBUG_REQ</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">OBD_FAIL_CHECK</emphasis>
+ <replaceable role="bold">OBD_FAIL_CHECK</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">OBD_FAIL_TIMEOUT</emphasis>
+ <replaceable role="bold">OBD_FAIL_TIMEOUT</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">OBD_RACE</emphasis>
+ <replaceable role="bold">OBD_RACE</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">OBD_FAIL_ONCE</emphasis>
+ <replaceable role="bold">OBD_FAIL_ONCE</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para><literal>
- <emphasis role="bold">OBD_FAIL_RAND</emphasis>
+ <replaceable role="bold">OBD_FAIL_RAND</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">OBD_FAIL_SOME</emphasis>
+ <replaceable role="bold">OBD_FAIL_SOME</replaceable>
</literal></para>
</entry>
<entry>
<para>Request history is accessed and controlled using the following /proc files under the service directory:</para>
<itemizedlist>
<listitem>
+ <para>
<literal>
- <para>req_buffer_history_len</para>
+ req_buffer_history_len
</literal>
+ </para>
<para>Number of request buffers currently in the history</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
+ <para>
<literal>
- <para>req_buffer_history_max</para>
+ req_buffer_history_max
</literal>
+ </para>
<para>Maximum number of request buffers to keep</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
+ <para>
<literal>
- <para>req_history</para>
+ req_history
</literal>
+ </para>
<para>The request history</para>
</listitem>
</itemizedlist>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">target NID</emphasis>
+ <replaceable role="bold">target NID</replaceable>
</literal></para>
</entry>
<entry>
<row>
<entry>
<para> <literal>
- <emphasis role="bold">client ID</emphasis>
+ <replaceable role="bold">client ID</replaceable>
</literal></para>
</entry>
<entry>
</row>
<row>
<entry>
- <para> <emphasis role="bold">
- <literal>xid</literal>
- </emphasis></para>
+ <para>
+ <literal><replaceable>xid</replaceable></literal>
+ </para>
</entry>
<entry>
<para> <literal>rq_xid</literal></para>
<para>Then complete the following steps:</para>
<orderedlist>
<listitem>
- <para>Dump the log into a user-specified log file using lctl (see <xref linkend="dbdoclet.50438274_62472">Using the <literal>lctl</literal> Tool to View Debug Messages</xref>).</para>
+ <para>Dump the log into a user-specified log file using lctl (see <xref linkend="dbdoclet.50438274_62472"/>).</para>
</listitem>
<listitem>
<para>Run the leak finder on the newly-created log dump:</para>