LCTL-SET_PARAM(8)
β¨ LCTL-SET_PARAM(8) β¨
okay bestie, sit down, hydrate, because we're talking about lctl set_param from the Lustre Configuration Utilities set π this is the lil command that sets your Lustre tunables, and it's lowkey one of the most useful things in the whole toolkit.
πΈ NAME πΈ
lctl-set_param β the Lustre tunable parameter setting utility. that's it, that's the job, and it ate π
π SYNOPSIS π
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
π¦ DESCRIPTION π¦
So the whole vibe is: you take a named Lustre or LNet PARAMETER and you set it to VALUE, either just on the local node or permanently on the MGS for the entire filesystem. main character energy either way π
Parameter names are made of one or more components, and they're glued together with a . (a period, bestie, not a comma, not a slash β a period β¨). Every one of those components can be written out in plain text, OR you can use a wildcard in glob(7) format, and yeah the classic move is * to match every named instance of that parameter. When you wildcard it up, more than one parameter can match and get changed all at once, which is honestly a lifesaver when you're configuring a huge filesystem with a million device instances. no cap π«Ά
Parameters are often (not always, don't come for me) shaped like 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 it can also be a specific component, or contain wildcards to match some or all device instances β¨
π¨ security check bestie: parameters can only be modified by the root user. for security reasons. don't @ me.
π OPTIONS π
(the original says "the various options supported by lctl get_param" β yes, it says get_param, we're keeping it, it's iconic, moving on π)
-C,--clientβ instead of setting the parameter just once, write it into the/etc/lustre/mount.client.paramsconfig file on the local node. Then on all future Lustre client mounts on only that node, those parameters get set on the local node. If you specifiedFSNAME, they go instead to the filesystem-specific/etc/lustre/mount.FSNAME.paramsconfig file on the local node. Those filesystem-specific params are only set when that filesystem is mounted on that local node, and they override the more generic client mount parameters from the/etc/lustre/mount.client.paramsfile, or permanent parameters coming from the MGS. so: local specificity wins, periodt π-d,--deleteβ removes the permanent setting. only works for filesystem-wide parameters set with-Pon the MGS or with-Con the local node. bye bye permanent setting π-F,--fileβ set parameters fromFILENAMEinstead of from the command line. The contents ofFILENAMEare YAML format, created from the output of runninglctl llog_print FSNAME-client, or from any other valid llog configuration log as listed bylctl llog_catlist. obsessed with a good backup file π-n,--no-nameβ disables printing of the parameter name after setting it. just the value, no name, minimal, chic β¨-o,--moduleβ lets module parameters be visible to thelctl set_paramcommand. Those module parameters will be set on the local node at module load time π§-P,--permanentβ sets PARAMETER permanently in the MGS configuration log for all mountpoints using the MGS where the command is run β both now and in the future, no take-backs. To keep wildcard PARAMETER matching limited to specific filesystems or parameters, it's preferred that PARAMETER contains a suitably-specific expression for theOBD_NAMEandOBD_INSTANCE, like theFSNAMEand/or a specific target name. be specific, bestie, wildcards go feral otherwise π-t,--threads [THREAD_COUNT]β spawn threads to set multiple parameters in parallel, optionally specifying the max number of threads to run (and yes, with no space between-tand THREAD_COUNT). Without this option, the specified parameter(s) are set serially. Iflctlwas compiled without pthread support, a warning message gets printed and the parameters get set serially anyway (rude but fine). If-tis specified with no argument at all, it runs up to 8 threads by default π₯
β BASH COMPLETION β
This command supports bash-completion(1) for tab-completing parameter names available on the local node, assuming you have the right shell and package installed. Honestly this is a gift β it makes finding which parameters exist so much easier instead of running lctl-list_param(8) over and over and over π
Wanna see the long options (more descriptive, easier to understand)? type --TAB. Wanna see the short options? type -TAB. iykyk π
π EXAMPLES π
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
π«Ά AVAILABILITY π«Ά
lctl set_param is part of the lustre(7) filesystem package since release 1.7.0. she's been around, she's seasoned, she's a legend π
π SEE ALSO π
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)
and that's the whole page bestie!! this one comes to you from Lustre, dated 2026-03-06, and it's filed under the LCTL-SET_PARAM(8) manual page name π go forth and set your params responsibly, mwah πβ¨
π¦ where this page comes from
- ubuntu stonking: lustre-client-utils 2.17.58+dfsg-0ubuntu2 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms