<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:30:27 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-16840] update llogs consume all MDT space</title>
                <link>https://jira.whamcloud.com/browse/LU-16840</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The situation occurred during performance tests on &apos;testfs&apos; system. All MDTs were filled up to 100%, MDT0000 and MDT0003 were 100% full, some other showed about 98-99%:&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;# lfs df
UUID &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 1K-blocks&#160; &#160; &#160; &#160; Used &#160; Available Use% Mounted on
testfs-MDT0000_UUID&#160; &#160; 139539628 &#160; 137929320 &#160; &#160; &#160; &#160; &#160; 0 100% /lustre/testfs/client[MDT:0] 
testfs-MDT0001_UUID&#160; &#160; 139539628 &#160; 131245164 &#160; &#160; 5878772&#160; 96% /lustre/testfs/client[MDT:1] 
testfs-MDT0002_UUID&#160; &#160; 139539628 &#160; 136989484&#160; &#160; &#160; 134452 100% /lustre/testfs/client[MDT:2] 
testfs-MDT0003_UUID&#160; &#160; 139539628 &#160; 125196112&#160; &#160; 11927824&#160; 92% /lustre/testfs/client[MDT:3] 
testfs-MDT0004_UUID&#160; &#160; 139539628 &#160; 134967276 &#160; &#160; 2156660&#160; 99% /lustre/testfs/client[MDT:4] 
testfs-MDT0005_UUID&#160; &#160; 139539628 &#160; 134893132 &#160; &#160; 2230804&#160; 99% /lustre/testfs/client[MDT:5] 
testfs-MDT0006_UUID &#160; 1865094172 &#160; 126687580&#160; 1706999696 &#160; 7% /lustre/testfs/client[MDT:6] 
testfs-MDT0007_UUID &#160; 1865094172 &#160; 131057524&#160; 1702629752 &#160; 8% /lustre/testfs/client[MDT:7]  &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;FS was filled with striped dirs(4-wide) and many files most of which are remote. So DNE is heavily used along with update llogs.&#160;&lt;/p&gt;

&lt;p&gt;One example of &lt;tt&gt;ls -l&lt;/tt&gt; command over &lt;tt&gt;update_log_dir&lt;/tt&gt; on MDT0000 is attached. It shows there are more than 1000 plain llog files with many at maximum size of 128Mb.&lt;/p&gt;

&lt;p&gt;MDTs targets were umounted and restarted, many showed errors during restart:&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;[30398.329207] LustreError: 28024:0:(llog_osd.c:1055:llog_osd_next_block()) testfs-MDT0005-osp-MDT0002: missed desired record? 6 &amp;gt; 1
[30398.331773] LustreError: 28023:0:(lod_dev.c:453:lod_sub_recovery_thread()) testfs-MDT0004-osp-MDT0002 get update log failed: rc = -2&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;another one:&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;May 22 21:09:06 vm07 kernel: LustreError: 31098:0:(llog_osd.c:1038:llog_osd_next_block()) testfs-MDT0003-osp-MDT0007: invalid llog tail at log id [0x2c00904b3:0x1:0x0]offset 7667712 bytes 32768
May 22 21:09:06 vm07 kernel: LustreError: 31098:0:(lod_dev.c:453:lod_sub_recovery_thread()) testfs-MDT0003-osp-MDT0007 get update log failed: rc = -22

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;or&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;May 22 21:09:14 vm04 kernel: LustreError: 29436:0:(llog.c:478:llog_verify_record()) testfs-MDT0003-osp-MDT0001: [0x2c002b387:0x1:0x0] rec type=0 idx=0 len=0, magic is bad
May 22 21:09:14 vm04 kernel: LustreError: 29434:0:(llog_osd.c:1028:llog_osd_next_block()) testfs-MDT0000-osp-MDT0001: invalid llog tail at log id [0x2000eaa11:0x1:0x0] offset 50790400 last_rec idx 4294937410 tail idx 0 lrt len 0 read_size 32768
May 22 21:09:14 vm04 kernel: LustreError: 29434:0:(lod_dev.c:453:lod_sub_recovery_thread()) testfs-MDT0000-osp-MDT0001 get update log failed: rc = -22
May 22 21:09:14 vm04 kernel: LustreError: 29436:0:(llog_osd.c:1038:llog_osd_next_block()) testfs-MDT0003-osp-MDT0001: invalid llog tail at log id [0x2c00904bb:0x1:0x0]offset 3342336 bytes 32768 &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;After restart cluster has still no space and non-operational. The next step would require manual intervention to clear update llogs.&lt;/p&gt;

&lt;p&gt;Types of corruptions are related to lack of space, all are about partial llog update. So most likely lack of space of server cause update llog corruptions processing but considering how many update llogs we have there, they were the reason of space consuming. It is worth to mention that lamigo was active on nodes though changelog problems were not found.&lt;/p&gt;</description>
                <environment></environment>
        <key id="76160">LU-16840</key>
            <summary>update llogs consume all MDT space</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.whamcloud.com/images/icons/priorities/major.svg">Major</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="tappro">Mikhail Pershin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 22 May 2023 22:05:26 +0000</created>
                <updated>Tue, 23 May 2023 01:03:55 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="373152" author="tappro" created="Mon, 22 May 2023 22:36:06 +0000"  >&lt;p&gt;it is not clear what caused ENOSPC exactly - client files or internal data in update logs. It can be that update logs problem make them grow endlessly or maybe they weren&apos;t able to proceed due to lack of space.&lt;/p&gt;

&lt;p&gt;I think there are several problems to review:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#160;we need to track somehow how update logs are consuming space, some visible stats are needed like for changelog - amount of plains in each catalog and space consumed, amount of orphaned plain llogs (without refs in any catalog)&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;we have to reserve space for update llog operations, which would be not used by clients, so update llogs could be updated even when clients get ENOSPC to prevent partial writes&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;should&apos;n we prevent update llog to grow over some limit? E.g. if they are full, switch to synced DNE or reduce amount of DNE ops somehow else?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="373156" author="JIRAUSER17312" created="Mon, 22 May 2023 23:07:33 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=tappro&quot; class=&quot;user-hover&quot; rel=&quot;tappro&quot;&gt;tappro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How can we work around this situation when it happens?&lt;/p&gt;</comment>
                            <comment id="373159" author="adilger" created="Tue, 23 May 2023 01:02:27 +0000"  >&lt;p&gt;Definitely we should NOT be testing with default DNE striped directories.   That is just a problem waiting to happen, hurts performance, and not something we want anyone to ever use in production for any reason, even if &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; is fixed.&lt;/p&gt;

&lt;p&gt;Mike, the DNE update logs &lt;b&gt;should&lt;/b&gt; be sync&apos;d within a fraction of a second, and cancelled within a few seconds after creation once committed on all MDTs, unless an MDS crashes in the middle of the distributed operation.  The log files themselves might stick around for some time  until the llog is no longer in use, but that should mean only 1-2 llogs per MDT at any time.  If there are lots of llog files accumulating then something is going wrong with the DNE recovery mechanism, and/or the llogs are being corrupted.&lt;/p&gt;
</comment>
                            <comment id="373160" author="adilger" created="Tue, 23 May 2023 01:03:55 +0000"  >&lt;p&gt;Note that the MDT already has some way to reserve space for critical local usage, but it is very small (e.g tens of KB, enough to delete a few files), but might need to be increased for larger MDTs with DNE.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="49183" name="updatelog_ls.txt" size="97655" author="tappro" created="Mon, 22 May 2023 22:26:42 +0000"/>
                    </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|i03m0n:</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>