Whamcloud - gitweb
FIX: converted to chapter and removed cruft
[doc/manual.git] / LustreOperations.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <article version="5.0" xml:lang="en-US" xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink">
3   <info>
4     <title>Lustre Operations</title>
5   </info>
6   <informaltable frame="none">
7     <tgroup cols="2">
8       <colspec colname="c1" colwidth="50*"/>
9       <colspec colname="c2" colwidth="50*"/>
10       
11       
12       <tbody>
13         <row>
14           <entry align="left"><para>Lustre 2.0 Operations Manual</para></entry>
15           <entry align="right" valign="top"><para><link xl:href="index.html"><inlinemediaobject><imageobject role="html">
16                     <imagedata contentdepth="26" contentwidth="30" fileref="./shared/toc01.gif" scalefit="1"/>
17                   </imageobject>
18 <imageobject role="fo">
19                     <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/toc01.gif" scalefit="1" width="100%"/>
20                   </imageobject>
21 </inlinemediaobject></link><link xl:href="LustreMonitoring.html"><inlinemediaobject><imageobject role="html">
22                     <imagedata contentdepth="26" contentwidth="30" fileref="./shared/prev01.gif" scalefit="1"/>
23                   </imageobject>
24 <imageobject role="fo">
25                     <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/prev01.gif" scalefit="1" width="100%"/>
26                   </imageobject>
27 </inlinemediaobject></link><link xl:href="LustreMaintenance.html"><inlinemediaobject><imageobject role="html">
28                     <imagedata contentdepth="26" contentwidth="30" fileref="./shared/next01.gif" scalefit="1"/>
29                   </imageobject>
30 <imageobject role="fo">
31                     <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/next01.gif" scalefit="1" width="100%"/>
32                   </imageobject>
33 </inlinemediaobject></link><link xl:href="ix.html"><inlinemediaobject><imageobject role="html">
34                     <imagedata contentdepth="26" contentwidth="30" fileref="./shared/index01.gif" scalefit="1"/>
35                   </imageobject>
36 <imageobject role="fo">
37                     <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/index01.gif" scalefit="1" width="100%"/>
38                   </imageobject>
39 </inlinemediaobject></link></para></entry>
40         </row>
41       </tbody>
42     </tgroup>
43   </informaltable>
44   <para><link xl:href=""/></para>
45   <informaltable frame="none">
46     <tgroup cols="1">
47       <colspec colname="c1" colwidth="100*"/>
48       
49       <tbody>
50         <row>
51           <entry align="right"><para><anchor xml:id="dbdoclet.50438194_pgfId-1306288" xreflabel=""/>C H A P T E R  13<anchor xml:id="dbdoclet.50438194_30183" xreflabel=""/></para></entry>
52         </row>
53       </tbody>
54     </tgroup>
55   </informaltable>
56   <informaltable frame="none">
57     <tgroup cols="1">
58       <colspec colname="c1" colwidth="100*"/>
59       
60       <tbody>
61         <row>
62           <entry align="right"><para><anchor xml:id="dbdoclet.50438194_pgfId-1289959" xreflabel=""/><anchor xml:id="dbdoclet.50438194_31337" xreflabel=""/>Lustre Operations</para></entry>
63         </row>
64       </tbody>
65     </tgroup>
66   </informaltable>
67   <para><anchor xml:id="dbdoclet.50438194_pgfId-1298785" xreflabel=""/>Once you have the Lustre file system up and running, you can use the procedures in this section to perform these basic Lustre administration tasks:</para>
68   <itemizedlist><listitem>
69       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298789" xreflabel=""/><link xl:href="LustreOperations.html#50438194_42877">Mounting by Label</link></para>
70     </listitem>
71 <listitem>
72       <para> </para>
73     </listitem>
74 <listitem>
75       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298793" xreflabel=""/><link xl:href="LustreOperations.html#50438194_24122">Starting Lustre</link></para>
76     </listitem>
77 <listitem>
78       <para> </para>
79     </listitem>
80 <listitem>
81       <para><anchor xml:id="dbdoclet.50438194_pgfId-1304363" xreflabel=""/><link xl:href="LustreOperations.html#50438194_84876">Mounting a Server</link></para>
82     </listitem>
83 <listitem>
84       <para> </para>
85     </listitem>
86 <listitem>
87       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298797" xreflabel=""/><link xl:href="LustreOperations.html#50438194_69255">Unmounting a Server</link></para>
88     </listitem>
89 <listitem>
90       <para> </para>
91     </listitem>
92 <listitem>
93       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298813" xreflabel=""/><link xl:href="LustreOperations.html#50438194_57420">Specifying Failout/Failover Mode for OSTs</link></para>
94     </listitem>
95 <listitem>
96       <para> </para>
97     </listitem>
98 <listitem>
99       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307165" xreflabel=""/><link xl:href="LustreOperations.html#50438194_54138">Handling Degraded OST RAID Arrays</link></para>
100     </listitem>
101 <listitem>
102       <para> </para>
103     </listitem>
104 <listitem>
105       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298817" xreflabel=""/><link xl:href="LustreOperations.html#50438194_88063">Running Multiple Lustre File Systems</link></para>
106     </listitem>
107 <listitem>
108       <para> </para>
109     </listitem>
110 <listitem>
111       <para><anchor xml:id="dbdoclet.50438194_pgfId-1302148" xreflabel=""/><link xl:href="LustreOperations.html#50438194_88980">Setting and Retrieving Lustre Parameters</link></para>
112     </listitem>
113 <listitem>
114       <para> </para>
115     </listitem>
116 <listitem>
117       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307324" xreflabel=""/><link xl:href="LustreOperations.html#50438194_41817">Specifying NIDs and Failover</link></para>
118     </listitem>
119 <listitem>
120       <para> </para>
121     </listitem>
122 <listitem>
123       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307328" xreflabel=""/><link xl:href="LustreOperations.html#50438194_70905">Erasing a File System</link></para>
124     </listitem>
125 <listitem>
126       <para> </para>
127     </listitem>
128 <listitem>
129       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307333" xreflabel=""/><link xl:href="LustreOperations.html#50438194_16954">Reclaiming Reserved Disk Space</link></para>
130     </listitem>
131 <listitem>
132       <para> </para>
133     </listitem>
134 <listitem>
135       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307338" xreflabel=""/><link xl:href="LustreOperations.html#50438194_69998">Replacing an Existing OST or MDS</link></para>
136     </listitem>
137 <listitem>
138       <para> </para>
139     </listitem>
140 <listitem>
141       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307421" xreflabel=""/><link xl:href="LustreOperations.html#50438194_30872">Identifying To Which Lustre File an OST Object Belongs</link></para>
142     </listitem>
143 <listitem>
144       <para> </para>
145     </listitem>
146 </itemizedlist>
147   <section remap="h2">
148     <title><anchor xml:id="dbdoclet.50438194_pgfId-1298852" xreflabel=""/></title>
149     <section remap="h2">
150       <title>13.1 <anchor xml:id="dbdoclet.50438194_42877" xreflabel=""/>Mounting by Label</title>
151       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298853" xreflabel=""/>The file system name is limited to 8 characters. We have encoded the file system and target information in the disk label, so you can mount by label. This allows system administrators to move disks around without worrying about issues such as SCSI disk reordering or getting the /dev/device wrong for a shared target. Soon, file system naming will be made as fail-safe as possible. Currently, Linux disk labels are limited to 16 characters. To identify the target within the file system, 8 characters are reserved, leaving 8 characters for the file system name:</para>
152       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298854" xreflabel=""/>&lt;fsname&gt;-MDT0000 or &lt;fsname&gt;-OST0a19</para>
153       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298855" xreflabel=""/>To mount by label, use this command:</para>
154       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298856" xreflabel=""/>$ mount -t lustre -L &lt;file system label&gt; &lt;mount point&gt;
155 </screen>
156       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298857" xreflabel=""/>This is an example of mount-by-label:</para>
157       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298858" xreflabel=""/>$ mount -t lustre -L testfs-MDT0000 /mnt/mdt
158 </screen>
159        <informaltable frame="none">
160         <tgroup cols="2">
161           <colspec colname="c1" colwidth="5*"/>
162           <colspec colname="c2" colwidth="95*"/>
163           
164           
165           <tbody>
166             <row>
167               <entry><para><inlinemediaobject><imageobject role="html">
168                       <imagedata fileref="./shared/caution.gif" scalefit="1"/>
169                     </imageobject>
170 <imageobject role="fo">
171                       <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/caution.gif" scalefit="1" width="100%"/>
172                     </imageobject>
173 </inlinemediaobject></para></entry>
174               <entry><para><emphasis role="bold">Caution -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1298859" xreflabel=""/>Mount-by-label should NOT be used in a multi-path environment.</para></entry>
175             </row>
176           </tbody>
177         </tgroup>
178       </informaltable>
179        <para><anchor xml:id="dbdoclet.50438194_pgfId-1298860" xreflabel=""/>Although the file system name is internally limited to 8 characters, you can mount the clients at any mount point, so file system users are not subjected to short names. Here is an example:</para>
180       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298861" xreflabel=""/>mount -t lustre uml1@tcp0:/shortfs /mnt/&lt;long-file_system-name&gt;
181 </screen>
182     </section>
183     <section remap="h2">
184       <title>13.2 <anchor xml:id="dbdoclet.50438194_24122" xreflabel=""/>Starting <anchor xml:id="dbdoclet.50438194_marker-1305696" xreflabel=""/>Lustre</title>
185       <para><anchor xml:id="dbdoclet.50438194_pgfId-1304353" xreflabel=""/>The startup order of Lustre components depends on whether you have a combined MGS/MDT or these components are separate.</para>
186       <itemizedlist><listitem>
187           <para><anchor xml:id="dbdoclet.50438194_pgfId-1304354" xreflabel=""/> If you have a combined MGS/MDT, the recommended startup order is OSTs, then the MGS/MDT, and then clients.</para>
188         </listitem>
189 <listitem>
190           <para> </para>
191         </listitem>
192 <listitem>
193           <para><anchor xml:id="dbdoclet.50438194_pgfId-1304355" xreflabel=""/> If the MGS and MDT are separate, the recommended startup order is: MGS, then OSTs, then the MDT, and then clients.</para>
194         </listitem>
195 <listitem>
196           <para> </para>
197         </listitem>
198 </itemizedlist>
199       <informaltable frame="none">
200         <tgroup cols="1">
201           <colspec colname="c1" colwidth="100*"/>
202           <tbody>
203             <row>
204               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1304356" xreflabel=""/>If an OST is added to a Lustre file system with a combined MGS/MDT, then the startup order changes slightly; the MGS must be started first because the OST needs to write its configuration data to it. In this scenario, the startup order is MGS/MDT, then OSTs, then the clients.</para></entry>
205             </row>
206           </tbody>
207         </tgroup>
208       </informaltable>
209     </section>
210     <section remap="h2">
211       <title>13.3 <anchor xml:id="dbdoclet.50438194_84876" xreflabel=""/>Mounting a <anchor xml:id="dbdoclet.50438194_marker-1298863" xreflabel=""/>Server</title>
212       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298865" xreflabel=""/>Starting a Lustre server is straightforward and only involves the mount command. Lustre servers can be added to /etc/fstab:</para>
213       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298866" xreflabel=""/>mount -t lustre
214 </screen>
215       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298867" xreflabel=""/>The mount command generates output similar to this:</para>
216       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298868" xreflabel=""/>/dev/sda1 on /mnt/test/mdt type lustre (rw)
217 <anchor xml:id="dbdoclet.50438194_pgfId-1298869" xreflabel=""/>/dev/sda2 on /mnt/test/ost0 type lustre (rw)
218 <anchor xml:id="dbdoclet.50438194_pgfId-1298870" xreflabel=""/>192.168.0.21@tcp:/testfs on /mnt/testfs type lustre (rw)
219 </screen>
220       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298871" xreflabel=""/>In this example, the MDT, an OST (ost0) and file system (testfs) are mounted.</para>
221       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298872" xreflabel=""/>LABEL=testfs-MDT0000 /mnt/test/mdt lustre defaults,_netdev,noauto 0 0
222 <anchor xml:id="dbdoclet.50438194_pgfId-1298873" xreflabel=""/>LABEL=testfs-OST0000 /mnt/test/ost0 lustre defaults,_netdev,noauto 0 0
223 </screen>
224       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298874" xreflabel=""/>In general, it is wise to specify noauto and let your high-availability (HA) package manage when to mount the device. If you are not using failover, make sure that networking has been started before mounting a Lustre server. RedHat, SuSE, Debian (and perhaps others) use the _netdev flag to ensure that these disks are mounted after the network is up.</para>
225       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298875" xreflabel=""/>We are mounting by disk label here--the label of a device can be read with e2label. The label of a newly-formatted Lustre server ends in FFFF, meaning that it has yet to be assigned. The assignment takes place when the server is first started, and the disk label is updated.</para>
226       <informaltable frame="none">
227         <tgroup cols="2">
228           <colspec colname="c1" colwidth="5*"/>
229           <colspec colname="c2" colwidth="95*"/>
230           
231           
232           <tbody>
233             <row>
234               <entry><para><inlinemediaobject><imageobject role="html">
235                       <imagedata fileref="./shared/caution.gif" scalefit="1"/>
236                     </imageobject>
237 <imageobject role="fo">
238                       <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/caution.gif" scalefit="1" width="100%"/>
239                     </imageobject>
240 </inlinemediaobject></para></entry>
241               <entry><para><emphasis role="bold">Caution -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1298876" xreflabel=""/>Do not do this when the client and OSS are on the same node, as memory pressure between the client and OSS can lead to deadlocks.</para></entry>
242             </row>
243           </tbody>
244         </tgroup>
245       </informaltable>
246        <informaltable frame="none">
247         <tgroup cols="2">
248           <colspec colname="c1" colwidth="5*"/>
249           <colspec colname="c2" colwidth="95*"/>
250           
251           
252           <tbody>
253             <row>
254               <entry><para><inlinemediaobject><imageobject role="html">
255                       <imagedata fileref="./shared/caution.gif" scalefit="1"/>
256                     </imageobject>
257 <imageobject role="fo">
258                       <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/caution.gif" scalefit="1" width="100%"/>
259                     </imageobject>
260 </inlinemediaobject></para></entry>
261               <entry><para><emphasis role="bold">Caution -</emphasis> Mount-by-label should NOT be used in a multi-path environment.</para></entry>
262             </row>
263           </tbody>
264         </tgroup>
265       </informaltable>
266       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298877" xreflabel=""/></para>
267     </section>
268     <section remap="h2">
269       <title>13.4 <anchor xml:id="dbdoclet.50438194_69255" xreflabel=""/>Unmounting a<anchor xml:id="dbdoclet.50438194_marker-1298879" xreflabel=""/> Server</title>
270       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298881" xreflabel=""/>To stop a Lustre server, use the umount &lt;mount point&gt; command.</para>
271       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298882" xreflabel=""/>For example, to stop ost0 on mount point /mnt/test, run:</para>
272       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298883" xreflabel=""/>$ umount /mnt/test
273 </screen>
274       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298884" xreflabel=""/>Gracefully stopping a server with the umount command preserves the state of the connected clients. The next time the server is started, it waits for clients to reconnect, and then goes through the recovery procedure.</para>
275       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298885" xreflabel=""/>If the force (-f) flag is used, then the server evicts all clients and stops WITHOUT recovery. Upon restart, the server does not wait for recovery. Any currently connected clients receive I/O errors until they reconnect.</para>
276       <informaltable frame="none">
277         <tgroup cols="1">
278           <colspec colname="c1" colwidth="100*"/>
279           <tbody>
280             <row>
281               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1298886" xreflabel=""/>If you are using loopback devices, use the -d flag. This flag cleans up loop devices and can always be safely specified.</para></entry>
282             </row>
283           </tbody>
284         </tgroup>
285       </informaltable>
286     </section>
287     <section remap="h2">
288       <title>13.5 <anchor xml:id="dbdoclet.50438194_57420" xreflabel=""/>Specifying Fail<anchor xml:id="dbdoclet.50438194_marker-1298926" xreflabel=""/>out/Failover Mode for OSTs</title>
289       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298928" xreflabel=""/>Lustre uses two modes, failout and failover, to handle an OST that has become unreachable because it fails, is taken off the network, is unmounted, etc.</para>
290       <itemizedlist><listitem>
291           <para><anchor xml:id="dbdoclet.50438194_pgfId-1298929" xreflabel=""/> In <emphasis>failout</emphasis> mode, Lustre clients immediately receive errors (EIOs) after a timeout, instead of waiting for the OST to recover.</para>
292         </listitem>
293 <listitem>
294           <para> </para>
295         </listitem>
296 <listitem>
297           <para><anchor xml:id="dbdoclet.50438194_pgfId-1298930" xreflabel=""/> In <emphasis>failover</emphasis> mode, Lustre clients wait for the OST to recover.</para>
298         </listitem>
299 <listitem>
300           <para> </para>
301         </listitem>
302 </itemizedlist>
303       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298931" xreflabel=""/>By default, the Lustre file system uses failover mode for OSTs. To specify failout mode instead, run this command:</para>
304       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298932" xreflabel=""/>$ mkfs.lustre --fsname=&lt;fsname&gt; --ost --mgsnode=&lt;MGS node NID&gt; --param=&quot;failover\
305 .mode=failout&quot; &lt;block device name&gt;
306 </screen>
307       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298934" xreflabel=""/>In this example, failout mode is specified for the OSTs on MGS uml1, file system testfs.</para>
308       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298935" xreflabel=""/>$ mkfs.lustre --fsname=testfs --ost --mgsnode=uml1 --param=&quot;failover.mode=fa\
309 ilout&quot; /dev/sdb 
310 </screen>
311        <informaltable frame="none">
312         <tgroup cols="2">
313           <colspec colname="c1" colwidth="5*"/>
314           <colspec colname="c2" colwidth="95*"/>
315           
316           
317           <tbody>
318             <row>
319               <entry><para><inlinemediaobject><imageobject role="html">
320                       <imagedata fileref="./shared/caution.gif" scalefit="1"/>
321                     </imageobject>
322 <imageobject role="fo">
323                       <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/caution.gif" scalefit="1" width="100%"/>
324                     </imageobject>
325 </inlinemediaobject></para></entry>
326               <entry><para><emphasis role="bold">Caution -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1306159" xreflabel=""/>Before running this command, unmount all OSTs that will be affected by the change in the failover/failout mode.</para></entry>
327             </row>
328           </tbody>
329         </tgroup>
330       </informaltable>
331        <informaltable frame="none">
332         <tgroup cols="1">
333           <colspec colname="c1" colwidth="100*"/>
334           <tbody>
335             <row>
336               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1301609" xreflabel=""/>After initial file system configuration, use the tunefs.lustre utility to change the failover/failout mode. For example, to set the failout mode, run:</para><para>$ tunefs.lustre --param failover.mode=failout &lt;OST partition&gt;</para></entry>
337             </row>
338           </tbody>
339         </tgroup>
340       </informaltable>
341     </section>
342     <section remap="h2">
343       <title>13.6 <anchor xml:id="dbdoclet.50438194_54138" xreflabel=""/>Handling <anchor xml:id="dbdoclet.50438194_marker-1307136" xreflabel=""/>Degraded OST RAID Arrays</title>
344       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307138" xreflabel=""/>Lustre includes functionality that notifies Lustre if an external RAID array has degraded performance (resulting in reduced overall file system performance), either because a disk has failed and not been replaced, or because a disk was replaced and is undergoing a rebuild. To avoid a global performance slowdown due to a degraded OST, the MDS can avoid the OST for new object allocation if it is notified of the degraded state.</para>
345       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307139" xreflabel=""/>A parameter for each OST, called degraded, specifies whether the OST is running in degraded mode or not.</para>
346       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307140" xreflabel=""/>To mark the OST as degraded, use:</para>
347       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307141" xreflabel=""/>lctl set_param obdfilter.{OST_name}.degraded=1</screen>
348       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307142" xreflabel=""/>To mark that the OST is back in normal operation, use:</para>
349       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307143" xreflabel=""/>lctl set_param obdfilter.{OST_name}.degraded=0
350 </screen>
351       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307144" xreflabel=""/>To determine if OSTs are currently in degraded mode, use:</para>
352       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307145" xreflabel=""/>lctl get_param obdfilter.*.degraded
353 </screen>
354       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307146" xreflabel=""/>If the OST is remounted due to a reboot or other condition, the flag resets to 0.</para>
355       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307147" xreflabel=""/>It is recommended that this be implemented by an automated script that monitors the status of individual RAID devices.</para>
356     </section>
357     <section remap="h2">
358       <title>13.7 <anchor xml:id="dbdoclet.50438194_88063" xreflabel=""/>Running Multiple<anchor xml:id="dbdoclet.50438194_marker-1298939" xreflabel=""/> Lustre File Systems</title>
359       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298941" xreflabel=""/>There may be situations in which you want to run multiple file systems. This is doable, as long as you follow specific naming conventions.</para>
360       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298942" xreflabel=""/>By default, the mkfs.lustre command creates a file system named lustre. To specify a different file system name (limited to 8 characters), run this command:</para>
361       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298943" xreflabel=""/>mkfs.lustre --fsname=&lt;new file system name&gt;</para>
362       <informaltable frame="none">
363         <tgroup cols="1">
364           <colspec colname="c1" colwidth="100*"/>
365           <tbody>
366             <row>
367               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1298944" xreflabel=""/>The MDT, OSTs and clients in the new file system must share the same name (prepended to the device name). For example, for a new file system named foo, the MDT and two OSTs would be named foo-MDT0000, foo-OST0000, and foo-OST0001.</para></entry>
368             </row>
369           </tbody>
370         </tgroup>
371       </informaltable>
372       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298945" xreflabel=""/>To mount a client on the file system, run:</para>
373       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298946" xreflabel=""/>mount -t lustre mgsnode:/&lt;new fsname&gt; &lt;mountpoint&gt;
374 </screen>
375       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298947" xreflabel=""/>For example, to mount a client on file system foo at mount point /mnt/lustre1, run:</para>
376       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298948" xreflabel=""/>mount -t lustre mgsnode:/foo /mnt/lustre1
377 </screen>
378       <informaltable frame="none">
379         <tgroup cols="1">
380           <colspec colname="c1" colwidth="100*"/>
381           <tbody>
382             <row>
383               <entry><para><emphasis role="bold">Note -</emphasis> If a client(s) will be mounted on several file systems, add the following line to /etc/xattr.conf file to avoid problems when files are moved between the file systems: lustre.* skip</para></entry>
384             </row>
385           </tbody>
386         </tgroup>
387       </informaltable>
388        <informaltable frame="none">
389         <tgroup cols="1">
390           <colspec colname="c1" colwidth="100*"/>
391           <tbody>
392             <row>
393               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1301607" xreflabel=""/>The MGS is universal; there is only one MGS per Lustre installation, not per file system.</para></entry>
394             </row>
395           </tbody>
396         </tgroup>
397       </informaltable>
398        <informaltable frame="none">
399         <tgroup cols="1">
400           <colspec colname="c1" colwidth="100*"/>
401           <tbody>
402             <row>
403               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1298950" xreflabel=""/>There is only one file system per MDT. Therefore, specify --mdt --mgs on one file system and --mdt --mgsnode=&lt;MGS node NID&gt; on the other file systems.</para></entry>
404             </row>
405           </tbody>
406         </tgroup>
407       </informaltable>
408       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298951" xreflabel=""/>A Lustre installation with two file systems (foo and bar) could look like this, where the MGS node is mgsnode@tcp0 and the mount points are /mnt/lustre1 and /mnt/lustre2.</para>
409       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307225" xreflabel=""/>mgsnode# mkfs.lustre --mgs /mnt/lustre1
410 <anchor xml:id="dbdoclet.50438194_pgfId-1298953" xreflabel=""/>mdtfoonode# mkfs.lustre --fsname=foo --mdt --mgsnode=mgsnode@tcp0 /mnt/lust\
411 re1
412 <anchor xml:id="dbdoclet.50438194_pgfId-1298954" xreflabel=""/>ossfoonode# mkfs.lustre --fsname=foo --ost --mgsnode=mgsnode@tcp0 /mnt/lust\
413 re1
414 <anchor xml:id="dbdoclet.50438194_pgfId-1298955" xreflabel=""/>ossfoonode# mkfs.lustre --fsname=foo --ost --mgsnode=mgsnode@tcp0 /mnt/lust\
415 re2
416 <anchor xml:id="dbdoclet.50438194_pgfId-1298956" xreflabel=""/>mdtbarnode# mkfs.lustre --fsname=bar --mdt --mgsnode=mgsnode@tcp0 /mnt/lust\
417 re1
418 <anchor xml:id="dbdoclet.50438194_pgfId-1298957" xreflabel=""/>ossbarnode# mkfs.lustre --fsname=bar --ost --mgsnode=mgsnode@tcp0 /mnt/lust\
419 re1
420 <anchor xml:id="dbdoclet.50438194_pgfId-1298958" xreflabel=""/>ossbarnode# mkfs.lustre --fsname=bar --ost --mgsnode=mgsnode@tcp0 /mnt/lust\
421 re2
422 </screen>
423       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298959" xreflabel=""/>To mount a client on file system foo at mount point /mnt/lustre1, run:</para>
424       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298960" xreflabel=""/>mount -t lustre mgsnode@tcp0:/foo /mnt/lustre1
425 </screen>
426       <para><anchor xml:id="dbdoclet.50438194_pgfId-1298961" xreflabel=""/>To mount a client on file system bar at mount point /mnt/lustre2, run:</para>
427       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1298962" xreflabel=""/>mount -t lustre mgsnode@tcp0:/bar /mnt/lustre2
428 </screen>
429     </section>
430     <section remap="h2">
431       <title>13.8 <anchor xml:id="dbdoclet.50438194_88980" xreflabel=""/>Setting <anchor xml:id="dbdoclet.50438194_marker-1302467" xreflabel=""/>and Retrieving Lustre Parameters</title>
432       <para><anchor xml:id="dbdoclet.50438194_pgfId-1301646" xreflabel=""/>Several options are available for setting parameters in Lustre:</para>
433       <itemizedlist><listitem>
434           <para><anchor xml:id="dbdoclet.50438194_pgfId-1301703" xreflabel=""/> When creating a file system, use mkfs.lustre. See <link xl:href="LustreOperations.html#50438194_17237">Setting Parameters with mkfs.lustre</link> below.</para>
435         </listitem>
436 <listitem>
437           <para> </para>
438         </listitem>
439 <listitem>
440           <para><anchor xml:id="dbdoclet.50438194_pgfId-1301745" xreflabel=""/> When a server is stopped, use tunefs.lustre. See <link xl:href="LustreOperations.html#50438194_55253">Setting Parameters with tunefs.lustre</link> below.</para>
441         </listitem>
442 <listitem>
443           <para> </para>
444         </listitem>
445 <listitem>
446           <para><anchor xml:id="dbdoclet.50438194_pgfId-1301707" xreflabel=""/> When the file system is running, use lctl to set or retrieve Lustre parameters. See <link xl:href="LustreOperations.html#50438194_51490">Setting Parameters with lctl</link> and <link xl:href="LustreOperations.html#50438194_63247">Reporting Current Parameter Values</link> below.</para>
447         </listitem>
448 <listitem>
449           <para> </para>
450         </listitem>
451 </itemizedlist>
452       <section remap="h3">
453         <title><anchor xml:id="dbdoclet.50438194_pgfId-1301648" xreflabel=""/>13.8.1 <anchor xml:id="dbdoclet.50438194_17237" xreflabel=""/>Setting Parameters with <anchor xml:id="dbdoclet.50438194_marker-1305722" xreflabel=""/>mkfs.lustre</title>
454         <para><anchor xml:id="dbdoclet.50438194_pgfId-1301792" xreflabel=""/>When the file system is created, parameters can simply be added as a --param option to the mkfs.lustre command. For example:</para>
455         <screen><anchor xml:id="dbdoclet.50438194_pgfId-1301795" xreflabel=""/>$ mkfs.lustre --mdt --param=&quot;sys.timeout=50&quot; /dev/sda
456 </screen>
457         <para><anchor xml:id="dbdoclet.50438194_pgfId-1306965" xreflabel=""/>For more details about creating a file system,see <link xl:href="ConfiguringLustre.html#50438267_88428">Chapter 10</link><emphasis>:</emphasis><link xl:href="ConfiguringLustre.html#50438267_66186">Configuring Lustre</link>. For more details about mkfs.lustre, see <link xl:href="SystemConfigurationUtilities.html#50438219_66186">Chapter 36: System Configuration Utilities</link>.</para>
458       </section>
459       <section remap="h3">
460         <title><anchor xml:id="dbdoclet.50438194_pgfId-1301767" xreflabel=""/>13.8.2 <anchor xml:id="dbdoclet.50438194_55253" xreflabel=""/>Setting Parameters with <anchor xml:id="dbdoclet.50438194_marker-1305720" xreflabel=""/>tunefs.lustre</title>
461         <para><anchor xml:id="dbdoclet.50438194_pgfId-1301651" xreflabel=""/>If a server (OSS or MDS) is stopped, parameters can be added using the --param option to the tunefs.lustre command. For example:</para>
462         <screen><anchor xml:id="dbdoclet.50438194_pgfId-1301652" xreflabel=""/>$ tunefs.lustre --param=&quot;failover.node=192.168.0.13@tcp0&quot; /dev/sda
463 </screen>
464         <para><anchor xml:id="dbdoclet.50438194_pgfId-1301653" xreflabel=""/>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>
465         <screen><anchor xml:id="dbdoclet.50438194_pgfId-1301856" xreflabel=""/>$ tunefs.lustre --erase-params --param=&lt;new parameters&gt; </screen>
466         <para><anchor xml:id="dbdoclet.50438194_pgfId-1302108" xreflabel=""/>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 &lt;obd|fsname&gt;.&lt;obdtype&gt;.&lt;proc_file_name&gt;=&lt;value&gt;. For example:</para>
467         <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302086" xreflabel=""/>$ tunefs.lustre --param mdt.group_upcall=NONE /dev/sda1
468 </screen>
469         <para><anchor xml:id="dbdoclet.50438194_pgfId-1307012" xreflabel=""/>For more details about tunefs.lustre, see <link xl:href="SystemConfigurationUtilities.html#50438219_66186">Chapter 36: System Configuration Utilities</link>.</para>
470       </section>
471       <section remap="h3">
472         <title><anchor xml:id="dbdoclet.50438194_pgfId-1301773" xreflabel=""/>13.8.3 <anchor xml:id="dbdoclet.50438194_51490" xreflabel=""/>Setting Parameters <anchor xml:id="dbdoclet.50438194_marker-1305718" xreflabel=""/>with lctl</title>
473         <para><anchor xml:id="dbdoclet.50438194_pgfId-1304759" xreflabel=""/>When the file system is running, the lctl command can be used to set parameters (temporary or permanent) and report current parameter values. Temporary parameters are active as long as the server or client is not shut down. Permanent parameters live through server and client reboots.</para>
474         <informaltable frame="none">
475           <tgroup cols="1">
476             <colspec colname="c1" colwidth="100*"/>
477             <tbody>
478               <row>
479                 <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1305652" xreflabel=""/>The lctl list_param command enables users to list all parameters that can be set. See <link xl:href="LustreOperations.html#50438194_88217">Listing Parameters</link>.</para></entry>
480               </row>
481             </tbody>
482           </tgroup>
483         </informaltable>
484         <para><anchor xml:id="dbdoclet.50438194_pgfId-1307027" xreflabel=""/>For more details about the lctl command, see the examples in the sections below and <link xl:href="SystemConfigurationUtilities.html#50438219_66186">Chapter 36: System Configuration Utilities</link>.</para>
485         <section remap="h4">
486           <title><anchor xml:id="dbdoclet.50438194_pgfId-1307025" xreflabel=""/>13.8.3.1 Setting Temporary Parameters</title>
487           <para><anchor xml:id="dbdoclet.50438194_pgfId-1303290" xreflabel=""/>Use lctl set_param to set temporary parameters on the node where it is run. These parameters map to items in /proc/{fs,sys}/{lnet,lustre}. The lctl set_param command uses this syntax:</para>
488           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302283" xreflabel=""/>lctl set_param [-n] &lt;obdtype&gt;.&lt;obdname&gt;.&lt;proc_file_name&gt;=&lt;value&gt;
489 </screen>
490           <para><anchor xml:id="dbdoclet.50438194_pgfId-1302281" xreflabel=""/>For example:</para>
491           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1301900" xreflabel=""/># lctl set_param osc.*.max_dirty_mb=1024
492 <anchor xml:id="dbdoclet.50438194_pgfId-1304516" xreflabel=""/>osc.myth-OST0000-osc.max_dirty_mb=32 
493 <anchor xml:id="dbdoclet.50438194_pgfId-1304542" xreflabel=""/>osc.myth-OST0001-osc.max_dirty_mb=32 
494 <anchor xml:id="dbdoclet.50438194_pgfId-1304545" xreflabel=""/>osc.myth-OST0002-osc.max_dirty_mb=32 
495 <anchor xml:id="dbdoclet.50438194_pgfId-1304548" xreflabel=""/>osc.myth-OST0003-osc.max_dirty_mb=32 
496 <anchor xml:id="dbdoclet.50438194_pgfId-1304551" xreflabel=""/>osc.myth-OST0004-osc.max_dirty_mb=32
497 </screen>
498         </section>
499         <section remap="h4">
500           <title><anchor xml:id="dbdoclet.50438194_pgfId-1302347" xreflabel=""/>13.8.3.2 <anchor xml:id="dbdoclet.50438194_64195" xreflabel=""/>Setting Permanent Parameters</title>
501           <para><anchor xml:id="dbdoclet.50438194_pgfId-1303209" xreflabel=""/>Use the lctl conf_param command to set permanent parameters. In general, the lctl conf_param command 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 (same as the mkfs.lustre and tunefs.lustre commands):</para>
502           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302348" xreflabel=""/>&lt;obd|fsname&gt;.&lt;obdtype&gt;.&lt;proc_file_name&gt;=&lt;value&gt;) 
503 </screen>
504           <para><anchor xml:id="dbdoclet.50438194_pgfId-1304695" xreflabel=""/>Here are a few examples of lctl conf_param commands:</para>
505           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302350" xreflabel=""/>$ mgs&gt; lctl conf_param testfs-MDT0000.sys.timeout=40
506 <anchor xml:id="dbdoclet.50438194_pgfId-1302351" xreflabel=""/>$ lctl conf_param testfs-MDT0000.mdt.group_upcall=NONE 
507 <anchor xml:id="dbdoclet.50438194_pgfId-1302352" xreflabel=""/>$ lctl conf_param testfs.llite.max_read_ahead_mb=16 
508 <anchor xml:id="dbdoclet.50438194_pgfId-1302353" xreflabel=""/>$ lctl conf_param testfs-MDT0000.lov.stripesize=2M 
509 <anchor xml:id="dbdoclet.50438194_pgfId-1302354" xreflabel=""/>$ lctl conf_param testfs-OST0000.osc.max_dirty_mb=29.15 
510 <anchor xml:id="dbdoclet.50438194_pgfId-1302355" xreflabel=""/>$ lctl conf_param testfs-OST0000.ost.client_cache_seconds=15 
511 <anchor xml:id="dbdoclet.50438194_pgfId-1302356" xreflabel=""/>$ lctl conf_param testfs.sys.timeout=40 
512 </screen>
513           <informaltable frame="none">
514             <tgroup cols="2">
515               <colspec colname="c1" colwidth="5*"/>
516               <colspec colname="c2" colwidth="95*"/>
517               
518               
519               <tbody>
520                 <row>
521                   <entry><para><inlinemediaobject><imageobject role="html">
522                           <imagedata fileref="./shared/caution.gif" scalefit="1"/>
523                         </imageobject>
524 <imageobject role="fo">
525                           <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/caution.gif" scalefit="1" width="100%"/>
526                         </imageobject>
527 </inlinemediaobject></para></entry>
528                   <entry><para><emphasis role="bold">Caution -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1302357" xreflabel=""/>Parameters specified with the lctlconf_param command are set permanently in the file system’s configuration file on the MGS.</para></entry>
529                 </row>
530               </tbody>
531             </tgroup>
532           </informaltable>
533         </section>
534         <section remap="h4">
535           <title><anchor xml:id="dbdoclet.50438194_pgfId-1305661" xreflabel=""/>13.8.3.3 <anchor xml:id="dbdoclet.50438194_88217" xreflabel=""/>Listing Parameters</title>
536           <para><anchor xml:id="dbdoclet.50438194_pgfId-1305964" xreflabel=""/>To list Lustre or LNET parameters that are available to set, use the lctl list_param command. For example:</para>
537           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1305965" xreflabel=""/>lctl list_param [-FR] &lt;obdtype&gt;.&lt;obdname&gt;
538 </screen>
539           <para><anchor xml:id="dbdoclet.50438194_pgfId-1305966" xreflabel=""/>The following arguments are available for the lctl list_param command.</para>
540           <para><anchor xml:id="dbdoclet.50438194_pgfId-1305967" xreflabel=""/>-F Add &apos;/&apos;, &apos;@&apos; or &apos;=&apos; for directories, symlinks and writeable files, respectively</para>
541           <para><anchor xml:id="dbdoclet.50438194_pgfId-1305968" xreflabel=""/>-R Recursively lists all parameters under the specified path</para>
542           <para><anchor xml:id="dbdoclet.50438194_pgfId-1305969" xreflabel=""/>For example:</para>
543           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1305970" xreflabel=""/>$ lctl list_param obdfilter.lustre-OST0000 
544 </screen>
545         </section>
546         <section remap="h4">
547           <title><anchor xml:id="dbdoclet.50438194_pgfId-1302343" xreflabel=""/>13.8.3.4 <anchor xml:id="dbdoclet.50438194_63247" xreflabel=""/>Reporting Current <anchor xml:id="dbdoclet.50438194_marker-1302474" xreflabel=""/>Parameter Values</title>
548           <para><anchor xml:id="dbdoclet.50438194_pgfId-1302292" xreflabel=""/>To report current Lustre parameter values, use the lctl get_param command with this syntax:</para>
549           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302296" xreflabel=""/>lctl get_param [-n] &lt;obdtype&gt;.&lt;obdname&gt;.&lt;proc_file_name&gt;
550 </screen>
551           <para><anchor xml:id="dbdoclet.50438194_pgfId-1302294" xreflabel=""/>This example reports data on RPC service times.</para>
552           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1302235" xreflabel=""/>$ lctl get_param -n ost.*.ost_io.timeouts 
553 <anchor xml:id="dbdoclet.50438194_pgfId-1304578" xreflabel=""/>service : cur 1 worst 30 (at 1257150393, 85d23h58m54s ago) 1 1 1 1 
554 </screen>
555           <para><anchor xml:id="dbdoclet.50438194_pgfId-1304580" xreflabel=""/>This example reports the number of inodes available on each OST.</para>
556           <screen><anchor xml:id="dbdoclet.50438194_pgfId-1304662" xreflabel=""/># lctl get_param osc.*.filesfree
557 <anchor xml:id="dbdoclet.50438194_pgfId-1304626" xreflabel=""/>osc.myth-OST0000-osc-ffff88006dd20000.filesfree=217623 
558 <anchor xml:id="dbdoclet.50438194_pgfId-1304649" xreflabel=""/>osc.myth-OST0001-osc-ffff88006dd20000.filesfree=5075042 
559 <anchor xml:id="dbdoclet.50438194_pgfId-1304652" xreflabel=""/>osc.myth-OST0002-osc-ffff88006dd20000.filesfree=3762034 
560 <anchor xml:id="dbdoclet.50438194_pgfId-1304655" xreflabel=""/>osc.myth-OST0003-osc-ffff88006dd20000.filesfree=91052 
561 <anchor xml:id="dbdoclet.50438194_pgfId-1304658" xreflabel=""/>osc.myth-OST0004-osc-ffff88006dd20000.filesfree=129651<anchor xml:id="dbdoclet.50438194_88030" xreflabel=""/><anchor xml:id="dbdoclet.50438194_54623" xreflabel=""/></screen>
562         </section>
563       </section>
564     </section>
565     <section remap="h2">
566       <title>13.9 <anchor xml:id="dbdoclet.50438194_41817" xreflabel=""/><anchor xml:id="dbdoclet.50438194_42379" xreflabel=""/><anchor xml:id="dbdoclet.50438194_50129" xreflabel=""/>Specifying NIDs and Fail<anchor xml:id="dbdoclet.50438194_marker-1306313" xreflabel=""/>over</title>
567       <para><anchor xml:id="dbdoclet.50438194_pgfId-1306315" xreflabel=""/>If a node has multiple network interfaces, it may have multiple NIDs. When a node is specified, all of its NIDs must be listed, delimited by commas (,) so other nodes can choose the NID that is appropriate for their network interfaces. When failover nodes are specified, they are delimited by a colon (:) or by repeating a keyword (--mgsnode= or --failnode=). To obtain all NIDs from a node (while LNET is running), run:</para>
568       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1306316" xreflabel=""/>lctl list_nids
569 </screen>
570       <para><anchor xml:id="dbdoclet.50438194_pgfId-1306317" xreflabel=""/>This displays the server&apos;s NIDs (networks configured to work with Lustre).</para>
571       <para><anchor xml:id="dbdoclet.50438194_pgfId-1306319" xreflabel=""/>This example has a combined MGS/MDT failover pair on uml1 and uml2, and a OST failover pair on uml3 and uml4. There are corresponding Elan addresses on uml1 and uml2.</para>
572       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1306320" xreflabel=""/>uml1&gt; mkfs.lustre --fsname=testfs --mdt --mgs --failnode=uml2,2@elan /dev/sda1
573 <anchor xml:id="dbdoclet.50438194_pgfId-1306322" xreflabel=""/>uml1&gt; mount -t lustre /dev/sda1 /mnt/test/mdt
574 <anchor xml:id="dbdoclet.50438194_pgfId-1306323" xreflabel=""/>uml3&gt; mkfs.lustre --fsname=testfs --ost --failnode=uml4 --mgsnode=uml1,1@ela\
575 n --mgsnode=uml2,2@elan /dev/sdb
576 <anchor xml:id="dbdoclet.50438194_pgfId-1306325" xreflabel=""/>uml3&gt; mount -t lustre /dev/sdb /mnt/test/ost0
577 <anchor xml:id="dbdoclet.50438194_pgfId-1306326" xreflabel=""/>client&gt; mount -t lustre uml1,1@elan:uml2,2@elan:/testfs /mnt/testfs
578 <anchor xml:id="dbdoclet.50438194_pgfId-1306327" xreflabel=""/>uml1&gt; umount /mnt/mdt
579 <anchor xml:id="dbdoclet.50438194_pgfId-1306328" xreflabel=""/>uml2&gt; mount -t lustre /dev/sda1 /mnt/test/mdt
580 <anchor xml:id="dbdoclet.50438194_pgfId-1306329" xreflabel=""/>uml2&gt; cat /proc/fs/lustre/mds/testfs-MDT0000/recovery_status
581 </screen>
582       <para><anchor xml:id="dbdoclet.50438194_pgfId-1306330" xreflabel=""/>Where multiple NIDs are specified, comma-separation (for example, uml2,2@elan) means that the two NIDs refer to the same host, and that Lustre needs to choose the &quot;best&quot; one for communication. Colon-separation (for example, uml1:uml2) means that the two NIDs refer to two different hosts, and should be treated as failover locations (Lustre tries the first one, and if that fails, it tries the second one.)</para>
583        <informaltable frame="none">
584         <tgroup cols="1">
585           <colspec colname="c1" colwidth="100*"/>
586           <tbody>
587             <row>
588               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1306331" xreflabel=""/>If you have an MGS or MDT configured for failover, perform these steps:</para><para> 1. On the OST, list the NIDs of all MGS nodes at mkfs time.</para><para>OST# mkfs.lustre --fsname sunfs --ost --mgsnode=10.0.0.1</para><para> --mgsnode=10.0.0.2 /dev/{device}</para><para> 2. On the client, mount the file system.</para><para>client# mount -t lustre 10.0.0.1:10.0.0.2:/sunfs /cfs/client/</para></entry>
589             </row>
590           </tbody>
591         </tgroup>
592       </informaltable>
593      </section>
594     <section remap="h2">
595       <title>13.10 <anchor xml:id="dbdoclet.50438194_70905" xreflabel=""/>Erasing a <anchor xml:id="dbdoclet.50438194_marker-1307237" xreflabel=""/>File System</title>
596       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307240" xreflabel=""/>If you want to erase a file system, run this command on your targets:</para>
597       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307241" xreflabel=""/>$ &quot;mkfs.lustre -reformat&quot;
598 </screen>
599       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307242" xreflabel=""/>If you are using a separate MGS and want to keep other file systems defined on that MGS, then set the writeconf flag on the MDT for that file system. The writeconf flag causes the configuration logs to be erased; they are regenerated the next time the servers start.</para>
600       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307243" xreflabel=""/>To set the writeconf flag on the MDT:</para>
601       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307244" xreflabel=""/> 1. Unmount all clients/servers using this file system, run:</para>
602       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307245" xreflabel=""/>$ umount /mnt/lustre
603 </screen>
604       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307246" xreflabel=""/> 2. Erase the file system and, presumably, replace it with another file system, run:</para>
605       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307247" xreflabel=""/>$ mkfs.lustre -reformat --fsname spfs --mdt --mgs /dev/sda
606 </screen>
607       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307248" xreflabel=""/> 3. If you have a separate MGS (that you do not want to reformat), then add the &quot;writeconf&quot; flag to mkfs.lustre on the MDT, run:</para>
608       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307249" xreflabel=""/>$ mkfs.lustre --reformat --writeconf -fsname spfs --mdt \ --mgs /dev/sda
609 </screen>
610       <informaltable frame="none">
611         <tgroup cols="1">
612           <colspec colname="c1" colwidth="100*"/>
613           <tbody>
614             <row>
615               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1307250" xreflabel=""/>If you have a combined MGS/MDT, reformatting the MDT reformats the MGS as well, causing all configuration information to be lost; you can start building your new file system. Nothing needs to be done with old disks that will not be part of the new file system, just do not mount them.</para></entry>
616             </row>
617           </tbody>
618         </tgroup>
619       </informaltable>
620     </section>
621     <section remap="h2">
622       <title>13.11 <anchor xml:id="dbdoclet.50438194_16954" xreflabel=""/>Reclaiming <anchor xml:id="dbdoclet.50438194_marker-1307251" xreflabel=""/>Reserved Disk Space</title>
623       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307254" xreflabel=""/>All current Lustre installations run the ldiskfs file system internally on service nodes. By default, ldiskfs reserves 5% of the disk space for the root user. In order to reclaim this space, run the following command on your OSSs:</para>
624       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307255" xreflabel=""/>tune2fs [-m reserved_blocks_percent] [device]
625 </screen>
626       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307256" xreflabel=""/>You do not need to shut down Lustre before running this command or restart it afterwards.</para>
627     </section>
628     <section remap="h2">
629       <title>13.12 <anchor xml:id="dbdoclet.50438194_69998" xreflabel=""/>Replacing an Existing <anchor xml:id="dbdoclet.50438194_marker-1307278" xreflabel=""/>OST or MDS</title>
630       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307281" xreflabel=""/>To copy the contents of an existing OST to a new OST (or an old MDS to a new MDS), use one of these methods:</para>
631       <itemizedlist><listitem>
632           <para><anchor xml:id="dbdoclet.50438194_pgfId-1307282" xreflabel=""/> Connect the old OST disk and new OST disk to a single machine, mount both, and use rsync to copy all data between the OST file systems.</para>
633         </listitem>
634 <listitem>
635           <para> </para>
636         </listitem>
637 </itemizedlist>
638       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307283" xreflabel=""/>For example:</para>
639       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307284" xreflabel=""/>mount -t ldiskfs /dev/old /mnt/ost_old
640 <anchor xml:id="dbdoclet.50438194_pgfId-1307285" xreflabel=""/>mount -t ldiskfs /dev/new /mnt/ost_new
641 <anchor xml:id="dbdoclet.50438194_pgfId-1307286" xreflabel=""/>rsync -aSv /mnt/ost_old/ /mnt/ost_new
642 <anchor xml:id="dbdoclet.50438194_pgfId-1307287" xreflabel=""/># note trailing slash on ost_old/
643 </screen>
644       <itemizedlist><listitem>
645           <para><anchor xml:id="dbdoclet.50438194_pgfId-1307288" xreflabel=""/> If you are unable to connect both sets of disk to the same computer, use rsync to copy over the network using rsh (or ssh with -e ssh):</para>
646         </listitem>
647 <listitem>
648           <para> </para>
649         </listitem>
650 </itemizedlist>
651       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307289" xreflabel=""/>rsync -aSvz /mnt/ost_old/ new_ost_node:/mnt/ost_new
652 </screen>
653       <itemizedlist><listitem>
654           <para><anchor xml:id="dbdoclet.50438194_pgfId-1307290" xreflabel=""/>  Use the same procedure for the MDS, with one additional step:</para>
655         </listitem>
656 <listitem>
657           <para> </para>
658         </listitem>
659 </itemizedlist>
660       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307291" xreflabel=""/>cd /mnt/mds_old; getfattr -R -e base64 -d . &gt; /tmp/mdsea; \&lt;copy all MDS file\
661 s as above&gt;; cd /mnt/mds_new; setfattr \--restore=/tmp/mdsea
662 </screen>
663     </section>
664     <section remap="h2">
665       <title>13.13 <anchor xml:id="dbdoclet.50438194_30872" xreflabel=""/>Identifying To Which Lustre File an OST Object Belongs</title>
666       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307353" xreflabel=""/>Use this procedure to identify the file containing a given object on a given OST.</para>
667       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307357" xreflabel=""/> 1. On the OST (as root), run debugfs to display the file identifier (FID) of the file associated with the object.</para>
668       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307358" xreflabel=""/>For example, if the object is 34976 on /dev/lustre/ost_test2, the debug command is:</para>
669       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307359" xreflabel=""/># debugfs -c -R &quot;stat /O/0/d$((34976 %32))/34976&quot; /dev/lustre/ost_test2 
670 </screen>
671       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307360" xreflabel=""/>The command output is:</para>
672       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307361" xreflabel=""/>debugfs 1.41.5.sun2 (23-Apr-2009)
673 <anchor xml:id="dbdoclet.50438194_pgfId-1307362" xreflabel=""/>/dev/lustre/ost_test2: catastrophic mode - not reading inode or group bitma\
674 ps 
675 <anchor xml:id="dbdoclet.50438194_pgfId-1307363" xreflabel=""/>Inode: 352365   Type: regular    Mode:  0666   Flags: 0x80000
676 <anchor xml:id="dbdoclet.50438194_pgfId-1307364" xreflabel=""/>Generation: 1574463214    Version: 0xea020000:00000000
677 <anchor xml:id="dbdoclet.50438194_pgfId-1307365" xreflabel=""/>User:   500   Group:   500   Size: 260096
678 <anchor xml:id="dbdoclet.50438194_pgfId-1307366" xreflabel=""/>File ACL: 0    Directory ACL: 0
679 <anchor xml:id="dbdoclet.50438194_pgfId-1307367" xreflabel=""/>Links: 1   Blockcount: 512
680 <anchor xml:id="dbdoclet.50438194_pgfId-1307368" xreflabel=""/>Fragment:  Address: 0    Number: 0    Size: 0
681 <anchor xml:id="dbdoclet.50438194_pgfId-1307369" xreflabel=""/>ctime: 0x4a216b48:00000000 -- Sat May 30 13:22:16 2009
682 <anchor xml:id="dbdoclet.50438194_pgfId-1307370" xreflabel=""/>atime: 0x4a216b48:00000000 -- Sat May 30 13:22:16 2009
683 <anchor xml:id="dbdoclet.50438194_pgfId-1307371" xreflabel=""/>mtime: 0x4a216b48:00000000 -- Sat May 30 13:22:16 2009
684 <anchor xml:id="dbdoclet.50438194_pgfId-1307372" xreflabel=""/>crtime: 0x4a216b3c:975870dc -- Sat May 30 13:22:04 2009
685 <anchor xml:id="dbdoclet.50438194_pgfId-1307373" xreflabel=""/>Size of extra inode fields: 24
686 <anchor xml:id="dbdoclet.50438194_pgfId-1307374" xreflabel=""/>Extended attributes stored in inode body: 
687 <anchor xml:id="dbdoclet.50438194_pgfId-1307375" xreflabel=""/>fid = &quot;e2 00 11 00 00 00 00 00 25 43 c1 87 00 00 00 00 a0 88 00 00 00 00 00 \
688 00 00 00 00 00 00 00 00 00 &quot; (32)
689 <anchor xml:id="dbdoclet.50438194_pgfId-1307376" xreflabel=""/>BLOCKS:
690 <anchor xml:id="dbdoclet.50438194_pgfId-1307377" xreflabel=""/>(0-63):47968-48031
691 <anchor xml:id="dbdoclet.50438194_pgfId-1307378" xreflabel=""/>TOTAL: 64
692 </screen>
693       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307379" xreflabel=""/> 2. Note the FID’s EA and apply it to the osd_inode_id mapping.</para>
694       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307380" xreflabel=""/>In this example, the FID’s EA is:</para>
695       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307381" xreflabel=""/>e2001100000000002543c18700000000a0880000000000000000000000000000
696 <anchor xml:id="dbdoclet.50438194_pgfId-1307382" xreflabel=""/>struct osd_inode_id { 
697 <anchor xml:id="dbdoclet.50438194_pgfId-1307383" xreflabel=""/>__u64 oii_ino; /* inode number */ 
698 <anchor xml:id="dbdoclet.50438194_pgfId-1307384" xreflabel=""/>__u32 oii_gen; /* inode generation */ 
699 <anchor xml:id="dbdoclet.50438194_pgfId-1307385" xreflabel=""/>__u32 oii_pad; /* alignment padding */ 
700 <anchor xml:id="dbdoclet.50438194_pgfId-1307386" xreflabel=""/>};
701 </screen>
702       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307387" xreflabel=""/>After swapping, you get an inode number of 0x001100e2 and generation of 0.</para>
703       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307388" xreflabel=""/> 3. On the MDT (as root), use debugfs to find the file associated with the inode.</para>
704       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307389" xreflabel=""/># debugfs -c -R &quot;ncheck 0x001100e2&quot; /dev/lustre/mdt_test 
705 </screen>
706       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307390" xreflabel=""/>Here is the command output:</para>
707       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307391" xreflabel=""/>debugfs 1.41.5.sun2 (23-Apr-2009)
708 <anchor xml:id="dbdoclet.50438194_pgfId-1307392" xreflabel=""/>/dev/lustre/mdt_test: catastrophic mode - not reading inode or group bitmap\
709 s
710 <anchor xml:id="dbdoclet.50438194_pgfId-1307393" xreflabel=""/>Inode      Pathname
711 <anchor xml:id="dbdoclet.50438194_pgfId-1307394" xreflabel=""/>1114338    /ROOT/brian-laptop-guest/clients/client11/~dmtmp/PWRPNT/ZD16.BMP
712 </screen>
713       <para><anchor xml:id="dbdoclet.50438194_pgfId-1307395" xreflabel=""/>The command lists the inode and pathname associated with the object.</para>
714       <informaltable frame="none">
715         <tgroup cols="1">
716           <colspec colname="c1" colwidth="100*"/>
717           <tbody>
718             <row>
719               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1307396" xreflabel=""/>Debugfs&apos; &apos;&apos;ncheck&apos;&apos; is a brute-force search that may take a long time to complete.</para></entry>
720             </row>
721           </tbody>
722         </tgroup>
723       </informaltable>
724        <informaltable frame="none">
725         <tgroup cols="1">
726           <colspec colname="c1" colwidth="100*"/>
727           <tbody>
728             <row>
729               <entry><para><emphasis role="bold">Note -</emphasis><anchor xml:id="dbdoclet.50438194_pgfId-1307397" xreflabel=""/>To find the Lustre file from a disk LBA, follow the steps listed in the document at this URL: <emphasis>http://smartmontools.sourceforge.net/badblockhowto.html. </emphasis> Then, follow the steps above to resolve the Lustre filename.</para></entry>
730             </row>
731           </tbody>
732         </tgroup>
733       </informaltable>
734       <screen><anchor xml:id="dbdoclet.50438194_pgfId-1307350" xreflabel=""/> 
735 </screen>
736       <!--
737 Begin SiteCatalyst code version: G.5.
738 -->
739       <!--
740 End SiteCatalyst code version: G.5.
741 -->
742         <informaltable frame="none">
743         <tgroup cols="3">
744           <colspec colname="c1" colwidth="33*"/>
745           <colspec colname="c2" colwidth="33*"/>
746           <colspec colname="c3" colwidth="33*"/>
747           
748           
749           
750           <tbody>
751             <row>
752               <entry align="left"><para>Lustre 2.0 Operations Manual</para></entry>
753               <entry align="right"><para>821-2076-10</para></entry>
754               <entry align="right" valign="top"><para><link xl:href="index.html"><inlinemediaobject><imageobject role="html">
755                         <imagedata contentdepth="26" contentwidth="30" fileref="./shared/toc01.gif" scalefit="1"/>
756                       </imageobject>
757 <imageobject role="fo">
758                         <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/toc01.gif" scalefit="1" width="100%"/>
759                       </imageobject>
760 </inlinemediaobject></link><link xl:href="LustreMonitoring.html"><inlinemediaobject><imageobject role="html">
761                         <imagedata contentdepth="26" contentwidth="30" fileref="./shared/prev01.gif" scalefit="1"/>
762                       </imageobject>
763 <imageobject role="fo">
764                         <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/prev01.gif" scalefit="1" width="100%"/>
765                       </imageobject>
766 </inlinemediaobject></link><link xl:href="LustreMaintenance.html"><inlinemediaobject><imageobject role="html">
767                         <imagedata contentdepth="26" contentwidth="30" fileref="./shared/next01.gif" scalefit="1"/>
768                       </imageobject>
769 <imageobject role="fo">
770                         <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/next01.gif" scalefit="1" width="100%"/>
771                       </imageobject>
772 </inlinemediaobject></link><link xl:href="ix.html"><inlinemediaobject><imageobject role="html">
773                         <imagedata contentdepth="26" contentwidth="30" fileref="./shared/index01.gif" scalefit="1"/>
774                       </imageobject>
775 <imageobject role="fo">
776                         <imagedata contentdepth="100%" contentwidth="" depth="" fileref="./shared/index01.gif" scalefit="1" width="100%"/>
777                       </imageobject>
778 </inlinemediaobject></link></para></entry>
779             </row>
780           </tbody>
781         </tgroup>
782       </informaltable>
783       <para><link xl:href=""/></para>
784       <para><link xl:href="copyright.html">Copyright</link> © 2011, Oracle and/or its affiliates. All rights reserved.</para>
785     </section>
786   </section>
787 </article>