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...