开发者
资源
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目前主要由 sysmaster和 devmaster2部分功能组成,其中 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支持 target、socket、service类型的单元配置文件。

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

单元配置文件的构成 ​

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

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

创建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服务的单元。

管理单元服务

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

启动服务 ​

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

sctl start sshd.service

停止服务 ​

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

sctl stop sshd.service

重启服务 ​

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

sctl restart sshd.service

查看服务状态 ​

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

sctl status sshd.service

本页内容