In meinem speziellen Fall möchte ich das remote-fs
Gerät doch glusterfs
ganz starten.
Meine Systemdateien:
glusterfs
Ziel:
node04:/usr/lib/systemd/system # cat glusterfsd.service
[Unit]
Description=GlusterFS brick processes (stopping only)
After=network.target glusterd.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
ExecStop=/bin/sh -c "/bin/killall --wait glusterfsd || /bin/true"
ExecReload=/bin/sh -c "/bin/killall -HUP glusterfsd || /bin/true"
[Install]
WantedBy=multi-user.target
remote-fs
Ziel:
node04:/usr/lib/systemd/system # cat remote-fs.target
[Unit]
Description=Remote File Systems
Documentation=man:systemd.special(7)
Requires=glusterfsd.service
After=glusterfsd.service remote-fs-pre.target
DefaultDependencies=no
Conflicts=shutdown.target
[Install]
WantedBy=multi-user.target
OK, alle Gluster Daemons starten erfolgreich und ich möchte Gluster Dateisystem per NFS, aber Gluster der NFS - Freigabe wird fertig , nicht sofort nach glusterfs.service
begonnen, aber ein paar Sekunden später, also in der Regel remote-fs
nicht in der Lage es auch in Bezug auf Montage Requires
und After
Richtlinien.
Sehen wir uns das Protokoll an:
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS, a clustered file-system server.
Apr 14 16:16:22 node04 systemd[1]: Starting GlusterFS brick processes (stopping only)...
Apr 14 16:16:22 node04 systemd[1]: Starting Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Reached target Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Mounting /stor...
Hier ist alles in Ordnung, das entfernte Dateisystem (/ stor) scheint eingehängt zu sein, nachdem glusterfs gestartet wurde, wie es laut Unit-Dateien gemeint war ... Aber die nächsten Zeilen sind:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Was? GlusterFS hat sich nur für diesen Moment fertig gemacht! Und dann sehen wir:
//...skipped.....
Apr 14 16:16:23 node04 mount[2960]: mount.nfs: mounting node04:/stor failed, reason given by server: No such file or directory
Apr 14 16:16:23 node04 systemd[1]: stor.mount mount process exited, code=exited status=32
Apr 14 16:16:23 node04 systemd[1]: Failed to mount /stor.
Apr 14 16:16:23 node04 systemd[1]: Dependency failed for Remote File Systems.
Apr 14 16:16:23 node04 systemd[1]: Unit stor.mount entered failed state.
Das Mounten ist fehlgeschlagen, da der NFS-Server beim Versuch des Systems, den Speicher bereitzustellen, nicht bereit war.
Aufgrund der nicht deterministischen Natur des System-Boot-Prozesses ist es manchmal (ca. 1 von 10 Boot-Vorgängen) erfolgreich, dieses Dateisystem beim Booten zu mounten.
Wenn die Onboot-Bereitstellung nicht erfolgreich war, kann ich mich beim Server anmelden und das Verzeichnis / stor manuell bereitstellen, sodass der NFS-Dienst von Gluster anscheinend einwandfrei funktioniert.
Also, wie fange ich remote-fs
danach an glusterfsd
, dh nachdem die Started GlusterFS brick processes
Zeile im Protokoll erscheint?
remote-fs
scheint eines der allerletzten Ziele zu sein, daher kann ich es nicht nach einem anderen "Workaround" -Ziel starten, das in der Tat von nicht benötigt wird remote-fs
.
glusterfsd.service
. Es scheint nicht wirklich , um alle Dienste zu starten, und in der Tat tötet alle glusterfsd
Prozesse. Haben Sie andere glanzbezogene Gerätedateien?
stor.mount
Gerät auch zeigen ?
ExecStartPre=<command>
dem Unit-Abschnitt eine Eigenschaft hinzufügenglusterfsd.service
, die einen Befehl ausführt, der blockiert, bis glusterfs bereit ist? Dies kann verhindern, dass derglusterfsd.service
Erfolg anzeigt und das Symbol aktiviert wirdremotefs.target
.