<?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_Deployment_Patterns</id>
	<title>Lustre Deployment Patterns - 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_Deployment_Patterns"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Deployment_Patterns&amp;action=history"/>
	<updated>2026-08-09T00:58:11Z</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_Deployment_Patterns&amp;diff=5513&amp;oldid=prev</id>
		<title>Elliswilson: Created page with &quot;== Lustre Deployment Patterns ==  This page describes common Lustre deployment architectures at different scales. Use these patterns as starting points for your own deployment. For detailed hardware sizing, see Lustre Hardware Sizing Guide.  === Pattern 1: Minimal (3 Nodes) ===  &#039;&#039;&#039;Use case:&#039;&#039;&#039; Development, testing, learning Lustre, small research groups.  {| class=&quot;wikitable&quot; |+ &#039;&#039;&#039;Pattern 1 Topology&#039;&#039;&#039; |- ! Node !! Role !! Storage !! Notes |- | node1 || MGS + MDS (...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Deployment_Patterns&amp;diff=5513&amp;oldid=prev"/>
		<updated>2026-05-11T14:50:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Lustre Deployment Patterns ==  This page describes common Lustre deployment architectures at different scales. Use these patterns as starting points for your own deployment. For detailed hardware sizing, see &lt;a href=&quot;/Lustre_Hardware_Sizing_Guide&quot; title=&quot;Lustre Hardware Sizing Guide&quot;&gt;Lustre Hardware Sizing Guide&lt;/a&gt;.  === Pattern 1: Minimal (3 Nodes) ===  &amp;#039;&amp;#039;&amp;#039;Use case:&amp;#039;&amp;#039;&amp;#039; Development, testing, learning Lustre, small research groups.  {| class=&amp;quot;wikitable&amp;quot; |+ &amp;#039;&amp;#039;&amp;#039;Pattern 1 Topology&amp;#039;&amp;#039;&amp;#039; |- ! Node !! Role !! Storage !! Notes |- | node1 || MGS + MDS (...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Lustre Deployment Patterns ==&lt;br /&gt;
