<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:40:15 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-11022] FLR1.5: &quot;lfs mirror&quot; usability for Burst Buffer</title>
                <link>https://jira.whamcloud.com/browse/LU-11022</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;I&apos;ve been going through a simple exercise for how to use FLR to mirror/unmirror files for a burst-buffer application. The workflow would be something like:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;job startup script has directives that specify the list of existing files that are used for input/output, and the directory used for output&lt;/li&gt;
	&lt;li&gt;job scheduler processes job startup script at appropriate time before job launch to mirror input/output files into burst buffer (flash-based OSTs in a special OST pool&lt;span class=&quot;error&quot;&gt;&amp;#91;*&amp;#93;&lt;/span&gt;) and mark them &quot;&lt;tt&gt;prefer&lt;/tt&gt;&quot; so that the clients will use those replicas&lt;/li&gt;
	&lt;li&gt;job scheduler specifies default directory layout for output directory, using DoM and/or FLR to keep new files on flash storage&lt;/li&gt;
	&lt;li&gt;job runs and does IO entirely to flash storage&lt;/li&gt;
	&lt;li&gt;optionally a background task does file resync/migration to copy modified files to HDD-based OSTs&lt;/li&gt;
	&lt;li&gt;job scheduler runs post-job script to resync/migrate all of the new and modified files to HDD-based OSTs, drops flash mirror copy on input/output files if they are not used by another job in the queue.  This avoids the need to scan the OSTs and manage OST space on demand.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;tt&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;*&amp;#93;&lt;/span&gt;&lt;/tt&gt; We don&apos;t have any way to prevent users from using a pool if they want to.  We need some kind of OST/pool quota to limit the amount of space a user can consume on a given OST/pool.  It might be desirable to allow privileged users (e.g. job scheduler) to still create files on an OST/pool, even if it exceeds the user&apos;s quota, so that they can stage files there.&lt;/p&gt;

&lt;p&gt;The #1 item is not immediately in my control.&lt;/p&gt;

&lt;p&gt;I was trying out what commands would be used for #2. The obvious choice is &lt;tt&gt;lfs mirror extend -N&amp;lt;copies&amp;gt; /path/to/file&lt;/tt&gt;, but one problem I see with this is that &quot;-N&amp;lt;copies&amp;gt;&quot; means &lt;b&gt;add &lt;tt&gt;&amp;lt;copies&amp;gt;&lt;/tt&gt; mirrors&lt;/b&gt; to the file, rather than &lt;b&gt;make the number of mirrors = &lt;tt&gt;&amp;lt;copies&amp;gt;&lt;/tt&gt;&lt;/b&gt;.  This is problematic, since &lt;tt&gt;lfs mirror extend&lt;/tt&gt; will keep on adding mirrors to the file, even if it already has mirrors &amp;gt;= &lt;tt&gt;&amp;lt;copies&amp;gt;&lt;/tt&gt;, but not an insurmountable problem (the caller needs to use &quot;&lt;tt&gt;lfs getstripe -N&lt;/tt&gt;&quot; to get the current number of mirror copies, then call &quot;&lt;tt&gt;lfs mirror extend -N$((copies - current))&lt;/tt&gt;&quot; in most cases).&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;There should be an option in &lt;tt&gt;lfs mirror extend&lt;/tt&gt; to specify something &lt;em&gt;like&lt;/em&gt; &lt;tt&gt;-N=2&lt;/tt&gt; to indicate that only 2 mirrors should be created with the given parameters (though &quot;&lt;tt&gt;=2&lt;/tt&gt;&quot; won&apos;t work because &lt;tt&gt;getopt_long()&lt;/tt&gt; will just treat that the same as &lt;tt&gt;-N 2&lt;/tt&gt;).  I don&apos;t think it would be acceptable to change the meaning of &quot;&lt;tt&gt;-N&lt;/tt&gt;&quot; in 2.12 after it has been available in 2.11.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For #3 and #4 we would set a default layout on the output directory to create files with DoM + PFL layouts to keep the output files entirely on flash.&lt;/p&gt;

&lt;p&gt;For #5 we could use a ChangeLog user to follow files from each JobID to do resync (to HDD-based OSTs) in the background as they are closed, but it would make sense to apply a policy for this (e.g. migrate only 1/4 of incremental checkpoints out of the BB).&lt;/p&gt;

&lt;p&gt;For #6 it would use &lt;tt&gt;lfs mirror extend&lt;/tt&gt; or &lt;tt&gt;lfs mirror resync&lt;/tt&gt; to migrate files specified in the job submission script from the flash OSTs to HDD OSTs.  What is difficult is to &lt;b&gt;remove&lt;/b&gt; the flash OST replicas afterward.  The &lt;tt&gt;lfs mirror split&lt;/tt&gt; command requires specifying an explicit mirror ID, but &lt;tt&gt;lfs getstripe&lt;/tt&gt; has no option to extract the mirror ID for a component.  This raises the need for several new options:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;lfs mirror split&lt;/tt&gt; should allows specifying &lt;tt&gt;lfs getstripe&lt;/tt&gt; options like &lt;tt&gt;&amp;#45;&amp;#45;comp&amp;#45;flags=prefer&lt;/tt&gt; or &lt;tt&gt;&amp;#45;&amp;#45;pool=flash&lt;/tt&gt; to remove replicas.&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;lfs mirror split&lt;/tt&gt; should accept &lt;tt&gt;&amp;#45;&amp;#45;component&amp;#45;id=&amp;lt;comp_ID&amp;gt;&lt;/tt&gt; from &lt;tt&gt;lfs getstripe&lt;/tt&gt; as removing the entire mirror.&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;lfs getstripe&lt;/tt&gt; should allow printing the mirror ID for matching components.&lt;/li&gt;
&lt;/ul&gt;

</description>
                <environment></environment>
        <key id="52248">LU-11022</key>
            <summary>FLR1.5: &quot;lfs mirror&quot; usability for Burst Buffer</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="adilger">Andreas Dilger</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>FLR2</label>
                    </labels>
                <created>Wed, 16 May 2018 00:55:26 +0000</created>
                <updated>Mon, 4 Dec 2023 17:52:44 +0000</updated>
                            <resolved>Sat, 9 Nov 2019 11:27:26 +0000</resolved>
                                                    <fixVersion>Lustre 2.13.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>12</watches>
                                                                            <comments>
                            <comment id="227942" author="jinshan" created="Wed, 16 May 2018 02:58:02 +0000"  >&lt;p&gt;For #2, I think it should check if the corresponding files have already had mirrors on flash OSTs, before it tries to add new mirrors. Checking mirrors should be lightweight in general so I don&apos;t think this would be an issue. Anyway, extending file to have a specified number of mirrors is probably less useful in this case, because what we want is to have a mirror on flash OSTs, no matter how many mirrors it already has.&lt;/p&gt;

&lt;p&gt;For #6, yes if it drops mirrors at the end of job, it won&apos;t need database to keep track of files on burst buffer; but I&apos;m not sure if this is the best approach to use burst buffer. If for any reason the jobs need to restart from the last checkpoint, we always want(and most likely) the required data are already inside burst buffer to avoid data transfer from slow HDD OSTs. I agree that file management database will add complexity but it&apos;s totally worth it.&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;lfs mirror split&lt;/tt&gt;&#160;should allows specifying&#160;&lt;tt&gt;lfs getstripe&lt;/tt&gt;&#160;options like&#160;&lt;tt&gt;-&lt;del&gt;comp-flags=prefer&lt;/tt&gt;&#160;or&#160;&lt;tt&gt;&lt;/del&gt;-pool=flash&lt;/tt&gt;&#160;to remove replicas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The issue with deleting mirrors by flags is that sometimes those flags can&apos;t identify a mirror uniquely.&#160;&lt;tt&gt;lfs&lt;/tt&gt; utilities are fundamental features, which could be used many features, so we don&apos;t want anything special for burst buffer at this level.&lt;/p&gt;

&lt;p&gt;Yes, there is no options to print mirror id only in &lt;tt&gt;lfs getstripe&lt;/tt&gt;, so it will need a grep to print it out, like:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[root@centos tests]# ../utils/lfs getstripe /mnt/lustre/tm | grep lcme_mirror_id
&#160; &#160; *lcme_mirror_id*:&#160; &#160; &#160; 1
&#160; &#160; *lcme_mirror_id*:&#160; &#160; &#160; 2
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I think there should be utilities developed for burst buffer to iterate and check mirror ID by components through liblustreapi, but I don&apos;t think this should be a feature that belongs to lfs itself. Only burst buffer knows which OSTs are being identified as burst buffer.&lt;/p&gt;

&lt;p&gt;I agree on the rest.&lt;/p&gt;</comment>
                            <comment id="228122" author="gerrit" created="Fri, 18 May 2018 05:18:09 +0000"  >&lt;p&gt;Bobi Jam (bobijam@hotmail.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/32455&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/32455&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: accept specifing comp_id in mirror split&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 8aa29517a49f583e89646c406843601fbc1147a7&lt;/p&gt;</comment>
                            <comment id="230828" author="gerrit" created="Tue, 24 Jul 2018 16:00:50 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/32455/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/32455/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: accept specifing comp_id in mirror split&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 82298b9cf8d6a4e4a8529366536815bcf80c6bd6&lt;/p&gt;</comment>
                            <comment id="250055" author="gerrit" created="Wed, 26 Jun 2019 10:33:37 +0000"  >&lt;p&gt;Alex Zhuravlev (bzzz@whamcloud.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/35329&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/35329&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: remove mirror by pool name&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: f86542c007c652ac5758eb3dcf51c1175807182e&lt;/p&gt;</comment>
                            <comment id="252120" author="gerrit" created="Sat, 27 Jul 2019 00:21:44 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/35329/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/35329/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: remove mirror by pool name&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 0c710a46cfb43366dc57ff6e83e414086b1d0e6c&lt;/p&gt;</comment>
                            <comment id="252148" author="pjones" created="Sat, 27 Jul 2019 16:10:43 +0000"  >&lt;p&gt;There are no remaining patches left for this ticket - is this task now complete?&lt;/p&gt;</comment>
                            <comment id="252161" author="adilger" created="Mon, 29 Jul 2019 07:43:40 +0000"  >&lt;blockquote&gt;
&lt;p&gt;There are no remaining patches left for this ticket - is this task now complete?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It won&apos;t be possible to close this issue until the sub-task &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11467&quot; title=&quot;FLR1.5: add &amp;quot;lfs mirror delete&amp;quot; command&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11467&quot;&gt;&lt;del&gt;LU-11467&lt;/del&gt;&lt;/a&gt; is finished.  I think that is relatively easily implemented, but is not necessarily as important as the &quot;&lt;tt&gt;local client&lt;/tt&gt;&quot; functionality (&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10191&quot; title=&quot;FLR2: Server Local Client (SLC)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10191&quot;&gt;LU-10191&lt;/a&gt;).&lt;/p&gt;</comment>
                            <comment id="253109" author="jgmitter" created="Thu, 15 Aug 2019 13:48:30 +0000"  >&lt;p&gt;Perhaps we should break out &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11467&quot; title=&quot;FLR1.5: add &amp;quot;lfs mirror delete&amp;quot; command&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11467&quot;&gt;&lt;del&gt;LU-11467&lt;/del&gt;&lt;/a&gt; to its own ticket (not a subtask) so that this can be marked resolved for 2.13.  Otherwise, this ticket won&apos;t show up in the change log for the release since it will be open and need to remove the fix version.  &lt;/p&gt;</comment>
                            <comment id="254442" author="pjones" created="Tue, 10 Sep 2019 13:27:13 +0000"  >&lt;p&gt;All work in 2.13 landed&lt;/p&gt;</comment>
                            <comment id="254689" author="adilger" created="Sat, 14 Sep 2019 02:41:58 +0000"  >&lt;p&gt;Reopen this issue since it is a high-level tracker for multiple different issues related to tiered storage in Lustre.&lt;/p&gt;</comment>
                            <comment id="254743" author="gerrit" created="Mon, 16 Sep 2019 17:24:14 +0000"  >&lt;p&gt;Jian Yu (yujian@whamcloud.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/36194&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36194&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: remove mirror by pool name&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 36841f23dc32e73f41c0bfae9877bb9a5bcbcf72&lt;/p&gt;</comment>
                            <comment id="255240" author="gerrit" created="Mon, 23 Sep 2019 08:43:43 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/36194/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36194/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11022&quot; title=&quot;FLR1.5: &amp;quot;lfs mirror&amp;quot; usability for Burst Buffer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11022&quot;&gt;&lt;del&gt;LU-11022&lt;/del&gt;&lt;/a&gt; lfs: remove mirror by pool name&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 3a8d96a1ebff995cbdad359208ea0ce99482606a&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="49079">LU-10191</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="73859">LU-16446</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="56621">LU-12649</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="56620">LU-12648</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="52249">LU-11023</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="58899">LU-13484</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="59748">LU-13720</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="53488">LU-11467</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="52649">LU-11124</subtask>
                            <subtask id="52681">LU-11138</subtask>
                    </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|hzzx8v:</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>