Eigenes systemd-target wird nicht gefunden

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
freesoftwarefriend
Beiträge: 12
Registriert: 05.03.2014 11:04:33

Eigenes systemd-target wird nicht gefunden

Beitrag von freesoftwarefriend » 08.08.2016 21:06:50

Hallo in die Runde!

Ich habe ein kleines Problem mit einem selbstdefinierten systemd-target unter Debian Sid. Zunächst ein paar Systeminformationen:

Code: Alles auswählen

root@server:~# uname -a
Linux server 4.6.0-1-amd64 #1 SMP Debian 4.6.4-1 (2016-07-18) x86_64 GNU/Linux
root@server:~# systemd --version
systemd 231
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
root@server:~# 
Zum Hintergrund: Ich betreibe auf dem Gerät diverse virtuelle Maschinen mit libvirt/kvm. Von diesen Maschinen möchte ich inkrementelle Backups machen können - und zwar auf Dateiebene. Die Idee ist, dass ich die Maschinen herunterfahre, einen Snapshot des qcow2-Containers mache, die VMs dann gleich wieder hochfahre und in der Zwischenzeit einen Snapshot fürs Backup temporär mounte. Da die Maschinen alle auf Debian Wheezy laufen, können Backupprogramme wie rsnapshot oder storebackup Hardlinks zu x-fach vorkommenden Systemdateien anlegen.

Systemd möchte ich nun folgermaßen einsetzen. Gemäß der Beschreibung im Arch Wiki unter https://wiki.archlinux.org/index.php/Rs ... Automation habe ich einen rsnapshot@.service eingerichtet und mein selbst erstelltes target als Abhängigkeit eingetragen und per After-Direktive dafür gesorgt, dass das target gestartet ist, bevor rsnapshot startet.

Code: Alles auswählen

root@server:~# cat /etc/systemd/system/rsnapshot@.service 
[Unit]
Description=rsnapshot (%I) backup
Requires=vm-snaphots.target
After=vm-snaphots.target

[Service]
Type=oneshot
ExecStart=/usr/bin/rsnapshot -c /etc/rsnapshot.conf %I
root@server:~# 
Das target selbst sieht so aus:

Code: Alles auswählen

root@server:/etc/systemd/system# cat vm-snapshots.target
[Unit]
Description=Grant access to all VM images as filesystem
StopWhenUnneeded=yes
root@server:/etc/systemd/system#
Es gibt nun einen Dienst, der einen Parameter bekommt und in das entsprechenden target verlinkt wird:

Code: Alles auswählen

root@server:/etc/systemd/system# cat access-qcow2-fs@.service 
[Unit]
Description=Grant access to a read-only snapshot of %I's qcow2 drive 

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/opt/access-qcow2-fs.sh start %I
ExecStop=/opt/access-qcow2-fs.sh stop %I

[Install]
WantedBy=vm-snapshots.target
root@server:/etc/systemd/system#
Nach dem Erstellen einer neuen VM, so die Überlegung, müsste ich sie dann einfach mit

Code: Alles auswählen

root@server:/etc/systemd/system# systemctl enable access-qcow2-fs@newvm
in das Backup mit einbeziehen können.

Das target funktioniert auch insofern, als dass ich es direkt aufrufen kann:

Code: Alles auswählen

root@server:/etc/systemd/system# systemctl status vm-snapshots.target 
● vm-snapshots.target - Grant access to all VM images as filesystem
   Loaded: loaded (/etc/systemd/system/vm-snapshots.target; static; vendor preset: enabled)
   Active: inactive (dead)

Aug 06 20:32:00 server systemd[1]: Stopped target Grant access to all VM images as filesystem.
Aug 06 20:35:18 server systemd[1]: Reached target Grant access to all VM images as filesystem.
Aug 06 20:35:18 server systemd[1]: vm-snapshots.target: Unit not needed anymore. Stopping.
Aug 06 20:35:18 server systemd[1]: Stopped target Grant access to all VM images as filesystem.
Aug 06 22:05:00 server systemd[1]: Reached target Grant access to all VM images as filesystem.
Aug 06 22:05:00 server systemd[1]: vm-snapshots.target: Unit not needed anymore. Stopping.
Aug 06 22:05:00 server systemd[1]: Stopped target Grant access to all VM images as filesystem.
Aug 08 20:54:48 server systemd[1]: Reached target Grant access to all VM images as filesystem.
Aug 08 20:54:48 server systemd[1]: vm-snapshots.target: Unit not needed anymore. Stopping.
Aug 08 20:54:48 server systemd[1]: Stopped target Grant access to all VM images as filesystem.
root@server:/etc/systemd/system# 
Das Problem tritt nun auf, wenn ich meinen rnsnapshot-service ausführen möchte:

Code: Alles auswählen

root@server:/etc/systemd/system# systemctl start rsnapshot@daily 
Failed to start rsnapshot@daily.service: Unit vm-snaphots.target not found.
root@server:/etc/systemd/system# 
Mich beschleicht das Gefühl, dass ich entweder etwas nicht oder aber missverstanden habe. Hat jemand eine Ahnung, woran es liegen kann, dass das target einmal gefunden wird und einmal nicht? Muss ich außer dem obligatorischen

Code: Alles auswählen

systemctl daemon-reload
noch irgendetwas tun, um mein target bekannt zu machen?

Freue mich über Tipps!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Eigenes systemd-target wird nicht gefunden

Beitrag von JTH » 08.08.2016 22:28:43

freesoftwarefriend hat geschrieben:

Code: Alles auswählen

root@server:/etc/systemd/system# systemctl start rsnapshot@daily 
Failed to start rsnapshot@daily.service: Unit vm-snaphots.target not found.
root@server:/etc/systemd/system# 
Ich denke, da fehlt ein s hinter dem p im Target-Namen in den Requires=- und After=-Zeilen in /etc/systemd/system/rsnapshot@.service – vm-snapshots.target. Deshalb sagt dir die Fehlermeldung auch, dass das Target nicht gefunden wurde :wink:
Manchmal bekannt als Just (another) Terminal Hacker.

freesoftwarefriend
Beiträge: 12
Registriert: 05.03.2014 11:04:33

Re: Eigenes systemd-target wird nicht gefunden

Beitrag von freesoftwarefriend » 09.08.2016 08:14:43

JTH hat geschrieben: Ich denke, da fehlt ein s hinter dem p im Target-Namen in den Requires=- und After=-Zeilen in /etc/systemd/system/rsnapshot@.service – vm-snapshots.target.
:facepalm:

Danke fürs aufmerksame Lesen! :THX: Irgendwann sieht man es ja selbst einfach nicht mehr. Funktioniert jetzt alles, wie es soll.

Antworten