&lt;br /&gt;
This page describes common Lustre deployment architectures at different&lt;br /&gt;
scales. Use these patterns as starting points for your own deployment.&lt;br /&gt;
For detailed hardware sizing, see [[Lustre Hardware Sizing Guide]].&lt;br /&gt;
&lt;br /&gt;
=== Pattern 1: Minimal (3 Nodes) ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use case:&amp;#039;&amp;#039;&amp;#039; Development, testing, learning Lustre, small research&lt;br /&gt;
groups.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;Pattern 1 Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Role !! Storage !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| node1 || MGS + MDS (combined) || MDT: 100 GB SSD || Serves both management and metadata&lt;br /&gt;
|-&lt;br /&gt;
| node2 || OSS || OST0: 24 TB HDD || Single object storage server&lt;br /&gt;
|-&lt;br /&gt;
| node3 || Client || — || Mounts the filesystem&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Network:&amp;#039;&amp;#039;&amp;#039; All nodes connected via 10/25 GbE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Characteristics:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Combined MGS/MDT on a single device, single MDS node.&lt;br /&gt;
* One OSS with one or two OSTs.&lt;br /&gt;
* No high availability — if any server fails, the filesystem is down.&lt;br /&gt;
* Total capacity: 24–48 TB.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;When to use this:&amp;#039;&amp;#039;&amp;#039; Learning Lustre, CI/CD testing environments,&lt;br /&gt;
small datasets with few concurrent users. Not suitable for production&lt;br /&gt;
workloads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup guide:&amp;#039;&amp;#039;&amp;#039; [[Lustre Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
=== Pattern 2: Small Production (5–10 Nodes) ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use case:&amp;#039;&amp;#039;&amp;#039; Small research groups, departmental storage, moderate&lt;br /&gt;
datasets.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;Pattern 2 Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Role !! Storage !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| mds1 || MGS + MDS (combined) || MDT: 500 GB SSD || Single metadata server&lt;br /&gt;
|-&lt;br /&gt;
| oss1 || OSS || OST0, OST1 (2× 24 TB each) ||&lt;br /&gt;
|-&lt;br /&gt;
| oss2 || OSS || OST2, OST3 (2× 24 TB each) || Scale to 4 OSSs as needed&lt;br /&gt;
|-&lt;br /&gt;
| 3–8 nodes || Clients || — ||&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Network:&amp;#039;&amp;#039;&amp;#039; Dedicated Lustre network (InfiniBand or 25+ GbE)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Characteristics:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Combined MGS/MDT. Single MDS is sufficient for &amp;lt; 100M files.&lt;br /&gt;
* 2–4 OSSs, each with 2–4 OSTs.&lt;br /&gt;
* No HA — acceptable when downtime for repair is tolerable.&lt;br /&gt;
* Total capacity: 100 TB – 1 PB.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;When to add HA:&amp;#039;&amp;#039;&amp;#039; If the filesystem supports production workloads&lt;br /&gt;
where downtime costs more than the HA hardware.&lt;br /&gt;
&lt;br /&gt;
=== Pattern 3: Medium Production with HA (20–100 Nodes) ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use case:&amp;#039;&amp;#039;&amp;#039; Department clusters, medium HPC systems, production&lt;br /&gt;
environments requiring uptime.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;Pattern 3 Topology — HA Pairs&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! HA Pair !! Nodes !! Role !! Storage !! Failover Mode&lt;br /&gt;
|-&lt;br /&gt;
| MDS pair || mds1, mds2 || MGS + MDS || MGS+MDT on shared SSD || Active/passive&lt;br /&gt;
|-&lt;br /&gt;
| OSS pair A || oss1, oss2 || OSS || OST0–3 on shared storage || Active/active (each serves 2 OSTs normally; one takes all 4 on failover)&lt;br /&gt;
|-&lt;br /&gt;
| OSS pair B || oss3, oss4 || OSS || OST4–7 on shared storage || Active/active&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Clients:&amp;#039;&amp;#039;&amp;#039; 20–100 nodes. &amp;#039;&amp;#039;&amp;#039;Network:&amp;#039;&amp;#039;&amp;#039; Dedicated Lustre fabric. &amp;#039;&amp;#039;&amp;#039;Fencing:&amp;#039;&amp;#039;&amp;#039; STONITH required for all HA pairs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Characteristics:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* MDS in an HA pair (active/passive). Both MDS nodes can access the MDT via shared storage (SAN, multipath, or ZFS with shared disk).&lt;br /&gt;
* OSSs in HA pairs (active/active). Each pair shares access to their OSTs. In normal operation, each OSS serves half the OSTs. On failover, one OSS takes over all OSTs in the pair.&lt;br /&gt;
* Pacemaker/Corosync manages failover.&lt;br /&gt;
* Total capacity: 500 TB – 5 PB.&lt;br /&gt;
* Typical: 4–8 OSSs (2–4 HA pairs), each with 4–8 OSTs.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Key design decisions:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Shared storage for HA:&amp;#039;&amp;#039;&amp;#039; The MDS and OSS pairs need shared access to their targets. This is typically achieved with a SAN (Fibre Channel or iSCSI) or shared JBODs with multipath.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Network separation:&amp;#039;&amp;#039;&amp;#039; Lustre traffic should be on a dedicated network or VLAN, separate from management traffic.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fencing:&amp;#039;&amp;#039;&amp;#039; HA requires STONITH/fencing to prevent split-brain. See [[Lustre Server Fault Isolation with Pacemaker Node Fencing]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup guide:&amp;#039;&amp;#039;&amp;#039; [[Creating a Framework for High Availability with Pacemaker]]&lt;br /&gt;
&lt;br /&gt;
=== Pattern 4: Large HPC with DNE (100+ Nodes) ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use case:&amp;#039;&amp;#039;&amp;#039; Large HPC centers, national labs, cloud-scale storage.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;Pattern 4 Topology — Large HPC with DNE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Nodes !! Storage !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MGS (HA pair) || Standalone or co-located with mds-pair-1 || MGT (&amp;lt; 100 MB) || Independent HA for manageability&lt;br /&gt;
|-&lt;br /&gt;
| MDS pair 1 || 2 nodes (active/passive) || MDT0 || Serves namespace subtree A&lt;br /&gt;
|-&lt;br /&gt;
| MDS pair 2 || 2 nodes (active/passive) || MDT1 || Serves namespace subtree B (add more pairs as needed)&lt;br /&gt;
|-&lt;br /&gt;
| OSS HA pairs || 25–100+ pairs || OST0 – OST399+ || Each pair: 4–8 OSTs on shared storage&lt;br /&gt;
|-&lt;br /&gt;
| LNet routers || 2+ nodes (optional) || — || Required only if clients and servers are on different network fabrics&lt;br /&gt;
|-&lt;br /&gt;
| Clients || 100–10,000+ nodes || — || Connected via high-speed fabric; Multi-Rail recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Characteristics:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Separate MGS&amp;#039;&amp;#039;&amp;#039; — independent of any MDS, for manageability. The MGS is small (&amp;lt; 100 MB) and can be its own HA pair.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Multiple MDTs (DNE)&amp;#039;&amp;#039;&amp;#039; — the filesystem namespace is distributed across 2–4+ MDTs, each on its own MDS server. Different top-level directories (or even subdirectories within a directory) can be assigned to different MDTs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Many OSS HA pairs&amp;#039;&amp;#039;&amp;#039; — 25 to 100+ pairs, each with 4–8 OSTs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;LNet routing&amp;#039;&amp;#039;&amp;#039; — if clients are on a different network fabric than servers (e.g., Ethernet clients accessing InfiniBand servers), LNet routers bridge the networks.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Multi-Rail&amp;#039;&amp;#039;&amp;#039; — servers and clients use multiple network interfaces for bandwidth aggregation and fault tolerance.&lt;br /&gt;
* Total capacity: 10 PB – 1 EB.&lt;br /&gt;
* Total OSTs: hundreds to thousands.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DNE considerations:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Each top-level directory is created on a specific MDT. Use &amp;lt;code&amp;gt;lfs mkdir -i &amp;lt;mdt_index&amp;gt;&amp;lt;/code&amp;gt; to control placement.&lt;br /&gt;
* Subdirectories default to the parent&amp;#039;s MDT unless explicitly set otherwise.&lt;br /&gt;
* DNE is transparent to applications — the unified namespace looks like a single directory tree.&lt;br /&gt;
* Striped directories (a single directory spread across multiple MDTs) help when a single directory has very high metadata load.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;When DNE helps:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* More than ~4 billion files (ldiskfs MDT limit)&lt;br /&gt;
* Metadata operation rate exceeding what a single MDS can handle&lt;br /&gt;
* Need to isolate different projects/groups onto different MDTs&lt;br /&gt;
&lt;br /&gt;
=== Co-location Decisions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Question !! Recommendation&lt;br /&gt;
|-&lt;br /&gt;
| Combine MGS and MDT?&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Yes&amp;#039;&amp;#039;&amp;#039; for small/medium deployments. Separate only when managing&lt;br /&gt;
  multiple independent filesystems or needing independent MGS HA.&lt;br /&gt;
