Skip to content

设备、Worker 与系统盘 ​

Kurrent 把计算侧拆成三个独立实体。它们各自有标识与权威归属,通过绑定关系组合成一个可启动系统;机器、身份与磁盘因此可以分别替换。

实体标识权威位置回答的问题
设备(Device)MAC设备台账 state/devices.yml哪台物理机器
Workerworker_id(主机名)Worker 台账 state/workers.yml以谁的身份运行
系统盘(System Disk)NQN存储节点上的盘文件 + Worker 台账启动哪一块系统

设备 ​

设备代表一台物理机器。首次网络启动时,固件上报 11 项指纹(MAC、UUID、SMBIOS、CPU、内存、网卡等)与设备公钥;控制面以 MAC 为唯一键登记。

设备记录包含:

字段含义
mac设备唯一标识;绑定关系的权威落点
uuid / fingerprint申报性质的硬件信息,用于识别与审计
statepooled / bound / revoked
bound_worker_id绑定的 Worker;未绑定为空
公钥哈希设备身份公钥的摘要;验签强制开启时用于准入
sourceipxe(自动上报)或 manual(人工登记/导入)

设备生命周期:

text
pooled ──绑定──► bound ──吊销──► revoked
  ▲                │
  └────解绑─────────┘
  • 注册 ≠ 授权。入池只表示“这台机器来过”,不产生任何引导权限;只有绑定到 Worker 后,设备才成为该 Worker 的引导节点。
  • 自动入池只在注册窗口开启且上报带有效公钥时发生;窗口关闭后,上报只更新指纹,不新增条目。人工登记与吊销清理不受窗口限制。
  • revoked 设备不再接受上报;dnsmasq 绑定文件会写入 MAC,ignore,被吊销设备拿不到租约。

Worker ​

Worker 是计算身份。worker_id 同时充当主机名,是台账与凭据的索引键;它不是机器身份,换机时保持不变。

Worker 记录包含:

字段含义
worker_id计算身份,台账主键
绑定的设备从设备台账投影,不在 Worker 侧单独存储
disks[]已挂载的系统盘
default_disk默认启动盘(os_tag)
boot菜单项与超时覆盖(可选)
stateregistered(仅身份)或 ready(有系统盘)

readiness 是由台账派生的只读投影:

值条件
ready已绑定设备且有系统盘
partial只有绑定设备,或只有系统盘
idle两者都没有

系统盘 ​

系统盘是存储节点上的一块盘文件,以 NQN 为数据面权威标识:

text
NQN  = <nqnBase>:<worker_id>.<os>.<os_tag>
IQN  = 由 NQN 派生(iSCSI 后端与安装器消费)
os_tag = 12 位随机 hex(盘级标识)
file = <worker_id>.<os>.<os_tag>.img
  • os 与 os_version 是展示与分组元数据,os 不设白名单。同一 Worker 的同一 (os, os_version) 至多一块盘;不同版本可并存。
  • 盘可以来自母盘克隆或空白盘。母盘不参与启动,只作为克隆源。
  • os_tag 在创建时由控制面生成;盘 NQN 一旦写入启动变量,就成为该盘的唯一标识。

默认盘 ​

默认盘决定菜单超时后启动哪一块系统:

  • 第一块系统盘创建后自动成为默认盘;第二块及以后的盘不会自动改写默认盘。
  • 删除默认盘时,若仍有剩余盘,控制面自动把其中一块提升为默认盘;没有剩余盘时清除 default_disk。
  • 未设置默认盘时,/boot-vars 返回 menu-default=reboot,避免静默进入错误的系统。

母盘 ​

母盘是放在存储节点 spec.agent.diskDir 下、文件名包含 _tpl_ 标记的盘文件(大小写不敏感)。后台扫描缓存母盘清单与 GPT 布局:

  • 母盘与系统盘都必须使用 4K 原生 GPT。512 字节扇区布局的盘会被 Agent 与 nvmet-host 同时拒绝,避免导出后固件无法识别分区。
  • 文件系统需支持 reflink(btrfs / xfs),克隆才能接近秒级;ext4 会退化为全量复制。
  • 母盘标签(os / os_version / remark)登记在 Agent 台账,仅用于展示与建盘选择。

绑定 ​

绑定关系是一对一的:一台设备只能属于一个 Worker,一个 Worker 只能有一台绑定设备。

  • 权威在设备侧。devices.yml 的 bound_worker_id 是唯一事实;Worker 响应中的绑定设备只是投影。dnsmasq 主机名映射也是派生投影,更新可能滞后,不参与引导身份判定。
  • 绑定即认证。/boot-vars 会校验请求 MAC 是否属于命中 Worker 的绑定设备,防止其他设备冒领身份。
  • 换绑是原子操作。force=true 时先写入新绑定,再清除旧绑定;失败时恢复台账快照。
  • 解绑只影响设备。设备回池,Worker 的系统盘、默认盘与凭据保留。

换绑即冷迁移 ​

把设备 A 从 Worker 换绑到设备 B,就是一次冷迁移:

  1. 确认 B 已登记并具备设备身份公钥;目标 Worker 的凭据已在存储节点生效。
  2. 关闭或隔离 A(当前不提供活迁移与数据面 fencing)。
  3. 在 Devices 页对 B 执行换绑;系统盘与 Worker 身份不动。
  4. B 启动并通过挑战-应答后,取得同一系统盘的连接信息。

从 A 换回 B 的回退路径相同;当前没有自动化编排。

放置 ​

创建系统盘时,位置由控制面决定(除非显式指定 disk_agent 或 pin):

  1. 候选必须是磁盘角色、启用(未排空)、有可达 base_url 且数据面端口就绪的 Agent。
  2. 克隆母盘时,母盘必须已存在于该节点本地。
  3. 在候选中选择现有系统盘最少的节点(均摊)。
  4. 显式 pin 覆盖自动放置,但 pin 指向的节点仍须通过可用性校验。

批量建盘的 dry_run 与执行使用同一份放置实现,预览即执行计划。

删除语义 ​

操作结果
删除系统盘(delete_file=false)删除导出 target,保留盘文件;台账移除该盘
删除系统盘(delete_file=true)同时删除 backing 文件,不可恢复
删除默认盘自动提升剩余盘为默认盘;无剩余盘时清除默认项
删除 Worker解绑设备、移除该 Worker 的凭据条目与推送台账;盘文件按选项处理
解绑设备设备回池;Worker 与系统盘保持不变
吊销设备设备进入 revoked,不再接受上报;清理入口只删除 revoked 条目

删除 Worker 后,同名 Worker 重新创建不会继承旧凭据:凭据条目已随删除清除。盘文件若被保留,可以重新挂载,但其 NQN 与台账记录需要重新建立。

相关页面 ​