Trong trường hợp cụ thể của tôi, tôi muốn bắt đầu remote-fs
đơn vị sau khi tất cả glusterfs
bắt đầu hoàn toàn.
Tập tin systemd của tôi:
glusterfs
Mục tiêu:
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
Mục tiêu:
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, tất cả các trình tiện ích của Gluster bắt đầu thành công và tôi muốn gắn hệ thống tập tin Gluster thông qua NFS, nhưng chia sẻ NFS của Gluster đã sẵn sàng không ngay lập tức sau khi glusterfs.service
bắt đầu, nhưng một vài giây sau, do đó thường remote-fs
không thể gắn kết nó ngay cả về chỉ thị Requires
và After
chỉ thị.
Hãy xem nhật ký:
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...
Ở đây mọi thứ đều ổn, hệ thống tập tin từ xa (/ repository) dường như được gắn kết sau khi glusterfs bắt đầu, vì nó có nghĩa là theo các tập tin đơn vị ... Nhưng các dòng tiếp theo là:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Gì? GlusterFS đã sẵn sàng chỉ cho thời điểm này! Và sau đó chúng ta thấy:
//...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 không thành công vì máy chủ NFS chưa sẵn sàng khi systemd cố gắn kết bộ lưu trữ.
Do tính chất không xác định của quy trình khởi động systemd, đôi khi (khoảng 1 trong 10 lần khởi động) gắn hệ thống tập tin này khi khởi động thành công.
Nếu việc gắn kết onboot không thành công, tôi có thể đăng nhập vào máy chủ và tự gắn thư mục / repository, vì vậy dịch vụ NFS của Gluster dường như hoạt động tốt.
Vậy làm thế nào để bắt đầu remote-fs
sau glusterfsd
, tức là sau khi Started GlusterFS brick processes
dòng xuất hiện trong nhật ký?
remote-fs
dường như là một trong những mục tiêu cuối cùng, vì vậy tôi không thể bắt đầu nó sau một mục tiêu "giải pháp" khác mà thực tế không bắt buộc remote-fs
.
glusterfsd.service
tập tin đơn vị của bạn . Nó dường như không thực sự bắt đầu bất kỳ dịch vụ nào, và trên thực tế sẽ giết chết mọi glusterfsd
quy trình. Bạn có bất kỳ tập tin đơn vị liên quan đến ánh sáng khác?
stor.mount
đơn vị?
ExecStartPre=<command>
tính vào phần Đơn vịglusterfsd.service
thực thi lệnh sẽ chặn cho đến khi glusterfs sẵn sàng không? Điều đó có thể ngăn chặn sựglusterfsd.service
biểu thị thành công và kích hoạtremotefs.target
.