【运维】fstab,systemctl与rc.local启动顺序

前言:

在redis,mongo服务添加systemctl enable启动的情况下,redis和Mongo没有正常启动。排查日志得知,使用到的路径没有挂载。下面截图中的/var/lib/redis和mongo都是软连接,指向了一个服务器的本地盘。

经过排查/var/log/messages以及查阅相关日志得出:

*(1) 在系统启动时,先会执行fstab中定义的挂载操作,然后才会启动systemd服务。*这是因为fstab中定义的文件系统是必须要在系统启动时挂载的,而systemd服务则是在系统启动之后才启动,并且可能需要依赖于文件系统的挂载。 总结起来,Fstab文件的信息将由systemctl在系统启动过程中使用,并且必须在systemctl之前加载。因此,在系统启动时,fstab的挂载操作将在systemd服务启动之前进行。

(2) 开机挂载mount etc/fstab与/etc/rc.d/rc.local区别差不多,差别就是如果你又程序依赖于NFS的话还是的放到fstab比较好。程序启动先加载/etc/fastab文件。

那么就是 /etc/fstab > systemctl > rc.local

如果你服务的自动启动脚本在rc.local,该顺序就解决了因为redis,mongo等依赖没启动,导致服务自启动失败的情况。

贴一张表

1、UEFI或BIOS初始化,运行POST开机自检

2、选择启动设备,Boot Sequence

系统启动次序一般含有:光驱、U盘、硬盘A、硬盘B。按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备。

3、引导装载程序,加载/boot分区文件系统驱动

4、加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg

5、加载initramfs驱动模块和内核vmlinuz

6、内核初始化,centos7使用systemd代替init

7、执行initrd.target所有单元,包括挂载/etc/fstab

8、从initramfs跟文件系统切换到磁盘根目录

9、systemd执行默认target配置,配置文件/etc/systemd/system/default.target

10、systemd执行sysinit.target初始化系统及basic.target准备操作系统

11、systemd启动multi-user.target下的本机与服务器服务

12、systemd执行multi-user.target下的/etc/rc.d/rc.local

13、systemd执行multi-user.target下的getty.target及登录服务

14、systemd执行graphical需要的服务

相关推荐
志栋智能1 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡1 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
Ruiery1 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB1 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
欧米欧2 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo2 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺2 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw3 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
前端精髓3 小时前
调用大模型API
运维·服务器·microsoft