<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body dir="auto">
Probably using "stat" on each file is slow, since this is getting the file size from each OST object. You could try the "xstat" utility in the lustre-tests RPM (or build it directly) as it will only query the MDS for the requested attributes (owner at minimum).
<div><br>
</div>
<div>Then you could split into per-date directories in a separate phase, if needed, run in parallel.</div>
<div><br>
</div>
<div>I can't suggest anything about the 13M entry directory, but it _should_ be much faster than 1 file per 30s even at that size. I suspect that the script is still doing something bad, since shell and GNU utilities are terrible for doing extra stat/cd/etc
 five times on each file that is accessed, renamed, etc.</div>
<div><br>
</div>
<div>You would be better off to use "find -print" to generate the pathnames and then operate on those, maybe with "xargs -P" and/or run multiple scripts in parallel on chunks of the file?<br>
<br>
<div dir="ltr">Cheers, Andreas</div>
<div dir="ltr"><br>
<blockquote type="cite">On Sep 25, 2023, at 17:34, Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.] <darby.vicker-1@nasa.gov> wrote:<br>
<br>
</blockquote>
</div>
<blockquote type="cite">
<div dir="ltr">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
 <style>@font-face { font-family: "Cambria Math"; }
@font-face { font-family: Calibri; }
@font-face { font-family: "Times New Roman (Body CS)"; }
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif; }
a:link, span.MsoHyperlink { color: blue; text-decoration: underline; }
pre { margin: 0in 0in 0.0001pt; font-size: 10pt; font-family: "Courier New"; }
span.HTMLPreformattedChar { font-family: "Courier New"; }
span.apple-converted-space { }
span.line { }
span.EmailStyle23 { font-family: Calibri, sans-serif; color: windowtext; }
.MsoChpDefault { font-size: 10pt; }
@page WordSection1 { size: 8.5in 11in; margin: 1in; }
div.WordSection1 { page: WordSection1; }</style>
<div class="WordSection1">
<p class="MsoNormal">I’ve been attempting to move these lost+found files into subdirectories by user and date but I’m running into issues. 
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My initial attempt was to loop through each file in .lustre/lost+found, stat the file and then move it to a subdirectory.  However, both the stat and the move command are each taking about 30 seconds.  With 13 million files, this isn’t
 going to work as that would be about 25 years to organize the files. :)  If it makes a difference, the bash script is simple:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">source=/scratch-lustre/.lustre/lost+found/MDT0000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">dest=/scratch-lustre/work<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""># Cd to the source<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">cd $source<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""># Loop through files<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">for file in * ; do<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "file: $file"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "   stat-ing file"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    time read -r user date time <<< $( stat --format "%U %y" $file )<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "   user='$user' date='$date' time='$time'"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    # Build the new destination in the user's directory<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    newdir=$dest/$user/lost+found/$date<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "   newdir=$newdir"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "   checking/making direcotry"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    if [ ! -d $newdir ] ; then<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        time mkdir -p $newdir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        time chown ${user}: $newdir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    fi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    echo "   moving file"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    time mv $file $newdir<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">done<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m pretty sure the time to operate on these files is due to the very large number of files in a single directory.  But confirmation of that would be good.  I say that because I know too many files in a single directory can cause filesystem
 performance issues.  But also, the few files I have moved out of lost+found, I can stat and otherwise operate on very quickly. 
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My next attempt was to move each file into pre-created subdirectories (this eliminates the stat).  But again, this was serial and each move is (unsurprisingly) taking 30 seconds.  “Only” 12.5 years to move the files.  :)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m currently attempting to speed this up by getting the entire file list (all 13e6 files) and moving groups of (10,000) files into a subdirectory at once (i.e. mv file1 file2 … fileN subdir1).  I’m hoping a group move is faster and more
 efficient than moving each file individually.  Seems like it should be.  That attempt is running now and I’m waiting for the first command to complete so I don’t know if this is faster yet or not.  (More accurately, I’ve written this script in perl and I think
 the output is buffered so I’m waiting to the the first output.)  <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Other suggestions welcome if you have ideas how to move these files into subdirectories more efficiently. 
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">lustre-discuss <lustre-discuss-bounces@lists.lustre.org> on behalf of "Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.] via lustre-discuss"
 <lustre-discuss@lists.lustre.org><br>
