鲲鹏社区首页
中文
注册
开发者
sysMaster用户指南

sysMaster用户指南

openEuler

发表于 2025/12/09

0

概述

sysMaster是一套超轻量、高可靠的服务管理程序集合,是对 1号进程的全新实现,旨在改进传统的 init守护进程。它使用 Rust编写,具有故障监测、秒级自愈和快速启动等能力,从而提升操作系统可靠性和业务可用度。

sysMaster支持进程、容器和虚拟机的统一管理,其适用于服务器、云计算和嵌入式等多个场景。

sysMaster实现思路是将传统 1号进程的功能解耦分层,结合使用场景,拆分出 1+1+N的架构。

如下面 sysMaster系统架构图所示,主要包含三个方面:

sysmaster-init:新的 1号进程提供系统初始化、僵尸进程回收、分析保活等功能,可单独应用于嵌入式场景。

sysmaster-core:承担原有服务管理的核心功能,引入可靠性框架,使其具备崩溃快速自愈、热升级等能力,保障业务全天在线。

sysmaster-exts:使原本耦合的各组件功能独立,提供系统关键功能的组件集合(如设备管理 devMaster,总线通信 busMaster等),各组件可单独使用,可根据不同场景灵活选用。

图1 sysMaster整体架构图

sysMaster目前主要由 sysmasterdevmaster2部分功能组成,其中 sysmaster负责服务的管理,devmaster负责设备的管理,下面将对这2部分功能进行说明。

读者对象

本文档主要适用于使用 openEuler并需要对服务和设备进行管理的用户。用户需要具备以下经验和技能:

  • 熟悉 Linux基本操作
  • 对服务配置和设备有一定了解

安装与部署

sysmaster可应用于容器和虚拟机,本文档将以 aarch64系统为例说明如何在各场景下进行安装与部署。

软件要求

  • 操作系统:openEuler 23.09

硬件要求

  • x86_64架构、aarch64架构

容器场景安装与部署

  1. 安装 dockeryum install -y docker systemctl restart docker
  2. 加载基础容器镜像下载容器镜像wget https://repo.openeuler.org/openEuler-23.09/docker_img/aarch64/openEuler-docker.aarch64.tar.xz xz -d openEuler-docker.aarch64.tar.xz加载容器镜像docker load --input openEuler-docker.aarch64.tar
  3. 构建容器创建 Dockerfilecat << EOF > Dockerfile FROM openeuler-23.09 RUN yum install -y sysmaster CMD ["/usr/lib/sysmaster/init"] EOF构建容器docker build -t openeuler-23.09:latest .
  4. 启动并进入容器启动容器docker run -itd --privileged openeuler-23.09:latest获取CONTAINERIDdocker ps使用上一步获取到CONTAINERID进入容器docker exec -it CONTAINERID /bin/bash

虚拟机场景安装与部署

  1. initramfs镜像制作 为了避免 initrd阶段 systemd的影响,需要制作一个剔除 systemd的 initramfs镜像,并以该镜像进入 initrd流程。使用如下命令:dracut -f --omit "systemd systemd-initrd systemd-networkd dracut-systemd" /boot/initrd_withoutsd.img
  2. 新增启动项在 grub.cfg中增加新的启动项,aarch64下的路径为 /boot/efi/EFI/openEuler/grub.cfg,x86_64下的路径为 /boot/grub2/grub.cfg,拷贝一份原有启动项,并做以下几处修改:menuentry 项修改启动项名称 openEuler (6.4.0-5.0.0.13.oe23.09.aarch64) 23.09为 openEuler 23.09 withoutsdlinux 项内核启动参数修改 root=/dev/mapper/openeuler-root ro 为 root=/dev/mapper/openeuler-root rwlinux 项内核启动参数修改 plymouth,如果环境上安装了 plymouth, 需要添加 plymouth.enable=0 禁用 plymouthlinux 项内核启动参数增加 init=/usr/lib/sysmaster/initinitrd 项修改为 /initrd_withoutsd.img
  3. 安装 sysmasteryum install sysmaster
  4. 重启后出现 openEuler 23.09 withoutsd启动项表示已成功配置,选择此启动项进入虚拟机

