Aktionen

Linux systemd Dienst warten bis Mount erfolgt ist NFS Gluster SMB

Aus znilwiki

Changelog:

  • 18.06.2024 erste Version

Vorwort

In einem Projekt haben wir die Konfigurationsdateien von diversen Programmen, z.B. php.ini auf eine zentrale Freigabe ausgelagert.
Das Problem hier war das der Dienst

php8.3-fpm.service

schon gestartet wurde bevor die Freigabe geladen war.


Schritt 1: Herausfinden wer den Mount durchführt

Der Mountpoint ist bei mir /storage1, ein Gluster-System

systemctl list-units --type=mount

gibt eine Liste mit allen Diensten die mounten:

  UNIT                          LOAD   ACTIVE SUB     DESCRIPTION                       >
  -.mount                       loaded active mounted Root Mount
  boot-efi.mount                loaded active mounted /boot/efi
  dev-hugepages.mount           loaded active mounted Huge Pages File System
  dev-mqueue.mount              loaded active mounted POSIX Message Queue File System
  proc-sys-fs-binfmt_misc.mount loaded active mounted Arbitrary Executable File Formats >
  run-user-1000.mount           loaded active mounted /run/user/1000
  storage1.mount                loaded active mounted /storage1
  sys-fs-fuse-connections.mount loaded active mounted FUSE Control File System
  sys-kernel-config.mount       loaded active mounted Kernel Configuration File System
  sys-kernel-debug.mount        loaded active mounted Kernel Debug File System
  sys-kernel-tracing.mount      loaded active mounted Kernel Trace File System

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.
 
11 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

und wir wir sehen wird dieser Mountpoint von

storage1.mount

bedient.

Schritt 2: Dienst anpassen

Wir bearbeiten die passende *.service Datei:

nano /usr/lib/systemd/system/php8.3-fpm.service

und ändern wie folgt (in Fettschrift):

[Unit]
Description=The PHP 8.3 FastCGI Process Manager
Documentation=man:php-fpm8.3(8)
After=network.target storage1.mount

[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Also beim After= mit Leerzeichen anhängen.


NFS Freigabe

Wie heißt der Dienst bei einer NFS-Verbindung?

systemctl list-units | grep 'nfs'

Ausgabe (vermutlich):

nfs-client.target                                                                         loaded active active    NFS client services



Kommentare

Loading comments...