Mount 与 automount systemd 单元:使用哪一个来做什么?

Mount 与 automount systemd 单元:使用哪一个来做什么?

在对 systemd 单元进行了一些研究之后,我发现了两种不同类型的挂载单元:.mount.automount。起初,对我来说,该automount装置会自动安装似乎是合乎逻辑的mount。然而,事实证明,当您启用安装单元时:

systemctl enable media-mydisk.mount

它将在启动时自动安装。我对 systemd 有点陌生,但这已经困扰我很长一段时间了。我还在最后发布了该单元的代码。

automount所以,我的主要问题是:如果可以启用一个mount单元,为什么还需要s ?

media-mydisk.mount如果这有什么区别的话,这是我的:

[Unit]
Description=My disk

[Mount]
What=/dev/sdb1
Where=/media/mydisk
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target

我在网上搜索过,但找不到使用 a.automount和简单启用 a之间的任何比较.mount

答案1

中的“auto”部分automount并不是指引导过程:automount单元定义了挂载的挂载点一经请求,即仅当它们被访问时。

automount单位是可选的;但是,当它们存在时,相应的mount单位也必须存在。前者旨在为后者的现有实例添加功能。从man systemd.mount

可选地,安装单元可以附有自动安装单元,以允许按需或并行安装。

并且,来自man systemd.automount

对于每个自动挂载单元文件,必须存在一个匹配的挂载单元文件(有关详细信息,请参阅 systemd.mount(5)),该文件在访问自动挂载路径时被激活。示例:如果自动挂载单元home-lennart.automount处于活动状态并且用户访问/home/lennart该挂载单元home-lennart.mount将被激活。

单元的典型用例automount是安装在启动过程中不需要的文件系统(例如,在远程或可移动或加密媒体上),并且可能会减慢速度,或者在启动时可能不可用,但您仍然喜欢由系统d。

一个简单的、仅供说明的示例。给定mnt-foo.mount单位

[Unit]
Description=foo mount

[Mount]
Where=/mnt/foo
What=/home/user/foo
Type=ext4

(为简单起见,foo只是一个格式化为 ext4 的常规文件),并且mnt-foo.automount单位

[Unit]
Description=foo automount

[Automount]
Where=/mnt/foo

[Install]
WantedBy=multi-user.target

后者被激活后(或enabled,系统重新启动)

# systemctl start mnt-foo.automount

您将能够检查它/home/user/foo尚未安装在任何地方 -mount给出

$ mount | grep foo
systemd-1 on /mnt/foo type autofs (...)

事实上,只有在访问挂载点后/home/user/foo才会挂载:/mnt/foo

$ ls /mnt/foo
$ mount | grep foo
systemd-1 on /mnt/foo type autofs (...)
/home/user/foo on /mnt/foo type ext4 (rw,relatime)

相关内容