<b>Reply-To: </b>"Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.]" <darby.vicker-1@nasa.gov><br>
<b>Date: </b>Monday, September 25, 2023 at 8:56 AM<br>
<b>To: </b>Andreas Dilger <adilger@whamcloud.com><br>
<b>Cc: </b>"lustre-discuss@lists.lustre.org" <lustre-discuss@lists.lustre.org><br>
<b>Subject: </b>Re: [lustre-discuss] [BULK] Re: [EXTERNAL] Re: Data recovery with lost MDT data<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Our lfsck finished.  It repair a lot and we have over 13 million files in lost+found to go through.  I'll be writing a script to move these to somewhere accessible by the users and grouped by owner and probably date too (trying not to get
 too many files in a single directory).  Thanks again for the help with this.  <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<pre><span style="font-family:"Calibri",sans-serif">For the benefit of others, this is how we started our lfsck:<br><br></span>[root@hpfs-fsl-mds1 hpfs3-eg3]# lctl set_param printk=+lfsck<o:p></o:p></pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">[root@hpfs-fsl-mds1 hpfs3-eg3]# lctl lfsck_start -M scratch-MDT0000 -o<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Started LFSCK on the device scratch-MDT0000: scrub layout namespace<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">[root@hpfs-fsl-mds1 hpfs3-eg3]#
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It took most of the weekend to run.  Here are the results.  <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<pre><span class="line">[root@hpfs-fsl-mds1 ~]# lctl lfsck_query -M scratch-MDT0000 </span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_init: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_scanning-phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_scanning-phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_completed: 1</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_paused: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_crashed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_partial: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_co-failed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_co-stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_co-paused: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_mdts_unknown: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_init: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_scanning-phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_scanning-phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_completed: 22</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_paused: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_crashed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_partial: 2</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_co-failed: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_co-stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_co-paused: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_osts_unknown: 0</span><o:p></o:p></pre>
<pre><span class="line">layout_repaired: 38587653</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_init: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_scanning-phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_scanning-phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_completed: 1</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_paused: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_crashed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_partial: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_co-failed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_co-stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_co-paused: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_mdts_unknown: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_init: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_scanning-phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_scanning-phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_completed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_paused: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_crashed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_partial: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_co-failed: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_co-stopped: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_co-paused: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_osts_unknown: 0</span><o:p></o:p></pre>
<pre><span class="line">namespace_repaired: 1429495</span><o:p></o:p></pre>
<pre><span class="line">[root@hpfs-fsl-mds1 ~]# lctl get_param -n mdd.scratch-MDT0000.lfsck_layout</span><o:p></o:p></pre>
<pre><span class="line">name: lfsck_layout</span><o:p></o:p></pre>
<pre><span class="line">magic: 0xb1732fed</span><o:p></o:p></pre>
<pre><span class="line">version: 2</span><o:p></o:p></pre>
<pre><span class="line">status: completed</span><o:p></o:p></pre>
<pre><span class="line">flags:</span><o:p></o:p></pre>
<pre><span class="line">param: all_targets,orphan</span><o:p></o:p></pre>
<pre><span class="line">last_completed_time: 1695615657</span><o:p></o:p></pre>
<pre><span class="line">time_since_last_completed: 35014 seconds</span><o:p></o:p></pre>
<pre><span class="line">latest_start_time: 1695335260</span><o:p></o:p></pre>
<pre><span class="line">time_since_latest_start: 315411 seconds</span><o:p></o:p></pre>
<pre><span class="line">last_checkpoint_time: 1695615657</span><o:p></o:p></pre>
<pre><span class="line">time_since_last_checkpoint: 35014 seconds</span><o:p></o:p></pre>
<pre><span class="line">latest_start_position: 15</span><o:p></o:p></pre>
<pre><span class="line">last_checkpoint_position: 1015668480</span><o:p></o:p></pre>
<pre><span class="line">first_failure_position: 0</span><o:p></o:p></pre>
<pre><span class="line">success_count: 2</span><o:p></o:p></pre>
<pre><span class="line">repaired_dangling: 22199282</span><o:p></o:p></pre>
<pre><span class="line">repaired_unmatched_pair: 0</span><o:p></o:p></pre>
<pre><span class="line">repaired_multiple_referenced: 0</span><o:p></o:p></pre>
<pre><span class="line">repaired_orphan: 13489715</span><o:p></o:p></pre>
<pre><span class="line">repaired_inconsistent_owner: 2898656</span><o:p></o:p></pre>
<pre><span class="line">repaired_others: 0</span><o:p></o:p></pre>
<pre><span class="line">skipped: 0</span><o:p></o:p></pre>
<pre><span class="line">failed_phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">failed_phase2: 1798679</span><o:p></o:p></pre>
<pre><span class="line">checked_phase1: 369403698</span><o:p></o:p></pre>
<pre><span class="line">checked_phase2: 15</span><o:p></o:p></pre>
<pre><span class="line">run_time_phase1: 82842 seconds</span><o:p></o:p></pre>
<pre><span class="line">run_time_phase2: 0 seconds</span><o:p></o:p></pre>
<pre><span class="line">average_speed_phase1: 4459 items/sec</span><o:p></o:p></pre>
<pre><span class="line">average_speed_phase2: 15 objs/sec</span><o:p></o:p></pre>
<pre><span class="line">real_time_speed_phase1: N/A</span><o:p></o:p></pre>
<pre><span class="line">real_time_speed_phase2: N/A</span><o:p></o:p></pre>
<pre><span class="line">current_position: N/A</span><o:p></o:p></pre>
<pre><span class="line">[root@hpfs-fsl-mds1 ~]# lctl get_param -n mdd.scratch-MDT0000.lfsck_namespace</span><o:p></o:p></pre>
<pre><span class="line">name: lfsck_namespace</span><o:p></o:p></pre>
<pre><span class="line">magic: 0xa06249ff</span><o:p></o:p></pre>
<pre><span class="line">version: 2</span><o:p></o:p></pre>
<pre><span class="line">status: completed</span><o:p></o:p></pre>
<pre><span class="line">flags:</span><o:p></o:p></pre>
<pre><span class="line">param: all_targets,orphan</span><o:p></o:p></pre>
<pre><span class="line">last_completed_time: 1695419689</span><o:p></o:p></pre>
<pre><span class="line">time_since_last_completed: 231012 seconds</span><o:p></o:p></pre>
<pre><span class="line">latest_start_time: 1695335262</span><o:p></o:p></pre>
<pre><span class="line">time_since_latest_start: 315439 seconds</span><o:p></o:p></pre>
<pre><span class="line">last_checkpoint_time: 1695419689</span><o:p></o:p></pre>
<pre><span class="line">time_since_last_checkpoint: 231012 seconds</span><o:p></o:p></pre>
<pre><span class="line">latest_start_position: 15, N/A, N/A</span><o:p></o:p></pre>
<pre><span class="line">last_checkpoint_position: 1015668480, N/A, N/A</span><o:p></o:p></pre>
<pre><span class="line">first_failure_position: N/A, N/A, N/A</span><o:p></o:p></pre>
<pre><span class="line">checked_phase1: 315743757</span><o:p></o:p></pre>
<pre><span class="line">checked_phase2: 231782</span><o:p></o:p></pre>
<pre><span class="line">updated_phase1: 1429495</span><o:p></o:p></pre>
<pre><span class="line">updated_phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">failed_phase1: 0</span><o:p></o:p></pre>
<pre><span class="line">failed_phase2: 0</span><o:p></o:p></pre>
<pre><span class="line">directories: 15911850</span><o:p></o:p></pre>
<pre><span class="line">dirent_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">linkea_repaired: 1429495</span><o:p></o:p></pre>
<pre><span class="line">nlinks_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">multiple_linked_checked: 1983873</span><o:p></o:p></pre>
<pre><span class="line">multiple_linked_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">unknown_inconsistency: 0</span><o:p></o:p></pre>
<pre><span class="line">unmatched_pairs_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">dangling_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">multiple_referenced_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">bad_file_type_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">lost_dirent_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">local_lost_found_scanned: 0</span><o:p></o:p></pre>
<pre><span class="line">local_lost_found_moved: 0</span><o:p></o:p></pre>
<pre><span class="line">local_lost_found_skipped: 0</span><o:p></o:p></pre>
<pre><span class="line">local_lost_found_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_dirs_scanned: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_dirs_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_dirs_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_dirs_disabled: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_dirs_skipped: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_shards_scanned: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_shards_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_shards_failed: 0</span><o:p></o:p></pre>
<pre><span class="line">striped_shards_skipped: 0</span><o:p></o:p></pre>
<pre><span class="line">name_hash_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">linkea_overflow_cleared: 0</span><o:p></o:p></pre>
<pre><span class="line">agent_entries_repaired: 0</span><o:p></o:p></pre>
<pre><span class="line">success_count: 2</span><o:p></o:p></pre>
<pre><span class="line">run_time_phase1: 82885 seconds</span><o:p></o:p></pre>
<pre><span class="line">run_time_phase2: 1542 seconds</span><o:p></o:p></pre>
<pre><span class="line">average_speed_phase1: 3809 items/sec</span><o:p></o:p></pre>
<pre><span class="line">average_speed_phase2: 150 objs/sec</span><o:p></o:p></pre>
<pre><span class="line">average_speed_total: 3742 items/sec</span><o:p></o:p></pre>
<pre><span class="line">real_time_speed_phase1: N/A</span><o:p></o:p></pre>
<pre><span class="line">real_time_speed_phase2: N/A</span><o:p></o:p></pre>
<pre><span class="line">current_position: N/A</span><o:p></o:p></pre>
<pre><span class="line">[root@hpfs-fsl-mds1 ~]# </span><o:p></o:p></pre>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And on a client, the resulting lost+found directory:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<pre><span class="line">[root@hpfs-fsl-lmon0 MDT0000]# pwd</span><o:p></o:p></pre>
<pre><span class="line">/scratch-lustre/.lustre/lost+found/MDT0000</span><o:p></o:p></pre>
<pre><span class="line">[root@hpfs-fsl-lmon0 MDT0000]# time \ls | wc -l</span><o:p></o:p></pre>
<pre><span class="line">13063930</span><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><span class="line">real    15m20.604s</span><o:p></o:p></pre>
<pre><span class="line">user    2m38.186s</span><o:p></o:p></pre>
<pre><span class="line">sys     0m4.116s</span><o:p></o:p></pre>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[root@hpfs-fsl-lmon0 MDT0000]# \ls | head</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20000bdbe:0x1eae1:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20000bdeb:0x12c3e:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f801:0x296f:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f801:0x57:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f801:0x58:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f805:0x1000:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f805:0x100:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f805:0x1001:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f805:0x1002:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[0x20001f805:0x1003:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[root@hpfs-fsl-lmon0 MDT0000]# ls -l [0x20000bdbe:0x1eae1:0x0]-R-0</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">-r-------- 1 damocles_runner damocles 3162 Sep 24 14:45 [0x20000bdbe:0x1eae1:0x0]-R-0 </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:black">[root@hpfs-fsl-lmon0 MDT0000]#</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">lustre-discuss <lustre-discuss-bounces@lists.lustre.org> on behalf of "Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.] via lustre-discuss"
 <lustre-discuss@lists.lustre.org><br>
