Update nexus: fix conflicts and sync local changes

This commit is contained in:
Shen Wei
2026-04-26 12:06:50 +08:00
parent 191797c01b
commit f09834b5a5
2443 changed files with 254323 additions and 255154 deletions

View File

@@ -1,70 +1,70 @@
---
title: "Partition Updates"
type: concept
tags:
- Operating System
- Updates
- Reliability
- A/B Testing
sources:
- public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
last_updated: 2026-04-24
---
# Partition Updates分区镜像更新
分区镜像更新是一种操作系统原子更新策略,通过 A/B 双分区设计,在线下载新版本镜像到非活动分区,重启后切换激活,确保更新过程的原子性和系统一致性。
## 核心设计
```
┌─────────────────────────────────────────────┐
│ 磁盘布局 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 分区 A │ │ 分区 B │ │ Data Vol │ │
│ │ (活动) │ │ (备用) │ │ (数据卷) │ │
│ │ OS v1.0 │ │ OS v1.1 │ │ 容器镜像 │ │
│ │ 正在运行 │ │ 空闲 │ │ 持久数据 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────┘
```
**更新流程:**
1. 下载新版本镜像到备用分区(分区 B
2. 验证镜像完整性(哈希校验 + 签名验证)
3. 更新引导配置,指向新分区
4. 重启系统
5. 固件/引导加载程序从新分区启动
6. 新分区变为活动分区,旧分区变为备用分区
## 优势
- **原子性**:更新要么完全成功,要么系统回退到原状态,不存在"半更新"状态
- **回滚能力**:如果新版本启动失败,可手动或自动回滚到旧分区
- **零停机更新**:无需停止正在运行的工作负载即可下载和准备新版本
- **一致性保证**:切换前已完成新镜像验证,确保启动后的系统状态可预测
- **适用于关键系统**:电信、金融、工业控制系统等不能容忍更新失败的业务
## 与传统包管理更新的对比
| 维度 | 包管理更新apt/yum | 分区镜像更新A/B |
|------|---------------------|-------------------|
| 原子性 | 非原子(可能中断于中途) | 原子(全部成功或全部失败) |
| 回滚 | 依赖包管理器功能,通常复杂 | 简单(切换回旧分区即可) |
| 根文件系统一致性 | 难以保证 | 完整镜像替换,一致性保证 |
| 适用场景 | 通用 Linux 服务器 | 容器宿主、嵌入式系统 |
| 存储开销 | 无额外开销 | 需要双倍存储空间 |
## 在 Bottlerocket 中的实现
Bottlerocket OS 采用分区镜像更新机制:
- 根分区分为 A、B 两组,每组包含 `root_a`/`root_b` 逻辑分区
- Data Volume数据卷独立于根分区存储容器镜像和应用数据更新不受影响
- Data Volume 支持快照预填充snapshot pre-population可在构建时就注入容器镜像加快首次启动
- 通过 Bottlerocket API 查看当前活动分区版本和待激活版本
## 相关技术
- [[OSTree]]:基于 Git 的操作系统更新系统,类似的原子升级理念
- [[Immutable-Root-Filesystem]]:分区更新的最终目标——确保根文件系统一致性
- [[dm-verity]]:与分区更新配合,验证新分区的完整性
---
title: "Partition Updates"
type: concept
tags:
- Operating System
- Updates
- Reliability
- A/B Testing
sources:
- public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
last_updated: 2026-04-24
---
# Partition Updates分区镜像更新
分区镜像更新是一种操作系统原子更新策略,通过 A/B 双分区设计,在线下载新版本镜像到非活动分区,重启后切换激活,确保更新过程的原子性和系统一致性。
## 核心设计
```
┌─────────────────────────────────────────────┐
│ 磁盘布局 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 分区 A │ │ 分区 B │ │ Data Vol │ │
│ │ (活动) │ │ (备用) │ │ (数据卷) │ │
│ │ OS v1.0 │ │ OS v1.1 │ │ 容器镜像 │ │
│ │ 正在运行 │ │ 空闲 │ │ 持久数据 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────┘
```
**更新流程:**
1. 下载新版本镜像到备用分区(分区 B
2. 验证镜像完整性(哈希校验 + 签名验证)
3. 更新引导配置,指向新分区
4. 重启系统
5. 固件/引导加载程序从新分区启动
6. 新分区变为活动分区,旧分区变为备用分区
## 优势
- **原子性**:更新要么完全成功,要么系统回退到原状态,不存在"半更新"状态
- **回滚能力**:如果新版本启动失败,可手动或自动回滚到旧分区
- **零停机更新**:无需停止正在运行的工作负载即可下载和准备新版本
- **一致性保证**:切换前已完成新镜像验证,确保启动后的系统状态可预测
- **适用于关键系统**:电信、金融、工业控制系统等不能容忍更新失败的业务
## 与传统包管理更新的对比
| 维度 | 包管理更新apt/yum | 分区镜像更新A/B |
|------|---------------------|-------------------|
| 原子性 | 非原子(可能中断于中途) | 原子(全部成功或全部失败) |
| 回滚 | 依赖包管理器功能,通常复杂 | 简单(切换回旧分区即可) |
| 根文件系统一致性 | 难以保证 | 完整镜像替换,一致性保证 |
| 适用场景 | 通用 Linux 服务器 | 容器宿主、嵌入式系统 |
| 存储开销 | 无额外开销 | 需要双倍存储空间 |
## 在 Bottlerocket 中的实现
Bottlerocket OS 采用分区镜像更新机制:
- 根分区分为 A、B 两组,每组包含 `root_a`/`root_b` 逻辑分区
- Data Volume数据卷独立于根分区存储容器镜像和应用数据更新不受影响
- Data Volume 支持快照预填充snapshot pre-population可在构建时就注入容器镜像加快首次启动
- 通过 Bottlerocket API 查看当前活动分区版本和待激活版本
## 相关技术
- [[OSTree]]:基于 Git 的操作系统更新系统,类似的原子升级理念
- [[Immutable-Root-Filesystem]]:分区更新的最终目标——确保根文件系统一致性
- [[dm-verity]]:与分区更新配合,验证新分区的完整性