wiki-grav/pages/02.linux/systemd-automount/default.en.md

64 lines
1.6 KiB
Markdown

---
title: "Systemd Automount"
visible: true
---
[toc]
Systemd can be used to mount filesystems not only on boot (simple `.mount` file), but also on request by any process. (`.automount` file)
## Mount file
The `.mount` file should be placed in `/etc/systemd/system`
**NOTE: The filename must be (mountpoint).mount with slashes `/` being replaced with dashes `-`**
Example: `/mnt/target` --> `mnt-target.mount`
Here's an example `.mount` file for a CIFS share
```systemd
[Unit]
Description=cifs mount
[Mount]
What=//(url/ip)/(sharename)
Where=/(target mountpoint)
Type=cifs
Options=defaults,username=(user),password=(password),file_mode=0640,dir_mode=0750,iocharset=utf8,uid=(local uid),gid=(local gid)
[Install]
WantedBy=multi-user.target
```
## Automount file
The corresponding `.automount` file needs to have the same name as its `.mount` file
Example: `mnt-target.mount` and `mnt-target.automount`
```systemd
[Unit]
Description=cifs automount
[Automount]
Where=/(target mountpoint)
[Install]
WantedBy=multi-user.target
```
Enable the `.automount` file to mount the filesystem when necessary
`# systemctl enable (target-mount).automount`
## Service - require mount
Other services that depend on the filesystem being mounted might have issues with the built-in automounting.
In these cases, the option `RequiresMountsFor=` can be set under the `[Unit]` configuration to ensure a path is mounted.
Paths are space separated
```systemd
[Unit]
...
RequiresMountsFor=[PATH 1] [PATH 2]
```
> [Systemd RequiresMountsFor documentation](https://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiresMountsFor=)