求助:有没有无影响检查 /etc/fstab 的可靠方法?

13 小时 30 分钟前
 oferge0311

最近在做一批 Linux 主机的 CVE 漏洞修复,遇到一个比较实际的问题,想请教一下大家有没有成熟的处理方式。

因为很多安全补丁,现在都是涉及到内核级别,安装完成后都需要重启才能真正生效,但是在批量重启主机之前,也遇到了 /etc/fstab 中存在异常配置而无法拉起的情况。

因为如果 /etc/fstab 里存在错误,比如:

UUID 或设备路径错误 文件系统类型错误 挂载参数不支持 本地设备不存在 NFS 等网络文件系统不可达 其他只有实际挂载时才会暴露的问题

都有可能导致主机重启后进入救援,或无法拉起

目前想要与大家探讨的是:

希望在 reboot 之前,对 /etc/fstab 做一次尽可能接近真实挂载结果的检查,但又不能真正执行挂载操作,也不能对当前系统状态造成影响。

我测试过:

mount -a -v -f

以及:

findmnt --verify --verbose

但实际测试下来,这两种方式的结果都无法完全和真正执行:

mount -a

的结果对应起来。

问题在于,大批量生产主机又不适合在重启前直接执行 mount -a 。

因为 mount -a 可能会把当前未挂载的文件系统真正挂载起来,也可能主动访问 NFS 、NAS 等网络存储,甚至改变当前系统状态。在复杂生产环境中,这种操作有可能产生额外影响,极端情况下甚至可能出现不可逆的问题。

所以想请教一下大家:

有没有一种相对可靠的方式,可以做到:

不实际 mount / umount 不产生真实写入 不改变当前系统状态 尽量检查出设备、UUID 、文件系统类型、挂载参数、网络挂载等问题 检查结果尽可能接近真实的 mount -a 最好适合通过 Ansible 、Shell 等方式批量执行

或者大家在做大规模 Linux 主机补丁升级、批量重启之前,通常是怎么处理 /etc/fstab 风险检查的?

感觉单纯做语法检查还不够,但真正执行挂载又风险比较大,所以想看看有没有比较成熟的 pre-reboot check 思路。

感谢。

1420 次点击
所在节点    Linux
49 条回复
oferge0311
6 小时 12 分钟前
@zhsj 这个。。。这个。。。。 机器太多太多了,几年两三年没重启的不算什么。。。。至于现代化工具,不太清楚什么算现代化工具阿。。。复杂的生产环境,成千台连测试机都不满足
oferge0311
6 小时 11 分钟前
@ota 复杂的生产环境,当我统计数量,顺带统计了一下业务,业务都几百+,应该没办法统一的去管理同一份配置文档,一个业务一个挂载点都是有可能存在的/(ㄒoㄒ)/~~
oferge0311
6 小时 10 分钟前
@fstab O(∩_∩)O 求助如何挂你,哈哈
oferge0311
6 小时 7 分钟前
@fstab 以 system 去管理吗,那是不是要和前面第 13 楼的 dream10201 老师说的方法有点类似,需要先取消 fstab 的开机不自动挂载,然后再以 system 服务去管理磁盘挂载,这好像是个好方法诶,值得学习记录一下,不错,谢谢老师,不过在我这个复杂的生产环境,可能没办法实现,不过是个好方法。我上一次去学习 systme 还是以普通用户去绕过 root 用户,完全实现--user 用户级的开机自启
ihciah
5 小时 21 分钟前
用 nixos 管理,拿一台机器做实验,挂了也能回到上一个 generation 。验证通过后全量发。
ihciah
5 小时 19 分钟前
哦不对,你这里是想验证各种不同的 fstab 。。
那看起来你只能尽可能 dry run fstab 同款逻辑了,然后写脚本兜底,启动挂了 revert 。
oferge0311
5 小时 17 分钟前
@ihciah 如标题,我是想使用一种方法来尝试检查不同的 fstab [该死的生产环境] ,目前看只能跑脚本了。
j0ck1e
5 小时 7 分钟前
"mount -a 可能会把当前未挂载的文件系统真正挂载起来",生产环境就不该出现这种问题,长期挂载的设备才应该写在 fstab 里面,实际 fstab 和 mount 必须对得上,不要考虑什么 rc.local ,systemd ,虽说 systemd 也是官方建议,但写起来实在费劲,通用便捷性还是不如 fstab ,如果你只是担心 fstab 写错导致重启进入紧急救援模式,不妨在不确定的条目中加上 nofail 参数
busier
3 小时 44 分钟前
杀个乱写 fstab 的程序员祭天

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1237351

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX