Self-Extending Layout (SEL)

Self-Extending Layout (SEL) is an extension of Progressive File Layout (PFL) introduced in Lustre 2.13 that allows the Metadata Server (MDS) to dynamically modify and extend the defined PFL layout as files grow, handling scenarios like OST out-of-space or tiered storage spillover. It enables automatic repetition or spillover of the last component, making it ideal for files with unknown final sizes or in hybrid storage environments (e.g., SSD to HDD). This guide is based on the Lustre Operations Manual (updated 2025) for Lustre 2.17.0 (January 2026). For more, see Lustre Manual.

Core Concepts

ConceptDescription
Dynamic ExtensionMDS extends the layout by repeating the last component or spilling over to a new tier/pool when the file grows beyond defined extents or encounters space issues.
Extension Size (-z)Specifies the increment size for each extension (e.g., 64M). Multiple of stripe size; min 64K.
SpilloverAutomatically moves to a slower tier (e.g., HDD) when fast tier (SSD) is full, using different pools per component.
Repeating ComponentsLast component repeats indefinitely if -E eof and -z set, or until a max size.
InstantiationComponents instantiate on write; SEL triggers extension via Layout Intent RPC.
Integration with FLRInteroperates with File Level Redundancy; extensions apply to all mirrors.
Backend SupportRequires ldiskfs with ea_inode or ZFS. ZFS uses dynamic inodes for large stripes.
Client CompatibilityClients ≥2.13 required for SEL creation/use; older clients may access but not extend.

Commands

CommandPurposeKey Options
lfs setstripeSet SEL with extension size; integrated with PFL syntax.-z <size> (extension size), -E <end> (component end), combined with -c, -S, -p
lfs getstripeView SEL details, including extension sizes and repeated components.-v (verbose)
lfs migrateMigrate files to/from SEL layouts.Same as setstripe with -z
lfs mirror createCreate mirrored SEL files.-N, combined with -z per mirror
lfs mirror resyncResync after SEL extensions.--only <id>
lctl set_param lod.*.sel_enable=1Enable SEL globally on MDS.Toggle for dynamic extension
lctl lfsck_start -t layoutRepair SEL inconsistencies.-A, -o

Examples

# Basic SEL with Repeating Last Component
lfs setstripe -E 1G -c 1 -z 64M -E -1 -c 4 -z 256M /mnt/lustre/sel_file

# Tiered Spillover (SSD to HDD)
lfs setstripe -E 4G -c 2 -p ssd_pool -z 1G -E -1 -c -1 -p hdd_pool -z 4G /mnt/lustre/tiered_file

# Directory Default SEL
lfs setstripe -E 256M -c 1 -z 128M -E eof -c -1 -z 1G /mnt/lustre/sel_dir

# Mirrored SEL
lfs mirror create -N -E 1G -c 1 -z 64M -E -1 -c 4 -z 256M -N -c -1 -p archive /mnt/lustre/mirrored_sel

# View SEL
lfs getstripe -v /mnt/lustre/sel_file

Best Practices

Limitations

Recent Changes (Up to Lustre 2.17.0)

Related Tools & Diagnostics