Update nexus: fix conflicts and sync local changes
This commit is contained in:
@@ -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]]:与分区更新配合,验证新分区的完整性
|
||||
|
||||
Reference in New Issue
Block a user