-<?xml version='1.0' encoding='UTF-8'?><chapter xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US" xml:id="lustremaintenance">
+<?xml version='1.0' encoding='UTF-8'?>
+<chapter xmlns="http://docbook.org/ns/docbook"
+ xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US"
+ xml:id="lustremaintenance">
<title xml:id="lustremaintenance.title">Lustre Maintenance</title>
<para>Once you have the Lustre file system up and running, you can use the procedures in this section to perform these basic Lustre maintenance tasks:</para>
<itemizedlist>
<listitem>
<para><xref linkend="lustremaint.seperateCombinedMGSMDT"/></para>
</listitem>
+ <listitem>
+ <para><xref linkend="lustremaint.setMDTReadonly"/></para>
+ </listitem>
+ <listitem>
+ <para><xref linkend="lustremaint.tunefallocate"/></para>
+ </listitem>
</itemizedlist>
<section xml:id="lustremaint.inactiveOST">
<title>
<section xml:id="lustremaint.changingservernid">
<title><indexterm><primary>maintenance</primary><secondary>changing a NID</secondary></indexterm>
Changing a Server NID</title>
- <para>In Lustre software release 2.3 or earlier, the <literal>tunefs.lustre
- --writeconf</literal> command is used to rewrite all of the configuration files.</para>
- <para condition="l24">If you need to change the NID on the MDT or OST, a new
- <literal>replace_nids</literal> command was added in Lustre software release 2.4 to simplify
- this process. The <literal>replace_nids</literal> command differs from <literal>tunefs.lustre
- --writeconf</literal> in that it does not erase the entire configuration log, precluding the
- need the need to execute the <literal>writeconf</literal> command on all servers and
- re-specify all permanent parameter settings. However, the <literal>writeconf</literal> command
- can still be used if desired.</para>
+ <para>In order to totally rewrite the Lustre configuration, the
+ <literal>tunefs.lustre --writeconf</literal> command is used to
+ rewrite all of the configuration files.</para>
+ <para>If you need to change only the NID of the MDT or OST, the
+ <literal>replace_nids</literal> command can simplify this process.
+ The <literal>replace_nids</literal> command differs from
+ <literal>tunefs.lustre --writeconf</literal> in that it does not
+ erase the entire configuration log, precluding the need the need to
+ execute the <literal>writeconf</literal> command on all servers and
+ re-specify all permanent parameter settings. However, the
+ <literal>writeconf</literal> command can still be used if desired.
+ </para>
<para>Change a server NID in these situations:</para>
<itemizedlist>
<listitem>
</listitem>
</orderedlist>
</section>
- <section xml:id="lustremaint.adding_new_mdt" condition='l24'>
+ <section xml:id="lustremaint.adding_new_mdt">
<title><indexterm>
<primary>maintenance</primary>
<secondary>adding an MDT</secondary>
user or application workloads from other users of the filesystem. It
is possible to have multiple remote sub-directories reference the
same MDT. However, the root directory will always be located on
- MDT0. To add a new MDT into the file system:</para>
+ MDT0000. To add a new MDT into the file system:</para>
<orderedlist>
<listitem>
<para>Discover the maximum MDT index. Each MDT must have unique index.</para>
desire to continue using the filesystem before it is repaired.</para>
</listitem>
</itemizedlist>
- <section condition="l24" xml:id="lustremaint.rmremotedir">
+ <section xml:id="lustremaint.rmremotedir">
<title><indexterm><primary>maintenance</primary><secondary>removing an MDT</secondary></indexterm>Removing an MDT from the File System</title>
<para>If the MDT is permanently inaccessible,
<literal>lfs rm_entry {directory}</literal> can be used to delete the
<para>The <literal>lfs getstripe --mdt-index</literal> command
returns the index of the MDT that is serving the given directory.</para>
</section>
- <section xml:id="lustremaint.inactivemdt" condition='l24'>
+ <section xml:id="lustremaint.inactivemdt">
<title>
<indexterm><primary>maintenance</primary></indexterm>
<indexterm><primary>maintenance</primary><secondary>inactive MDTs</secondary></indexterm>Working with Inactive MDTs</title>
</listitem>
</orderedlist>
</section>
+ <section xml:id="lustremaint.setMDTReadonly" condition="l2D">
+ <title><indexterm><primary>maintenance</primary>
+ <secondary>set an MDT to readonly</secondary></indexterm>
+ Set an MDT to read-only</title>
+ <para>It is sometimes desirable to be able to mark the filesystem
+ read-only directly on the server, rather than remounting the clients and
+ setting the option there. This can be useful if there is a rogue client
+ that is deleting files, or when decommissioning a system to prevent
+ already-mounted clients from modifying it anymore.</para>
+ <para>Set the <literal>mdt.*.readonly</literal> parameter to
+ <literal>1</literal> to immediately set the MDT to read-only. All future
+ MDT access will immediately return a "Read-only file system" error
+ (<literal>EROFS</literal>) until the parameter is set to
+ <literal>0</literal> again.</para>
+ <para>Example of setting the <literal>readonly</literal> parameter to
+ <literal>1</literal>, verifying the current setting, accessing from a
+ client, and setting the parameter back to <literal>0</literal>:</para>
+ <screen>mds# lctl set_param mdt.fs-MDT0000.readonly=1
+mdt.fs-MDT0000.readonly=1
+
+mds# lctl get_param mdt.fs-MDT0000.readonly
+mdt.fs-MDT0000.readonly=1
+
+client$ touch test_file
+touch: cannot touch ‘test_file’: Read-only file system
+
+mds# lctl set_param mdt.fs-MDT0000.readonly=0
+mdt.fs-MDT0000.readonly=0</screen>
+ </section>
+ <section xml:id="lustremaint.tunefallocate" condition="l2E">
+ <title><indexterm><primary>maintenance</primary>
+ <secondary>Tune fallocate</secondary></indexterm>
+ Tune Fallocate for ldiskfs</title>
+ <para>This section shows how to tune/enable/disable fallocate for
+ ldiskfs OSTs.</para>
+ <para>The default <literal>mode=0</literal> is the standard
+ "allocate unwritten extents" behavior used by ext4. This is by far the
+ fastest for space allocation, but requires the unwritten extents to be
+ split and/or zeroed when they are overwritten.</para>
+ <para> The OST fallocate <literal>mode=1</literal> can also be set to use
+ "zeroed extents", which may be handled by "WRITE SAME", "TRIM zeroes data",
+ or other low-level functionality in the underlying block device.</para>
+ <para><literal>mode=-1</literal> completely disables fallocate.</para>
+ <para>Example: To completely disable fallocate</para>
+ <screen>lctl set_param osd-ldiskfs.*.fallocate_zero_blocks=-1</screen>
+ <para>Example: To enable fallocate to use 'zeroed extents'</para>
+ <screen>lctl set_param osd-ldiskfs.*.fallocate_zero_blocks=1</screen>
+ </section>
</chapter>
+<!--
+ vim:expandtab:shiftwidth=2:tabstop=8:
+ -->