元数据版本更新
JuiceFS 5.4.1 (2026/8/12)
- 新增
-checkLicense选项以支持从 JSON 文件校验 LICENSE - 支持镜像客户端通过元数据服务代理连接源端
- 支持添加只读镜像来加速源客户端的元数据操作
- 镜像元数据服务不可用时客户端回退到源集群且不断开与镜像的连接
- 修复设置默认配额时没有时间戳导致镜像无法正确同步的问题
- 限制每个 volume 的配额数量
- 将根目录的虚拟子目录拆分逻辑调整与其他目录一致
- 优先压缩高度碎片化的 chunk,并对包含大量碎片的 chunk 强制执行压缩
- 禁止对 immutable 或 append-only 的节点执行
setattr - 在处理
rmr请求时让已删除目录的 dcache 失效 - 提升扫描事务日志条目的性能
- 截断压缩的事务日志文件
- 修复命令行中缺失命令选项的问题
- blkdev: 在处理
copyFileRange请求时将 inode 加入迁移列表 - blkdev: 修复 info 消息内容不准确的问题
- blkdev: 支持移除块设备
- captool: 支持客户端多端口选择,并修复几个解析问题
- 多分区
- 支持跨分区执行 clone
- 客户端默认启用
--keep-inode选项 - 改善对 sustained 中的 link 文件的处理
- 在处理
find命令的请求时过滤.backup - 修复目录重命名后可能导致短时间内统计信息不准确的问题
JuiceFS 5.3.14 (2026/7/30)
- 多分区
- 给禁用 迁移的集群做跨分区 clone 时使用 rename 将目录创建到目标分区
- 修复给热点目录拆分虚拟子目录后可能所有子项都集中在一个虚拟子目录的问题
JuiceFS 5.3.13 (2026/7/22)
- 优化 POSIX lock 在有大量读锁时的性能
- 当镜像 meta 的版本明显滞后时,踢掉与其连接的客户端
- 允许访问规则中启用了
dynamicip的客户端用不同的 IP 进行重连 - 修复 meta 进程重启时
.meta.lock文件中依然记录着旧进程 pid 的问题 - 多分区
- 支持在客户端实现的跨分区 clone
- 在
restore合并阶段给各个子分区单独加锁 - 修复在做迁移检查时因拷贝共享块数据而导致产生很高 compact 流量的问题
- 修复在 meta 集群中有多个文件系统时可能导致部分文件系统的跨分区统计信息长时间不更新的问题
- 修复
rebalance --path命令在获取文件数分布时可能不准确的问题 - 修复
rebalance命令可能错误地跳过某些需要迁移目录的问题 - 修复并发执行 link 的同分区替换时可能误报错的问题
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 格式的密钥文件