<b>Reply-To: </b>"Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.]" <darby.vicker-1@nasa.gov><br>
<b>Date: </b>Friday, September 22, 2023 at 2:49 PM<br>
<b>To: </b>Andreas Dilger <adilger@whamcloud.com><br>
<b>Cc: </b>"lustre-discuss@lists.lustre.org" <lustre-discuss@lists.lustre.org><br>
<b>Subject: </b>[BULK] Re: [lustre-discuss] [EXTERNAL] Re: Data recovery with lost MDT data<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">I’m only showing you the last 10 directories below but there are about 30 or 40 directories with a pretty uniform distribution between 6/20 and now.  If it was a situation where we had been rolled back to 6/20 but directories were starting
 to be updated again, there should be a big gap with no updates.  The rollback (when we deleted the “snapshot”) happened on Monday, 9/18.  We could do another snapshot of the MDT, mount it read only and poke around in there if you think that would help.  Actually,
 our backup process (which is running normally again) is doing just that.  It takes quite a long time to complete so there is opportunity for me to investigate. 
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Andreas Dilger <adilger@whamcloud.com><br>
<b>Date: </b>Friday, September 22, 2023 at 1:36 AM<br>
<b>To: </b>"Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.]" <darby.vicker-1@nasa.gov><br>
<b>Cc: </b>"lustre-discuss@lists.lustre.org" <lustre-discuss@lists.lustre.org><br>
<b>Subject: </b>Re: [EXTERNAL] Re: [lustre-discuss] Data recovery with lost MDT data<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" align="left" style="border:solid black 1.5pt">
<tbody>
<tr>
<td width="100%" style="width:100.0%;border:none;background:#FFEB9C;padding:3.75pt 3.75pt 3.75pt 3.75pt">
<p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">
<b><span style="font-size:10.0pt;color:black">CAUTION:</span></b><span style="color:black">
</span><span style="font-size:10.0pt;color:black">This email originated from outside of NASA.  Please take care when clicking links or opening attachments.  Use the "Report Message" button to report suspicious messages to the NASA SOC.</span><span style="color:black">
</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sep 21, 2023, at 16:06, Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.] <<a href="mailto:darby.vicker-1@nasa.gov">darby.vicker-1@nasa.gov</a>> wrote:<o:p></o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">I knew an lfsck would identify the orphaned objects.  That’s great that it will move those objects to an area we can triage.  With ownership still intact (and I assume time stamps too), I think this will be helpful for at least some of
 the users to recover some of their data.  Thanks Andreas. <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">I do have another question.  Even with the MDT loss, the top level user directories on the file system are still showing current modification times.  I was a little surprised to see this – my expectation was that the most current time would
 be from the snapshot that we accidentally reverted to, 6/20/2023 in this case.  Does this make sense? <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">The timestamps of the directories are only stored on the MDT (unlike regular files which keep of the timestamp on both the MDT and OST).  Is it possible that users (or possibly recovered clients with existing mountpoints) have started to
 access the filesystem in the past few days since it was recovered, or an admin was doing something that would have caused the directories to be modified?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Is it possible you have a newer copy of the MDT than you thought?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Courier New""> </span><o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">[dvicker@dvicker ~]$ ls -lrt /ephemeral/ | tail</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwx------     2 abjuarez               abjuarez             4096 Sep 12 13:24 abjuarez/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwxr-x---     2 ksmith29               ksmith29             4096 Sep 13 15:37 ksmith29/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwxr-xr-x    55 bjjohn10               bjjohn10             4096 Sep 13 16:36 bjjohn10/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwxrwx---     3 cbrownsc               ccp_fast             4096 Sep 14 12:27 cbrownsc/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwx------     3 fgholiza               fgholiza             4096 Sep 18 06:41 fgholiza/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwx------     5 mtfoste2               mtfoste2             4096 Sep 19 11:35 mtfoste2/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwx------     4 abenini                abenini              4096 Sep 19 15:33 abenini/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">  4 drwx------     9 pdetremp               pdetremp             4096 Sep 19 16:49 pdetremp/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">[dvicker@dvicker ~]$</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<div>
