我正在尝试通过 systemd 在启动后自动挂载 CephFS
我有下一个单元:
[Unit]
SourcePath=/etc/fstab
DefaultDependencies=no
After=remote-fs-pre.target
After=network.target
Wants=network.target
After=network-online.target
Wants=network-online.target
Conflicts=umount.target
Before=umount.target
[Mount]
What=ceph-node1:6789,ceph-node2:6789,ceph-node3:6789:/dev
Where=/mnt/cephfs-dev
Type=ceph
Options=name=devuser,secretfile=/etc/ceph/cephuser.secret
[Install]
WantedBy=remote-fs.target
据我所知,Where=
设置必须与单位名称匹配。我接下来会这样做:
[root@centos system]# systemd-escape -p --suffix=mount '/mnt/cephfs-dev'
mnt-cephfs\x2ddev.mount
[root@centos system]# vi /etc/systemd/system/mnt-cephfs\\x2ddev.mount
但有些事情出了问题:
[root@centos system]# systemctl status mnt-ceph\\x2ddev.mount
● mnt-ceph\x2ddev.mount - /mnt/cephfs-dev
Loaded: error (Reason: Invalid argument)
Active: inactive (dead)
Where: /mnt/cephfs-dev
What: ceph-node1:6789,ceph-node2:6789,ceph-node3:6789:/dev
May 05 10:07:12 centos.imoldovan-lpt systemd[1]: mnt-ceph\x2ddev.mount's Where= setting doesn't match unit name. Refusing.
如何正确命名单元?显然,挂载点中的破折号存在问题/mnt/cephfs-dev
,但我需要的正是这个挂载点。
答案1
最后再来总结一下:
问题是那mnt-ceph\x2ddev.mount
是一个打字错误。应该是mnt-cephfs\x2ddev.mount
这样的。
答案2
挂载单元必须以其控制的挂载点目录命名。例如:挂载点 /home/lennart 必须在单元文件 home-lennart.mount 中配置。
Mount] What=/dev/vdc Where=/a/b/c Type=xfs 单元文件名必须为“abc.mount”,/usr/lib/systemd/system/abc.mount