<?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_Quick_Start_Guide</id>
	<title>Lustre Quick Start Guide - 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_Quick_Start_Guide"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Quick_Start_Guide&amp;action=history"/>
	<updated>2026-10-28T12:53:58Z</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_Quick_Start_Guide&amp;diff=5477&amp;oldid=prev</id>
		<title>Elliswilson: Created page with &quot;== Lustre Quick Start Guide ==  This guide walks you through setting up a minimal, working Lustre filesystem from scratch. By the end, you will have a functioning three-node Lustre cluster:  * &#039;&#039;&#039;node1&#039;&#039;&#039; — Combined MGS/MDS (metadata + management) * &#039;&#039;&#039;node2&#039;&#039;&#039; — OSS (object storage, one OST) * &#039;&#039;&#039;node3&#039;&#039;&#039; — Client  This guide uses ldiskfs as the backend filesystem and TCP networking. For ZFS, see Lustre with ZFS Install. For InfiniBand, see Infiniband Config...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Lustre_Quick_Start_Guide&amp;diff=5477&amp;oldid=prev"/>
		<updated>2026-04-30T18:17:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Lustre Quick Start Guide ==  This guide walks you through setting up a minimal, working Lustre filesystem from scratch. By the end, you will have a functioning three-node Lustre cluster:  * &amp;#039;&amp;#039;&amp;#039;node1&amp;#039;&amp;#039;&amp;#039; — Combined MGS/MDS (metadata + management) * &amp;#039;&amp;#039;&amp;#039;node2&amp;#039;&amp;#039;&amp;#039; — OSS (object storage, one OST) * &amp;#039;&amp;#039;&amp;#039;node3&amp;#039;&amp;#039;&amp;#039; — Client  This guide uses ldiskfs as the backend filesystem and TCP networking. For ZFS, see &lt;a href=&quot;/Lustre_with_ZFS_Install&quot; title=&quot;Lustre with ZFS Install&quot;&gt;Lustre with ZFS Install&lt;/a&gt;. For InfiniBand, see Infiniband Config...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Lustre Quick Start Guide ==&lt;br /&gt;
&lt;br /&gt;
This guide walks you through setting up a minimal, working Lustre&lt;br /&gt;
filesystem from scratch. By the end, you will have a functioning&lt;br /&gt;
three-node Lustre cluster:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;node1&amp;#039;&amp;#039;&amp;#039; — Combined MGS/MDS (metadata + management)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;node2&amp;#039;&amp;#039;&amp;#039; — OSS (object storage, one OST)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;node3&amp;#039;&amp;#039;&amp;#039; — Client&lt;br /&gt;
&lt;br /&gt;
This guide uses ldiskfs as the backend filesystem and TCP networking.&lt;br /&gt;
For ZFS, see [[Lustre with ZFS Install]]. For InfiniBand, see&lt;br /&gt;
[[Infiniband Configuration Howto]].&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hardware (per node):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* 64-bit x86 CPU&lt;br /&gt;
* At least 2 GB RAM (more for MDS — see [[Lustre Hardware Sizing Guide]])&lt;br /&gt;
* Network connectivity between all three nodes (Ethernet is fine for testing)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Storage:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;node1 (MDS):&amp;#039;&amp;#039;&amp;#039; One dedicated block device for the combined MGT/MDT (e.g., &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt;). SSD recommended.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;node2 (OSS):&amp;#039;&amp;#039;&amp;#039; One dedicated block device for the OST (e.g., &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt;). Do not partition — use the entire device.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Software:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* A supported Linux distribution: RHEL/Rocky/Alma 8.x or 9.x, SLES 15 SPx, or Ubuntu 22.04+/Debian 12+&lt;br /&gt;
* Lustre packages installed on all nodes. See [[Compiling Lustre]] (from source) or [[Installing the Lustre Software]] (from RPMs)&lt;br /&gt;
* &amp;lt;code&amp;gt;e2fsprogs&amp;lt;/code&amp;gt; (Lustre-patched version) on servers&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Networking:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* All nodes must be able to reach each other on &amp;#039;&amp;#039;&amp;#039;TCP port 988&amp;#039;&amp;#039;&amp;#039;. Open this port in any firewall:&lt;br /&gt;
 firewall-cmd --permanent --add-port=988/tcp&lt;br /&gt;
 firewall-cmd --reload&lt;br /&gt;
* All nodes must have consistent UID/GID mappings (same &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/group&amp;lt;/code&amp;gt;, or LDAP/NIS).&lt;br /&gt;
* Client clocks should be synchronized (NTP or chrony).&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Configure LNet ===&lt;br /&gt;
&lt;br /&gt;
By default, LNet uses the first available TCP interface. If this is&lt;br /&gt;
correct for your environment, no LNet configuration is needed.&lt;br /&gt;
&lt;br /&gt;
If you need to specify which network interface or IP address to use,&lt;br /&gt;
configure LNet before formatting targets.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Option A: lnetctl (recommended)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
On each node, create &amp;lt;code&amp;gt;/etc/lnet.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 net:&lt;br /&gt;
     - net type: tcp&lt;br /&gt;
       local NI:&lt;br /&gt;
         - nid: 10.0.0.1@tcp&lt;br /&gt;
           interfaces:&lt;br /&gt;
               0: eth1&lt;br /&gt;
&lt;br /&gt;
Then load and configure LNet:&lt;br /&gt;
&lt;br /&gt;
 modprobe lnet&lt;br /&gt;
 lnetctl lnet configure&lt;br /&gt;
 lnetctl import /etc/lnet.conf&lt;br /&gt;
 lnetctl net show&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Option B: Module parameter (simpler, legacy)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Create &amp;lt;code&amp;gt;/etc/modprobe.d/lnet.conf&amp;lt;/code&amp;gt; on each node:&lt;br /&gt;
&lt;br /&gt;
 options lnet networks=tcp(eth1)&lt;br /&gt;
&lt;br /&gt;
Then load LNet:&lt;br /&gt;
&lt;br /&gt;
 modprobe lnet&lt;br /&gt;
 lnetctl lnet configure&lt;br /&gt;
 lnetctl net show&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verify:&amp;#039;&amp;#039;&amp;#039; On each node, confirm LNet is up and shows the expected&lt;br /&gt;
NID:&lt;br /&gt;
&lt;br /&gt;
 $ lnetctl net show&lt;br /&gt;
 net:&lt;br /&gt;
     - net type: lo&lt;br /&gt;
       local NI:&lt;br /&gt;
         - nid: 0@lo&lt;br /&gt;
     - net type: tcp&lt;br /&gt;
       local NI:&lt;br /&gt;
         - nid: 10.0.0.1@tcp&lt;br /&gt;
&lt;br /&gt;
Note the NID of your MDS node (e.g., &amp;lt;code&amp;gt;10.0.0.1@tcp&amp;lt;/code&amp;gt;).&lt;br /&gt;
You will need it when formatting OSTs and mounting clients.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Format the Combined MGS/MDT (node1) ===&lt;br /&gt;
&lt;br /&gt;
On &amp;#039;&amp;#039;&amp;#039;node1&amp;#039;&amp;#039;&amp;#039;, format the block device as a combined MGS + MDT:&lt;br /&gt;
&lt;br /&gt;
 mkfs.lustre --fsname=testfs --mgs --mdt --index=0 /dev/sdb&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--fsname=testfs&amp;lt;/code&amp;gt; — The filesystem name (up to 8 characters, alphanumeric).&lt;br /&gt;
* &amp;lt;code&amp;gt;--mgs&amp;lt;/code&amp;gt; — This target will also serve as the MGS.&lt;br /&gt;
* &amp;lt;code&amp;gt;--mdt --index=0&amp;lt;/code&amp;gt; — This is the first (and only) MDT.&lt;br /&gt;
&lt;br /&gt;
This creates an ldiskfs filesystem on &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; with&lt;br /&gt;
Lustre metadata structures.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Format the OST (node2) ===&lt;br /&gt;
&lt;br /&gt;
On &amp;#039;&amp;#039;&amp;#039;node2&amp;#039;&amp;#039;&amp;#039;, format the block device as an OST:&lt;br /&gt;
&lt;br /&gt;
 mkfs.lustre --fsname=testfs --mgsnode=10.0.0.1@tcp \&lt;br /&gt;
     --ost --index=0 /dev/sdb&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--mgsnode=10.0.0.1@tcp&amp;lt;/code&amp;gt; — The NID of the MGS (node1). Replace with your actual MDS NID from Step 1.&lt;br /&gt;
* &amp;lt;code&amp;gt;--ost --index=0&amp;lt;/code&amp;gt; — This is the first OST.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;To add more OSTs:&amp;#039;&amp;#039;&amp;#039; Format additional block devices with&lt;br /&gt;
&amp;lt;code&amp;gt;--index=1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--index=2&amp;lt;/code&amp;gt;, etc. Each OST must&lt;br /&gt;
be a separate block device.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Mount the Servers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Order matters.&amp;#039;&amp;#039;&amp;#039; Mount the MGS/MDT first, then the OSTs.&lt;br /&gt;
&lt;br /&gt;
On &amp;#039;&amp;#039;&amp;#039;node1&amp;#039;&amp;#039;&amp;#039; (MGS/MDS):&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /mnt/mdt&lt;br /&gt;
 mount -t lustre /dev/sdb /mnt/mdt&lt;br /&gt;
&lt;br /&gt;
On &amp;#039;&amp;#039;&amp;#039;node2&amp;#039;&amp;#039;&amp;#039; (OSS):&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /mnt/ost0&lt;br /&gt;
 mount -t lustre /dev/sdb /mnt/ost0&lt;br /&gt;
&lt;br /&gt;
Verify that both servers started successfully:&lt;br /&gt;
&lt;br /&gt;
 # On node1:&lt;br /&gt;
 dmesg | tail -20&lt;br /&gt;
 # Look for: &amp;quot;Lustre: testfs-MDT0000: now serving testfs ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # On node2:&lt;br /&gt;
 dmesg | tail -20&lt;br /&gt;
 # Look for: &amp;quot;Lustre: testfs-OST0000: now serving testfs ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Mount the Client (node3) ===&lt;br /&gt;
&lt;br /&gt;
On &amp;#039;&amp;#039;&amp;#039;node3&amp;#039;&amp;#039;&amp;#039;, mount the filesystem:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /mnt/lustre&lt;br /&gt;
 mount -t lustre 10.0.0.1@tcp:/testfs /mnt/lustre&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10.0.0.1@tcp&amp;lt;/code&amp;gt; — The NID of the MGS.&lt;br /&gt;
* &amp;lt;code&amp;gt;/testfs&amp;lt;/code&amp;gt; — The filesystem name, preceded by a slash.&lt;br /&gt;
&lt;br /&gt;
Verify the mount:&lt;br /&gt;
&lt;br /&gt;
 $ df -h /mnt/lustre&lt;br /&gt;
 Filesystem           Size  Used Avail Use% Mounted on&lt;br /&gt;
 10.0.0.1@tcp:/testfs  50G   38M   47G   1% /mnt/lustre&lt;br /&gt;
&lt;br /&gt;
 $ lfs df /mnt/lustre&lt;br /&gt;
 UUID                 1K-blocks  Used   Available Use% Mounted on&lt;br /&gt;
 testfs-MDT0000_UUID   5135808  23840    4849856   0% /mnt/lustre[MDT:0]&lt;br /&gt;
 testfs-OST0000_UUID  51502080  38000   48899760   0% /mnt/lustre[OST:0]&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Test the Filesystem ===&lt;br /&gt;
&lt;br /&gt;
On the client, create a file and verify it works:&lt;br /&gt;
&lt;br /&gt;
 # Create a test file&lt;br /&gt;
 echo &amp;quot;Hello, Lustre!&amp;quot; &amp;gt; /mnt/lustre/hello.txt&lt;br /&gt;
 cat /mnt/lustre/hello.txt&lt;br /&gt;
&lt;br /&gt;
 # Check the file&amp;#039;s layout (which OST stores it)&lt;br /&gt;
 lfs getstripe /mnt/lustre/hello.txt&lt;br /&gt;
