<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:34:04 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-10329] DNE3: REMOTE_PARENT_DIR scalability</title>
                <link>https://jira.whamcloud.com/browse/LU-10329</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;For DNE filesystems where there are large numbers of remote entries, for example once &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-4684&quot; title=&quot;DNE3: allow migrating DNE striped directory&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-4684&quot;&gt;&lt;del&gt;LU-4684&lt;/del&gt;&lt;/a&gt; is landed to restripe directories, or DNE2 striped directories with many renames, the size of the &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; may become very large.&lt;/p&gt;

&lt;p&gt;In order to limit contention and scaling issues in &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; it makes sense to have multiple such directories.  As a starting point, one &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; for each remote MDT would be useful, but it may be necessary to have a tree of directories similar to the &lt;tt&gt;O/&amp;lt;seq&amp;gt;/dN&lt;/tt&gt; object directories.  Having a separate &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; per MDT would also allow LFSCK to efficiently scan remote entries for a given MDT, if there was a problem (e.g. MDT was marked offline and returned into the namespace later).&lt;/p&gt;</description>
                <environment></environment>
        <key id="49558">LU-10329</key>
            <summary>DNE3: REMOTE_PARENT_DIR scalability</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</priority>
                        <status id="1" iconUrl="https://jira.whamcloud.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="laisiyao">Lai Siyao</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>LMR</label>
                            <label>dne3</label>
                            <label>medium</label>
                    </labels>
                <created>Tue, 5 Dec 2017 05:55:07 +0000</created>
                <updated>Thu, 10 Aug 2023 02:50:44 +0000</updated>
                                                            <fixVersion>Lustre 2.16.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>12</watches>
                                                                            <comments>
                            <comment id="235124" author="adilger" created="Thu, 18 Oct 2018 22:47:38 +0000"  >&lt;p&gt;This is needed before &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11025&quot; title=&quot;DNE3: directory restripe&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11025&quot;&gt;&lt;del&gt;LU-11025&lt;/del&gt;&lt;/a&gt; or &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10784&quot; title=&quot;DNE3: mkdir() automatically create remote directory on MDS which has more space&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10784&quot;&gt;&lt;del&gt;LU-10784&lt;/del&gt;&lt;/a&gt; or implements automatic directory restriping or remote directories.  Otherwise, the large number of remote entries in the filesystem will exceed the per-directory limit (unless &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11546&quot; title=&quot;enable large_dir support for MDTs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11546&quot;&gt;&lt;del&gt;LU-11546&lt;/del&gt;&lt;/a&gt; is implemented first, and that is a sub-optimal solution).&lt;/p&gt;</comment>
                            <comment id="276361" author="adilger" created="Thu, 30 Jul 2020 07:52:36 +0000"  >&lt;p&gt;It seems that the large directory patches have landed, so the need for this is reduced.&lt;/p&gt;

&lt;p&gt;However, it would still be useful to have a per-MDT &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; directory, since that would simplify things like LFSCK checking if one MDT was offline/corrupted/removed.  It also provides a point of scaling so that there can be different updates between pairs of MDTs that do not contend for the same locks.&lt;/p&gt;</comment>
                            <comment id="319924" author="adilger" created="Thu, 2 Dec 2021 20:56:02 +0000"  >&lt;p&gt;In addition to improving performance by having multiple &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; directories, another significant benefit would be reduced risk from filesystem corruption.  An MDT with 60M entries in &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; is currently running e2fsck because of a problem with that directory, with an unknown ETA, so having multiple independent directories would reduce risk and the number of entries that need to be repaired significantly, and potentially improve the scalability of parallel pass2/pass3 operations as well.&lt;/p&gt;</comment>
                            <comment id="368281" author="adilger" created="Mon, 3 Apr 2023 23:38:24 +0000"  >&lt;p&gt;For upgrading MDTs that are currently using a single &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt;, I think a two-stage approach could be used.   Initially, add &quot;read-only&quot; support for such directories into 2.16.0 to allow for downgrade:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;accept &lt;tt&gt;OBD_INCOMPAT_REMOTE_PARENTS = 0x00000800&lt;/tt&gt; in &lt;tt&gt;tgt_scd&lt;/tt&gt;, but do not set it&lt;/li&gt;
	&lt;li&gt;open &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; directories when a remote MDT connection is made, using &lt;tt&gt;local_file_find()&lt;/tt&gt;, if available&lt;/li&gt;
	&lt;li&gt;do agent FID lookups in &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; first, and fall back to &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; if it exists and FID was not found&lt;/li&gt;
	&lt;li&gt;create new entries in &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; only (as before)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Then in 2.17+ start using those directories (which would be incompatible for pre-2.16 servers, or servers not patched as above):&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;set &lt;tt&gt;OBD_INCOMPAT_REMOTE_PARENTS = 0x00000800&lt;/tt&gt; in &lt;tt&gt;tgt_scd&lt;/tt&gt; so that unpatched MDS cannot mount the MDT&lt;/li&gt;
	&lt;li&gt;create/open &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; directories when a remote MDT connection is made, using &lt;tt&gt;local_file_find_or_create()&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;do agent FID lookups in &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; first, and fall back to &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; if it exists and FID was not found&lt;/li&gt;
	&lt;li&gt;start linking new agent inodes into &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; based on remote parent FID&lt;/li&gt;
	&lt;li&gt;update LFSCK to do the same when linking or looking up remote FIDs on the MDT&lt;/li&gt;
	&lt;li&gt;(optionally?) start a background thread to move entries from &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; to the proper &lt;tt&gt;..._MDTxxxx&lt;/tt&gt; subdir based on the parent FID, then remove the old &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; when it is empty.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Having a two-stage update process like this, and minimizing the &quot;read-only&quot; patches to simplify backport (e.g. to b2_15) will allow upgrade/downgrade without breaking the whole filesystem.&lt;/p&gt;

