DOCA 纠删码编程
从哪里开始: 本技能假定 DOCA 已经安装,并且用户正在 BlueField/ConnectX/主机上进行纠删码的实际编程。如果用户想执行某项操作(配置/构建/修改/运行/测试/调试),请打开 TASKS.md;如果问题是关于当前版本 DOCA Erasure Coding 支持什么能力,请打开 CAPABILITIES.md。如果用户尚未安装 DOCA,请先参照 doca-setup 技能。如果用户问“是否应该使用纠删码还是直接复制数据”,请先阅读 CAPABILITIES.md 中的路径选择规则。
示例问题
- “我应该把纠删码卸载到 DOCA 还是用 CPU 做,或者干脆复制多份?”——例如分布式对象存储需要跨 12 块盘的 RAID-6 容错,该选择哪种方案?
- “我的设备支持我想要的 EC 任务类型、块大小、N+K 布局和矩阵类型吗?”——例如
doca_ec_task_create是否支持、块大小上限、N+K 上限、是否支持 Vandermonde 矩阵等。 - “一个源块改变了,是否需要从头重新计算所有校验?”——例如 8 数据+4 校验块,当重写一个数据块后,如何用
doca_ec_task_update增量更新校验,而不是完整编码。 - “N+K 块中丢失了 K 块,如何重建?”——例如磁盘故障,数据块完好但校验块丢失,能否恢复。
- “源/目标 mmap 需要什么权限?”——例如
DOCA_ERROR_NOT_PERMITTED错误时的权限矩阵和配置检查。 - “‘这个 API 在我安装的 DOCA 版本中可用吗?”——例如
doca_ec_task_update是否可用,以及通过 capability 查询来确认。 - “这个
DOCA_ERROR_*是什么含义,由哪一层引起?”——例如参数错误、块大小超限等。
受众
本技能面向外部开发者,他们调用 doca_ec_* C 语言 API(或通过 FFI/绑定)来将 Reed-Solomon 纠删码卸载到 BlueField DPU 或 ConnectX 加速器。典型场景是分布式存储:RAID-6 风格块布局、分布式文件系统校验、对象存储纠删桶。本技能也覆盖其他语言调用同一公共 C ABI 的情况。
何时加载本技能
当用户正在做以下 DOCA Erasure Coding 实操时加载:
- 初始化
doca_ec上下文并在doca_dev上配置任务(create/recover/update)再启动。 - 选择任务类型、矩阵类型(Vandermonde/Cauchy)、N(数据块数)、K(校验块数)和块大小。
- 按权限要求设置源/目标 mmap(如
DOCA_ACCESS_FLAG_LOCAL_READ_ONLY/LOCAL_READ_WRITE)。 - 使用
doca_ec_cap_*查询任务支持、最大块大小、最大 N+K 等。 - 进行小规模恢复冒烟测试(编码→丢块→恢复→位对比)。
- 判断何时使用 update 任务增量更新校验。
- 调试来自 EC 调用的
DOCA_ERROR_*。 - 设计非 C 语言的绑定,需遵守其生命周期/权限/能力规则。
不加载本技能用于:一般 DOCA 入门、安装 DOCA、非 Reed-Solomon 编码(如 fountain、LDPC)、纯复制策略、网络 FEC 或其他 DOCA 加速库。
本技能内容
这是轻量加载器,具体材料在两个伴随文件:
CAPABILITIES.md—— 能力矩阵:三种任务类型、配置面、capability 查询族、错误分类、可观测性、安全策略和路径选择规则。TASKS.md—— 逐步工作流:configure、build、modify、run、test、debug。
刻意不包含的内容
- 不包含预写应用源码;推荐使用随 DOCA 安装的示例并遵循
doca-programming-guide的修改流程。 - 不提供预计算的任意格式校验表;推荐使用已知向量冒烟测试。
- 不放置独立构建清单;应在用户工程目录基于
pkg-config --modversion doca-erasure-coding构建。 - 不含 samples/、bindings/ 或 reference/ 目录。
加载顺序
- 先读此
SKILL.md确认问题在范围(存储韧性),不涉及网络/复制问题。 - 对能力矩阵、路径选择、错误分类等查看
CAPABILITIES.md。 - 对工作流查看
TASKS.md。
相关技能
doca-public-knowledge-map—— DOCA 文档路由和安装包布局。doca-setup—— 安装验证和 NGC 容器。doca-version—— 版本兼容处理。doca-structured-tools-contract—— 结构化工具优先级规则。doca-programming-guide—— 通用 DOCA 编程模式。doca-debug—— 跨层排错阶梯,EC 特有错误覆盖在此之上。