&lt;br /&gt;
 # Create a larger file and check performance&lt;br /&gt;
 dd if=/dev/zero of=/mnt/lustre/testfile bs=1M count=100&lt;br /&gt;
 lfs getstripe /mnt/lustre/testfile&lt;br /&gt;
&lt;br /&gt;
 # Check filesystem usage&lt;br /&gt;
 lfs df -h /mnt/lustre&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Shutdown ===&lt;br /&gt;
&lt;br /&gt;
When you need to stop the filesystem, unmount in reverse order:&lt;br /&gt;
&lt;br /&gt;
 # 1. Unmount clients first&lt;br /&gt;
 # On node3:&lt;br /&gt;
 umount /mnt/lustre&lt;br /&gt;
&lt;br /&gt;
 # 2. Unmount OSTs&lt;br /&gt;
 # On node2:&lt;br /&gt;
 umount /mnt/ost0&lt;br /&gt;
&lt;br /&gt;
 # 3. Unmount MDT/MGT last&lt;br /&gt;
 # On node1:&lt;br /&gt;
 umount /mnt/mdt&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Problem !! Likely Cause !! Fix&lt;br /&gt;
|-&lt;br /&gt;
| Client mount hangs&lt;br /&gt;
| Port 988 blocked, or wrong MGS NID&lt;br /&gt;
| Check firewall rules. Verify MGS NID with &amp;lt;code&amp;gt;lnetctl net show&amp;lt;/code&amp;gt; on node1.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mount: /mnt/lustre: mount(2) system call failed: Connection timed out&amp;lt;/code&amp;gt;&lt;br /&gt;
| LNet not configured, or network unreachable&lt;br /&gt;
| Run &amp;lt;code&amp;gt;lnetctl net show&amp;lt;/code&amp;gt; on all nodes. Verify nodes can ping each other. Check that &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; module is loaded.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkfs.lustre: command not found&amp;lt;/code&amp;gt;&lt;br /&gt;
| Lustre server packages not installed&lt;br /&gt;
| Install &amp;lt;code&amp;gt;lustre&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lustre-osd-ldiskfs-mount&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mount.lustre: mount /dev/sdb ... failed: No such device&amp;lt;/code&amp;gt;&lt;br /&gt;
| Lustre kernel modules not loaded&lt;br /&gt;
| Run &amp;lt;code&amp;gt;modprobe lustre&amp;lt;/code&amp;gt; (servers) or &amp;lt;code&amp;gt;modprobe lustre&amp;lt;/code&amp;gt; (clients).&lt;br /&gt;
|-&lt;br /&gt;
| OST mount fails with &amp;quot;no MGS&amp;quot;&lt;br /&gt;
| MGS/MDT not mounted yet&lt;br /&gt;
| Mount the MGS/MDT on node1 first. Servers must start in order: MGT → MDT → OST.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;e2fsck: Bad magic number in super-block&amp;lt;/code&amp;gt;&lt;br /&gt;
| Wrong device, or device was not formatted with mkfs.lustre&lt;br /&gt;
| Double-check the device path. Format with &amp;lt;code&amp;gt;mkfs.lustre&amp;lt;/code&amp;gt; first.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== What Next? ===&lt;br /&gt;
&lt;br /&gt;
You now have a working Lustre filesystem. Here are suggested next steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Add more OSTs&amp;#039;&amp;#039;&amp;#039; for additional storage capacity. See [[Lustre File System Expansion]].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Configure file striping&amp;#039;&amp;#039;&amp;#039; for your workload. See [[Lustre Striping Best Practices]].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Set up high availability&amp;#039;&amp;#039;&amp;#039; so the filesystem survives server failures. See [[Creating a Framework for High Availability with Pacemaker]].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Read the common mistakes page&amp;#039;&amp;#039;&amp;#039; before going to production. See [[Lustre Common Mistakes]].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Explore monitoring&amp;#039;&amp;#039;&amp;#039; to understand your filesystem&amp;#039;s health. See [[Lustre Health Checks]].&lt;/div&gt;</summary>
		<author><name>Elliswilson</name></author>
	</entry>
</feed>