У моєму конкретному випадку я хочу запустити 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
.