LCTL-SET\_PARAM(8) Lustre Configuration Utilities LCTL-SET\_PARAM(8)

# [NAME](#NAME)

lctl-set\_param - Lustre tunable parameter setting utility

# [SYNOPSIS](#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](#DESCRIPTION)

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)](/man/enterprise-packages/lustre/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.

# [OPTIONS](#OPTIONS)

The various options supported by **lctl get\_param** are listed and explained below:

[**-C**, **--client**](#C)

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.

[**-d**, **--delete**](#d)

Remove the permanent setting (only for filesystem-wide parameters set with **-P** on the MGS or with **-C** on the local node).

[**-F**, **--file**](#F)

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**'.

[**-n**, **--no-name**](#n)

Disable printing of the parameter name after setting it.

[**-o**, **--module**](#o)

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.

[**-P**, **--permanent**](#P)

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.

[**-t**, **--threads** \[***THREAD\_COUNT*\]**](#t)

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.

# [BASH COMPLETION](#BASH_COMPLETION)

This command supports [**bash-completion**(1)](/man/enterprise-packages/lustre/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)](/man/enterprise-packages/lustre/lctl-list_param.8) repeatedly. To list long options (more descriptive and easily understood) type '**--TAB**', and to list short options type '**-TAB**'.

# [EXAMPLES](#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](#AVAILABILITY)

**lctl set\_param** is part of the [**lustre**(7)](/man/enterprise-packages/lustre/lustre.7) filesystem package since release 1.7.0

# [SEE ALSO](#SEE_ALSO)

[**lustre**(7)](/man/enterprise-packages/lustre/lustre.7), [**lctl**(8)](/man/enterprise-packages/lustre/lctl.8), [**lctl-find\_param**(8)](/man/enterprise-packages/lustre/lctl-find_param.8), [**lctl-get\_param**(8)](/man/enterprise-packages/lustre/lctl-get_param.8), [**lctl-help\_param**(8)](/man/enterprise-packages/lustre/lctl-help_param.8), [**lctl-list\_param**(8)](/man/enterprise-packages/lustre/lctl-list_param.8), [**lctl-llog\_catlist**(8)](/man/enterprise-packages/lustre/lctl-llog_catlist.8), [**lctl-llog\_print**(8)](/man/enterprise-packages/lustre/lctl-llog_print.8)

2026-03-06 Lustre

---

Document: lctl-set_param(8) from lustre 2.17.59-r2 (Chainguard OS)
Source: https://github.com/lustre/lustre-release