<p class="MsoNormal"><b><span style="font-size:12.0pt">From:<span class="apple-converted-space"> </span></span></b><span style="font-size:12.0pt">Andreas Dilger <<a href="mailto:adilger@whamcloud.com"><span style="color:#0563C1">adilger@whamcloud.com</span></a>><br>
<b>Date:<span class="apple-converted-space"> </span></b>Thursday, September 21, 2023 at 2:33 PM<br>
<b>To:<span class="apple-converted-space"> </span></b>"Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.]" <<a href="mailto:darby.vicker-1@nasa.gov"><span style="color:#0563C1">darby.vicker-1@nasa.gov</span></a>><br>
<b>Cc:<span class="apple-converted-space"> </span></b>"<a href="mailto:lustre-discuss@lists.lustre.org"><span style="color:#0563C1">lustre-discuss@lists.lustre.org</span></a>" <<a href="mailto:lustre-discuss@lists.lustre.org"><span style="color:#0563C1">lustre-discuss@lists.lustre.org</span></a>><br>
<b>Subject:<span class="apple-converted-space"> </span></b>[EXTERNAL] Re: [lustre-discuss] Data recovery with lost MDT data<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" align="left" style="border:solid black 1.5pt">
<tbody>
<tr>
<td width="100%" style="width:100.0%;border:none;background:#FFEB9C;padding:3.75pt 3.75pt 3.75pt 3.75pt;background-position:initial initial;background-repeat:initial initial">
<div>
<p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">
<b><span style="font-size:10.0pt;color:black">CAUTION:</span></b><span class="apple-converted-space"><span style="font-size:12.0pt;color:black"> </span></span><span style="font-size:10.0pt;color:black">This email originated from outside of NASA.  Please take
 care when clicking links or opening attachments.  Use the "Report Message" button to report suspicious messages to the NASA SOC.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">In the absence of backups, you could try LFSCK to link all of the orphan OST objects into .lustre/lost+found (see lctl-lfsck_start.8 man page for details).<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">The data is still in the objects, and they should have UID/GID/PRJID assigned (if used) but they have no filenames.  It would be up to you to make e.g. per-user lost+found directories in their home directories
 and move the files where they could access them and see if they want to keep or delete the files.  <span class="apple-converted-space"> </span><o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">How easy/hard this is to do depends on whether the files have any content that can help identify them. <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt">There was a Lustre hackathon project to save the Lustre JobID in a "user.job" xattr on every object, exactly to help identify the provenance of files after the fact (regardless
 of whether there is corruption), but it only just landed to master and will be in 2.16. That is cold comfort, but would help in the future. <o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Cheers, Andreas<o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt">On Sep 20, 2023, at 15:34, Vicker, Darby J. (JSC-EG111)[Jacobs Technology, Inc.] via lustre-discuss <<a href="mailto:lustre-discuss@lists.lustre.org"><span style="color:#0563C1">lustre-discuss@lists.lustre.org</span></a>>
 wrote:<o:p></o:p></span></p>
