[[Vorlage(Getestet, focal, bionic)]]

{{{#!vorlage Wissen
[:Terminal: Ein Terminal öffnen]
[:fstab: Statisches Einhängen über die fstab]
[:systemd_Unit: Grundlage von Systemd-Units]
[:systemctl: Steuerung von Systemd-Units via systemctl]
[:mit Root-Rechten arbeiten:]
}}}

[[Inhaltsverzeichnis(1)]]

Seit Ubuntu [:15.04:] werden auch Einhängepunkte von [:systemd:] verwaltet. Zwar ist die [:fstab:] im System noch vorhanden - deren Einträge werden aber im Hintergrund vom '''systemd-fstab-generator''' in [:systemd/Units:] vom Typ .mount übersetzt. 

Alternativ zu den Einträgen in der fstab kann man [:mount: mounts] auch [#Eigene-Units-erstellen direkt als systemd-Units definieren].

= Installation =
Da systemd seit Ubuntu 15.04 integraler Bestandteil des Systems ist (und dieses ohne systemd nicht lauffähig ist), sind alle benötigten Komponenten bereits installiert.

= Benutzung =

== Einhängen und Aushängen über bestehende Units ==

Der systemd-fstab-generator liest bei jedem Systemstart aus der [:fstab:] und schreibt die generierten Mount-Units temporär nach '''/run/systemd/generator/'''. Anschließend können diese wie jede andere Unit mit [:systemctl:] verwaltet werden. 

=== Beispiel ===

Der fstab-Eintrag 
{{{
UUID="b56fdac9-4c6a-4306-b5d5-1d635c0905b6" /VIDEO ext4 defaults 0 0
}}}

findet sich in der systemd-unit '''/run/systemd/generator/VIDEO.mount''' wieder und enthält:

{{{
# Automatically generated by systemd-fstab-generator
[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target

[Mount]
Where=/VIDEO
What=/dev/disk/by-uuid/b56fdac9-4c6a-4306-b5d5-1d635c0905b6
Type=ext4
}}}

Der Aufruf

{{{#!vorlage Befehl
systemctl status VIDEO.mount 
}}}

zeigt die Ausgabe
{{{
● VIDEO.mount - /VIDEO
   Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
   Active: active (mounted) since Wed 2017-12-20 13:56:49 CET; 9h ago
    Where: /VIDEO
     What: /dev/sdb9
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)
  Process: 620 ExecMount=/bin/mount /dev/disk/by-uuid/b56fdac9-4c6a-4306-b5d5-1d635c0905b6 /VIDEO -t ext4 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/VIDEO.mount

Dez 20 13:56:49 josua systemd[1]: Mounting /VIDEO...
Dez 20 13:56:49 josua systemd[1]: Mounted /VIDEO.
}}}

Das Gerät ist also seit 9 Stunden eingehängt.

Alternativ kann man auch den Befehl 

{{{#!vorlage Befehl
systemctl status <EINHÄNGEPUNKT>
}}}

nutzen, im obigen Beispiel also

{{{#!vorlage Befehl
systemctl status /VIDEO 
}}}

Um das Gerät in systemd-Manier auszuhängen, kann man die Unit stoppen:

{{{#!vorlage Befehl
systemctl stop VIDEO.mount 
}}}

oder auch

{{{#!vorlage Befehl
systemctl stop /VIDEO
}}}

{{{#!vorlage Befehl
systemctl status VIDEO.mount 
}}}{{{

● VIDEO.mount - /VIDEO
   Loaded: loaded (/etc/fstab; generated; vendor preset: enabled)
   Active: inactive (dead) since Wed 2017-12-20 23:54:39 CET; 2s ago
    Where: /VIDEO
     What: /dev/disk/by-uuid/b56fdac9-4c6a-4306-b5d5-1d635c0905b6
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)
  Process: 4928 ExecUnmount=/bin/umount /VIDEO -c (code=exited, status=0/SUCCESS)
  Process: 620 ExecMount=/bin/mount /dev/disk/by-uuid/b56fdac9-4c6a-4306-b5d5-1d635c0905b6 /VIDEO -t ext4 (code=exited, status=0/SUCCESS)

Dez 20 13:56:49 josua systemd[1]: Mounting /VIDEO...
Dez 20 13:56:49 josua systemd[1]: Mounted /VIDEO.
Dez 20 23:54:39 josua systemd[1]: Unmounting /VIDEO...
Dez 20 23:54:39 josua systemd[1]: Unmounted /VIDEO.
}}}

== Eigene Units erstellen ==

Nach obigem Schema lassen sich natürlich auch eigene Units erstellen. Eigene Units werden in '''/etc/systemd/system''' abgelegt. Außerdem gibt es für Mount-Units noch eine besondere Namenskonvention: Der Dateiname muss zwingend den Pfad des Einhängepunktes widerspiegeln. Den richtigen Namen generiert man sich am besten via

{{{#!vorlage Befehl
systemd-escape --suffix=mount --path <EINHÄNGEPUNKT>
}}}

Für die Unit gilt folgende Syntax:

{{{
[Unit]
# Abschnitt wird im Artikel system/Unit beschrieben

[Mount]
Type=nfs4
What=10.10.10.10:/nfs-share
Where=/mnt/nfs

[Install]
# Abschnitt wird im Artikel system/Unit beschrieben
}}}

Die Schlüssel im Abschnitt `[Mount]` haben folgende Bedeutung:

{{{#!vorlage Tabelle
<-2 rowclass="titel";> Schlüssel im Abschnitt `[Mount]`
+++
<rowclass="kopf";> Spalte
<cellstyle="width: 85%;"> Beschreibung
+++
`Type=`
Hier wird der Typ des Dateisystems angegeben, gemäß dem [:mount#Parameter:mount-Parameter] `-t`. (Dieser Schlüssel ist optional.)
+++
`What=`
Enthält den absoluten Pfad des eingehängten [:Datenträger:Geräts], also z.B. Festplatten-Partitionen wie '''/dev/sda8''' oder eine Netzwerkfreigabe wie [:NFSv4:] oder [:Samba:] . (Dieser Schlüssel ist Pflicht.)
+++
`Where=`
Hier wird der Einhängepunkt ("Mountpunkt") festgelegt, d.h. der Ordner, in den die Partition eingehängt werden soll. Falls dieser nicht existiert, wird er beim Einhängen erzeugt. (Dieser Schlüssel ist Pflicht.)
+++
`Options=`
Enthält alle verwendeten [:mount#Optionen:Optionen], gemäß dem mount-Parameter `-o`. (Dieser Schlüssel ist optional.)
+++
`LazyUmount=`
Wenn der Wert zu diesem Schlüssel auf `true` gesetzt wird, wird das Dateisystem wieder ausgehängt, sobald es nicht mehr benötigt wird. Standardmäßig ist diese Option abgeschaltet.
}}}

Wie jede Systemd-Unit muss auch eine Mount-Unit vor Ihrer Verwendung [:systemd/Units/#Selbst-angelegte-Units-aktivieren: aktiviert] werden.

= Problemlösung =
== eine systemd mount-Unit lässt sich mit mount nicht wieder einhängen ==

Eine Mount-Unit lässt sich zwar mit dem Befehl 
{{{#!vorlage Befehl
umount /EINHÄNGEPUNKT
}}}
stoppen, ein 
{{{#!vorlage Befehl
mount /EINHÄNGEPUNKT
}}}
ist jedoch nicht möglich, da mount nur die fstab nach Einträgen durchsucht.

In dem Fall muss die Unit wieder via [:systemctl:] gestartet werden:

{{{#!vorlage Befehl
systemctl start /EINHÄNGEPUNKT
}}}


= Links =
== intern ==
 * [:systemd:] - Einführung in systemd
 * [:systemd/Units:] - Einführung in systemd_Units
 * [:systemd/systemctl:] - Steuern von Units
 * [:systemd/systemd-analyze:systemd-analyze] - den Startvorgang des Systems und der Units analysieren und ggf. optimieren

== extern ==
 * [https://www.freedesktop.org/software/systemd/man/systemd.mount.html Dokumentation] {en} zu systemd Mounts
 * [https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html systemd fstab generator] {en}
 * [http://www.freedesktop.org/wiki/Software/systemd/ systemd Wiki] {en} - Dokumentation Systemd
 
#tag: System, systemd, Mount