<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:18:09 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-15419] Separate Quota Master from MDT0000</title>
                <link>https://jira.whamcloud.com/browse/LU-15419</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;It would be useful to separate the Quota Master service from (only) running on MDT0000, in order to allow the filesystem to continue working if MDT0000 is temporarily unavailable (or eventually has been removed from the filesystem completely).&lt;/p&gt;

&lt;p&gt;The main functions that the Quota Master service provides are:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;storing per-user/group/project/pool quota ID limits.  These limits are relatively static and can be replicated to one or more additional MDTs in case of a failure, to avoid their loss.  This is independently useful because these limits are specified by the administrator and cannot be automatically recovered if lost.&lt;/li&gt;
	&lt;li&gt;allocating chunks of a quota ID&apos;s limit (qunit) to individual MDT/OST targets for them to track against their local filesystem&apos;s quota usage.  These qunit assignments can very dynamic when files are created/written, but could be recovered directly from the quota accounting tables on the targets themselves if the primary copy is lost.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Beyond increased availability, distributing subsets of the quota IDs across all MDTs would also have additional benefits:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;distribution of load over multiple MDS/MDT for handling qunit assignments, since this is  independent for different quota IDs&lt;/li&gt;
	&lt;li&gt;less &quot;oversubscription&quot; of load/recovery if one MDT is unavailable, since only a fraction of the quota workload would need to be taken over by another MDS/MDT if it becomes unavailable.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Initially, replicating the quota limits to one or more MDTs would provide a useful incremental benefit.  Similarly, recovering quota usage from the targets is useful by itself, regardless of where the Quota Master is running.&lt;/p&gt;

&lt;p&gt;For a distributing quota ID handling across all MDTs, a mapping of IDs to MDTs is needed.  A simple mechanism would be like &quot;&lt;tt&gt;mdt_idx = (id % mdt_count)&lt;/tt&gt;&quot;, but suffers from a number of issues:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ID-to-MDT mapping changes significantly if &lt;tt&gt;mdt_count&lt;/tt&gt; changes&lt;/li&gt;
	&lt;li&gt;does not tolerate gaps in &lt;tt&gt;mdt_index&lt;/tt&gt; (i.e. if MDT0004 is missing)&lt;br/&gt;
One option would be to use CRUSH or a similar algorithm to map quota IDs to the available MDTs.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="67849">LU-15419</key>
            <summary>Separate Quota Master from MDT0000</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="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="wc-triage">WC Triage</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>LMR</label>
                    </labels>
                <created>Fri, 7 Jan 2022 00:11:37 +0000</created>
                <updated>Tue, 25 Apr 2023 20:24:56 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </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|i02dxz:</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>