1、fstab不是唯一了?
2、演示:使用`systemd`挂载
3、问题小结
问题起源是,我在研究
docker
时,查找overlay
挂载,突然发现/etc/fstab
和mount
命令执行结果大相径庭。
1、fstab不是唯一了?
fstab那么问题如下:
/etc/fstab
和/proc/mount
内容大相径庭,但/proc/mount的内容在系统重启后,依然会被自动挂载,为什么?(大家知道/etc/fstab在永久生效,但其它项为什么也能永久生效呢?)type cgroup
和overlay
两种格式在mount man
文档中,并不支持,为什么还能被正常挂载?
其实,在CentOS 7
开始,还提供了systemd
挂载文件系统的方式。 即/etc/fstab
不再是唯一的永久挂载途径。在CentOS 7&8
中,/etc/fstab
的内容非常少,在上图中我们也能发现。
在CentOS 7
中,我们配置的/etc/fstab
,系统并没有直接使用该配置,systemd
实际上把文件转换成 mount
结尾的挂载文件. systemd
在系统初始化时,读取的是这些.mount
结尾的文件。
.mount
文件保存在/run/systemd/generator
。
[root@O2O-T-K8S-TEST4 generator]# ls -l /run/systemd/generator/
total 20
-rw-r--r-- 1 root root 254 Apr 14 18:55 boot.mount
-rw-r--r-- 1 root root 181 Apr 14 18:55 dev-mapper-RootVG\x2dlv_swap.swap
.
.
除此外,systemd
还提供了命令供我们查看系统挂载
- 查看正在挂载的文件系统
[root@O2O-T-K8S-TEST4 generator]# systemctl -t mount
UNIT LOAD ACTIVE SUB DESCRIPTION
-.mount loaded active mounted /
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
.
.
systemd
挂载点位置
[root@O2O-T-K8S-TEST4 generator]# ls /usr/lib/systemd/system/*.mount
/usr/lib/systemd/system/dev-hugepages.mount
/usr/lib/systemd/system/dev-mqueue.mount
/usr/lib/systemd/system/proc-fs-nfsd.mount
/usr/lib/systemd/system/proc-sys-fs-binfmt_misc.mount
/usr/lib/systemd/system/sys-fs-fuse-connections.mount
.
.
2、演示:使用systemd
挂载
- 案例: 将
/dev/sdb1
挂载到/tmp_dir
下
[root@rhel-8 system]# cat tmp_dir.mount
# This file is part of systemd.
[Unit]
Description=Test Directory (/tmp_dir)
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target
[Mount]
What=/dev/disk/by-uuid/cea0757d-6329-4bf8-abbf-03f9c313b07f
Where=/tmp_dir
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target
- 名词解释
What= 表示设备节点的绝对路径,文件或者其它待挂载的设备。`man 8 mount`查看更多
Where= 设备挂载点,需要写绝对路径。这里绝对不能是链接地址。
Type= 文件系统的类型,通常是一段字符串表示
Options= 挂载选项,用逗号分隔,支持多个选项并行。
reload daemon
使systemd
生效
systemctl daemon-reload
3、问题小结
- 第1个问题,
centos 7
开始,sysv
交由systemd
维护后,/etc/fstab
已经不再是唯一挂载控制项,systemd
也可以完成该项工作,而且systemd
读取的并不是/etc/fstab
的内容,而是将其转换为.mount
结尾的文件。看趋势,感觉后续有可能会彻底接管/etc/fstab
. 但systemd
研究不多,一家独大不知道是好是坏。按linus
的风格,可能会大力支持systmd
- 第2个问题,猜测
man mount
没有更新。centos 7
是一定支持cgroup, overlay
类型。
参考阅读: https://www.golinuxcloud.com/mount-filesystem-without-fstab-systemd-rhel-8/