<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Lustre_Quota_Administration</id>
	<title>Lustre Quota Administration - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Lustre_Quota_Administration"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Quota_Administration&amp;action=history"/>
	<updated>2026-09-02T18:29:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Lustre_Quota_Administration&amp;diff=5620&amp;oldid=prev</id>
		<title>Elliswilson: Created page with &quot;== Overview ==  Lustre quotas restrict how much disk space (blocks) and how many files (inodes) a user, group, or project can consume. The quota subsystem consists of:  * &#039;&#039;&#039;QMT&#039;&#039;&#039; (Quota Master Target) — runs on the MDT, holds the global quota limits. * &#039;&#039;&#039;QSD&#039;&#039;&#039; (Quota Slave Device) — runs on each OST and MDT, enforces limits locally. * &#039;&#039;&#039;qunit&#039;&#039;&#039; — the allocation granularity the QMT grants to each QSD. The QMT dynamically adjusts qunit size based on remaining q...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Quota_Administration&amp;diff=5620&amp;oldid=prev"/>
		<updated>2026-08-31T15:19:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Overview ==  Lustre quotas restrict how much disk space (blocks) and how many files (inodes) a user, group, or project can consume. The quota subsystem consists of:  * &amp;#039;&amp;#039;&amp;#039;QMT&amp;#039;&amp;#039;&amp;#039; (Quota Master Target) — runs on the MDT, holds the global quota limits. * &amp;#039;&amp;#039;&amp;#039;QSD&amp;#039;&amp;#039;&amp;#039; (Quota Slave Device) — runs on each OST and MDT, enforces limits locally. * &amp;#039;&amp;#039;&amp;#039;qunit&amp;#039;&amp;#039;&amp;#039; — the allocation granularity the QMT grants to each QSD. The QMT dynamically adjusts qunit size based on remaining q...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Lustre quotas restrict how much disk space (blocks) and how many files (inodes) a user, group, or project can consume. The quota subsystem consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;QMT&amp;#039;&amp;#039;&amp;#039; (Quota Master Target) — runs on the MDT, holds the global quota limits.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;QSD&amp;#039;&amp;#039;&amp;#039; (Quota Slave Device) — runs on each OST and MDT, enforces limits locally.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;qunit&amp;#039;&amp;#039;&amp;#039; — the allocation granularity the QMT grants to each QSD. The QMT dynamically adjusts qunit size based on remaining quota and the number of slaves.&lt;br /&gt;
&lt;br /&gt;
Space accounting is enabled by default on ldiskfs. Quota &amp;#039;&amp;#039;enforcement&amp;#039;&amp;#039; must be explicitly enabled.&lt;br /&gt;
&lt;br /&gt;
== Enabling Quota Enforcement ==&lt;br /&gt;
&lt;br /&gt;
Enable enforcement for user, group, and project quotas on all targets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Enable user, group, and project quota enforcement&lt;br /&gt;
lctl set_param -P osd-*.fsname*.quota_slave_dt.enabled=ugp&lt;br /&gt;
lctl set_param -P osd-*.fsname*.quota_slave_md.enabled=ugp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl get_param osd-*.*.quota_slave_dt.enabled&lt;br /&gt;
lctl get_param osd-*.*.quota_slave_md.enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valid values: &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; (user), &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; (group), &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; (project), or any combination (e.g. &amp;lt;code&amp;gt;ugp&amp;lt;/code&amp;gt;). Use &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; to disable.&lt;br /&gt;
&lt;br /&gt;
== Setting User and Group Quotas ==&lt;br /&gt;
&lt;br /&gt;
Set block and inode limits for a user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -b soft block limit, -B hard block limit (in KiB by default)&lt;br /&gt;
# -i soft inode limit, -I hard inode limit&lt;br /&gt;
lfs setquota -u bob -b 307200 -B 309200 -i 10000 -I 11000 /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set limits for a group:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lfs setquota -g engineers -b 10G -B 12G -i 500000 -I 600000 /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suffixes &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; are accepted for block limits.&lt;br /&gt;
&lt;br /&gt;
== Viewing Quotas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Show quota for a specific user&lt;br /&gt;
lfs quota -u bob /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Show quota for a specific group&lt;br /&gt;
lfs quota -g engineers /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Show quota usage per OST for a user&lt;br /&gt;
lfs quota -u bob -v /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Show quotas for all users&lt;br /&gt;
lfs quota -u -a /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default Quotas ==&lt;br /&gt;
&lt;br /&gt;
Default quotas apply to all users (or groups) that do not have explicit limits set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set default user quota&lt;br /&gt;
lfs setquota -U -b 1G -B 2G -i 100000 -I 200000 /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Set default group quota&lt;br /&gt;
lfs setquota -G -b 5G -B 10G -i 500000 -I 1000000 /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# View default quotas&lt;br /&gt;
lfs quota -U /mnt/testfs&lt;br /&gt;
lfs quota -G /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Default quotas use &amp;lt;code&amp;gt;-U&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-G&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;-P&amp;lt;/code&amp;gt; (uppercase) instead of &amp;lt;code&amp;gt;-u&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Grace Periods ==&lt;br /&gt;
&lt;br /&gt;
When a user exceeds the soft limit but remains below the hard limit, a grace period timer starts. If usage is not reduced below the soft limit before the grace period expires, the soft limit is enforced as a hard limit.&lt;br /&gt;
&lt;br /&gt;
The default grace period is &amp;#039;&amp;#039;&amp;#039;1 week&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Set grace periods:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set block and inode grace period for users (format: XXwXXdXXhXXmXXs)&lt;br /&gt;
lfs setquota -u -t -b 86400 -i 604800 /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Set group grace period to 3 days for blocks, 1 week for inodes&lt;br /&gt;
lfs setquota -g -t -b 3d -i 1w /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clearing Quotas ==&lt;br /&gt;
&lt;br /&gt;
To remove quota limits for a user, set all limits to zero:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lfs setquota -u bob -b 0 -B 0 -i 0 -I 0 /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture Notes ==&lt;br /&gt;
&lt;br /&gt;
The QMT on the MDT is the single authority for quota limits. When a QSD on an OST needs to allocate space for a user, it requests a &amp;#039;&amp;#039;qunit&amp;#039;&amp;#039; allocation from the QMT. The qunit size is dynamic — it shrinks as quota usage approaches the limit (to reduce over-allocation) and grows when usage is low. This means:&lt;br /&gt;
&lt;br /&gt;
* Quota enforcement is &amp;#039;&amp;#039;&amp;#039;approximate&amp;#039;&amp;#039;&amp;#039; until the user is near the limit. A user may slightly exceed a limit before enforcement kicks in.&lt;br /&gt;
* After changing a quota limit, it may take a short time for all QSDs to receive the updated allocation.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Lustre Quota Troubleshooting]]&lt;br /&gt;
* [[Lustre Project Quotas]]&lt;br /&gt;
* [[OST Pool Quotas]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Lustre Systems Administration]]&lt;br /&gt;
[[Category:Lustre Quotas]]&lt;/div&gt;</summary>
		<author><name>Elliswilson</name></author>
	</entry>
</feed>