У моєму конкретному випадку я хочу запустити remote-fsблок після того, як все glusterfsповністю запуститься.
Мої системні файли:
glusterfs ціль:
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 ціль:
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, все Gluster демони починають успішно , і я хочу , щоб змонтувати файлову систему Gluster через NFS, але частка NFS Gluster отримує готовий не відразу після того, як glusterfs.serviceпочалося, але через кілька секунд, так що, як правило , remote-fsНЕ в змозі встановити його навіть в відношенні Requiresі Afterдирективи.
Подивимось журнал:
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...
Тут все нормально, віддалена файлова система (/ stor), здається, змонтується після запуску glusterfs, як це означало, згідно з файлами одиниць ... Але наступні рядки:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Що? GlusterFS готувався лише до цього моменту! І тоді ми бачимо:
//...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.
Монтаж не вдався, оскільки сервер NFS не був готовий, коли система намагалася встановити сховище.
Через недетермінованість процесу завантаження системи, іноді (приблизно 1 з 10 завантажень) монтажу цієї файлової системи під час завантаження вдається.
Якщо встановлення на завантажувальній системі не вдалося, я можу увійти на сервер і вручну змонтувати каталог / stor, тому служба NFS Gluster, здається, працює нормально.
Отже, як почати remote-fsпісля glusterfsd, тобто після того, Started GlusterFS brick processesяк у журналі з'явиться рядок?
remote-fsздається, є однією з останніх цілей, тому я не можу її розпочати після чергової "обхідної" цілі, якої насправді не вимагає remote-fs.
glusterfsd.serviceфайлі. Це, здається, насправді не запускає жодних служб, а насправді вбиває будь-які glusterfsdпроцеси. Чи є у вас інші файли одиниць, пов'язані з глюстером?
stor.mountпристрій?
ExecStartPre=<command>властивість до розділу Unit,glusterfsd.serviceякий виконує команду, яка буде блокувати, поки glusterfs не буде готовий? Це може завадитиglusterfsd.serviceвказувати на успіх і активізувати йогоremotefs.target.