</blockquote>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal">Hello,<span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">We have recently accidentally deleted some of our MDT data.  I think its gone for good but looking for advice to see if there is any way to recover.  Thoughts appreciated. <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">We run two LFS’s on the same set of hardware.  We didn’t set out to do this, but it kind of evolved.  The original setup was only a single filesystem and was all ZFS – MDT and OST’s.  Eventually, we had some small file workflows that we
 wanted to get better performance on.  To address this, we stood up another filesystem on the same hardware and used a an ldiskfs MDT.  However, since were already using ZFS, under the hood the storage device we build the ldisk MDT on comes from ZFS.  That
 gets presented to the OS as /dev/zd0.  We do a nightly backup of the MDT by cloning the ZFS dataset (this creates /dev/zd16, for whatever reason), snapshot the clone, mount that as ldiskfs, tar up the data and then destroy the snapshot and clone.  Well, occasionally
 this process gets interrupted, leaving the ZFS snapshot and clone hanging around.  This is where things go south.  Something happens that swaps the clone with the primary dataset.  ZFS says you’re working with the primary but its really the clone, and via
 versa.  This happened about a year ago and we caught it, were able to “zfs promote” to swap them back and move on.  More details on the ZFS and this mailing list here. <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><a href="https://zfsonlinux.topicbox.com/groups/zfs-discuss/Tcb8a3ef663db0031-M5a79e71768b20b2389efc4a4"><span style="color:#0563C1">https://zfsonlinux.topicbox.com/groups/zfs-discuss/Tcb8a3ef663db0031-M5a79e71768b20b2389efc4a4</span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><a href="http://lists.lustre.org/pipermail/lustre-discuss-lustre.org/2022-June/018154.html"><span style="color:#0563C1">http://lists.lustre.org/pipermail/lustre-discuss-lustre.org/2022-June/018154.html</span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">It happened again earlier this week but we didn’t remember to check this and, in an effort to get the backups going again, destroyed what we thought were the snapshot and clone.  In reality, we destroyed the primary dataset.  Even more
 unfortunately, the stale “snapshot” was about 3 months old.  This stale snapshot was also preventing our MDT backups from running so we don’t have those to restore from either.  (I know, we need better monitoring and alerting on this, we learned that lesson
 the hard way.  We had it in place after the June 2022 incident, it just wasn’t working properly.)  So at the end of the day, the data lives on the OST’s we just can’t access it due to the lost metadata.  Is there any chance at data recovery.  I don’t think
 so but want to explore any options. <span class="apple-converted-space"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">Darby<span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"> <span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">_______________________________________________<br>
lustre-discuss mailing list<br>
<a href="mailto:lustre-discuss@lists.lustre.org"><span style="color:#0563C1">lustre-discuss@lists.lustre.org</span></a><br>
<a href="http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org"><span style="color:#0563C1">http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org</span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Cheers, Andreas<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">--<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Andreas Dilger<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Lustre Principal Architect<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Whamcloud<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
</body>
</html>