元数据版本更新
JuiceFS 5.3.12 (2026/7/3)
- 新增
DISK_FREE_SPACE和DISK_FREE_RATIO选项来调整元数据服务清理日志盘的时机 - 修复在处理
find命令后可能导致元数据服务内存占用过高的问题 - 多分区
restore在恢复文件冲突时添加特殊的带$符的后缀来方便区分- 禁止恢复不在 sustained 中的 link 文件
- 修复
restore指定 inode 的文件时如果其发生了迁移会导致恢复失败的问题 - 修复
restore并发合并子分区文件到主树时可能出现部分文件添加多次-1特殊后缀的问题 - 修复
restore在合并子分区文件过程中性能很差的问题(5.3.9 引入)
JuiceFS 5.3.11 (2026/6/24)
- 主循环繁忙时尽早关闭超时的连接
- 在清理回收站文件时不再检查其 atime 和 mtime
- 改进默认情况下获取有超多硬链接的文件属性时的性能
- 修复了连接可能被意外关闭导致进程 panic 的问题
- 修复了在重放删除快照日志时错误地忽略了文件只读标志的问题
- 修复了恢复回收站文件速度大幅下降的问题(5.3.9 引入)
- 多分区
- 在平滑升级时,不再因为
keep-inode选项的变更而保留旧进程 - 修复虚拟子目录的 OID 可能被异常释放的问题
- 修复跨分区 rename 的目标被提前删除可能导致其无法被清理的问题
- 修复过期的 symlink 缓存可能导致读取虚 拟子目录失败的问题
- 在平滑升级时,不再因为
JuiceFS 5.3.10 (2026/6/9)
- captool: 支持打印
[]byte类型的字段 - 多分区
- 新增
DISABLE_BALANCE配置来禁用跨分区迁移 - 跟踪内核中正在使用的 inode,并确保它们不会被释放
- 不再在 openfiles 中跟踪打开的目录
- 支持重放 5.4 版本跨分区
clone的事务日志
- 新增
JuiceFS 5.3.9 (2026/5/27)
- 新增
NO_DATA_REP配置,用于禁止镜像服务分发删除和同步数据的后台任务 - 支持通过
SIGUSR2信号获取消息计数等内部信息 - 增加周期性检查以确保日志和镜像服务都去均衡地连接冷备节点
- 当元数据节点的版本严重落后时,踢掉与其连接的镜像服务
- 修复热备节点可能因将未提交的事务日志写入磁盘而导致重放速度过慢的问题
- 修复当启用后台任务的客户端数量很多时可能导致元数据服务性能大降的问题
- 在根目录创建
gateway的系统目录时跳过只读属性和配额的检查 - 多分区
- 在迁移热点目录时,将其打散迁移
- 在从回收站恢复文件的过程中,不迁移正在恢复的热点目录
fsck修复 REF 名称时优先匹配有 commit 的条目- 输出统计信息时过滤掉
.backup目录 - 修复从回收站中恢复文件到被拆分的父目录时可能导致元数据服务被长时间卡住 的问题
- 修复并发执行跨分区
rename操作可能误报ENOENT错误的问题 - 修复跨分区
rename时可能会丢失gid并导致打印堆栈的问题
JuiceFS 5.3.8 (2026/5/11)
- 修复压缩且被拆分的目录在处理
seteattr时不符合预期的问题 - 计算文件的校验和时限制 chunks 个数
- 改进镜像集群重放日志失败时的恢复流程
- 多分区
- 改进多分区优化器,修复多种 link 未被自动清理的情况
- 在为 REF 名称添加 commit 时允许同时修改其反指的 inode
- 主分区在 volume 根目录设了 immutable 时允许执行多分区内部操作
- 迁移目录时如果有许多子项需要断开则不要操作而是直接报错,避免造成过多跨分区链接
restore增加重试来尽量合并所有的项fsck支持同时检查集群中的所有 volumes- 在
unlink操作中将 loaded 标记去掉 - 生成临时文件时尽量在与目标文件相同的虚拟子目录/分区中生成
- 在 openfiles 中也跟踪打开的目录
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的事务日志里记录的文件名称为空的问题 - 及时压缩扫描过的回收站文件来避免内存突增