Skip to content

docs: record what a rebuilt mirror can and cannot restore - #237

Merged
Zakkaus merged 1 commit into
masterfrom
docs/recovery
Aug 10, 2026
Merged

docs: record what a rebuilt mirror can and cannot restore#237
Zakkaus merged 1 commit into
masterfrom
docs/recovery

Conversation

@Zakkaus

@Zakkaus Zakkaus commented Aug 10, 2026

Copy link
Copy Markdown
Member

第六批任务 2。目标是回答一个此前答不出来的问题:镜像机 /srv/pub 全毁,多久能
恢复到可服务,以及哪些内容恢复不了。

2026-08-10 在镜像机平行根 /srv/recovery-rehearsal-<时间戳> 上实测一次,全程不碰
/srv/pub、不碰正式同步状态,演练结束后平行根已移除,两台机器无残留。

量到的

内容 大小 来源 耗时
stable binpkg 1.5 GB / 257 个 建置机 PKGDIR 164 秒
unstable binpkg 2.2 GB / 433 个 建置机 PKGDIR 225 秒
内核归档 274 MB / 2 个 无可用来源 36 秒但摘要不符

两个频道恢复后 generation.py verify 均通过,localhost HTTP 取回首个 PATH
大小与索引一致。

演练发现的两个问题

内核归档恢复不了。 sys-kernel/gentoo-cjk-kernel-bin 的 Manifest 钉死摘要,
gpkg 不是位元可重现的,建置机上没有摘要相符的副本。三个摘要实测:Manifest 与正式
发布的一致(49503e6a…),从 PKGDIR 恢复的不同(f74824e7…)。归档只有 274 MB,
留一份已发布位元组的副本成本很低,目前没有做。

Gentoo 镜像不带我们的 distfiles。 抽样 8 个按 filename-hash BLAKE2B 8 布局
取回,8 个全部 404。恢复来源是各上游 SRC_URI,上游消失的取不回来。这一段还无法
隔离演练:distfiles-sync.sh 的两个日志与 audit-distfiles.py 的三项状态写死在
正式路径,补覆盖之后才能量。

链路

dd | ssh 排除磁盘后:单流 10 MiB/s、四流 36 MiB/s、八流 24 MiB/s、十六流 11 MiB/s
并出现连线逾时。两端网卡 10 Gbps 与 2.5 Gbps,所以限制在单一连线上。

顺带记下的操作细节

/srv 属 root,恢复目录要先用 root 建立再交给服务账号;ISO 构建与 binhost 两轮
构建共用建置机,恢复时要与 08:00、20:00 错开。

镜像机的公开目录全毁要多久恢复,此前答不出来。2026-08-10 在平行根上实测
一次,全程不碰 `/srv/pub`,把量到的数字与两个问题写下来。

两个频道的 binpkg 从建置机 PKGDIR 恢复到可服务并通过同代校验,共六分半。

演练发现两件此前不知道的事。内核归档从 PKGDIR 恢复出来的档案,摘要与
overlay Manifest 不一致:gpkg 不是位元可重现的,建置机上也没有摘要相符的
副本,所以现有 ebuild 引用的那些版本取不回来。Gentoo 镜像不带我们的
distfiles,抽样八个全部 404,恢复来源是各个上游 SRC_URI,上游消失的取不回来。

链路速率一并记下:单一连线 10 MiB/s,四条并行 36 MiB/s,再多会退化并丢连线,
所以限制在单一连线上而不是路径总量。

distfiles 那一段还无法隔离演练,`distfiles-sync.sh` 与 `audit-distfiles.py`
有五处路径写死在正式位置,补上覆盖之后才能量。
@Zakkaus
Zakkaus merged commit 14aa0ea into master Aug 10, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant