Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sysmaster-online/sysmaster

Repository files navigation

Notice: This project has been migrated to AtomGit

通知: 本项目已经正式迁移至 AtomGit 平台

挑战

1 号进程处于系统关键位置,负责系统初始化和运行时服务管理,当前面临如下挑战:

  • 1可靠性差: 位置关键,自身故障时必须重启操作系统才能恢复
  • 2复杂性高: systemd 成为 1 号进程事实上的标准。它引入了许多新的概念和工具,依赖繁杂,难以针对实际使用场景进行裁剪
  • 3兼容性弱: 对云、边、嵌入式场景的支持差,不满足全场景的诉求

行业诉求

  • 服务器、嵌入式场景对可靠性有极强诉求: 内存安全问题降至0:消减极难定位的内存问题,减少宕机影响
  • 系统不宕机,业务无影响: 借助永不宕机特性追求极致可靠
  • 高效智能运维成云场景痛点: 对HOST的运维缺乏高效手段:容器型OS对1号进程提出极简目标
  • 国产化替代要求核心软件自主可控: 聚焦关键开源软件:敏感/竞争力根组件,实现根技术完全自主可控

愿景

  1. 短期竞争力:极致的可靠性和系统启动速度
  • 永不宕机: 通过状态外置、savepoint等技术实现故障秒级自愈,保障1号进程持续在线,业务不受影响
  • 快速启动: 解耦去重、极简镜像,支撑服务器重启时间从3-5min优化到1min(友商5min)
  1. 长期竞争力:全场景应用、云平台运维效率提升
  • 全场景应用: 支持云边端等场景,统一init,支持裸机、虚机、容器
  • 容器型OS: kernel+sysMaster=容器OS底座,通过对接k8s、openstack等,与KubeOS一起支撑云场景下运维效率X倍提升

整体策略:聚焦功能最小系统,采用核心自研与非核心社区方案替代并行的策略,独立组件抽屉式替换的策略,实现systemd自研替代

  1. 分场景:结合不同的使用场景,将systemd功能拆分多层,按照场景由易到难的方式,逐步完成功能开发验证及替代。
  2. 多方案:无社区替代方案的核心功能和组件,采用自研重写的替代,其他的采用无供应风险的社区软件替代。
  3. 有节奏:一年一个核心竞争力,至24年完成3个核心竞争力的发掘,按照开发-落地-替代三条线开展工作。

sysMaster:全新1号进程实现方案,秒级故障自愈,保障系统全天在线

sysMaster 旨在改进传统的init守护进程,1+1+N架构。

  • init:新的1号进程,功能极简,代码千行,极致可靠
  • core:承担systemd原有核心功能,引入可靠性框架、插件机制,使其具备崩溃快速自愈、热升级、灵活组装能力
  • exts:使原本耦合的各组件功能独立,支持抽屉式替代systemd的对应组件,支持有节奏的分场景替换

极力构筑三大竞争力:

  1. 极致可靠 – 永不宕机
  • 极简架构:1+1+N,简化init;非核心功能组件化提供
  • 极致可靠:故障感知+秒级恢复, 根进程持续在线
  • 内存安全:内存问题降至0,故障后自愈
  1. 极度轻量 – 快速启动
  • 更少的资源:内存占用降低10%
  • 更快的速度:启动速度提升15%
  1. 极优体验 – 极简镜像
  • 易于运维:热升级、按需裁剪,方便的部署/运维
  • 兼容生态:提供systemd生态兼容、转换工具
  • 插件机制:支持灵活扩展多种服务类型

构建

首先,下载仓库代码,并执行命令来预装项目依赖,构建开发环境, 项目主要基于rust 1.57构建,使用``pre-commit`做git commit检查。

sh ./build.sh

其次,可以通过提供的脚本来构建程序。也可以参考.pre-commit-config.yaml中的动作构建。

sh ci/01-pre-commit.sh
# 格式检查
cargo clippy -vvv --all-targets --features "default" --all -- -Dwarnings
# 构建
cargo build --all --features "default" -v
# 测试
RUST_BACKTRACE=full cargo test --all-targets --all -v -- --nocapture --show-output --test-threads=1

使用

在各场景下的使用,可以参考tools目录下。

ls tools

也可访问,sysmaster.online 官网案例

代码目录结构说明

源码仓库以workspaces方式管理,每一个目录是一个package,每个package包含一个crate(lib或bin形式), 公共lib crate的目录带lib前缀,使用cargo new --lib libtests创建, daemon类型的bin crate的目录以d结尾。

/ (sysmaster)
|...init (init进程)
|...factory (系统配置)
|...libs (对外接口)
| |...libtests (test lib crate)
| |...cgroup (cgroup lib crate)
| |...cmdproto(cmd proto lib crate)
|...exts (sysmaster-extends组件)
| |...devmaster (daemon)
| |...random-seed (bin)
|...core (sysmaster-core核心组件)
| |...sysmaster (bin)
| |...libcore (internal lib)
| |...sctl (sysmaster cli)
| |...coms (插件)
| |...service (unit type crate)
| |...socket (unit type crate)
| |...target (unit type crate)
|...tools
| |...musl_build
| |...run_with_sd
|...docs (sysmaster.online)
|...build.sh (准备环境)

如:

 - lib crate: libs/event, libs/basic
 - bin crate: extends/init, sysmaster
 - daemon crate: extends/udevd, extends/logind

About

sysMaster: redesign and reimplementation of process1

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /