我们在redhat 7.2版本上创建以下服务
more nfsshare.mount
[Unit]
Description=nfs mount script
Requires=network-online.target
After=network-online.service
[Mount]
What=master1:/nfs
Where=/nfsshare
Options=noauto,user,rw,group
Type=nfs
TimeoutIdleSec=10
[Install]
WantedBy=multi-user.target
重新启动服务后,挂载点将按原样挂载
master1:/nfs 41932800 6559744 35373056 16% /nfsshare
现在我们卸载 /nfsshare 文件夹
umount /nfsshare
现在我们期望 /nfsshare 文件夹将再次挂载并且服务将自动挂载该文件夹
但没有任何反应并且文件夹未安装
我这里哪里错了?
我也尝试
more nfsshare.automount
[Unit]
Description=nfs mount script
Requires=network-online.target
After=network-online.service
[Automount]
What=master1:/nfs
Where=/nfsshare
Options=noauto,user,rw,group
Type=nfs
TimeoutIdleSec=10
[Install]
WantedBy=multi-user.target
但该服务在重新启动后甚至无法挂载该文件夹
答案1
正确的设置是单元nfsshare.mount
包含:
[Unit]
Description=Mount nfsshare
Wants=network-online.target
After=network-online.target
[Mount]
What=master1:/nfs
Where=/nfsshare
Options=rw,group
Type=nfs
对于nfsshare.automount
包含以下内容的单元:
[Unit]
Description=Automount nfsshare
Wants=network-online.target
After=network-online.target
[Automount]
Where=/nfsshare
TimeoutIdleSec=10
[Install]
WantedBy=multi-user.target
您通常只想启用该.automount
单元:
$ sudo systemctl enable nfsshare.automount
通过此设置,在启动后(假设没有正在运行的守护进程访问 NFS 共享),该共享将不是被安装。但是一旦它被访问(例如ls /nfsshare
),它将根据需要安装。它会保持挂载状态 10 秒,然后卸载,但在再次访问后会再次挂载。
这两个单元共同.mount
作用.automount
来触发这种行为。该.automount
单元只需要知道在哪里设置自动挂载的挂载点目录。一旦访问该目录,它将触发对具有相同名称(相同路径)的单元的请求.mount
,并等待该单元启动后再继续。
请参阅自动安装单元的手册页更多细节。
我还对您的设置进行了哪些更改?
对于网络依赖项,您应该使用network-online.target
,而不是.service
不存在的。我也在使用Wants=
,这是针对这种情况的推荐指令(请参阅这个维基页面有关网络目标的更深入讨论。)
我从你的安装选项中删除了noauto
和user
,因为这些选项只有在/etc/fstab
.我还认为你并不真的想user
在那里,只是让它自动安装,而不是允许非特权用户调用mount
util 来安装它,自动安装更好。
对哪个单元采取的指令是不同的(除了Where=
两个单元都采取的指令之外),所以我只保留有效的指令。
我删除了[Install]
该单元的部分.mount
,因为您不需要启用它。您只需要启用该.automount
单元,以便在启动时启动它,然后该单元将负责在需要时启动(和关闭)安装单元(取决于正在访问的目标目录。)
请注意,您还可以在/etc/fstab
.事实上,systemd 通常建议用于/etc/fstab
配置而不是创建安装单元。
对于自动挂载,您所需要做的就是向该文件系统条目x-systemd.automount
的挂载选项列表中添加一个伪选项。 (在这种情况下,您通常也/etc/fstab
希望包含在内。)noauto
看Arch Linux wiki 的这一部分更多细节。 (这些都不是特定于 Arch Linux 的,它在 RHEL 7 上的工作方式应该完全相同。)