&lt;p&gt;One minor drawback of having separate directories would be that renaming files/subdirs from one remote MDT directory to another would also mean renaming the agent locally from one &lt;tt&gt;REMOTE_PARENT_DIR_MDTxxxx&lt;/tt&gt; to another, but that is not worse than a local cross-directory rename, and only a small fraction of the overhead of the distributed rename itself (BFL, multiple MDT transactions, etc.).  That local filesystem overhead is probably offset by not having a single huge &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; to hold all of the remote links.&lt;/p&gt;</comment>
                            <comment id="371511" author="laisiyao" created="Mon, 8 May 2023 14:04:40 +0000"  >&lt;p&gt;REMOTE_PARENT_DIR is used in osd layer only, which means it doesn&apos;t know which MDT its parent is located, but only knows that whether parent is on local MDT. So we can&apos;t create a subdir for each MDT, do you think it&apos;s okay to create 64 subdirs for all remote MDTs?&lt;/p&gt;</comment>
                            <comment id="371532" author="adilger" created="Mon, 8 May 2023 15:07:03 +0000"  >&lt;p&gt;There are definitely benefits to splitting the entries up by remote MDT.  This could be used to quickly find/check/remove remote links for a specific MDT if needed (eg. MDT removed/lost with metadata redundancy).&lt;/p&gt;

&lt;p&gt;Does it make sense to lift REMOTE_PARENT_DIR out of the OSD and into MDD?&lt;/p&gt;</comment>
                            <comment id="381914" author="gerrit" created="Thu, 10 Aug 2023 02:50:43 +0000"  >&lt;p&gt;&quot;Lai Siyao &amp;lt;lai.siyao@whamcloud.com&amp;gt;&quot; uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/51910&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/51910&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10329&quot; title=&quot;DNE3: REMOTE_PARENT_DIR scalability&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10329&quot;&gt;LU-10329&lt;/a&gt; obdclass: tidy up linkEA code&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: b27fd4006b7e763da72eb9d834fd4423293e5349&lt;/p&gt;</comment>
                            <comment id="381915" author="gerrit" created="Thu, 10 Aug 2023 02:50:44 +0000"  >&lt;p&gt;&quot;Lai Siyao &amp;lt;lai.siyao@whamcloud.com&amp;gt;&quot; uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/51911&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/51911&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10329&quot; title=&quot;DNE3: REMOTE_PARENT_DIR scalability&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10329&quot;&gt;LU-10329&lt;/a&gt; obdclass: add linkEA version 2&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 8ea62123db1a9bbbb2e36b511c03fbd368f80b75&lt;/p&gt;</comment>
                            <comment id="381916" author="gerrit" created="Thu, 10 Aug 2023 02:50:44 +0000"  >&lt;p&gt;&quot;Lai Siyao &amp;lt;lai.siyao@whamcloud.com&amp;gt;&quot; uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/51912&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/51912&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10329&quot; title=&quot;DNE3: REMOTE_PARENT_DIR scalability&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10329&quot;&gt;LU-10329&lt;/a&gt; osd-ldiskfs: add osd_obj_map for remote objects&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: ffbc774053bec88e1aacb16831b6f0fa632529d5&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10322">
                    <name>Gantt End to Start</name>
                                            <outwardlinks description="has to be done before">
                                        <issuelink>
            <issuekey id="52253">LU-11025</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="51154">LU-10784</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="57210">LU-12892</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="53659">LU-11546</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49082">LU-10192</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="23373">LU-4684</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="67676">LU-15383</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24144">LU-4876</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="53452">LU-11446</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="53574">LU-11502</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="67478">LU-15330</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="55661">LU-12310</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="67407">LU-15307</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="58702">LU-13440</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_10092" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>EX-4481</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzzorb:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>