DOCA纠删码编程Skill doca-erasure-coding

本技能面向使用 NVIDIA BlueField DPU 或 ConnectX 网卡上的 DOCA Erasure Coding 库进行纠删码(Reed-Solomon)编程的开发者。技能覆盖 doca_ec 上下文初始化、create/recover/update 三种编码任务选择、N/K/块大小/矩阵类型参数配置、doc_ec_cap_* 能力查询、内存权限设置、常见 DOCA_ERROR_* 错误排查,以及从传统编码优化到硬件卸载的决策指导。典型场景包括 RAID-6 级存储容错、分布式文件系统校验、对象存储纠删桶、单盘故障恢复和增量校验更新。关键词:DOCA, Erasure Coding, 纠删码, Reed-Solomon, DPU, ConnectX, 数据重建, 校验更新, 能力查询, BlueField。

压缩/纠删码 0 次安装 0 次浏览 更新于 9/6/2026

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/ 目录。

加载顺序

  1. 先读此 SKILL.md 确认问题在范围(存储韧性),不涉及网络/复制问题。
  2. 对能力矩阵、路径选择、错误分类等查看 CAPABILITIES.md
  3. 对工作流查看 TASKS.md

相关技能

  • doca-public-knowledge-map —— DOCA 文档路由和安装包布局。
  • doca-setup —— 安装验证和 NGC 容器。
  • doca-version —— 版本兼容处理。
  • doca-structured-tools-contract —— 结构化工具优先级规则。
  • doca-programming-guide —— 通用 DOCA 编程模式。
  • doca-debug —— 跨层排错阶梯,EC 特有错误覆盖在此之上。