元数据版本更新
JuiceFS 5.3.7 (2026/4/21)
- 支持按 token 级别限制 meta 的 CPU 使用率
- 要求 admin 权限来处理
attr命令设置扩展属性的请求 - 当 tid 未知时禁用 plock 的死锁检测
- 在重放日志过程中禁用 watchdog
- 清理对象多次失败时记录客户端的 session ID 以便于排查问题
- 限制单次请求中合并虚拟子目录的深度
- 限制拆分虚拟子目录的最大深度为 6
- 提升合并目录的性能
- 修复当部分 changelog 丢失时 meta 反复下载快照却无法恢复的问题
- 多分区
- rebalance 命令不要迁移刚从回收站中恢复出来的文件
- 修复 SDK 在 resolve 过程中可能误用父目录 OID 的问题
- restore: 提升从回收站中恢复大量文件的性能
JuiceFS 5.3.6 (2026/4/1)
- 新增
MIN_TRASH_TIME参数来调整回收站文件的最短保留时间 - 镜像集群支持指定源集群的多个 IP
- 禁止元数据服务复用端口,改为自动清理占用着端口的旧子进程
- 只在没有旧日志被加载时才会跳过大的日志文件
- 拒绝客户端连接时返回
EBADSESSIONID错误码 - 提升在有很多 exports 规则时重新加载配置文件的性能
- 优化 proxy 功能在发生 leader 切换时的稳定性
- captool: 修复对压缩目录的解析错误问题
- 多分区
- fsck 时流式处理每个分区的 refs,降低内存使用
- 加速对 moved inodes 的清理
- 修复
rebalance命令无法正 确迁移子分区目录的问题 - 修复虚拟目录下的 ref 未被正确解析导致打印错误告警日志的问题
JuiceFS 5.3.5 (2026/3/19)
- 为 pyjfs 接口增加 sustained 文件数量和大小的统计
- 支持使用虚拟连接来降低元数据服务的连接数量
- 支持命令行直接校验 LICENSE 的合法性
- 将 debug 代理端口写入到特定文件中
- 优化 list sessions 的性能
- 在删除快照时跳过对虚拟子目录的 sticky bit 权限检查
- 修复了退出时可能报 EBADF 错误的问题
- 修复了遇到空的或损坏的事务日志时反复下载日志的问题
- 修复了刚建立的连接第一条消息可能被丢弃的问题
- captool: 修复多个消息解析错误
- 多分区
- 子分区没有 exports 文件时不再打印错误日志
JuiceFS 5.3.4 (2026/3/10)
- 降低客户端注册消息的优先级
- 提升检索 exports 规则的速度
- 多分区
- 只记录目录的 OID
JuiceFS 5.3.3 (2026/3/2)
- 修复控制台 API 中 FIFO 文件类型字符错误的问题(
q改成p) - 为 pyjfs 新增设置卷名称的能力
- 支持从快照文件中加载虚拟子目录
- 提高触发事务日志清理的阈值
- 备 份未使用的事务日志
- 优化事务日志扫描与同步流程,减少不必要的日志记录
- 修复 inode 复用延迟问题
- 修复压缩的事务日志截断问题
- 修复重放日志时解析 inode 范围可能导致 panic 的问题
- 修复 metalogger 中下载日志失败的问题
- 修复 metalogger 中压缩事务日志文件的命名与元数据 rotate 问题
- captool: 适配近期协议变更
- 多分区
- rename 后在 readdir cache 中记录 OID
- rename 请求中返回 OID
- 确保 OID 是有效的
- 同路径场景优先使用主分区的 quota
- 目录跨分区 rename 场景下优先将空目录迁回到源分区
- 访问镜像场景下 moved inode 时也需要更新 atime
- 修复 heatmap 命令中返回额外空路径的问题
JuiceFS 5.3.2 (2016/2/2)
- 修复缺乏部分日志导致早期的文件泄漏的问题
- 提升加载日志的性能
- 避免同步中断时重复发送日志或者心跳
- 减少重复的日志发送
- 磁盘空间占用达到 95% 时才清理日志
- 修复并发写快照导致冲突的问题
- 修复合并的虚拟子目录的 inode 没有被持久化的问题
- 延迟复用 inode(180 天)
- 合并记录克隆使用的 inode
- 修复覆盖已有事务日志的问题
- 将不同 term 的日志写入不同文件
- 解决写入审计日志不够快导致线程数暴增的问题
- 改进从旧版本升级的流程
- 修复重放日志失败后退出码不为 1 的问题
- 多分区
- 修复根目录的不对的问题
- 解决目录迁移后导致的
ESTALE错误 - 解决配额不足 导致迁移失败的问题
- 修复重放旧版本的
REPLACELINK日志可能导致脑裂的问题
JuiceFS 5.3.1 (2016/1/14)
- 改进 Raft 算法实现,确保镜像不会因拿到未提交的日志而导致脑裂。
- 在更新配置后尽量匹配带有密码的访问规则
- leader 选举出来了才退出,避免误操作导致集群不可用
- 支持以当前操作的用户的权限来恢复回收站文件
- 限制审计日志的空间占用,默认最多总空间的 50%
- 统一监控图标的单位为 QPS
- 修复可能漏处理某个信号的问题
- 当 meta 之间签名不匹配时在日志中显示端口
- 支持新的 pkcs12 格式的密钥文件
- 内存碎片太多时自动重启
- captool: 支持按命令名过滤
- captool: 修复读数据不完整导致 panic 的问题
- 重复的热点均衡请求
- 解决集群初始化时可能选不出 leader 的情况
- 修复导出导入的文件为 JSON 时失败的问题
- 修复当客户端没有 GID 时请求会失败的问题
- 修复移动 ref 导致统计数据不准确的问题
- 修复解析超长的配置文件时静默失败的问题
- 修复 restored 的内存泄漏
- 修复重放 RMR 日志时报数量不一致的问题
- 镜像:镜像在同步失败时,立即尝试恢复第一个节点,由第二个保障可用性
- 修复重启时 leaderip 异常导致日志不能正确复制的问题
- 改进迁移深度拆分的目录的性能问题
- Raft 超时后重置 leaderip 避免干扰后续选举
- 优先合并碎片很多的文件,避免删除任务很多时无法进行碎片合并
- 多分区
- 多分区的跨分区事务改造:改进事务的异常处理能力,能自动回滚,杜绝坏链
- 使用 commit 作为 link 和 ref 的唯一匹配标识,杜绝 inode 复用时的可能的误删问题
- rebalance: 将指定目录拆分到多个分区
- 支持最多 1024 个分区和单卷 5000 亿文件
- 减少多分区集群的客户端的内存占用
- 允许迁移配置了 quota 的目录
- 减少可能的跨分区 rename
- 改进目录合并的处理,不再广播事件通知,改进客户端的重试
- 允许迁移包含全部硬链接的目录
- 延迟多分区的 inode 复用
- 保留迁移的 inode 最多 7 天
- 更新跨分区的链接的 UID/GID/mode/flags 跟目标保持一致
- 允许拆分子分区的根目录
- 多分区的子分区从 0 分区继承权限配置
- 在删除时的事务日志中记录完整路径
- 默认跟踪跨分区的文件的删除避免泄漏
- 默认启用热点自动均衡(针对文件数少于 50000 的目录)
- rebalance: 自动拆分大的目录树
- 将新创建的目录迁移到内存使用量更低的分区
- info: 支持
zone:inode格式 - 修复从多分区的回收站恢复文件时可能导致文件名重复的问题
- 修复恢复一个迁移的 inode 导致 panic 的问题
- 修复被迁移的硬链接的内核缓存未正确失效的问题
- 优化碎片很多的文件的均衡处理,减少 CPU 占用,尽快合并碎片
- 解决在故障切换后客户端可能有错误的跨分区链接缓存的问题
- fsck: 支持
zone:inode格式 - 不再合并级联的 link 指向的目录
- 改进遍历 link 的兼容性检查
- 将 link 的优化调整为 10 秒一次
- 修复更新 ACL 后迁移过的文件的内核缓存未更新的问题
- 修复根目录没有自动拆分的问题
- 修复访问
.zonemap可能卡死的问题 - 自动拆分热点目录以便于迁移
- 等待子分区时遵守 ioretries
- 优化查找多个 inode 的路径时只依赖涉及到的分区
- 修复 empty 导致硬链接损坏的问题
- 新增迁移文件的大小和碎片数量限制参数
- 增大自动迁移的热点目录的文件数限制到 5000
JuiceFS 5.2.23 (2026/1/29)
- 选举后不需要重复发送日志给镜像
- 解决有大量数据需要删除时导致碎片合并不及时的问题
- 修复元数据服务配置了两个 IP 时有可能选不出 leader 的问题
- 多分区
- 修复长时间打开却没有访问操作的文件可能会访问失败的问题
JuiceFS 5.2.22 (2026/1/4)
- 多分区
- 修复根目录被拆分时文件系统大小统计不准确的问题
JuiceFS 5.2.21 (2025/12/22)
- 多分区
- rebalance: 支持拆分单个目录到多个分区
- rebalance: 自动拆分单个分区内的大目录树到多个分区
- 修复客户端在迁移热点目录时可能崩溃的问题
- 修复重复尝试迁移热点目录的问题
JuiceFS 5.2.20 (2025/12/8)
- 启动时显示对象存储中的数据大小
- 支持带空格的配额路径
- 提升元数据缓存的命中率
- 改进 CPU 使用率指标的准确性
- 修复重放清理回收站的日志失败的问题
- 多分区
- fsck: 支持镜像集群运行
- 不要拆分正在均衡中的目录
JuiceFS 5.2.19 (2025/11/7)
- 多分区
- 支持仅补充 LINK 文件的 commit 字段
- 不要用正在迁移的 REF 做同分区优化
- 允许重放各个 5.3 版本的事务日志(兼容 5.3 版本)
JuiceFS 5.2.18 (2025/10/30)
- 每个客户端会话只允许一个连接
- 被拆分目录合并时更新客户端的目录属性缓存
- 修复重放
SETPATH日志时版本号可能未变更的问题 - 允许恢复文件的事务日志中包含 flag(兼容 5.3 版本)
- 允许删除文件的事务日志中包含其路径(兼容 5.3 版本)
- 允许处理
REGISTER_SHADOW消息(兼容 5.3 版本) - 多分区
- 在找高热目录时忽略根目录
- 改进 rebalance 命令中对整体热度的判断条件
- 允许更新 LINK 文件的 UID(兼容 5.3 版本)
- 允许
LOAD请求中包含 LINK 文件的 commit 信息(兼容 5.3 版本)
JuiceFS 5.2.17 (2025/10/20)
- 忽略同个会话中重复消息 ID 的请求
- 限制用于内存压缩的 CPU 使用率
- 立即清理空的回收站目录
- 多分区
- 支持 fsck 清理变成了损坏 LINK 的虚拟子目录
- 修复并发从回收站中恢复同一个 inode 时可能导致元数据服务崩溃的问题
JuiceFS 5.2.16 (2025/10/11)
- 忽略重复的
setattr请求,不要生成事务日志 - 修复重放 snapshot 日志时解析出错误 inode 的问题
- 多分区
- 不再自动清理损坏的 LINK 文件
- 优先选择新版本客户端来发送
UNREF请求 - 禁止迁移标记为 EMPTY 的 REF 文件
- 当 fsck 检查到 LINK 的目标不是 REF 时也将其标记为损坏
- 修复判断路径是否是 REF 时可能发生误判的问题
JuiceFS 5.2.15 (2025/9/24)
- 改进在事务日志文件中查找相同版本的效率
- 修复在读取 term 时 buffer 大小不够的问题
- 修复重用 buffer 对象时可能导致内存冲突的问题
- 多分区
- 根据剩余可用 inode 号的数量来自动调节
INODE_REUSE_DELAY - 修复在
rmr一个被拆分目录时,可能导致 LINK 文件泄漏的问题 - 修复被拆分的目录在清空后依然可能因虚拟子目录损坏导致其删除不掉的问题
- 根据剩余可用 inode 号的数量来自动调节
JuiceFS 5.2.14 (2025/9/17)
- 改进当部分事务日志缺失时的服务恢复流程
- 避免重复发送元数据更新消息导致的性能问题
- 支持重放日志时的热点目录信息
- 多分区
- 改进跨分区链接名称的修复流程
- 修复 fsck 在修复异常链接时查询的路径可能不对的问题
JuiceFS 5.2.13 (2025/9/9)
- 当内存不足导致 meta 重启时,需等待所有事务日志刷盘
- 多分区
- 修复在有过多个文件系统的 meta 集群中,可能因 zlink 记录泄漏导致的数据错乱问题
- 修复优化跨分区链接时用 2 作为目标 inode 可能导致歧义的问题
JuiceFS 5.2.12 (2025/9/3)
- 在主循环外提前解析指标上报消息的 JSON 内容
- 降低 Pyroscope 的上传频率,禁用其收集指标期间的 GC
- 多分区
- 支持 meta 自动发现热点目录并通知客户端进行迁移
- 进一步优化 fsck 命令对跨分区链接和目标文件的修复能力
- 修复 rebalance 命令的进度条可能卡死的问题
- 镜像集群客户端找链接文件时去源端查找
- 优化批量反查 inode 的路径的性能
- 提升清理链接文件的并发性能和准确性
- 提升某些情况下在同一分区内优化跨分区链接的性能
- 提升加载迁移的 inodes 的性能(不再使用分片 Hash)
- 不要为孤儿文件去修正回收站路径
- 修复使用子目录挂载时删除被拆分的根目录里面的子目录可能卡主的问题
JuiceFS 5.2.11 (2025/8/21)
- 当本地端口小于 15000 时,尝试重新建立连接
- 在镜像集群中因访问文件更新 atime 时,不要修改 ctime
- 修复元数据退出时快照中可能包含未提交的数据的问题
- 多分区
- 修复迁移的 inode 未能及时释放的问题
- 限制
rename单文件的并发,避免客户端内存暴涨 - 不允许优化迁移中的目录
- 优先选择未压缩的回收站文件进行路径修复,减少回收站文件的内存占用
- 提升批量反查 inode 的路径的性能
- 修复跨分区
rename时可能因 inode 相同导致陷入死循环的问题 - 修复同分区内优化链接不准确导致出现孤儿文件的问题
JuiceFS 5.2.10 (2025/8/13)
- 新增
shell命令来直接访问元数据服务 - 修复当
INODE_REUSE_DELAY时间过短时,客户端的符号链接缓存未正常失效的问题 - 多分区
- 元数据迁移时不允许使用 2 作为新的 inode 以避免歧义
- 允许清理迁移中的 LINK 文件
- 修复异常情况下链接优化操作可能循环调用导致栈溢出的问题
JuiceFS 5.2.9 (2025/8/7)
- 删除目录后需要清理客户端上对应的目录缓存
- 新增
RENAME_OBJECT_LIMIT=1来避免重命名目录时不必要的扫描 - 让日志文件中的版本号保持连续
- 优化查找日志文件的性能
- 修复在清理已删除的文件时可能的不一致问题
- 修复当主循环阻塞时,网络 fd 会大量泄漏的问题
- 修复主循环 CPU 统计值不准确(可能远超 100%)的问题
- captool: 使用更大的缓冲区来降低丢包
- 多分区
- rebalance 命令增加速率限制
- rebalance 命令支持多分区并发执行
- rebalance 命令忽略迁移中的目录
- fsck 命令支持修复
.backup目录下的链接目标文件 - 修复链接名没有及时修正的问题
- 隐藏拆分后的
.jfszone0下的普通文件 - 优化根据 inode 查询路径的性能
- 修复文件多次迁移后可能导致客户端内存暴涨的问题
JuiceFS 5.2.8 (2025/8/1)
- 支持显示镜像集群的热点目录
- 在处理
rename请求时确保没有目录成环 - 允许镜像集群更新访问时间
- 优化服务器在发送消息和管理 QoS 时的内存分配
- 即使事务日志不完整时也尽量写入磁盘
- 支持设置
READ_COMMITED=1来避免幻读 - 修复服务重启后 Kerberos token 丢失的问题
- 多分区
- fsck 命令在加载迁移日志文件时,选择最新的迁移链条
- fsck 命令支持并行修复跨分区链接
- fsck 命令支持清理回收站中的损坏链接
- fsck 命令修复查找文件路径时可能选择了错误分区导致结果不正确的问题
- 只在没有显式设置
FREE_MOVED时才做自适应调整 - 在解析 LINK 文件时,让 inode 未找到和 inode 是符号链接两种情况返回不同的错误码
- 修复
info命令查看刚删除的文件可能陷入死循环的问题 - 修复
rename后源端 LINK 可能未被正常删除的问题 - 修复查找链接文件时结果可能不准确导致误将文件标记为
dangling的问题
JuiceFS 5.2.7 (2025/7/28)
- 多分区
- 修复某些情况下客户端的缓存没有及时清理的问题
- fsck 命令进一步优化修复跨分区链接的功能
- 支持优化
.backup目录下的链接目标文件 - 修复跨分区链接优化后可能导致目录缓存不准确的问题
- 修复查找 inode 的路径时可能不准确的问题
JuiceFS 5.2.6 (2025/7/25)
- 能更快速地列出所有使用中的跨分区链接
- 修复回收站中的 inode 可能被错误复用的问题
- 设置
INODE_REUSE_DELAY和FREE_MOVED的最小值 - captool: 改进高压力情况下的稳定性和准确性
- 多分区
- fsck 命令支持检查和修复跨分区链接
- 改进跨分区链接优化策略,避免某些目录在两个分区间来回迁移
- 修复跨分区链接文件被不合理优化导致链条可能断裂的问题
JuiceFS 5.2.5 (2025/7/9)
- 修复清理临时回收站文件时,
rmr的事务日志里记录的文件名称为空的问题 - 及时压缩扫描过的回收站文件来避免内存突增
- 限制镜像集群客户端的后台任务数,避免内存暴涨
- 修复冷备节点发送日志时可能导致脑裂的问题
- captool: 改进稳定性和性能
- 多分区
- 修复部分目录在跨分区统计时指标不准确的问题
JuiceFS 5.2.4 (2025/6/24)
- 新增
FS_READONLY参数来将某个分区调整为只读模式 - 在导入和克隆失败时能自动回滚,避免服务退出
- 限制内存中事务日志的大小
- captool: 使用内核 BPF 过滤器减轻抓包负担,减少丢包
- 多分区
- 新增
BOOT_FREE_MOVED参数来调整清理迁移的 inode 启动延迟 - 支持复制共享的数据片段,使得相关文件转为可迁移状态
- 根据当前迁移走的 inode 的数量自动调整回收等待时间
- 在优化跨分区链接时,如果源分区已经比较大,则不要将链接目标回迁
- 新增
JuiceFS 5.2.3 (2025/6/19)
- 在热备节点也跟踪更新过的链接目标以便在重启后也能更新统计数据
- 修复当操作的文件数过多时
LOAD和EMPTY日志可能超过长度限制的问题 - 进一步完善网络包分析工具
captool
JuiceFS 5.2.1 (2025/5/27)
- 完善 meta 进程的网络包分析工具 (1.0)
- 修复使用 bloomfilter 后在压缩目录中新建文件却找不到的问题
JuiceFS 5.2.0 (2025/5/24)
- 新增 meta 进程的网络包分析工具 (beta)
- 新增 -loadBin 选项来导入社区版的二进制格式的元数据备份
- 多方面改善 meta 进程的内存压缩策略
- 提升元数据事务日志的完整性(rmr 日志记录删除的 inodes 等)和鲁棒性,便于更好地跟踪特定文件的完整生命周期
- 允许使用 export 规则文件来禁用非标准的目录统计信息功能
- 提升系统的 inodes 限制到 1 万亿
- 并行加载快照文件中的迁移 inode 信息,加快元数据服务的启动速度
- 改进处理元数据请求的主线程的效率,并使用独立的线程回收内存
- 使用后台线程读取硬盘上的快照和日志文件,降低对主线程的影响
- 使用 bloomfilter 加速在压缩目录中查找不存在的文件
- 有多块元数据盘时改进选择策略,当空间不多时优先使用剩余空间较大的盘
- 修复创建快照时 sticky bit 权限检查不准确问题
- 修复恢复回收站文件时 sgid 未正确恢复问题
- 修复被拆分目录被克隆时 UID/GID 可能不一致的问题
- 修复被拆分的目录下子项被 rename 时可能误失败的问题
- 修复 rmr 空目录时可能因没有读权限导致失败的问题
- 修复写入磁盘快照时可能死锁的问题
- 修复调整镜像集群的消息优先级后可能导致重放日志失败的问题
- 避免使用 CHUNK_FORCE_DELETE=1 时短时间内多次尝试导致数据泄露的问题
- 允许 metalogger 使用小于 1000 的端口号
- 删除 vdir 时忽略对父目录的权限检查
- 多分区
- 优化跨分区链接的统计,提高目录统计信息的准确性和及时性
- 自动清理子分区根目录下泄漏的临时文件
- 多分区事务中添加提交版本检查,提高镜像文件系统的一致性
- 多分区个数限制修改后能自动更新并推送配置
- 修复文件可能因删除操作中断而泄漏的问题
- 修复有 hardlink 的文件可能被多删除一次的问题
- 修复链接文件可能被误替换为回收站文件的问题
- 修复元数据迁移过程中存在不能迁移的文件时客户端缓存的失效问题
- 修复多分区集群中 rmdir 的返回值可能异常的问题
- 修复多分区集群中创建 hardlink 有可能误失败的问题
- 修复多分区集群中因缓存问题导致 nlink 可能不准确的问题
- 修复 status 命令中 session 的 CPUUsage 可能不准确问题
- 修复 rmr 可能删除不干净的问题
- 修复启用回收站时删除根目录下文件再创建的名字冲突问题
JuiceFS 5.1.19 (2025/5/13)
- 允许通过 UNDEL_UMASK 来调整从回收站恢复文件时自动创建的目录的权限
- 允许调整来自 peer 和 client 的消息的优先级,避免部分请求被长时间挂起
- 允许任何来源的 MSG_GET_VERSION 请求
- 将 FIX_TRASH_PATH_LIMIT 的默认值由 1000 减小为 200
- 加强对 5.2 版本变更日志的兼容性
JuiceFS 5.1.18 (2025/4/16)
- 提升删除文件硬链接的性能
- 创建硬链接后如果 nlink 未变(达到了 nlink 最大值限制)则不需要更新 attribute
JuiceFS 5.1.17 (2025/4/1)
- 给 pyroscope 增加 集群名和 build 信息作为 tag
- 增加 /debug/pprof/cpuprofile 来规避跟 pyroscope 的冲突
- 增加
--checkVdir参数来检查被拆分目录的完整性 - 修复通配符配额更新不对的问题
- 增加
QOS_RESET_CYCLE参数来控制限速的精度 - 修复 readdir 返回回收站文件导致客户端异常的问题
- 多分区
- 优先处理 REPLACE 请求
- 延迟合并还在更新的目录到它的父目录所在分区
- 延长等待连接到子分区的时间到 30 秒
- 修复 ref 在被拆分的 .backup 里是路径不对的问题
- 修复 在拆分的 .backup 中的 ref
- 修复 .backup 的权限为 0777
- 隐藏根目录下创建中的临时硬链接
- 修复硬链接泄漏问题
- 修复硬链接的 ref
- 当 ref 不能移动到 .backup 中时尝试修复 ref
- 修复多分区模式 quota 命令返回的路径
- 修复删除损坏的跨分区目录的问题