sysmaster使用说明

本章主要通过一些实例来带领用户初步使用 sysmaster,例如:

  • 如何创建 service服务单元配置文件。
  • 如何管理单元服务,例如启动、停止、查看服务。

创建单元配置文件

用户可以在 /usr/lib/sysmaster/system/目录下创建单元配置文件。

单元配置文件的类型

当前 sysmaster支持 targetsocketservice类型的单元配置文件。

  • target:封装了一个由 sysmaster管理的启动目标,用于将多个单元集中到一个同步点。sysmaster提供不同阶段的 target单元,例如 multi-user.target代表系统已完成启动,用户可以依赖此目标,启动自己的服务。
  • socket:封装了一个用于进程间通信的套接字 socket, 以支持基于套接字的启动。例如用户可以配置 service单元依赖此 socket,当此 socket有数据写入时,sysmaster会拉起对应的 service单元。
  • service:封装了一个被 sysmaster监视与控制的进程。

单元配置文件的构成

单元配置文件通常由3块组成:

  • Unit:单元的公共配置说明,如服务名称、描述、依赖关系等。
  • Install:描述如何安装和启动服务。
  • ServiceSocket:各个单元类型的配置。

创建service单元配置

sshd服务被用来远程登录到服务器,并在远程终端上执行命令和操作。 使用如下配置项来创建一个 sshd.service服务单元配置。

[Unit]
Description="OpenSSH server daemon"
Documentation="man:sshd(8) man:sshd_config(5)"
After="sshd-keygen.target"
Wants="sshd-keygen.target"

[Service]
Type="notify"
EnvironmentFile="-/etc/sysconfig/sshd"
ExecStart="/usr/sbin/sshd -D $OPTIONS"
ExecReload="/bin/kill -HUP $MAINPID"
KillMode="process"
Restart="on-failure"
RestartSec=42

[Install]
WantedBy="multi-user.target"

以下是对单元配置文件中选项配置的说明,更多可以查阅官方手册

  • Description:说明该 unit的主要功能。
  • Documentation:说明该 unit的文档链接。
  • After:配置同时启动的单元的先后顺序,sshd.service服务将在 sshd-keygen.target之后启动。
  • Wants:配置一个单元对另一个单元的依赖,启动 sshd.service服务,将会自动启动 sshd-keygen.target
  • Type:配置 sysmaster 如何启动此服务,notify表明需要主进程启动完成后发送通知消息。
  • EnvironmentFile:设置环境变量的文件读取路径。
  • ExecStart:配置服务启动时执行的命令,启动 sshd.service服务会执行 sshd命令。
  • ExecReload:配置重新加载 sshd.service的配置时执行的命令。
  • KillMode:配置当需要停止服务进程时,杀死服务进程的方法,process表示只杀死主进程。
  • Restart:配置服务不同情况下退出或终止,是否重新启动服务,on-failure表示当服务非正常退出时重新启动服务。
  • RestartSec:配置当服务退出时,重新拉起服务的间隔时间。
  • WantedBy:配置依赖当前 sshd.service服务的单元。

管理单元服务

sctlsysmaster的命令行工具,用于检查和控制 sysmaster服务端行为和各个服务的状态,它可以启动、停止、重启、检查系统服务。

启动服务

使用以下命令可以启动 sshd服务和运行 ExecStart所配置的命令。

sctl start sshd.service

停止服务

使用以下命令可以停止 sshd服务,杀死 ExecStart所运行的进程。

sctl stop sshd.service

重启服务

使用以下命令可以重启 sshd服务,该命令会先停止后启动服务。

sctl restart sshd.service

查看服务状态

使用以下命令可以查看服务 sshd运行状态,用户可以查看服务的状态来获取服务是否正常运行。

sctl status sshd.service

本页内容