Files
usb-ssd/examples/systemd-services/README.md
2025-08-07 19:28:22 +02:00

6.5 KiB

Systemd Service Templates

Übersicht

Diese Verzeichnis enthält Systemd-Service-Templates für die automatische Integration des USB-SSD Management Systems in die Linux-Systemd-Infrastruktur.

Verfügbare Services

ssd-detection.service

Zweck: Kontinuierliche USB-C SSD Erkennung und Überwachung

Funktionen:

  • Automatische Erkennung neu angeschlossener SSDs
  • Kontinuierliche Überwachung im 5-Sekunden-Intervall
  • Integration mit udev-Events
  • Systemd-Journal Logging
  • Automatischer Restart bei Fehlern

Installation:

sudo cp ssd-detection.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable ssd-detection.service
sudo systemctl start ssd-detection.service

ssd-automount.service

Zweck: Automatisches Mounting erkannter SSDs

Funktionen:

  • Automatisches Mounting auf /mnt/ssd-storage
  • Abhängigkeit von ssd-detection.service
  • Graceful Shutdown mit Safe-Eject
  • Remount-Funktionalität
  • PID-File Management

Installation:

sudo cp ssd-automount.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable ssd-automount.service
sudo systemctl start ssd-automount.service

ssd-mount@.service

Zweck: Template-Service für spezifische Device-Mounting

Funktionen:

  • Template-basiertes Mounting für spezifische Devices
  • Device-Binding mit BindsTo=
  • Oneshot-Service mit RemainAfterExit=yes
  • Automatisches Cleanup bei Device-Entfernung

Verwendung:

# Service für spezifisches Device starten
sudo systemctl start ssd-mount@sdb1.service

# Service für spezifisches Device aktivieren
sudo systemctl enable ssd-mount@sdb1.service

# Status prüfen
sudo systemctl status ssd-mount@sdb1.service

Service-Konfiguration

Anpassung der Services

Environment-Variables

# Service-Konfiguration bearbeiten
sudo systemctl edit ssd-detection.service

# Beispiel-Konfiguration:
[Service]
Environment=SSD_LOG_LEVEL=DEBUG
Environment=SSD_MONITOR_INTERVAL=10
Environment=SSD_USE_SYSLOG=true

Mount-Point anpassen

# Automount-Service anpassen
sudo systemctl edit ssd-automount.service

[Service]
Environment=SSD_MOUNT_POINT=/custom/mount/point

Security-Einstellungen

# Zusätzliche Security-Optionen
sudo systemctl edit ssd-detection.service

[Service]
# Zusätzliche Device-Zugriffe
DeviceAllow=/dev/nvme* rw
DeviceAllow=/dev/mmcblk* rw

# Zusätzliche Pfad-Zugriffe
ReadWritePaths=/custom/path

Service-Management

Standard-Operationen

# Services aktivieren
sudo systemctl enable ssd-detection.service ssd-automount.service

# Services starten
sudo systemctl start ssd-detection.service ssd-automount.service

# Status prüfen
sudo systemctl status ssd-detection.service
sudo systemctl status ssd-automount.service

# Services stoppen
sudo systemctl stop ssd-detection.service ssd-automount.service

# Services deaktivieren
sudo systemctl disable ssd-detection.service ssd-automount.service

Logs und Monitoring

# Service-Logs anzeigen
sudo journalctl -u ssd-detection.service -f
sudo journalctl -u ssd-automount.service --since "1 hour ago"

# Alle SSD-Services
sudo journalctl -u "ssd-*" --since today

# Service-Status überwachen
watch -n 5 'systemctl status ssd-detection.service ssd-automount.service'

Troubleshooting

# Service-Konfiguration validieren
sudo systemd-analyze verify /etc/systemd/system/ssd-detection.service

# Service-Dependencies anzeigen
sudo systemctl list-dependencies ssd-automount.service

# Failed-Services anzeigen
sudo systemctl --failed | grep ssd

# Service neu starten
sudo systemctl restart ssd-detection.service

Erweiterte Konfiguration

Custom-Service erstellen

# Basis-Template kopieren
sudo cp ssd-detection.service /etc/systemd/system/ssd-custom.service

# Service anpassen
sudo nano /etc/systemd/system/ssd-custom.service

# Service aktivieren
sudo systemctl daemon-reload
sudo systemctl enable ssd-custom.service

Multi-Device Support

# Template-Service für mehrere Devices
sudo systemctl enable ssd-mount@sdb1.service
sudo systemctl enable ssd-mount@sdc1.service
sudo systemctl enable ssd-mount@sdd1.service

# Alle Template-Services starten
sudo systemctl start ssd-mount@*.service

Timer-basierte Services

# Timer für regelmäßige Tests erstellen
sudo nano /etc/systemd/system/ssd-test.service
sudo nano /etc/systemd/system/ssd-test.timer

# Timer aktivieren
sudo systemctl enable ssd-test.timer
sudo systemctl start ssd-test.timer

Security-Konfiguration

Hardening-Optionen

[Service]
# Zusätzliche Security-Features
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictSUIDSGID=true
LockPersonality=true
MemoryDenyWriteExecute=true
RestrictNamespaces=true

Capability-Management

[Service]
# Minimale Capabilities
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE
AmbientCapabilities=CAP_SYS_ADMIN CAP_DAC_OVERRIDE

User/Group-Konfiguration

# Dedicated Service-User erstellen
sudo useradd -r -s /bin/false ssd-service
sudo usermod -a -G disk ssd-service

# Service-Konfiguration anpassen
[Service]
User=ssd-service
Group=disk

Integration mit anderen Services

SMB-Integration

[Unit]
# SMB-Service nach SSD-Mount starten
Before=smbd.service
PartOf=smbd.service

[Service]
# SMB-Reload nach Mount
ExecStartPost=/bin/systemctl reload-or-restart smbd.service

Backup-Integration

[Unit]
# Backup-Service nach SSD-Mount starten
Before=backup.service

[Service]
# Backup-Trigger nach Mount
ExecStartPost=/usr/local/bin/trigger-backup.sh

Monitoring-Integration

[Service]
# Prometheus-Metriken exportieren
ExecStartPost=/usr/local/bin/export-ssd-metrics.sh

Best Practices

Produktionsumgebung

  1. Immer systemctl daemon-reload nach Service-Änderungen
  2. Service-Dependencies korrekt konfigurieren
  3. Logging-Level für Produktion auf INFO setzen
  4. Security-Features aktivieren
  5. Monitoring für Service-Status einrichten

Entwicklungsumgebung

  1. Debug-Logging aktivieren
  2. Manual-Start für Tests verwenden
  3. Service-Isolation für Entwicklung
  4. Frequent-Reload für Änderungen

Monitoring und Alerting

  1. Systemd-Status überwachen
  2. Service-Logs analysieren
  3. Performance-Metriken sammeln
  4. Failure-Alerts konfigurieren

Changelog

Version 0.1.0

  • Basis-Service Templates
  • Security-Hardening
  • Multi-Device Support
  • Integration-Beispiele
  • Comprehensive Documentation