据我所知,Linux 中有 3 种挂载文件系统的方法。
- 使用挂载命令
- 编写单元文件,然后使用 systemctl 激活它
- 使用 systemd 挂载
谁能向我解释一下它们的区别和优缺点是什么?
答案1
/etc/fstab 是配置 mount 命令的经典(= systemd 之前)方法。换句话说,定义可以使用更短语法挂载的挂载点。
如果没有 /etc/fstab (没有条目),您必须编写(在 shell 或脚本中):
mount -t spc_fs /dev/exmpl /mnt/point ro
但是如果您将此信息放入 fstab 中,则输入就足够了
mount /mnt/point
这是显示的第五个语法变体mount --help
。
挂载文件系统从内核/initrd 挂载开始root=
,到“结束”时自动挂载可移动设备,并随时创建 tmpfs(ramdisk)。加上用于安装文件的循环设备......
现在,systemd 解析 /etc/fstab 本身,我在手册页中读到过,因为它是用 C 编写的,所以它使用库调用而不是 mount 命令。它还会在启动过程中小心地在正确的时间安装东西。这是systemd的核心业务。
启动后,systemd-udevd 会进行可移动设备的热插拔。
所以我宁愿说有两种“挂载”方式:
- 挂载命令
- 系统
两者都可以首先通过 /etc/fstab 进行配置和扩展。
至于选择哪种“方法”:没有人能真正说清楚!
如果您以用户身份正确安装了 systemd,则根本不需要自行安装。 Bootup 和 udevd 掌握在 systemd 手中。用户甚至不需要循环安装 iso 映像。他只知道当他插入 USB 时,它会出现在 /media/usb 下。
如果您想探索 - 如果 Linux 强迫您成为系统管理员 - 那么就使用 systemd 吧。 “.mount”是特殊单位之一。它承诺“控制和监督“ 的 ”文件系统挂载点”。
而且你可以随时混合。也许您希望 systemd 在启动时在您的主目录中安装一个“ram 磁盘”。但是您可以随时使用命令在任何目录/安装点下创建(另一个)一个mount -t tmpfs none dir
。
只需磁盘上的几GB,您就可以使用 sysvinit 而不是 systemd 安装测试 Linux。你要求的方式你就应该这样做。对我来说,我 50% 支持,50% 反对 systemd。我尝试使用 sysvinit 和非常简单的脚本。我在启动时挂载/proc和/sys,并且使用usb存储模块我至少得到/dev/sdb,然后挂载它,有时挂载到/etc/fstab中预定义的点。