在对 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
后者被激活后(或enable
d,系统重新启动)
# 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)