Skip to content

Init

1. 简介

init作为用户态的1号进程,其功能包括管理sysmaster、回收僵尸进程。

2. 参数选项

  • --timewait=value

    设置等待sysmaster连接超时时长value秒,设置保活超时的时长为value秒,默认超时时长为10秒,最短设置超时时间为10秒。

  • --timecnt=value

    设置保活超时的最大次数为value次,与timewait组合使用,超过最大超时次数后认为sysmaster已失活,执行重拉起。默认最大次数为5次,最短设置超时次数为2次。

3. 注意事项

sysmaster二进制程序必须存放在/usr/lib/sysmaster/目录下。

4. 现状

  • 一号进程是所有用户态进程的祖先,位置关键,非常容易导致整个系统奔溃。
  • 原一号进程使用C语言开发,功能复杂,规模庞大,内存类问题较多。
  • 进程升级时会使用execve系统调用,而此调用存在失败的风险。

5. 目标:使系统具有一个稳固的一号进程作为支撑点

  • 一旦成功运行就不需要关注或升级。
  • 在系统处于可恢复故障时提供升级/重执行通道,用于故障恢复。
  • 在系统陷入不可恢复故障时提供逃生通道,用于现场收集。

6. 场景

  • 系统启动
  • 系统正常运行
  • 系统可恢复异常
  • 系统不可恢复异常

7. 整体思路

  • 将服务管理功能从一号进程(init)中剥离出来以独立进程(manager)形式存在,减少init进程完成的事务范围。
  • 业务进程的启动、监管由manager进程完成,init进程通过启动、监管manager进程来完备整体启动、可靠性链条。
  • manager处于可恢复异常状态时,init进程维持manager升级/重执行通道。
  • manager处于不可恢复状态时,init进程维持系统逃生通道。
  • init中的功能只包括:监管manager进程、僵尸进程回收。

8. 技术方案

待补充

9. 环境变量

在containerd的容器环境中, 由于无方获取当前所处的容器环境, 在启动时需要指定container环境变量, 如container=containerd


Last update: March 30, 2023
Created: March 16, 2023