如果我使用这个命令:
mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1
Run Code Online (Sandbox Code Playgroud)
一切正常。但是如果我尝试通过systemdmount 挂载它就会失败。
我创建了一个/etc/systemd/system/mnt-d1.mount包含以下内容的文件:
[Unit]
Description = Disk 1
[Mount]
What = LABEL=d1
Where = /srv/node/d1
Type = xfs
Options = noatime,nodiratime,logbufs=8
[Install]
WantedBy = multi-user.target
Run Code Online (Sandbox Code Playgroud)
之后我运行这些命令:
systemctl daemon-reload
systemctl start mnt-d1.mount
Run Code Online (Sandbox Code Playgroud)
最后一张给我看了:
Failed to start mnt-d1.mount: Unit mnt-d1.mount failed to load: Invalid argument.
See system logs and 'systemctl status mnt-d1.mount' for details.
Run Code Online (Sandbox Code Playgroud)
systemctl status mnt-d1.mount 给我看了:
May 16 18:13:52 object1 systemd[1]: Cannot add dependency job for unit mnt-d1.mount, ignoring: Unit mnt-d1.mount failed to ...ectory.
May 16 18:24:05 object1 systemd[1]: mnt-d1.mount's Where= setting doesn't match unit name. Refusing.
Run Code Online (Sandbox Code Playgroud)
请帮我通过systemd挂载单元挂载磁盘。
don*_*sti 32
错误消息解释了原因:
Where= setting doesn't match unit name. Refusing.
Run Code Online (Sandbox Code Playgroud)
尽管理解该消息需要阅读几个手册页。
每个systemd.mount手册页(强调我的):
Where=获取挂载点目录的绝对路径。如果挂载时挂载点不存在,则创建。 该字符串必须反映在单元文件名中。(见上文。)此选项是强制性的。
“见上”部分是:
挂载单元必须以其控制的挂载点目录命名。示例:挂载点
/home/lennart必须在单元文件中配置home-lennart.mount。有关用于将文件系统路径转换为单元名称的转义逻辑的详细信息,请参阅systemd.unit(5)。
好的,systemd.unit手册页指出:
可以使用该
systemd-escape(1)命令生成正确转义的路径。
指向说明如何操作的systemd-escape手册页:
要为路径生成安装单元:
$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount
所以,在你的情况下,/srv/node/d1转化为srv-node-d1.mount
小智 5
如果有人在尝试挂载到包含连字符的本地目录时看到此错误,请在 shell 上寻址该文件时小心,我的 shell (bash 4) 需要转义斜杠,因此我们要转义转义。
例子:
#/etc/systemd/system/mnt-my\x2dlocal\x2ddir.mount
[Unit]
Description=My mount
[Mount]
What=//some/remote/share
Where=/mnt/my-local-dir
Type=cifs
Options=user=nonrootuser
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
本例中的绝对文件路径是:
/etc/systemd/system/mnt-my\x2dlocal\x2ddir.mount
但要重命名您的文件,您需要执行以下操作:
mv /my/original/file /etc/systemd/system/mnt-my\\x2dlocal\\x2ddir.mount
Run Code Online (Sandbox Code Playgroud)
当你调用 systemd 时,你需要
systemctl status /etc/systemd/system/mnt-my\\x2dlocal\\x2ddir.mount
Run Code Online (Sandbox Code Playgroud)
现在,您可以在启动时以非 root 用户身份挂载远程共享。
| 归档时间: |
|
| 查看次数: |
21706 次 |
| 最近记录: |