<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:43:21 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-11379] HSM Copytool Performance Improvements</title>
                <link>https://jira.whamcloud.com/browse/LU-11379</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;ol&gt;
	&lt;li&gt;Flatten archive hierarchy to 1 directory. &lt;tt&gt;/arc1/0001/0000/0401/0000/0002/0000/0x200000401:0x1:0x0&lt;/tt&gt; becomes &lt;tt&gt;/arc1/0001/0x200000401:0x1:0x0&lt;/tt&gt;.&lt;/li&gt;
	&lt;li&gt;Remove/deprecate shadow tree handling.&lt;/li&gt;
	&lt;li&gt;Stop storing and loading &lt;tt&gt;_lov&lt;/tt&gt; files. For restore, we are already getting file attributes+striping from the MDT (see &lt;tt&gt;ct_md_getattr()&lt;/tt&gt;). But we only use the stat portion of the lmd.&lt;/li&gt;
	&lt;li&gt;Improve thread handling.&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="53322">LU-11379</key>
            <summary>HSM Copytool Performance Improvements</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="6" iconUrl="https://jira.whamcloud.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="wc-triage">WC Triage</assignee>
                                    <reporter username="jhammond">John Hammond</reporter>
                        <labels>
                            <label>HSM</label>
                    </labels>
                <created>Fri, 14 Sep 2018 19:35:17 +0000</created>
                <updated>Wed, 14 Jul 2021 11:53:53 +0000</updated>
                            <resolved>Wed, 14 Jul 2021 11:53:53 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="233561" author="adilger" created="Fri, 14 Sep 2018 22:40:19 +0000"  >&lt;blockquote&gt;
&lt;p&gt;1. Flatten archive hierarchy to 1 directory. &lt;tt&gt;/arc1/0001/0000/0401/0000/0002/0000/0x200000401:0x1:0x0&lt;/tt&gt; becomes &lt;tt&gt;/arc1/0001/0x200000401:0x1:0x0&lt;/tt&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Presumably the &quot;0001&quot; is based on &lt;tt&gt;OID % 0xffff&lt;/tt&gt;?  Is there a desire to have some temporal locality with objects in the archive, rather than all 65k directories being used continually?&lt;/p&gt;

&lt;p&gt;One drawback of using the same directories forever is that they get relatively large and fragmented in the hash space, and are updated totally randomly on disk.  For MDS-&amp;gt;OST object allocation, I&apos;ve thought about using something like &lt;tt&gt;SEQ&amp;gt;&amp;gt;8/OID&amp;gt;&amp;gt;16&lt;/tt&gt; or just stick with &lt;tt&gt;SEQ/d(OID % 32)&lt;/tt&gt; but limit OIDs-per-SEQ to 1M or so, which will put concurrently allocated objects relatively close together, but slowly move into new upper-level directories over time.  The premise is that concurrently allocated objects are more likely to also be accessed and deleted together, so we can slowly drop those older directories from RAM, and eventually shrink them down as they become empty.  Having a single huge directory with all ages of files means the whole directory needs to live in RAM, or be IOPS bound during modification since each insert/delete/lookup will modify a different leaf block.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;3. Stop storing and loading &lt;tt&gt;&amp;#95;lov&lt;/tt&gt; files. For restore, we are already getting file attributes+striping from the MDT (see &lt;tt&gt;ct_md_getattr()&lt;/tt&gt;). But we only use the stat portion of the lmd.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;One reason for storing the LOV EA in the archive is for disaster recovery/rehydrate.  If we instead make full backups of the MDT(s) and/or subtrees, then we don&apos;t need the layouts or other xattrs in the archive.  Conversely, storing xattrs (more than just &lt;tt&gt;lov&lt;/tt&gt;) with the files makes them more &quot;self contained&quot; and usable even if the MDT backup is unavailable.&lt;/p&gt;</comment>
                            <comment id="233562" author="adilger" created="Fri, 14 Sep 2018 22:46:16 +0000"  >&lt;p&gt;PS - you are unlikely to get even OID distribution across &lt;span class=&quot;error&quot;&gt;&amp;#91;0x0000-0xffff&amp;#93;&lt;/span&gt;.  It is much more likely to get low-numbered OIDs, since clients always start with a new SEQ after mount and will allocate an OID=1 file, but won&apos;t necessarily allocate OID=65535 or OID=131071 ever before restart.  That will put more pressure on the low-numbered directories and may cause problems in some archives.&lt;/p&gt;</comment>
                            <comment id="233625" author="jhammond" created="Mon, 17 Sep 2018 13:47:29 +0000"  >&lt;p&gt;&amp;gt; One reason for storing the LOV EA in the archive is for disaster recovery/rehydrate. If we instead make full backups of the MDT(s) and/or subtrees, then we don&apos;t need the layouts or other xattrs in the archive. Conversely, storing xattrs (more than just lov) with the files makes them more &quot;self contained&quot; and usable even if the MDT backup is unavailable.&lt;/p&gt;

&lt;p&gt;HSM (alone) is not a disaster recovery solution. It&apos;s a storage tiering mechanism. It LOV is important then either keep full MDT images or store copies of LOV in the policy tool DB.&lt;/p&gt;</comment>
                            <comment id="307329" author="jhammond" created="Wed, 14 Jul 2021 11:51:44 +0000"  >&lt;p&gt;A partial patch for this was pushed for review under &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11380&quot; title=&quot;IOC_MDC_GETFILEINFO returns garbage stripe info for files with long names but no striping&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11380&quot;&gt;&lt;del&gt;LU-11380&lt;/del&gt;&lt;/a&gt;. See &lt;a href=&quot;https://review.whamcloud.com/#/c/33215/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/#/c/33215/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11380&quot; title=&quot;IOC_MDC_GETFILEINFO returns garbage stripe info for files with long names but no striping&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11380&quot;&gt;&lt;del&gt;LU-11380&lt;/del&gt;&lt;/a&gt; hsm: streamline copytool restore handling&lt;/p&gt;

&lt;p&gt;Partial patch.&lt;/p&gt;

&lt;p&gt;Signed-off-by: John L. Hammond &amp;lt;jhammond@whamcloud.com&amp;gt;&lt;br/&gt;
Change-Id: I7435766f6f67ba60ac39bf02bc3232316a830387&lt;/p&gt;</comment>
                            <comment id="307330" author="jhammond" created="Wed, 14 Jul 2021 11:53:30 +0000"  >&lt;p&gt;Archive flattening is in progress under LU-144359. &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://review.whamcloud.com/41312&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/41312&lt;/a&gt; &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-14359&quot; title=&quot;support a flat HSM archive format&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-14359&quot;&gt;LU-14359&lt;/a&gt; hsm: support a flatter HSM archive format&lt;br/&gt;
&lt;a href=&quot;https://review.whamcloud.com/41366&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/41366&lt;/a&gt; &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-14359&quot; title=&quot;support a flat HSM archive format&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-14359&quot;&gt;LU-14359&lt;/a&gt; hsm: support shadow tree in archive upgrade&lt;/p&gt;</comment>
                            <comment id="307331" author="jhammond" created="Wed, 14 Jul 2021 11:53:53 +0000"  >&lt;p&gt;Partially fixed. Partially abandoned.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="53324">LU-11380</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i002hj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>