项目/fusestream

更新于 2025/08/14

fusestream

面向 FUSE 与 NBD 的 I/O 故障注入工具,支持动态规则和 OpenTelemetry 记录。

fusestream 将文件系统或块设备请求放在可控代理层中,用于复现延迟、错误返回和部分 I/O 失败。它同时覆盖 FUSE 文件操作与 Linux NBD 块请求,适合测试存储系统面对慢盘、瞬时故障和条件性错误时的行为。

故障模型

  • FUSE 规则可以按路径正则表达式和操作类型匹配请求。
  • NBD 规则可以针对 read、write、flush 与 trim 等块操作。
  • 每条规则独立设置命中概率,并注入固定延迟、返回值或 NBD 错误。
  • NBD 支持基于 offset、length 等请求字段的 Tengo 条件表达式。
  • 运行中的规则通过 gRPC 添加、列出和删除,不需要重新挂载文件系统或重启服务。

FUSE 模式把指定目录挂载为代理文件系统;NBD 模式以普通文件作为后端并导出 block device。两条路径共用 fault manager,使控制面与实际 I/O 处理分离。

记录与边界

除故障注入外,fusestream 还能将 FUSE 请求记录为 OpenTelemetry span,并写入 Parquet,便于离线分析操作类型、路径、耗时和返回结果。

项目采用 MIT License,但目前没有 release,也没有 GitHub Actions。NBD server、client 和故障注入命令仅在 Linux 构建;Windows 侧聚焦基于 WinFsp 的 FUSE 路径。

它更适合作为测试和实验工具,而不是透明替代生产文件系统或块存储服务。使用前需要自行验证目标 workload、并发行为和故障规则是否符合预期。

相关阅读

Memo系统编程资料Memo通过 SSH 迁移 btrfs volumesMemoArchLinux 编译 python-kornia-rs