Dalam kasus khusus saya, saya ingin memulai remote-fs
unit setelah semua glusterfs
benar - benar dimulai.
File systemd saya:
glusterfs
target:
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
target:
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, semua daemon Gluster mulai berhasil dan saya ingin me-mount sistem file Gluster melalui NFS, tetapi bagian NFS Gluster bersiap-siap tidak segera setelah glusterfs.service
dimulai, tetapi beberapa detik kemudian, jadi biasanya remote-fs
tidak dapat me- mountnya bahkan mengenai Requires
dan After
arahan.
Mari kita lihat log:
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...
Di sini semuanya OK, sistem file jarak jauh (/ stor) tampaknya akan dipasang setelah glusterfs dimulai, karena seharusnya sesuai dengan file unit ... Tetapi baris selanjutnya adalah:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Apa? GlusterFS bersiap-siap hanya untuk saat ini! Dan kemudian kita melihat:
//...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.
Mount gagal karena server NFS tidak siap ketika systemd mencoba me-mount penyimpanan.
Karena sifat non-deterministik dari proses boot sistem, terkadang (sekitar 1 dari 10 boot) pemasangan sistem file ini pada boot berhasil.
Jika onboot mount tidak berhasil, saya bisa masuk ke server dan secara manual me-mount direktori / stor, jadi layanan NFS Gluster sepertinya berfungsi dengan baik.
Jadi bagaimana memulai remote-fs
setelah glusterfsd
, yaitu setelah Started GlusterFS brick processes
baris muncul dalam log?
remote-fs
tampaknya menjadi salah satu target terakhir, jadi saya tidak bisa memulainya setelah target "penyelesaian" lain yang sebenarnya tidak diperlukan oleh remote-fs
.
glusterfsd.service
file unit Anda . Tampaknya tidak benar-benar memulai layanan apa pun, dan pada kenyataannya membunuhglusterfsd
proses apa pun . Apakah Anda memiliki file unit terkait gluster lainnya?
stor.mount
unitnya?
ExecStartPre=<command>
properti ke bagian Unitglusterfsd.service
yang mengeksekusi perintah yang akan diblokir sampai glusterfs siap? Itu dapat mencegahglusterfsd.service
dari menunjukkan keberhasilan dan mengaktifkanremotefs.target
.