OS Manuals

lctl-set_param(8)

lctl-set_param - Lustre tunable parameter setting utility

LCTL-SET_PARAM(8) Lustre Configuration Utilities LCTL-SET_PARAM(8)

lctl-set_param - Lustre tunable parameter setting utility

lctl set_param [--client|-C[FSNAME]] [--delete|-d] [--file|-F] [--no-name|-n] [--module|-o] [--permanent|-P] [--threads|-t[THREAD_COUNT]] PARAMETER=VALUE ...
lctl set_param -F FILENAME

Set the value of the named Lustre or LNet PARAMETER to VALUE on the local node, or permanently on the MGS for the whole filesystem. Parameter names consist of one or more components, separated by a '.' (period). Each component may be specified by plain text or with a wildcard in the glob(7) format, typically using '*' to match all named instances of the given parameter. When wildcards are used, more than one parameter may match and be changed, simplifying configuration for large filesystems with many instances of a device. Parameters are often, but not always, of the form OBD_NAME.OBD_INSTANCE.PARAMETER_NAME, where OBD_NAME is one of the OBD object types, like ldlm, llite, lmv, lov, mdc, osc, etc., and OBD_INSTANCE is the name of a Lustre device, like testfs-OST0000, but may be a specific component, or contain wildcards to match some or all device instances. Parameters can only be modified by the root user for security reasons.

The various options supported by lctl get_param are listed and explained below:

Instead of setting the parameter once, write the parameter to the /etc/lustre/mount.client.params config file on the local node. On all future Lustre client mounts on only that node those parameters will be set on the local node. If FSNAME was specified, the parameters will be instead written to the filesystem-specific /etc/lustre/mount.FSNAME.params config file on the local node. The filesystem specific params will be set only when that filesystem is mounted on that local node and will override the more generic client mount parameters from the /etc/lustre/mount.client.params file or permanent parameters from the MGS.
Remove the permanent setting (only for filesystem-wide parameters set with -P on the MGS or with -C on the local node).
Set parameters from FILENAME instead of from the command-line. The contents of FILENAME is YAML format, created by the output from running 'lctl llog_print FSNAME-client', or from any other valid llog configuration log as listed by 'lctl llog_catlist'.
Disable printing of the parameter name after setting it.
Allow module parameters to be visible to the lctl set_param command. The module parameters will be set on the local node at module load time.
Set PARAMETER permanently in the MGS configuration log for all mountpoints using the MGS where the command is run, both now and in the future. To limit wildcard PARAMETER matching to specific filesystems or parameters, itvis preferred that PARAMETER contains a suitably-specific expression for the OBD_NAME and OBD_INSTANCE, such as the FSNAME and/or specific target name.
Spawn threads to set multiple parameters in parallel, optionally specifying the maximum number of threads to run (with no space between -t and THREAD_COUNT). Without this option the specified parameter(s) are set serially. If lctl was compiled without pthread support, a warning message will be printed and parameters will be set serially. If -t is specified without any argument, it runs up to 8 threads by default.

This command supports bash-completion(1) for tab completion of parameter names available on the local node, with suitable shell and package installation. This can greatly simplify finding which parameters are available, instead of running lctl-list_param(8) repeatedly. To list long options (more descriptive and easily understood) type '--TAB', and to list short options type '-TAB'.

Set two parameters temporarily on the local node:

client# lctl set_param jobid_name=%H:%e:%u debug_mb=1024
jobid_name=%H:%e:%u
debug_mb=1024

Set two parameters, but don't print parameter names with the values:

client# lctl set_param -n jobid_name=%H:%e:%u debug_mb=1024
%H:%e:%u
1024

Run two parallel threads to set parameters that may do a lot of work:

client# lctl set_param -t2 ldlm.namespaces.*osc*.lru_size=clear
ldlm.namespaces.fsname-OST0001-osc-MDT0000.lru_size=clear
ldlm.namespaces.fsname-OST0000-osc-MDT0000.lru_size=clear

Permanently set a parameter with a wildcard in the MGS config llog:

mgs# lctl set_param -P osc.testfs-OST*.max_dirty_mb=512
osc.testfs-OST0000-osc-ffff8803c9c0f000.max_dirty_mb=512
osc.testfs-OST0001-osc-ffff8803c9c0f000.max_dirty_mb=512
osc.testfs-OST0002-osc-ffff8803c9c0f000.max_dirty_mb=512
osc.testfs-OST0003-osc-ffff8803c9c0f000.max_dirty_mb=512
osc.testfs-OST0004-osc-ffff8803c9c0f000.max_dirty_mb=512

Permanently set osc.testfs-*.max_dirty_mb=2000 when mounting 'testfs' and osc.testfs-*.max_dirty_mb=1024 for other Lustre mountpoints on this client node:

client# lctl set_param -C=test_fs osc.testfs-*.max_dirty_mb=2000
client# lctl set_param -C osc.*.max_dirty_mb=1024

Backup the 'params' configuration log, and then restore it (at some later time):

mgs# lctl llog_print params > /home/admin/params.yaml
[ params log is erased, not shown here ]
mgs# lctl set_param -F /home/admin/params.yaml

lctl set_param is part of the lustre(7) filesystem package since release 1.7.0

lustre(7), lctl(8), lctl-find_param(8), lctl-get_param(8), lctl-help_param(8), lctl-list_param(8), lctl-llog_catlist(8), lctl-llog_print(8)

2026-03-06 Lustre

lustre 2.17.59-r2 · enterprise-packages · ingested 2026-10-11