|-&lt;br /&gt;
| Put MDS and OSS on the same node?&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;No&amp;#039;&amp;#039;&amp;#039; for production. The MDS and OSS have very different I/O&lt;br /&gt;
  patterns and compete for CPU, memory, and network. Acceptable only&lt;br /&gt;
  for testing or very small deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Run Lustre clients on server nodes?&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;No.&amp;#039;&amp;#039;&amp;#039; Mounting the filesystem on a server node adds lock&lt;br /&gt;
  contention and can cause deadlocks under memory pressure. Use&lt;br /&gt;
  dedicated client nodes.&lt;br /&gt;
|-&lt;br /&gt;
| Multiple OSTs per OSS?&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Yes, 2–8 is typical.&amp;#039;&amp;#039;&amp;#039; More than 8 per OSS may bottleneck on&lt;br /&gt;
  network or CPU. Fewer than 2 underutilizes the OSS hardware.&lt;br /&gt;
|-&lt;br /&gt;
| Multiple MDTs per MDS?&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;1–4 is typical.&amp;#039;&amp;#039;&amp;#039; More MDTs per MDS reduces the benefit of DNE&lt;br /&gt;
  (the MDS is the bottleneck, not the MDT storage).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Size your hardware:&amp;#039;&amp;#039;&amp;#039; [[Lustre Hardware Sizing Guide]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Set up your first filesystem:&amp;#039;&amp;#039;&amp;#039; [[Lustre Quick Start Guide]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Configure high availability:&amp;#039;&amp;#039;&amp;#039; [[Creating a Framework for High Availability with Pacemaker]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Understand the architecture:&amp;#039;&amp;#039;&amp;#039; [[Lustre Architecture for Admins]]&lt;/div&gt;</summary>
		<author><name>Elliswilson</name></author>
	</entry>
</feed>