posix_compatibility
JuiceFS 主要通过 pjdfstest 与 Linux Test Project(LTP) 进行 POSIX 兼容性验证。本文对社区版文档内容做摘要说明。
pjdfstest
pjdfstest 用于验证 POSIX 系统调用行为。JuiceFS 已通过最新 8,813 项测试。
注意:运行 pjdfstest 前需关闭回收站(trash)
pjdfstest 会直接删除文件;若启用 JuiceFS 回收站,行为与测试预期不一致。请在测试前关闭回收站:
juicefs config <meta-url> --trash-days 0
POSIX 语义与支持能力
除 pjdfstest 覆盖范围之外,JuiceFS 还提供以下与 POSIX 语义相关的能力:
- Close-to-open 一致性:文件写入并关闭后,后续 open/read 可读到最新数据;同一挂载点内写入数据可立即读取。
- 原子化元数据操作:
rename及其他元数据操作具备原子性(由元数据引擎事务保证)。 - unlink 后仍可访问已打开文件:在同一挂载点内,文件被 unlink 后,已打开的文件句柄仍可继续访问。
- 支持
mmap(通过 FSx 验证)。 - 支持
fallocate及打洞(punch hole)。 - 支持扩展属性(
xattr)。 - 支持 BSD 锁(
flock)。 - 支持 POSIX 记录锁(
fcntl):支持传统(与进程关联的)记录锁。
记录锁:传统锁与 OFD 锁
POSIX 记录锁可分为 传统锁(traditional lock,F_SETLK)与 OFD 锁(open file description lock,F_OFD_SETLK)。受 Linux FUSE 内核模块实现限制,JuiceFS 目前仅支持 传统记录锁。详情可参考 fcntl(2)。
Linux Test Project (LTP)
LTP 是用于验证 Linux 内核与系统调用可靠性/稳定性的测试套件。JuiceFS 能通过大多数与文件系统相关的用例。在历史测试中,少量跳过/失败用例的原因通常包括:
lseek对SEEK_DATA/SEEK_HOLE的期望行为。- 个别用例对
open/openat行为有特定要求。
各版本一致性说明
上述 POSIX 兼容性在 社区版、云服务和企业版中保持一致。
延伸阅读
更完整细节(含完整测试输出与附录)请参考社区版文档:https://juicefs.com/docs/community/posix_compatibility。


