版本 更新
本文档记录 JuiceFS 云服务的版本发布历史,如果你想了解 JuiceFS 社区版的版本发布历史请查看 GitHub。
JuiceFS 客户端保持良好的向前、向后兼容性,但对于大版本刚刚发布之时(对于 JuiceFS 而言,5.1 → 5.2 就属于大版本更新),新版可能存在少量兼容性问题。如果需要回滚大版本,请参考 juicefs version
JuiceFS 5.2.14 (2025/9/17)
- 改进
- 限制缓存节点的内存使用,确保遵循
buffer-size参数设定
- 限制缓存节点的内存使用,确保遵循
- Bug 修复
- 改进多进程并发下载客户端时可能产生冲突的情况
- auth: 修复
auth命令没有提示输入accesskey和secretkey的问题 - 修复可用缓存空间很小时可能导致异常退出的问题
JuiceFS 5.2.13 (2025/9/9)
- 改进
- 当收到多个
GET请求获取同个对象时,缓存节点调整为只占用一个后台并发 - 缓存节点不要重用通过零拷贝发送的数据
- 当缓存数据的校验和不足时直接报错,避免客户端崩溃
- 当收到多个
- Bug 修复
- 修复挂载时
--block-interrupt参数未被正确解析的问题
- 修复挂载时
JuiceFS 5.2.12 (2025/9/3)
- 改进
- 去掉
fsck和gc工具对对象存储加密配置的不必要检查 - 分布式缓存节点发送数据时优先使用硬盘上已保存的校验和
- 优化并发访问缓存节点的相同数据时的性能
- 优化客户端在扫描缓存盘建立索引时的锁竞争
- 改进对阿里云 OSS 未知错误类型的处理
- gateway: 减少在列出对象时的内存使用
- Java SDK: 鉴权时优先使用 Kerberos
- sync: 使用
--files-from参数时自动忽略不存在的文件 - sync: 减少并发同步的大文件个数
- sync: 支持在源和目标是同一个 JFS 文件系统时使用
--cache-group参数
- 去掉
JuiceFS 5.2.11 (2025/8/21)
- 改进
- warmup: 开启 debug 日志时周期性打印进度信息
- Java SDK: 自动续期 Kerberos TGT
JuiceFS 5.2.10 (2025/8/13)
- 改进
- 优化预读策略,使其在并发读情况下能更好地均衡内存使用
- Bug 修复
- 修复旧版本客户端访问分布式缓存的兼容性问题
- Windows: 修复在后台运行时,整型参数可能未正确应用的问题
JuiceFS 5.2.9 (2025/8/7)
- 改进
- 在读写混合场景下更好地均衡内存使用,避免读放大
JuiceFS 5.2.8 (2025/8/1)
- 改进
- 支持可写镜像集群的客户端更新 atime
- Bug 修复
- Windows: 修复在列出 UID/GID 时,客户端可能崩溃的问题
JuiceFS 5.2.7 (2025/7/28)
- 改进
- 优化
fstatfs的性能,避免其被频繁调用时占用大量 CPU - Windows: 支持将文件系统挂载到非盘符的路径
- 优化
- Bug 修复
- sync: 修复同步后文件的 mtime 被错误修改成当前时间的问题
JuiceFS 5.2.6 (2025/7/25)
- Bug 修复
- 修复解析 fstab 中缓存类型为
memory的条目时,缓存路径错误的问题 - 修复
cache load duration指标未正确统计的问题
- 修复解析 fstab 中缓存类型为
JuiceFS 5.2.5 (2025/7/9)
- 改进
- 在数据缓存文件中记录文件名称,加强一致性校验
- SDK: 根据元数据缓存量来自动调节清理速度,避免高压情况下内存占用过多
- SDK: 改进寻找默认配置文件的实现,使其能兼容更多平台
- Windows: 支持同一个文件系统在节点上被多次挂载
- Bug 修复
- CSI: 修复创建目录时可能因并发竞争导致误报错的问题
- gateway: 修复元数据服务使用可写镜像集群时,创建用户失败的问题
JuiceFS 5.2.4 (2025/6/24)
- 改进
- 增大通过
lookup和getattr请求建立元数据缓存的阈值 - object/oss: 支持通过环境变量来解析
regionId - Windows: 支持访问回收站
- 增大通过
- Bug 修复
- objbench: 修复测试方法的耗时计算策略
JuiceFS 5.2.3 (2025/6/19)
- 改进
- 不再让客户端去自动预热子分区的根目录
- debug: 改进对指定路径是否是 JuiceFS 挂载点的判断,避免误判或长时间挂起
- debug: 在收集其他会话的诊断信息时允许等待更久的时间,避免超时错误
- restore: 恢复文件遇到冲突时自动为其添加数字后缀
- Bug 修复
- gateway: 修复网关运行过程中被调整成只读后请求可能陷入死循环的问题
JuiceFS 5.2.2 (2025/6/12)
- 新功能
- gateway: 支持只读模式
- 改进
- gc: 批量获取删除请求的 QoS 额度以减小锁竞争
- gc: 改进进度条显示
- gc: 禁用数据块缓存和后台任务
- gc: 忽略子分区的临时硬链接和临时待删除文件
- gc: 在镜像文件系统执行时只检查镜像端的对象存储
- debug: 收集其他会话的诊断信息时也支持传递命令参数
- 将长期运行任务的
GOMAXPROCS限制从 16 提升到 32
- Bug 修复
- 修复读取大目录时如果该目录中有文件变动可能导致数组索引越界的问题
- 修复在使用共享块设备时,客户端重连后块设备可能未正确连接的问题
- debug: 修复因误判进程是否在后台运行而导致访问日志未收集的问题
- sync: 修复集群模式下工作节点实际运行的二进制可能不正确问题
- Windows: 修复文件属性缓存等多个缓存问题
- Hadoop SDK: 修复因进程中创建多个客户端实例导致缓存不一致的问题
JuiceFS 5.2.1 (2025/5/27)
- Bug 修复
- 修复客户端与某些旧版本 meta 不兼容的问题
JuiceFS 5.2.0 (2025/5/24)
- 新功能
- Windows 客户端 (beta)
- 完善共享块存储特性,新支持多个客户端节点通过 网络共享访问同一个块存储
- 新支持通过控制台主动推送指定客户端进行版本升级和配置更新
- 支持
all_squash功能,用来将访问用户都映射成同一个用户 (beta) - 支持通过
O_TMPFILE标记来创建不可见的临时文件 - 新增
--no-bgjob选项让客户端主动禁用后台任务 - 新增
--schedule-priority选项来设置系统调度的优先级 - 新增
--cache-items选项来限制缓存块的总数 - import: 新增
--files-from选项来允许用户直接给出需要导入的文件列表 - clone: 新增
--max-batch-size选项来调整每次内部请求可克隆的最大文件个数 - rmr: 新增
--batch-limit选项来调整每次内部请求可删除的最大文件个数 - debug: 新增
--session选项来收集远程客户端的 debug 信息 - sync: 新增
--check-change选项检查拷贝的文件是否变化 - sync: 新增
--start-time和--end-time选项来根据 mtime 筛选需要同步的文件
- 改进
- 完善 Python SDK 的兼容性,改进性能
- 应用多路复用、零拷贝和 directIO 等技术,改进分布式缓存的网络性能
- 通过改进排序来提升读取目录的性能
- 限制只读打开的文件个数到 10000,避免业务泄漏导致性能问题
- 限制读请求使用的内存总量,避免特定情况下的 OOM
- 改善读取特定规模文件,以及 4MiB 随机读等场景下的读放大问题
- 对预取请求去重,避免读放大问题
- 只在启用
--cache-large-write时才会缓存大文件写入的数据 - 支持使用不同大小的缓存盘
- 默认关闭分布式缓存的压缩
- 合并申请请求,降低维护 QoS 对元数据服务的压力
- 允许通过配置文件来统一调整客户端是否启用 ACL 的行为
- 对 5.12+ 内核自动设置 low watermark 来提升网络读的性能
- 自动调整系统的透明大页模式为
defer,降低在大内存机器上卡住的概率 - 允许内核缓存目录项查找不到的信息
- 启用内核的软链接缓存
- 镜像文件系统配置了双桶时,将写请求优先发往异地源端
- 为已使用的块设备添加自定义 header,用来检查其是否被 JFS 使用
- 添加了更多监控指标来更好地记录 FUSE 请求,分布式缓存请求,对象存储请求等的计数与耗时
- gateway: 支持为对象添加元数据信息
- auth: 默认开启 access key 和 secret key 的加密,且不再允许显式解密
- import: 自动创建中间目录时需要尊重
umask配置 - load: 允许直接加载加密的元数据备份文件
- gc: 记录删除失败的对象个数和大小
- clone: 新增进度条显示功能
- 支持删除数据的全局限速
- Bug 修复
- 修复特定场景下可能读到旧数据的问题
- 修复
copy_file_range大段内容时可能导致长度溢出问题 - 修复分布式缓存加减节点时可能导致节点丢失的问题
- 修复分布式缓存可能出现重复发送写请求的问题
- 修复文件名包含换行符导致
accesslog解析失败的问题 - 修复
fstab文件中使用逗号分隔缓存目录导致的歧义问题 - 修复启用数据复制时对象存储不可用导致数据块可能有泄漏的问题
- 修复被拆分目录的 ACL 可能异常的问题
- 修复
bench/objbench命令的带宽计算错误问题 - 修复
import使用完整 bucket 名从同一个 bucket 导入后数据块不能缓存的问题 - 修复
clone的路径不在同一个文件系统中时可能未被正确检测到的问题 - 修复
clone -d删除 clone 时偶尔误失败的问题 - 修复 quantile 中 map 未正确加锁导致可能 crash 的问题
- 修复 p90 值更新慢和可能溢出的问题
- 修复 SDK 在写入过程中 mtime 可能不更新的问题
- 修复 SDK 中 open 的统计计数没更新的问题
JuiceFS 5.1.20 (2025/5/19)
- 改进
- 在操作系统上没有
fusermount3的时候能自动回退使用fusermount
- 在操作系统上没有
- Bug 修复
- gc: 修复不支持
List接口的对象存储没有正确回退到ListAll接口的问题
- gc: 修复不支持
JuiceFS 5.1.19 (2025/5/13)
- 新增
- gateway: 新增
--hide-dir-object选项来隐藏通过PUT创建的目录对象
- gateway: 新增
- 改进
- Java SDK: 当
cache-dir未配置时不要启用writeback
- Java SDK: 当
- Bug 修复
- 修复解析指向相对路径的软链接时可能不准确的问题
JuiceFS 5.1.18 (2025/4/16)
- 新增
- 新增
restore命令来辅助从回收站中恢复文件,并支持使用多个关键字来过滤文件
- 新增
- 改进
- 即使设置了
--no-sync也需要启用后台同步 - gc: list 对象存储失败时自动重试几次
- 即使设置了
- Bug 修复
- 修复
statfs回收站目录结果不正确的问题 - 修复删除空目录可能误失败的问题
- sync: 修复两边都是 JFS 时可能因共享 openfiles 导致 inode 错乱的问题
- 修复
JuiceFS 5.1.17 (2025/4/1)
- 改进
- 给 BOS 增加数据完整性校验
- 在对象存储间复制数据时也遵循后台任务的限速
- 给 mount 命令增加
--no-sync来关闭对象存储间的定期同步 - sync: 清理
--files-from参数指定的列表里行尾的空白字符
- Bug 修复
- sync: 修复使用 jfs 协议头在两个文件系统间拷贝数据时跟踪打开的文件时可能错误的问题
- 修复访问回收站中的文件时会报错的问题
- 修复访问拆分中的目录导致返回文件不存在的问题
- 修复往合并的目录 rename 可能失败的问题
JuiceFS 5.1.16 (2025/3/20)
- 改进
- 支持 virtual host 方式访问新创建的 BOS 桶
- Bug 修复
- 修复 flock 加锁失败后却把其他进程的锁关闭的问题
JuiceFS 5.1.15 (2025/3/17)
- 改进
- 给
rmr --skip-trash增加--yes参数来避免交互式确认
- 给
JuiceFS 5.1.14 (2025/3/17)
- 新增
- 支持 bunny 对象存储
- Bug 修复
- 修复访问刚拆分的目录的问题
JuiceFS 5.1.13 (2025/2/27)
- 改进
- fsck 命令修复复制的数据
- 降低缓存盘的锁竞争
- 修复 Python SDK 在启用分布式缓存时异常退出的问题
- 在 gc 命令的日志中记录泄漏对象的修改时间
- 提升 gc 命令的扫描速度
- 修复显示进度条时日志重定向不对的问题
- 修复 fsck 误报新写入的文件不完整的问题
- 改进 sync 的进度条的性能,支持每秒扫描百万文件
JuiceFS 5.1.12 (2025/2/22)
- 改进
- 当没有配置缓存单机缓存时重置分布式缓存的权重
- Bug 修复
- 修复预取数据失败可能导致 panic 的问题
JuiceFS 5.1.11 (2025/2/13)
- 改进
- 增加 --readahead-ratio 参数来控制预读导致的读放大
JuiceFS 5.1.10 (2025/2/11)
- 新增
- 新增挂载参数
--umask以覆盖业务的 umask - sync 命令新增
--files-from参数以同步目录或者文件列表 - 支持在缓存节点使用 directio 方式读缓存数据
- 新增挂载参数
- 改进
- 改进 sync 的并发遍历
- 增加读放大相关的监控指标
- 减少无本地缓存时的读放大
- 解决 rmr 命令的进度条和日志错位的问题
- 改进 watchdog 在挂载点卡主时打印的现场信息
- 增加进程心跳以检测进程卡顿问题
- 不重发需要长时间处理的请求
- 减少有大量数据同步任务时的内存占用
- 端口 meta 连接后不重置缓存集群列表,减少抖动
- 优化客户端的锁竞争
- 减少往百度云 BOS 写入数据时的内存分配
- 允许调整客户端 GOGC 设置
- 支持升级 Ceph 等特殊功能客户端
- Bug 修复
- 解决可能读到旧数据的问题
- 修复同时挂载子目录导致可能失败的问题
- 修复导出的 JSON 文件中回收站文件类型不对的问题
- 修复 warmup 命令重复预热列表中的路径的问题
JuiceFS 5.1.9 (2025/1/16)
- 改进
- 优化 getattr 的元数据缓存
- 改进 Java SDK 的后台线程管理
- Bug 修复
- 修复使用 copy_file_range 拷贝 4GiB 的数据时导致死循环的问题
- 修复平滑升级时不能继承某些环境变量的问题
- 修复重复发送导入元数据时请求的问题
- 修复使用控制台保存的 ak sk 时忽略了本地保存的对象存储的地址的问题
JuiceFS 5.1.8 (2025/1/8)
- 改进
- 优化 mmap 的写入性能
- 提升随机写入的性能
- 提升缓存数据迁移的性能
- Bug 修复
- 修复 sync 命令的 check-all 在多机模式下不工作的问题
- 修复不能关闭 UID 映射的问题
JuiceFS 5.1.7 (2024/12/30)
- 改进
- 当子进程杀不掉时尝试 abort FUSE 挂载点
- 杀掉可能死锁的服务进程以恢复服务
- 均衡使用不同大小的缓存盘
- S3 网关增加
--head-dir允许通过 HEAD 请求访问目录 - 允许以 URL 格式来挂载和执行子命令(不需要 auth 步骤)
- 给 status 命令增加社区版类似的统计字段
- Bug 修复
- 解决丢失的 FUSE 请求导致死循环的问题
- 解决元数据连接断开时可能异常退出的问题
- 解决启动后可能连不上分布式缓存的问题
JuiceFS 5.1.6 (2024/12/4)
- 改进