<?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_OST_Pool_Management</id>
	<title>Lustre OST Pool Management - 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_OST_Pool_Management"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_OST_Pool_Management&amp;action=history"/>
	<updated>2026-09-02T19:04:36Z</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_OST_Pool_Management&amp;diff=5622&amp;oldid=prev</id>
		<title>Elliswilson: Created page with &quot;== Overview ==  OST pools group a subset of OSTs under a named label, allowing administrators to control file placement. Pools are used at file creation time — once a file is created, changing pool membership does not move existing data.  Rules: * An OST can belong to multiple pools. * No ordering of OSTs within a pool is defined. * Stripe allocation within a pool follows normal stripe allocation rules. * Pool membership can change at any time; existing files are unaff...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_OST_Pool_Management&amp;diff=5622&amp;oldid=prev"/>
		<updated>2026-08-31T15:25:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Overview ==  OST pools group a subset of OSTs under a named label, allowing administrators to control file placement. Pools are used at file creation time — once a file is created, changing pool membership does not move existing data.  Rules: * An OST can belong to multiple pools. * No ordering of OSTs within a pool is defined. * Stripe allocation within a pool follows normal stripe allocation rules. * Pool membership can change at any time; existing files are unaff...&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;
OST pools group a subset of OSTs under a named label, allowing administrators to control file placement. Pools are used at file creation time — once a file is created, changing pool membership does not move existing data.&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* An OST can belong to multiple pools.&lt;br /&gt;
* No ordering of OSTs within a pool is defined.&lt;br /&gt;
* Stripe allocation within a pool follows normal stripe allocation rules.&lt;br /&gt;
* Pool membership can change at any time; existing files are unaffected.&lt;br /&gt;
&lt;br /&gt;
== Creating and Managing Pools ==&lt;br /&gt;
&lt;br /&gt;
=== Create a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl pool_new fsname.poolname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl pool_new testfs.flash_pool&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add OSTs to a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Add individual OSTs&lt;br /&gt;
lctl pool_add testfs.flash_pool OST[0-3]&lt;br /&gt;
&lt;br /&gt;
# Add a range of OSTs&lt;br /&gt;
lctl pool_add testfs.flash_pool OST[0000-0007]&lt;br /&gt;
&lt;br /&gt;
# Add a single OST&lt;br /&gt;
lctl pool_add testfs.flash_pool OST0010&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove OSTs from a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl pool_remove testfs.flash_pool OST0003&lt;br /&gt;
lctl pool_del testfs.flash_pool OST[0004-0007]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;pool_remove&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pool_del&amp;lt;/code&amp;gt; are equivalent for removing OSTs from a pool.&lt;br /&gt;
&lt;br /&gt;
=== Destroy a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Remove all OSTs first, then destroy&lt;br /&gt;
lctl pool_destroy testfs.flash_pool&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pool must be empty (all OSTs removed) before it can be destroyed.&lt;br /&gt;
&lt;br /&gt;
== Listing Pools and Pool Membership ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# List all pools in a filesystem&lt;br /&gt;
lctl pool_list testfs&lt;br /&gt;
lfs pool_list testfs&lt;br /&gt;
&lt;br /&gt;
# List OSTs in a specific pool&lt;br /&gt;
lctl pool_list testfs.flash_pool&lt;br /&gt;
lfs pool_list testfs.flash_pool&lt;br /&gt;
&lt;br /&gt;
# Also visible via proc&lt;br /&gt;
lctl get_param lov.testfs-*.pools.flash_pool&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using Pools for File Striping ==&lt;br /&gt;
&lt;br /&gt;
=== Set a Directory to Use a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# New files in /mnt/testfs/fast will be striped across flash_pool OSTs&lt;br /&gt;
lfs setstripe -p flash_pool /mnt/testfs/fast&lt;br /&gt;
&lt;br /&gt;
# Combine pool with stripe count&lt;br /&gt;
lfs setstripe -p flash_pool -c 4 /mnt/testfs/fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create a Single File in a Pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lfs setstripe -p flash_pool /mnt/testfs/myfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check Pool Assignment ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lfs getstripe -p /mnt/testfs/fast&lt;br /&gt;
lfs getstripe /mnt/testfs/myfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pool Quotas ==&lt;br /&gt;
&lt;br /&gt;
Since Lustre 2.14, quotas can be set per OST pool, limiting how much space a user/group/project can consume on a specific pool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important:&amp;#039;&amp;#039;&amp;#039; A global quota limit must be set before pool quota limits will work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Step 1: Set a global limit (required)&lt;br /&gt;
lfs setquota -u alice -B 100T /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# Step 2: Set a pool-specific limit&lt;br /&gt;
lfs setquota -u alice --pool flash_pool -B 1T /mnt/testfs&lt;br /&gt;
&lt;br /&gt;
# View pool quota&lt;br /&gt;
lfs quota -u alice --pool flash_pool /mnt/testfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pool quotas also work with group (&amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt;) and project (&amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;) quotas.&lt;br /&gt;
&lt;br /&gt;
See [[OST Pool Quotas]] for full details.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== Tiered Storage ===&lt;br /&gt;
&lt;br /&gt;
Group fast NVMe OSTs into a &amp;lt;code&amp;gt;flash_pool&amp;lt;/code&amp;gt; and slower HDD OSTs into an &amp;lt;code&amp;gt;archive_pool&amp;lt;/code&amp;gt;. Direct hot data to the flash pool and cold data to the archive pool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl pool_new testfs.flash_pool&lt;br /&gt;
lctl pool_add testfs.flash_pool OST[0000-0003]  # NVMe OSTs&lt;br /&gt;
&lt;br /&gt;
lctl pool_new testfs.archive_pool&lt;br /&gt;
lctl pool_add testfs.archive_pool OST[0004-0015]  # HDD OSTs&lt;br /&gt;
&lt;br /&gt;
lfs setstripe -p flash_pool /mnt/testfs/scratch&lt;br /&gt;
lfs setstripe -p archive_pool /mnt/testfs/archive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rack-Aware Placement ===&lt;br /&gt;
&lt;br /&gt;
Group OSTs by physical rack to keep a job&amp;#039;s I/O local:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lctl pool_new testfs.rack1&lt;br /&gt;
lctl pool_add testfs.rack1 OST[0000-0007]&lt;br /&gt;
&lt;br /&gt;
lctl pool_new testfs.rack2&lt;br /&gt;
lctl pool_add testfs.rack2 OST[0008-0015]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FLR Fault Domains ===&lt;br /&gt;
&lt;br /&gt;
With File Level Redundancy (FLR/mirroring), place each mirror on a different pool to ensure hardware fault isolation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lfs mirror create -N -p pool_a -N -p pool_b /mnt/testfs/critical_file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Lustre Striping Best Practices]]&lt;br /&gt;
* [[Creating and Managing OST Pools]]&lt;br /&gt;
* [[OST Pool Quotas]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Lustre Systems Administration]]&lt;br /&gt;
[[Category:Lustre Storage Management]]&lt;/div&gt;</summary>
		<author><name>Elliswilson</name></author>
	</entry>
</feed>