1 <?xml version='1.0' encoding='utf-8'?>
2 <chapter xmlns="http://docbook.org/ns/docbook"
3 xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US"
4 xml:id="troubleshootingrecovery">
5 <title xml:id="troubleshootingrecovery.title">Troubleshooting
7 <para>This chapter describes what to do if something goes wrong during
8 recovery. It describes:</para>
12 <xref linkend="dbdoclet.50438225_71141" />
17 <xref linkend="dbdoclet.50438225_37365" />
22 <xref linkend="dbdoclet.50438225_12316" />
27 <xref linkend="dbdoclet.lfsckadmin" />
31 <section xml:id="dbdoclet.50438225_71141">
34 <primary>recovery</primary>
35 <secondary>corruption of backing ldiskfs file system</secondary>
36 </indexterm>Recovering from Errors or Corruption on a Backing ldiskfs File
38 <para>When an OSS, MDS, or MGS server crash occurs, it is not necessary to
39 run e2fsck on the file system.
40 <literal>ldiskfs</literal> journaling ensures that the file system remains
41 consistent over a system crash. The backing file systems are never accessed
42 directly from the client, so client crashes are not relevant for server
43 file system consistency.</para>
44 <para>The only time it is REQUIRED that
45 <literal>e2fsck</literal> be run on a device is when an event causes
46 problems that ldiskfs journaling is unable to handle, such as a hardware
47 device failure or I/O error. If the ldiskfs kernel code detects corruption
48 on the disk, it mounts the file system as read-only to prevent further
49 corruption, but still allows read access to the device. This appears as
51 <literal>EROFS</literal>) in the syslogs on the server, e.g.:</para>
52 <screen>Dec 29 14:11:32 mookie kernel: LDISKFS-fs error (device sdz):
53 ldiskfs_lookup: unlinked inode 5384166 in dir #145170469
54 Dec 29 14:11:32 mookie kernel: Remounting filesystem read-only </screen>
55 <para>In such a situation, it is normally required that e2fsck only be run
56 on the bad device before placing the device back into service.</para>
57 <para>In the vast majority of cases, the Lustre software can cope with any
58 inconsistencies found on the disk and between other devices in the file
61 <para>The legacy offline-LFSCK tool included with e2fsprogs is rarely
62 required for Lustre file system operation. offline-LFSCK is not to be
63 confused with LFSCK tool, which is part of Lustre and provides online
64 consistency checking.</para>
66 <para>For problem analysis, it is strongly recommended that
67 <literal>e2fsck</literal> be run under a logger, like script, to record all
68 of the output and changes that are made to the file system in case this
69 information is needed later.</para>
70 <para>If time permits, it is also a good idea to first run
71 <literal>e2fsck</literal> in non-fixing mode (-n option) to assess the type
72 and extent of damage to the file system. The drawback is that in this mode,
73 <literal>e2fsck</literal> does not recover the file system journal, so there
74 may appear to be file system corruption when none really exists.</para>
75 <para>To address concern about whether corruption is real or only due to
76 the journal not being replayed, you can briefly mount and unmount the
77 <literal>ldiskfs</literal> file system directly on the node with the Lustre
78 file system stopped, using a command similar to:</para>
79 <screen>mount -t ldiskfs /dev/{ostdev} /mnt/ost; umount /mnt/ost</screen>
80 <para>This causes the journal to be recovered.</para>
82 <literal>e2fsck</literal> utility works well when fixing file system
83 corruption (better than similar file system recovery tools and a primary
85 <literal>ldiskfs</literal> was chosen over other file systems). However, it
86 is often useful to identify the type of damage that has occurred so an
87 <literal>ldiskfs</literal> expert can make intelligent decisions about what
88 needs fixing, in place of
89 <literal>e2fsck</literal>.</para>
90 <screen>root# {stop lustre services for this device, if running}
91 root# script /tmp/e2fsck.sda
92 Script started, file is /tmp/e2fsck.sda
93 root# mount -t ldiskfs /dev/sda /mnt/ost
95 root# e2fsck -fn /dev/sda # don't fix file system, just check for corruption
99 root# e2fsck -fp /dev/sda # fix errors with prudent answers (usually <literal>yes</literal>)</screen>
101 <section xml:id="dbdoclet.50438225_37365">
104 <primary>recovery</primary>
105 <secondary>corruption of Lustre file system</secondary>
106 </indexterm>Recovering from Corruption in the Lustre File System</title>
107 <para>In cases where an ldiskfs MDT or OST becomes corrupt, you need to run
108 e2fsck to correct the local filesystem consistency, then use
109 <literal>LFSCK</literal> to run a distributed check on the file system to
110 resolve any inconsistencies between the MDTs and OSTs, or among MDTs.</para>
113 <para>Stop the Lustre file system.</para>
117 <literal>e2fsck -f</literal> on the individual MDT/OST that had
118 problems to fix any local file system damage.</para>
119 <para>We recommend running
120 <literal>e2fsck</literal> under script, to create a log of changes made
121 to the file system in case it is needed later. After
122 <literal>e2fsck</literal> is run, bring up the file system, if
123 necessary, to reduce the outage window.</para>
126 <section xml:id="dbdoclet.50438225_13916">
129 <primary>recovery</primary>
130 <secondary>orphaned objects</secondary>
131 </indexterm>Working with Orphaned Objects</title>
132 <para>The simplest problem to resolve is that of orphaned objects. When
133 the LFSCK layout check is run, these objects are linked to new files and
135 <literal>.lustre/lost+found/MDT<replaceable>xxxx</replaceable></literal>
136 in the Lustre file system
137 (where MDTxxxx is the index of the MDT on which the orphan was found),
138 where they can be examined and saved or deleted as necessary.</para>
139 <para condition='l27'>With Lustre version 2.7 and later, LFSCK will
140 identify and process orphan objects found on MDTs as well.</para>
143 <section xml:id="dbdoclet.50438225_12316">
146 <primary>recovery</primary>
147 <secondary>unavailable OST</secondary>
148 </indexterm>Recovering from an Unavailable OST</title>
149 <para>One problem encountered in a Lustre file system environment is when
150 an OST becomes unavailable due to a network partition, OSS node crash, etc.
151 When this happens, the OST's clients pause and wait for the OST to become
152 available again, either on the primary OSS or a failover OSS. When the OST
153 comes back online, the Lustre file system starts a recovery process to
154 enable clients to reconnect to the OST. Lustre servers put a limit on the
155 time they will wait in recovery for clients to reconnect.</para>
156 <para>During recovery, clients reconnect and replay their requests
157 serially, in the same order they were done originally. Until a client
158 receives a confirmation that a given transaction has been written to stable
159 storage, the client holds on to the transaction, in case it needs to be
160 replayed. Periodically, a progress message prints to the log, stating
161 how_many/expected clients have reconnected. If the recovery is aborted,
162 this log shows how many clients managed to reconnect. When all clients have
163 completed recovery, or if the recovery timeout is reached, the recovery
164 period ends and the OST resumes normal request processing.</para>
165 <para>If some clients fail to replay their requests during the recovery
166 period, this will not stop the recovery from completing. You may have a
167 situation where the OST recovers, but some clients are not able to
168 participate in recovery (e.g. network problems or client failure), so they
169 are evicted and their requests are not replayed. This would result in any
170 operations on the evicted clients failing, including in-progress writes,
171 which would cause cached writes to be lost. This is a normal outcome; the
172 recovery cannot wait indefinitely, or the file system would be hung any
173 time a client failed. The lost transactions are an unfortunate result of
174 the recovery process.</para>
176 <para>The failure of client recovery does not indicate or lead to
177 filesystem corruption. This is a normal event that is handled by the MDT
178 and OST, and should not result in any inconsistencies between
182 <para>The version-based recovery (VBR) feature enables a failed client to
183 be ''skipped'', so remaining clients can replay their requests, resulting
184 in a more successful recovery from a downed OST. For more information
185 about the VBR feature, see
186 <xref linkend="lustrerecovery" />(Version-based Recovery).</para>
189 <section xml:id="dbdoclet.lfsckadmin" condition='l23'>
192 <primary>recovery</primary>
193 <secondary>oiscrub</secondary>
196 <primary>recovery</primary>
197 <secondary>LFSCK</secondary>
198 </indexterm>Checking the file system with LFSCK</title>
199 <para condition='l23'>LFSCK is an administrative tool introduced in Lustre
200 software release 2.3 for checking and repair of the attributes specific to a
201 mounted Lustre file system. It is similar in concept to an offline fsck repair
202 tool for a local filesystem, but LFSCK is implemented to run as part of the
203 Lustre file system while the file system is mounted and in use. This allows
204 consistency of checking and repair by the Lustre software without unnecessary
205 downtime, and can be run on the largest Lustre file systems with negligible
206 disruption to normal operations.</para>
207 <para condition='l23'>Since Lustre software release 2.3, LFSCK can verify
208 and repair the Object Index (OI) table that is used internally to map
209 Lustre File Identifiers (FIDs) to MDT internal ldiskfs inode numbers, in
210 an internal table called the OI Table. An OI Scrub traverses this the IO
211 Table and makes corrections where necessary. An OI Scrub is required after
212 restoring from a file-level MDT backup (
213 <xref linkend="dbdoclet.50438207_71633" />), or in case the OI Table is
214 otherwise corrupted. Later phases of LFSCK will add further checks to the
215 Lustre distributed file system state.</para>
216 <para condition='l24'>In Lustre software release 2.4, LFSCK namespace
217 scanning can verify and repair the directory FID-in-Dirent and LinkEA
219 <para condition='l26'>In Lustre software release 2.6, LFSCK layout scanning
220 can verify and repair MDT-OST file layout inconsistencies. File layout
221 inconsistencies between MDT-objects and OST-objects that are checked and
222 corrected include dangling reference, unreferenced OST-objects, mismatched
223 references and multiple references.</para>
224 <para condition='l27'>In Lustre software release 2.7, LFSCK layout scanning
225 is enhanced to support verify and repair inconsistencies between multiple
227 <para>Control and monitoring of LFSCK is through LFSCK and the
228 <literal>/proc</literal> file system interfaces. LFSCK supports three types
229 of interface: switch interface, status interface, and adjustment interface.
230 These interfaces are detailed below.</para>
232 <title>LFSCK switch interface</title>
234 <title>Manually Starting LFSCK</title>
236 <title>Description</title>
237 <para>LFSCK can be started after the MDT is mounted using the
238 <literal>lctl lfsck_start</literal> command.</para>
242 <screen>lctl lfsck_start <-M | --device <replaceable>[MDT,OST]_device</replaceable>> \
244 [-c | --create_ostobj <replaceable>on | off</replaceable>] \
245 [-C | --create_mdtobj <replaceable>on | off</replaceable>] \
246 [-e | --error <replaceable>{continue | abort}</replaceable>] \
248 [-n | --dryrun <replaceable>on | off</replaceable>] \
251 [-s | --speed <replaceable>ops_per_sec_limit</replaceable>] \
252 [-t | --type <replaceable>check_type[,check_type...]</replaceable>] \
253 [-w | --window_size <replaceable>size</replaceable>]</screen>
256 <title>Options</title>
258 <literal>lfsck_start</literal> options are listed and described below.
259 For a complete list of available options, type
260 <literal>lctl lfsck_start -h</literal>.</para>
261 <informaltable frame="all">
263 <colspec colname="c1" colwidth="3*" />
264 <colspec colname="c2" colwidth="7*" />
269 <emphasis role="bold">Option</emphasis>
274 <emphasis role="bold">Description</emphasis>
283 <literal>-M | --device</literal>
287 <para>The MDT or OST target to start LFSCK on.</para>
293 <literal>-A | --all</literal>
297 <para condition='l26'>Start LFSCK on all
298 targets on all servers simultaneously.
299 By default, both layout and namespace
300 consistency checking and repair are started.</para>
306 <literal>-c | --create_ostobj</literal>
310 <para condition='l26'>Create the lost OST-object for
312 <literal>off</literal>(default) or
313 <literal>on</literal>. If not specified, then the default
314 behaviour is to keep the dangling LOV EA there without
315 creating the lost OST-object.</para>
321 <literal>-C | --create_mdtobj</literal>
325 <para condition='l27'>Create the lost MDT-object for
327 <literal>off</literal>(default) or
328 <literal>on</literal>. If not specified, then the default
329 behaviour is to keep the dangling name entry there without
330 creating the lost MDT-object.</para>
336 <literal>-e | --error</literal>
341 <literal>continue</literal>(default) or
342 <literal>abort</literal>. Specify whether the LFSCK will
343 stop or not if fails to repair something. If it is not
344 specified, the saved value (when resuming from checkpoint)
345 will be used if present. This option cannot be changed
346 while LFSCK is running.</para>
352 <literal>-h | --help</literal>
356 <para>Operating help information.</para>
362 <literal>-n | --dryrun</literal>
366 <para>Perform a trial without making any changes.
367 <literal>off</literal>(default) or
368 <literal>on</literal>.</para>
374 <literal>-o | --orphan</literal>
378 <para condition='l26'>Repair orphan OST-objects for layout
385 <literal>-r | --reset</literal>
389 <para>Reset the start position for the object iteration to
390 the beginning for the specified MDT. By default the
391 iterator will resume scanning from the last checkpoint
392 (saved periodically by LFSCK) provided it is
399 <literal>-s | --speed</literal>
403 <para>Set the upper speed limit of LFSCK processing in
404 objects per second. If it is not specified, the saved value
405 (when resuming from checkpoint) or default value of 0 (0 =
406 run as fast as possible) is used. Speed can be adjusted
407 while LFSCK is running with the adjustment
414 <literal>-t | --type</literal>
418 <para>The type of checking/repairing that should be
419 performed. The new LFSCK framework provides a single
420 interface for a variety of system consistency
421 checking/repairing operations including:</para>
422 <para>Without a specified option, the LFSCK component(s)
423 which ran last time and did not finish or the component(s)
424 corresponding to some known system inconsistency, will be
425 started. Anytime the LFSCK is triggered, the OI scrub will
426 run automatically, so there is no need to specify
427 OI_scrub in that case.</para>
428 <para condition='l24'>
429 <literal>namespace</literal>: check and repair
430 FID-in-Dirent and LinkEA consistency.</para>
431 <para condition='l27'> Lustre-2.7 enhances
432 namespace consistency verification under DNE mode.</para>
433 <para condition='l26'>
434 <literal>layout</literal>: check and repair MDT-OST
435 inconsistency.</para>
441 <literal>-w | --window_size</literal>
445 <para condition='l26'>The window size for the async request
446 pipeline. The LFSCK async request pipeline's input/output
447 may have quite different processing speeds, and there may
448 be too many requests in the pipeline as to cause abnormal
449 memory/network pressure. If not specified, then the default
450 window size for the async request pipeline is 1024.</para>
459 <title>Manually Stopping LFSCK</title>
461 <title>Description</title>
462 <para>To stop LFSCK when the MDT is mounted, use the
463 <literal>lctl lfsck_stop</literal> command.</para>
467 <screen>lctl lfsck_stop <-M | --device <replaceable>[MDT,OST]_device</replaceable>> \
469 [-h | --help]</screen>
472 <title>Options</title>
474 <literal>lfsck_stop</literal> options are listed and described below.
475 For a complete list of available options, type
476 <literal>lctl lfsck_stop -h</literal>.</para>
477 <informaltable frame="all">
479 <colspec colname="c1" colwidth="3*" />
480 <colspec colname="c2" colwidth="7*" />
485 <emphasis role="bold">Option</emphasis>
490 <emphasis role="bold">Description</emphasis>
499 <literal>-M | --device</literal>
503 <para>The MDT or OST target to stop LFSCK on.</para>
509 <literal>-A | --all</literal>
513 <para>Stop LFSCK on all targets on all servers
514 simultaneously.</para>
520 <literal>-h | --help</literal>
524 <para>Operating help information.</para>
534 <title>LFSCK status interface</title>
536 <title>LFSCK status of OI Scrub via
537 <literal>procfs</literal></title>
539 <title>Description</title>
540 <para>For each LFSCK component there is a dedicated procfs interface
541 to trace the corresponding LFSCK component status. For OI Scrub, the
542 interface is the OSD layer procfs interface, named
543 <literal>oi_scrub</literal>. To display OI Scrub status, the standard
544 <literal>lctl get_param</literal> command is used as shown in the
549 <screen>lctl get_param -n osd-ldiskfs.<replaceable>FSNAME</replaceable>-[<replaceable>MDT_target|OST_target</replaceable>].oi_scrub</screen>
552 <title>Output</title>
553 <informaltable frame="all">
555 <colspec colname="c1" colwidth="3*" />
556 <colspec colname="c2" colwidth="7*" />
561 <emphasis role="bold">Information</emphasis>
566 <emphasis role="bold">Detail</emphasis>
574 <para>General Information</para>
579 <para>Name: OI_scrub.</para>
582 <para>OI scrub magic id (an identifier unique to OI
586 <para>OI files count.</para>
589 <para>Status: one of the status -
590 <literal>init</literal>,
591 <literal>scanning</literal>,
592 <literal>completed</literal>,
593 <literal>failed</literal>,
594 <literal>stopped</literal>,
595 <literal>paused</literal>, or
596 <literal>crashed</literal>.</para>
599 <para>Flags: including -
600 <literal>recreated</literal>(OI file(s) is/are
602 <literal>inconsistent</literal>(restored from
604 <literal>auto</literal>(triggered by non-UI mechanism),
606 <literal>upgrade</literal>(from Lustre software release
607 1.8 IGIF format.)</para>
610 <para>Parameters: OI scrub parameters, like
611 <literal>failout</literal>.</para>
614 <para>Time Since Last Completed.</para>
617 <para>Time Since Latest Start.</para>
620 <para>Time Since Last Checkpoint.</para>
623 <para>Latest Start Position: the position for the
624 latest scrub started from.</para>
627 <para>Last Checkpoint Position.</para>
630 <para>First Failure Position: the position for the
631 first object to be repaired.</para>
634 <para>Current Position.</para>
641 <para>Statistics</para>
647 <literal>Checked</literal> total number of objects
652 <literal>Updated</literal> total number of objects
657 <literal>Failed</literal> total number of objects that
658 failed to be repaired.</para>
662 <literal>No Scrub</literal> total number of objects
664 <literal>LDISKFS_STATE_LUSTRE_NOSCRUB and
665 skipped</literal>.</para>
669 <literal>IGIF</literal> total number of objects IGIF
674 <literal>Prior Updated</literal> how many objects have
675 been repaired which are triggered by parallel
680 <literal>Success Count</literal> total number of
681 completed OI_scrub runs on the target.</para>
685 <literal>Run Time</literal> how long the scrub has run,
686 tally from the time of scanning from the beginning of
687 the specified MDT target, not include the
688 paused/failure time among checkpoints.</para>
692 <literal>Average Speed</literal> calculated by dividing
693 <literal>Checked</literal> by
694 <literal>run_time</literal>.</para>
698 <literal>Real-Time Speed</literal> the speed since last
699 checkpoint if the OI_scrub is running.</para>
703 <literal>Scanned</literal> total number of objects under
704 /lost+found that have been scanned.</para>
708 <literal>Repaired</literal> total number of objects
709 under /lost+found that have been recovered.</para>
713 <literal>Failed</literal> total number of objects under
714 /lost+found failed to be scanned or failed to be
725 <section condition='l24'>
726 <title>LFSCK status of namespace via
727 <literal>procfs</literal></title>
729 <title>Description</title>
731 <literal>namespace</literal> component is responsible for checks
732 described in <xref linkend="dbdoclet.lfsckadmin" />. The
733 <literal>procfs</literal> interface for this component is in the
735 <literal>lfsck_namespace</literal>. To show the status of this
737 <literal>lctl get_param</literal> should be used as described in the
742 <screen>lctl get_param -n mdd. <replaceable>FSNAME</replaceable>-<replaceable>MDT_target</replaceable>.lfsck_namespace</screen>
745 <title>Output</title>
746 <informaltable frame="all">
748 <colspec colname="c1" colwidth="3*" />
749 <colspec colname="c2" colwidth="7*" />
754 <emphasis role="bold">Information</emphasis>
759 <emphasis role="bold">Detail</emphasis>
767 <para>General Information</para>
773 <literal>lfsck_namespace</literal></para>
776 <para>LFSCK namespace magic.</para>
779 <para>LFSCK namespace version..</para>
782 <para>Status: one of the status -
783 <literal>init</literal>,
784 <literal>scanning-phase1</literal>,
785 <literal>scanning-phase2</literal>,
786 <literal>completed</literal>,
787 <literal>failed</literal>,
788 <literal>stopped</literal>,
789 <literal>paused</literal>,
790 <literal>partial</literal>,
791 <literal>co-failed</literal>,
792 <literal>co-stopped</literal> or
793 <literal>co-paused</literal>.</para>
796 <para>Flags: including -
797 <literal>scanned-once</literal>(the first cycle
798 scanning has been completed),
799 <literal>inconsistent</literal>(one or more
800 inconsistent FID-in-Dirent or LinkEA entries that have
802 <literal>upgrade</literal>(from Lustre software release
803 1.8 IGIF format.)</para>
806 <para>Parameters: including
807 <literal>dryrun</literal>,
808 <literal>all_targets</literal>,
809 <literal>failout</literal>,
810 <literal>broadcast</literal>,
811 <literal>orphan</literal>,
812 <literal>create_ostobj</literal> and
813 <literal>create_mdtobj</literal>.</para>
816 <para>Time Since Last Completed.</para>
819 <para>Time Since Latest Start.</para>
822 <para>Time Since Last Checkpoint.</para>
825 <para>Latest Start Position: the position the checking
826 began most recently.</para>
829 <para>Last Checkpoint Position.</para>
832 <para>First Failure Position: the position for the
833 first object to be repaired.</para>
836 <para>Current Position.</para>
843 <para>Statistics</para>
849 <literal>Checked Phase1</literal> total number of
850 objects scanned during
851 <literal>scanning-phase1</literal>.</para>
855 <literal>Checked Phase2</literal> total number of
856 objects scanned during
857 <literal>scanning-phase2</literal>.</para>
861 <literal>Updated Phase1</literal> total number of
862 objects repaired during
863 <literal>scanning-phase1</literal>.</para>
867 <literal>Updated Phase2</literal> total number of
868 objects repaired during
869 <literal>scanning-phase2</literal>.</para>
873 <literal>Failed Phase1</literal> total number of objets
874 that failed to be repaired during
875 <literal>scanning-phase1</literal>.</para>
879 <literal>Failed Phase2</literal> total number of objets
880 that failed to be repaired during
881 <literal>scanning-phase2</literal>.</para>
885 <literal>directories</literal> total number of
886 directories scanned.</para>
890 <literal>multiple_linked_checked</literal> total number
891 of multiple-linked objects that have been
896 <literal>dirent_repaired</literal> total number of
897 FID-in-dirent entries that have been repaired.</para>
901 <literal>linkea_repaired</literal> total number of
902 linkEA entries that have been repaired.</para>
906 <literal>unknown_inconsistency</literal> total number of
907 undefined inconsistencies found in
908 scanning-phase2.</para>
912 <literal>unmatched_pairs_repaired</literal> total number
913 of unmatched pairs that have been repaired.</para>
917 <literal>dangling_repaired</literal> total number of
918 dangling name entries that have been
919 found/repaired.</para>
923 <literal>multi_referenced_repaired</literal> total
924 number of multiple referenced name entries that have
925 been found/repaired.</para>
929 <literal>bad_file_type_repaired</literal> total number
930 of name entries with bad file type that have been
935 <literal>lost_dirent_repaired</literal> total number of
936 lost name entries that have been re-inserted.</para>
940 <literal>striped_dirs_scanned</literal> total number of
941 striped directories (master) that have been
946 <literal>striped_dirs_repaired</literal> total number of
947 striped directories (master) that have been
952 <literal>striped_dirs_failed</literal> total number of
953 striped directories (master) that have failed to be
958 <literal>striped_dirs_disabled</literal> total number of
959 striped directories (master) that have been
964 <literal>striped_dirs_skipped</literal> total number of
965 striped directories (master) that have been skipped
966 (for shards verification) because of lost master LMV
971 <literal>striped_shards_scanned</literal> total number
972 of striped directory shards (slave) that have been
977 <literal>striped_shards_repaired</literal> total number
978 of striped directory shards (slave) that have been
983 <literal>striped_shards_failed</literal> total number of
984 striped directory shards (slave) that have failed to be
989 <literal>striped_shards_skipped</literal> total number
990 of striped directory shards (slave) that have been
991 skipped (for name hash verification) because LFSCK does
992 not know whether the slave LMV EA is valid or
997 <literal>name_hash_repaired</literal> total number of
998 name entries under striped directory with bad name hash
999 that have been repaired.</para>
1003 <literal>nlinks_repaired</literal> total number of
1004 objects with nlink fixed.</para>
1008 <literal>mul_linked_repaired</literal> total number of
1009 multiple-linked objects that have been repaired.</para>
1013 <literal>local_lost_found_scanned</literal> total number
1014 of objects under /lost+found that have been
1019 <literal>local_lost_found_moved</literal> total number
1020 of objects under /lost+found that have been moved to
1021 namespace visible directory.</para>
1025 <literal>local_lost_found_skipped</literal> total number
1026 of objects under /lost+found that have been
1031 <literal>local_lost_found_failed</literal> total number
1032 of objects under /lost+found that have failed to be
1037 <literal>Success Count</literal> the total number of
1038 completed LFSCK runs on the target.</para>
1042 <literal>Run Time Phase1</literal> the duration of the
1044 <literal>scanning-phase1</literal>. Excluding the time
1045 spent paused between checkpoints.</para>
1049 <literal>Run Time Phase2</literal> the duration of the
1051 <literal>scanning-phase2</literal>. Excluding the time
1052 spent paused between checkpoints.</para>
1056 <literal>Average Speed Phase1</literal> calculated by
1058 <literal>checked_phase1</literal> by
1059 <literal>run_time_phase1</literal>.</para>
1063 <literal>Average Speed Phase2</literal> calculated by
1065 <literal>checked_phase2</literal> by
1066 <literal>run_time_phase1</literal>.</para>
1070 <literal>Real-Time Speed Phase1</literal> the speed
1071 since the last checkpoint if the LFSCK is running
1072 <literal>scanning-phase1</literal>.</para>
1076 <literal>Real-Time Speed Phase2</literal> the speed
1077 since the last checkpoint if the LFSCK is running
1078 <literal>scanning-phase2</literal>.</para>
1088 <section condition='l26'>
1089 <title>LFSCK status of layout via
1090 <literal>procfs</literal></title>
1092 <title>Description</title>
1094 <literal>layout</literal> component is responsible for checking and
1095 repairing MDT-OST inconsistency. The
1096 <literal>procfs</literal> interface for this component is in the MDD
1098 <literal>lfsck_layout</literal>, and in the OBD layer, named
1099 <literal>lfsck_layout</literal>. To show the status of this component
1100 <literal>lctl get_param</literal> should be used as described in the
1104 <title>Usage</title>
1105 <screen>lctl get_param -n mdd.
1106 <replaceable>FSNAME</replaceable>-
1107 <replaceable>MDT_target</replaceable>.lfsck_layout
1108 lctl get_param -n obdfilter.
1109 <replaceable>FSNAME</replaceable>-
1110 <replaceable>OST_target</replaceable>.lfsck_layout</screen>
1113 <title>Output</title>
1114 <informaltable frame="all">
1116 <colspec colname="c1" colwidth="3*" />
1117 <colspec colname="c2" colwidth="7*" />
1122 <emphasis role="bold">Information</emphasis>
1127 <emphasis role="bold">Detail</emphasis>
1135 <para>General Information</para>
1141 <literal>lfsck_layout</literal></para>
1144 <para>LFSCK namespace magic.</para>
1147 <para>LFSCK namespace version..</para>
1150 <para>Status: one of the status -
1151 <literal>init</literal>,
1152 <literal>scanning-phase1</literal>,
1153 <literal>scanning-phase2</literal>,
1154 <literal>completed</literal>,
1155 <literal>failed</literal>,
1156 <literal>stopped</literal>,
1157 <literal>paused</literal>,
1158 <literal>crashed</literal>,
1159 <literal>partial</literal>,
1160 <literal>co-failed</literal>,
1161 <literal>co-stopped</literal>, or
1162 <literal>co-paused</literal>.</para>
1165 <para>Flags: including -
1166 <literal>scanned-once</literal>(the first cycle
1167 scanning has been completed),
1168 <literal>inconsistent</literal>(one or more MDT-OST
1169 inconsistencies have been discovered),
1170 <literal>incomplete</literal>(some MDT or OST did not
1171 participate in the LFSCK or failed to finish the LFSCK)
1173 <literal>crashed_lastid</literal>(the lastid files on
1174 the OST crashed and needs to be rebuilt).</para>
1177 <para>Parameters: including
1178 <literal>dryrun</literal>,
1179 <literal>all_targets</literal> and
1180 <literal>failout</literal>.</para>
1183 <para>Time Since Last Completed.</para>
1186 <para>Time Since Latest Start.</para>
1189 <para>Time Since Last Checkpoint.</para>
1192 <para>Latest Start Position: the position the checking
1193 began most recently.</para>
1196 <para>Last Checkpoint Position.</para>
1199 <para>First Failure Position: the position for the
1200 first object to be repaired.</para>
1203 <para>Current Position.</para>
1210 <para>Statistics</para>
1216 <literal>Success Count:</literal> the total number of
1217 completed LFSCK runs on the target.</para>
1221 <literal>Repaired Dangling:</literal> total number of
1222 MDT-objects with dangling reference have been repaired
1223 in the scanning-phase1.</para>
1227 <literal>Repaired Unmatched Pairs</literal> total number
1228 of unmatched MDT and OST-object paris have been
1229 repaired in the scanning-phase1</para>
1233 <literal>Repaired Multiple Referenced</literal> total
1234 number of OST-objects with multiple reference have been
1235 repaired in the scanning-phase1.</para>
1239 <literal>Repaired Orphan</literal> total number of
1240 orphan OST-objects have been repaired in the
1241 scanning-phase2.</para>
1245 <literal>Repaired Inconsistent Owner</literal> total
1246 number.of OST-objects with incorrect owner information
1247 have been repaired in the scanning-phase1.</para>
1251 <literal>Repaired Others</literal> total number of.other
1252 inconsistency repaired in the scanning phases.</para>
1256 <literal>Skipped</literal> Number of skipped
1261 <literal>Failed Phase1</literal> total number of objects
1262 that failed to be repaired during
1263 <literal>scanning-phase1</literal>.</para>
1267 <literal>Failed Phase2</literal> total number of objects
1268 that failed to be repaired during
1269 <literal>scanning-phase2</literal>.</para>
1273 <literal>Checked Phase1</literal> total number of
1274 objects scanned during
1275 <literal>scanning-phase1</literal>.</para>
1279 <literal>Checked Phase2</literal> total number of
1280 objects scanned during
1281 <literal>scanning-phase2</literal>.</para>
1285 <literal>Run Time Phase1</literal> the duration of the
1287 <literal>scanning-phase1</literal>. Excluding the time
1288 spent paused between checkpoints.</para>
1292 <literal>Run Time Phase2</literal> the duration of the
1294 <literal>scanning-phase2</literal>. Excluding the time
1295 spent paused between checkpoints.</para>
1299 <literal>Average Speed Phase1</literal> calculated by
1301 <literal>checked_phase1</literal> by
1302 <literal>run_time_phase1</literal>.</para>
1306 <literal>Average Speed Phase2</literal> calculated by
1308 <literal>checked_phase2</literal> by
1309 <literal>run_time_phase1</literal>.</para>
1313 <literal>Real-Time Speed Phase1</literal> the speed
1314 since the last checkpoint if the LFSCK is running
1315 <literal>scanning-phase1</literal>.</para>
1319 <literal>Real-Time Speed Phase2</literal> the speed
1320 since the last checkpoint if the LFSCK is running
1321 <literal>scanning-phase2</literal>.</para>
1333 <title>LFSCK adjustment interface</title>
1334 <section condition='l26'>
1335 <title>Rate control</title>
1337 <title>Description</title>
1338 <para>The LFSCK upper speed limit can be changed using
1339 <literal>lctl set_param</literal> as shown in the usage below.</para>
1342 <title>Usage</title>
1343 <screen>lctl set_param mdd.${FSNAME}-${MDT_target}.lfsck_speed_limit=
1344 <replaceable>N</replaceable>
1345 lctl set_param obdfilter.${FSNAME}-${OST_target}.lfsck_speed_limit=
1346 <replaceable>N</replaceable></screen>
1349 <title>Values</title>
1350 <informaltable frame="all">
1352 <colspec colname="c1" colwidth="3*" />
1353 <colspec colname="c2" colwidth="7*" />
1360 <para>No speed limit (run at maximum speed.)</para>
1365 <para>positive integer</para>
1368 <para>Maximum number of objects to scan per second.</para>
1376 <section xml:id="dbdoclet.lfsck_auto_scrub">
1377 <title>Auto scrub</title>
1379 <title>Description</title>
1381 <literal>auto_scrub</literal> parameter controls whether OI scrub will
1382 be triggered when an inconsistency is detected during OI lookup. It
1383 can be set as described in the usage and values sections
1385 <para>There is also a
1386 <literal>noscrub</literal> mount option (see
1387 <xref linkend="dbdoclet.50438219_12635" />) which can be used to
1388 disable automatic OI scrub upon detection of a file-level backup at
1390 <literal>noscrub</literal> mount option is specified,
1391 <literal>auto_scrub</literal> will also be disabled, so OI scrub will
1392 not be triggered when an OI inconsistency is detected. Auto scrub can
1393 be renabled after the mount using the command shown in the usage.
1394 Manually starting LFSCK after mounting provides finer control over
1395 the starting conditions.</para>
1398 <title>Usage</title>
1399 <screen>lctl set_param osd_ldiskfs.${FSNAME}-${MDT_target}.auto_scrub=<replaceable>N</replaceable></screen>
1401 <replaceable>N</replaceable>is an integer as described below.</para>
1402 <note condition='l25'><para>Lustre software 2.5 and later supports
1403 <literal>-P</literal> option that makes the
1404 <literal>set_param</literal> permanent.</para></note>
1407 <title>Values</title>
1408 <informaltable frame="all">
1410 <colspec colname="c1" colwidth="3*" />
1411 <colspec colname="c2" colwidth="7*" />
1418 <para>Do not start OI Scrub automatically.</para>
1423 <para>positive integer</para>
1426 <para>Automatically start OI Scrub if inconsistency is
1427 detected during OI lookup.</para>