BrewFSBrewFS
BrewFSBrewFS
快速上手
运维可观测性控制平面GC 命令测试POSIX 测试Kubernetes Operator
运维

POSIX 测试

文件系统一致性覆盖、可复现 runner 与明确公开的限制。

BrewFS 将 POSIX 行为视为发布要求。测试计划会在 SQLite、Redis、etcd、TiKV 元数据后端和 RustFS 对象存储上检查 FUSE 与元数据行为。套件通过只代表已配置用例的证据,不代表每一种内核或 FUSE 能力都已实现。

覆盖内容

范围示例
命名空间与元数据create、unlink、rename、硬链接、时间戳、xattr、特殊 inode、setgid 继承
权限与路径owner、mode、路径遍历、链接与删除行为
并发POSIX 字节范围锁、lookup/stat 路径、close-to-open 行为、事务型元数据更新
FUSE 与写回truncate、flush、fsync 敏感路径、缓存失效、对象存储提交

当前验证覆盖

套件范围已公开结果
xfstestsFUSE、元数据、锁、写回、对象存储行为SQLite、Redis、etcd、TiKV 均通过 708 / 708 个已配置用例
pjdfstestPOSIX 路径、权限、链接、特殊节点、重命名、删除、时间戳Redis 与 TiKV:246 个文件、9,134 条断言
LTP filesystemLinux 文件系统场景与记录锁覆盖四个后端均通过,buffered iogen01 为已记录跳过项
stress-ng smoke短时元数据与小写入压力通过,且没有残留文件

运行套件

# Rust 单元、集成与 feature 检查
cargo test --workspace --lib --bins -- --test-threads=1

# Redis + RustFS POSIX 套件
bash docker/compose-xfstests/run_redis_pjdfstest.sh
bash docker/compose-xfstests/run_redis_xfstests.sh
bash docker/compose-xfstests/run_redis_ltp.sh
bash docker/compose-xfstests/run_redis_stress_ng.sh --profile smoke

# 移除排除项前,先单独验证该 xfstests 用例
bash docker/compose-xfstests/run_redis_xfstests.sh --check-args "-fuse generic/091"

现代 Compose runner 会在 docker/compose-xfstests/artifacts/ 下保留报告、日志和 skip-file 上下文。

明确公开的限制

  • generic/075 继续排除。buffered FUSE 在 truncate/extend 后的 mmap 可能暴露过期 page-cache 字节;direct I/O 无法运行该 mmap 形态。
  • 正常 buffered profile 继续跳过 LTP iogen01,因为 split-write/page-cache 一致性竞态仍在诊断中。
  • open_by_handle_at、共享 mount 传播、部分 O_DIRECT sparse-hole 用例与长时间 fsstress soak 都是已记录的排除项或手动套件。

不能因一次本地通过就移除排除项。应先在没有默认 exclude file 的条件下重跑该用例,检查产物,然后重复执行或运行完整套件,再将其提升为必需覆盖。

性能改动必须保持正确性

任何读写热路径改动都必须重新运行这些套件和性能 guard。profile 与回退预算规则见基准测试方法。

测试

测试套件与基准入口。

Kubernetes Operator

在 Kubernetes 上部署 BrewFS 后端与托管挂载工作负载。

On this page

覆盖内容当前验证覆盖运行套件明确公开的限制性能改动必须保持正确性