版本 更新
注意
这是一份针对 JuiceFS 云服务 的版本发布历史,如果你想了解 JuiceFS 社区版的版本发布历史请查看 GitHub。
JuiceFS 5.2.0 (2025/5/24)
- 新功能
- Windows 客户端 (beta)
- 完善共享块存储特性,新支持多个客户端节点通过网络共享访问同一个块存储
- 新支持通过控制台主动推送指定客户端进行版本升级和配置更新
- mount: 支持
all_squash
功能,用来将访问用户都映射成同一个用户 (beta) - mount: 支持通过
O_TMPFILE
标记来创建不可见的临时文件 - mount: 新增
--no-bgjob
选项让客户端主动禁用后台任务 - mount: 新增
--schedule-priority
选项来设置系统调度的优先级 - mount: 新增
--cache-items
选项来限制缓存块的总数 - import: 新增
--files-from
选项来允许用户直接给出需要导入的文件列表 - clone: 新增
--max-batch-size
选项来调整每次内部请求可克隆的最大文件个数 - rmr: 新增
--batch-limit
选项来调整每次内部请求可删除的最大文件个数 - debug: 新增
--session
选项来收集远程客户端的 debug 信息 - sync: 新增
--check-change
选项检查拷贝的文件是否变化
- 改进
- 完善 Python SDK 的兼容性,改进性能
- mount: 应用多路复用、零拷贝和 directIO 等技术,改进分布式缓存的网络性能
- mount: 通过改进排序来提升读取目录的性能
- mount: 限制只读打开的文件个数到 10000,避免业务泄漏导致性能问题
- mount: 限制读请求使用的内存总量,避免特定情况下的 OOM
- mount: 改善读取特定规模文件,以及 4MiB 随机读等场景下的读放大问题
- mount: 对预取请求去重,避免读放大问题
- mount: 只在启用
--cache-large-write
时才会缓存大文件写入的数据 - mount: 支持使用不同大小的缓存盘
- mount: 默认关闭分布式缓存的压缩
- mount: 合并申请请求,降低维护 QoS 对元数据服务的压力
- mount: 允许通过配置文件来统一调整客户端是否启用 ACL 的行为
- mount: 对 5.12+ 内核自动设置 low watermark 来提升网络读的性能
- mount: 自动调整系统的透明大页模式为
defer
,降低在大内存机器上卡住的概率 - mount: 允许内核缓存目录项查找不到的信息
- mount: 启用内核的软链接缓存
- mount: 镜像文件系统配置了双桶时,将写请求优先发往异地 源端
- mount: 为已使用的块设备添加自定义 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)
- 改进
- 区分 gc 命令中失败的 delete 请求
- 私有部署:支持从控制台配置 AK/SK
- Bug 修复
- 忽略 macOS 下设置扩展属性时不支持的标志位
JuiceFS 5.1.5 (2024/11/29)
- 改进
- 提升下线缓存节点时迁移缓存数据的速度
- 给 Python SDK 增加 fsspec 支持
- Java SDK 支持
juicefs.io-retries
JuiceFS 5.1.4 (2024/11/4)
- Bug 修复
- S3 网关中返回
Content-Type
- 修复回写模式下重启后不会上传遗留的数据块的问题
- S3 网关中返回
JuiceFS 5.1.3 (2024/10/28)
- 新功能
- 支持按需导入对象存储的目录
- 改进
- 优化内存分配的性能
- Bug 修复
- 解决 AWS IAM 的超时过长的问题
- 解决 US3 的分块上传问题
- 修复
warmup
使用文件列表的问题
JuiceFS 5.1.2 (2024/10/16)
- 改进
- 支持内存缓存按时间过期
- Bug 修复
- 修复 watchdog 不工作的问题
- 使用同一个进程运行支持 Ceph 的版本
- Python SDK: 增大 buffering 到 128K
- 修复 rename 和 unlink 时可能异常退出的问题
- 在 macOS 支持 XattrNoSecurity 标志位
JuiceFS 5.1.1 (2024/9/19)
- 改进
- 提升 Python SDK 的顺序读性能
- 解决在 meta 不可用时 watchdog 可能误杀服务进程的问题
- 改进多副本缓存的预热
- 改进缓存盘的故障检查,容忍短时间的性能下降
- 通过
--group-compress=false
关闭访问远端缓存时的数据压缩
- Bug 修复
- 解决异常重启时 FUSE 请求可能丢失的问题
- 修复 S3 网关的 List 操作可能失败的问题
JuiceFS 5.1.0 (2024/9/10)
- 新功能
- 支持通过镜像文件系统写入数据 (beta)
- 支持完整数据读写功能的 Python SDK (beta)
- 支持两副本的分布式缓存
- S3 网关支持多用户和认证管理
- 新增
compact
命令来对指定路径做碎片整理 - 允许递归删除时跳过回收站(
rmr --skip-trash
) - 允许导入文件时进行更新 (
import --update
,import --force-update
) - 新增 "dummy" 和 "null" 为对象存储,方便测试
- 改进
- 增加更多的监控指标
- 提升修改回收站时间的性能
- 提升导入文件时的性能
- 异步写错误日志,避免日志盘慢影响服务
- 默认限制 CPU 核心的数量(
GOMAXPROCS=16
),避免因为网络拥堵时 CPU 使用量飙升 - 降低客户端缓存的内存使用,提升访问目录的性能
- 提升 S3 网关的 List 的性能
- 支持
--max-write
来调整 FUSE 单次写入数据量的大小 warmup --check
命令会显示详细的缓存位置- 新 增
mount --cache-large-write
来给顺序写入的大文件建立缓存 - 支持使用
--cache-size=-1
来使用盘上的所有可用空间 - 支持和社区版相同的
--cache-expire
参数 - 支持在 macOS 下做平滑升级
- 通过
auth
命令对配置文件中的隐私信息做更强加密 - 在命令的
--help
信息中显示全局参数 - 允许在 Java SDK 中配置
juicefs.groups
为用户组信息 - 允许在控制台查看 Java SDK 的配置参数
- 避免 Java SDK 创建太多线程
- 导入当前对象存储桶时自动忽略分块写入的数据
- 允许使用
destroy --force
来跳过对象存储的清理 - 修复
info
命令的数据块信息可能不准的问题 - 解决极端情况下内存缓存占用内存过大的问题
- 解决
debug
命令可能卡住的问题 - 延长默认分布式缓存的超时到
65
秒,并可配置 - 改进
clone
命令对 ACL 等的支持 - Java SDK 中支持
juicefs.umask
- 给
quota
命令增加--create
来自动创建目录 - 新增
--max-readahead
参数来控制顺序读时的预读窗口 - 减少无单机缓存时访问分布式缓存的读放大
- 提升
gc
和fsck
命令的扫描元数据的速度 - 限制缓存节点并发处理的请求数以避免过载,让客户端直接访问对象存储
- 在日志中记录导致断开缓存节点的错误信息
- 减少删除大型克隆目录时对元数据服务造成的压力
- 提升
objbench
的性能
- Bug 修复
- 修复 macOS 下文件扩展属性的兼容性问题
- 修复被拆分的目录的 ACL
- 修复
readdir
被中断时可能返回重复文件的问题 - 修复拿不到本机 IP 可能会崩溃的问题
- 修复
summary
命令中可能有被拆分的目录的信息没有被合并的情况 - 解决
--max-delete
不生效的问题 - 修复使用
objbench
测试文件系统功能时的问题
JuiceFS 5.0.25 (2024/9/2)
- Bug 修复
- 使用
warmup --evict
时可能误删 writeback 模式待上传的数据
- 使用
JuiceFS 5.0.24 (2024/9/2)
- 改进
- 允许完全停止块设备的数据写入
- 降低
objbench
测试 List 操作的次数为线程数
- Bug 修复
- 修复
gc
命令在扫描大型文件系统的元数据超过一个小时时可能将正常数据误判为泄漏的问题 - 修复
debug
命令在 CSI 中执行失败的问题 - 修复
warmup -check
在缓存缺失时的短连接问题
- 修复
JuiceFS 5.0.23 (2024/8/2)
- 改进
- 允许部分客户端挂载共享块设备
- 增加
--object-clients
来提升访问对象存储的性能
JuiceFS 5.0.22 (2024/7/30)
- 改进
- 给 Java SDK 增加 skipNBytes 接口
- Bug 修复
- 修复异常回应导致客户端崩溃的问题
- 修复可写镜像的缓存组异常的问题
- 修复可写镜像的重复消息导致连接异常的问题
JuiceFS 5.0.21 (2024/6/28)
- 新增
- 新增
--weight-unit
参数来自动计算--group-weight
- 新增
- Bug 修复
- 修复损坏的拆分目录导致死循环的问题
- 修复 import 功能(5.0.18 引入)
- 修复往加密的文件系统中导入文件的问题
JuiceFS 5.0.19 (2024/6/20)
- 改进
- 支持异步的 Direct I/O
- 优化 S3 网关的 List 性能
- Bug 修复
- 修复在可写的镜像中使用缓存组时异常退出的问题
- 修复可写镜像初始化时请求可能失败的问题
- 修复热更新时不能启用扩展属性的问题
- 修复磁盘没有空间时导致预热卡主的问题
- 修复 S3 网关中的元数据缓存导致创建文件失败的问题
- 修复 S3 网关中被拆分的目录的元数据缓存没有生效的问题
JuiceFS 5.0.18 (2024/6/3)
- 改进