Krátký návod na nastavení systemd.mount (připojování systémů souborů v systemd), s tím související systemd.automount (automatické připojování) na příkladu NFS exportu.

Unita .mount

Definice mount je velmi jednoduchá, prakticky nám stačí vědět totéž co u fstab. Tedy co, kam, jakého typu.

Příklad připojení NFS:

[Unit]
Description = Mount bsd:/data/BACKUP do /mnt/bsd/data/BACKUP

[Mount]
What = bsd:/data/BACKUP
Where = /mnt/bsd/BACKUP
Type = nfs

[Install]
WantedBy = multi-user.target

A tuto definici uložíme do /etc/systemd/system/.

Pojmenování souboru musí odpovídat mountpointu (Where) a můžeme jej získat pomocí nástroje systemd-escape:

$ systemd-escape -p /mnt/bsd/BACKUP
mnt-bsd-BACKUP

Definici unity tedy uložíme do souboru mnt-bsd-BACKUP.mount.

Pokud nechceme automount (připojování na základě událostí), stačí unitu enablovat a spustit:

systemctl enable mnt-bsd-BACKUP.mount
systemctl start mnt-bsd-BACKUP.mount

Systém souborů by měl být připojen. Pokud není, tak se dotážeme na stav:

systemctl status mnt-bsd-BACKUP.mount

a případné problémy vyřešíme.

Unita .automount

Automount připojuje (a může i odpojovat) mountpointy definované v .mount. Automount nefunguje jako samostatná jednotka, vždy je nutné mít unitu typu .mount stejného jména.

Definice .automount je podobná unitě mount, ze které potřebujeme jen Where=.

Nově můžeme také definovat i TimeoutIdleSec= - dle mých zkušeností to nefunguje příliš přesně, není jasné, od kterého okamžiku se TimeoutIdleSec začne počítat, ale po nějakém čase to odpojí.

Příklad: automount pro výše uvedený mount by mohl vypadat takto:

[Unit]
Description=Automount bsd:/data/BACKUP do /mnt/bsd/data/BACKUP

[Automount]
Where=/mnt/bsd/BACKUP
TimeoutIdleSec=20s

[Install]
WantedBy = multi-user.target

Definici uložíme do souboru /etc/systemd/system/mnt-bsd-BACKUP.automount.

Pokud chceme používat automount a nikoliv tvrdý mount, nastavíme unitu .mount na disabled, a naopak nastavíme a nastartujeme jen .automount:

systemctl disable mnt-bsd-BACKUP.mount
systemctl enable mnt-bsd-BACKUP.automount
systemctl start mnt-bsd-BACKUP.automount

A je to. Pokud nám fungoval mount, tak teď, pokud vlezeme do adresáře mountpointu, měl by se fs automaticky připojit. A po opuštění tohoto adresáře, zase po chvilce odpojit.