版本 更新
注意
这是一份针对 JuiceFS 云服务 的版本发布历史,如果你想了解 JuiceFS 社区版的版本发布历史请查看 GitHub。
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)
- 改进
- 减少往已经写满的缓存盘预热时的内存使用
- 使用 Git 哈希作为 Java SDK 的动态链接库的版本号
- 避免数据合并卡主时不能及时删除数据的问题
- 改进 Java SDK 中 rename 失败时的错误信息
- 减少不必要的对象存储初始化操作,减少依赖
- Bug 修复
- 修复 S3 网关不支持只有子目录权限的情况
- 修复 S3 会返回分块上传的临时文件的问题
- 解决 Java SDK 中的 gson 的版本冲突问题
- 解决
gateway
和webdav
子命令始终将日志写入默认日志文件的问题 - 修复 op_error 的监控指标不对的问题
- 修复更新 ACL 后文件属性未更新的问题
- S3 网关中自动创建的目录应该返回 404 而不是 200
- 修复 S3 网关中下载文件时权限检查不足的问题
- 修复 S3 网关的遍历分段上传的分页问题
JuiceFS 5.0.17 (2024/5/2)
- 改进
- 重定向分布式缓存请求到预期的节点
- 减少并发的缓存数据均衡
- 按需迁移缓存数据到新加入的缓存节点
- 修复根目录的元数据缓存
- 避免重复的 notify FUSE 调用
JuiceFS 5.0.16 (2024/4/16)
- 改进
- 降低迁移缓存数据时的带宽以减少对性能的影响
- 10 分钟内出现 10 次缓存盘错误才摘盘
- 增加启用可写镜像时的重试次数
- 优先迁移热点数据以提升缓存命中率
- 避免并发的缓存迁移
- 增加缓存节点加入和移除时的日志
- 改进失败的读请求的限速
- 改进
writeback
模式的写入性能
- Bug 修复
- 修复缓存数据量指标不更新的问题(5.0.15 引入)
JuiceFS 5.0.15 (2024/4/7)
- 改进
- 在挂载命令中指定
--no-sharing
时忽略--group-port
- 在
--no-sharing
时不将完整的数据块写入分布式缓存。 - 改进跨数据块时的预读
- 出现 10 次缓存盘错误时才摘盘,减少误判
- 让多块缓存盘在不同的时间刷新内存索引以减少对性能的影响
- 减少碎片合并对
writeback
模式写入性能的影响
- 在挂载命令中指定
- Bug 修复
- 改进分布式缓存集群中多个缓存盘的数据分布不均衡的问 题
- 修复访问从其他存储桶导入的文件的指标不对的问题
- 修复预热导入的文件时指标不对的问题
JuiceFS 5.0.14 (2024/3/25)
- 新增
- 预热缓存时支持指定优先级(
--cache-priority
)。
- 预热缓存时支持指定优先级(
- 改进
- 减少长时间不访问的已打开目录的内存使用。
- 缓存盘没有足够空间时不再写入缓存数据。
- Bug 修复
- 修复内存缓存模式不命中的问题。
- 修复可写镜像模式中扩展属性的缓存未失效的问题。
JuiceFS 5.0.13 (2024/3/19)
- 改进
- 改进顺序读大文件的性能
- 改进 destroy 命令的可靠性
- 改进 POSIX ACL 的兼容性,当 mask 是 0 时忽略设置的规则
- Bug 修复
- 解决卸载时可能的死锁问题
- 修复 Java SDK 中可能提前关闭正在写入的文件的问题
- 丢弃严重超时(40 分钟)的碎片块
- 解决 Java SDK 可能初始化失败的问题
- 修复 sync 命令使用 jfs:// 同步文件时 stickybit 丢失的问题
- 解决 copy_file_range 到自身时会死锁的问题
JuiceFS 5.0.12 (2024/3/4)
- 新增
- 支持写入数据到镜像集群
- Bug 修复
- 访问拆分的目录时权限检查不对的问题
- 修复未启用数据复制的镜像文件系统可能奔溃的问题
JuiceFS 5.0.11 (2024/2/19)
- 改进
- sync: 支持超过 10 TiB 的文件
- Bug 修复
- 修复 bench 的进度条不准确的问题
- 修复客户端缓存中目录的属性可能不对的问题
- 解决初始化 Java SDK 时可能 CPU 过高的问题
JuiceFS 5.0.10 (2024/1/24)
- 新增
- 新增挂载参数
--sort-dir
来对 readdir 接口返回的文件按名字进行排序,以支持 nfsd 的正确访问。 - 新增挂载参数
--hide-internal
来隐藏内部特殊文件。
- 新增挂载参数
- 改进
- 增加碎片合并等后台任务的耗时指标。
- 增大缓存盘超时时间到 60 秒。
- Bug 修复
- Java SDK 使用存储在 jfs 上的 grouping 文件时可能初始化失败的问题
JuiceFS 5.0.9 (2024/1/20)
- 改进
- 改进 gateway 的错误日志,记录除 404 响应外的所有错误情况
- 在 gateway 的访问日志中增加请求 ID 以便于区分不同 S3 请求对应的操作。
- Bug 修复
- 修复 sync 命令使用 jfs 协议头同步长文件名失败的问题
- 解决 gateway 中并发的 PUT 请求可能失败的问题
JuiceFS 5.0.8 (2024/1/13)
- 改进
- 连接新缓存节点失败时进行重试,最多 5 次。
JuiceFS 5.0.7 (2024/1/7)
- 新增
gateway
和webdav
命令新增--log
参数来指定错入日志路径gateway
命令新增--access-log-files
来指定保留的访问日志文件个数
- 改进
- 减少迁移本地数据文件时的无用日志
- Bug 修复
- 修复七牛云的访问地址
- 修复挂载时生成的配置不对的问题
- 修复 import 命令访问对象存储失败的问题
JuiceFS 5.0.6 (2023/12/21)
- Bug 修复
- 修复使用 jfs:// 同步绝对路径的符号链接错误的问题
- 使用配置保存的加密口令,避免重复检查对象存储权限
JuiceFS 5.0.5 (2023/12/14)
-
新增
- 新增挂载参数
--initial-readahead
来提升顺序读的性能
- 新增挂载参数
-
改进
- 支持使用
--group-network
选择虚拟网卡
- 支持使用
-
Bug 修复
- 修复往 COS 同步文件名很长的大文件可能失败的问题
- 修复后台任务的带宽限速不生效的问题
JuiceFS 5.0.4 (2023/12/7)
- Bug 修复
- 修复后台任务的带宽限制无效的问题。
- 修复使用只有子目录挂载权限的 token 时挂载失败的问题。
- 修复原地升级时碰到容器中的挂载点导致失败的问题。
- 修复缓存盘中有待上传的数据块损坏导致进程退出的问题。
- 修复挂载时重复检测对象存储访问域名的问题。
- 修复在容器中挂载时
-o background
失效的问题。 - 修复当进程的 pid 复用导致缓存的进程 gids 可能不对的问题。
- 修复当挂载点跟文件系统同名导致挂载失败的问题。
- 修复客户端中缓存的目录属性可能不对的问题。
JuiceFS 5.0.3 (2023/11/30)
-
新增
- 新增
--group-network
和--group-port
来制定分布式缓存所用的网络接口和端口 - 在 Java SDK 中支持 flip 参数
- 新增
-
改进
- 增大单文件的最大预读窗口到 512 MB
- 在各个子命令中自动下载支持 Ceph 的客户端版本
- 改进配置文件对比方式,减少更新本地配置文件的可能
- 降低小数据量连续读时的读放大问题
- 预热数据时检查缓存空间是否足够,空间不足时给个警告
- 将缓存节点不可用时的日志调整为警告级别
-
Bug 修复
- 修复遍历 Ceph 的数据时可能奔溃的问题
- 修复在客户端进程平滑重启后 预热等任务卡死的问题
- 修复在后台挂载时可能死锁的问题
- 修复在多次重试后仍然拿不到配置文件后奔溃的问题
JuiceFS 5.0.2 (2023/10/16)
-
新增
- 支持设置 JFS_NO_CHECK_OBJECT_STORAGE=1 来跳过对象存储的权限测试
-
改进
- 提升挂载的速度和稳定性
- 支持在同一个机器上部署独立缓存节点
- 降低检查存储空间是否足够的频率以避免空间无法释放时 CPU 占用过高的问题
-
Bug 修复
- 修复重复询问 COS 的 APPID 的问题(5.0.1 引入)
- 修复失败的 chmod 可能导致权限不对的问题
- 修复硬链接相关的元数据缓存问题
- 修复有空洞的文件上 fallocate、copy_file_range 可能不对的问题
JuiceFS 5.0.1 (2023/10/30)
-
新增
- 使用共享块设备加速小文件的读写
- 将分块写入的文件在指定时间后以兼容格式转存到对象存储
- 支持导入或者转存的文件建立单机和分布式缓存
- 支持主动清除指定文件或者目录的缓存
- 查看指定文件或者目录的缓存建立情况(比例)
- 通过挂载参数指定某个客户端写入数据的存储级别
- 支持异构的缓存集群(指定不同的空间权重)
- 支持主动下线缓存节点(将权重设置为 0)
- 允许通过挂载参数指定缓存淘汰策略(比如不淘汰)
- 支持限制后台任务使用的对象存储带宽
- 允许调整强制写入数据的等待时间
--flush-wait
-
改进
- 改进分布式缓存节点间的均衡性
- 默认对所有的缓存数据做完整性校验
- 感知缓存盘的故障(卡主或者 EIO 错误),自动移除故障盘,自动移除无可用缓存盘的缓存节点
- 在使用根目录重建缓存时保留 20% 剩余空间
- 使用一致性哈希管理多块缓存盘,减少添加或者减少缓存盘时的缓存数据移动
- 改进访问超大型目录(大目录超过千万文件,包括根目录)的内存占用
- 在 gateway 和 Java SDK 中检测循环的符号链接
- 在日志中记录远端缓存节点的错误信息
- 删除数据时同时清理分布式缓存以尽快回收空间
- 尽量避免写满缓存盘
- 提升碎片合并的效率
- 在线调整挂载参数时检查是否有 FUSE 内核选项变化,使用叠加挂载点的方式保证生效
- 限制顺序读时的预读窗口大小,避免使用很大 buffer 时性能反而下降的问题
- 提升对象存储全局带宽限速的精度
- 在对象存储的错误日志中包含请求 ID
JuiceFS 4.9.23 (2023/10/18)
-
新增
- 使用 JFS_S3_VHOST_STYLE 来指定使用 vhost 方式访问 S3 (部分 S3 兼容的对象存储不支持 path 方式)
-
Bug 修复
- 修复 S3 gateway 创建的文件没有及时关闭导致泄漏的问题。
JuiceFS 4.9.22 (2023/9/20)
- 改进
- 支持在 writeback 模式将新写入的数据写入到分布式缓存中
JuiceFS 4.9.21 (2023/9/14)
- 改进
- 减少顺序写入大文件时的碎片
- 优化在 buffer 用满时的写入性能问题
- 当对象存储比较慢时减少 buffer 的使用
- Bug 修复
- 修复低限速时可能卡死的问题
JuiceFS 4.9.19 (2023/8/31)
- 改进
- 当 FUSE 的请求超过 6 分钟后强制中断
- 当读写请求阻塞超过 5 分钟时主动中断以避免卡死
- Bug 修复
- 修复挂载点热升级时可能死锁的问题
- 修复 挂载时报 UUID 不对的问题
JuiceFS 4.9.18 (2023/8/25)
- 改进
- 超过 1 分钟后自动重试 meta 请求
- 避免大量客户端的缓存同时失效导致对服务器造成冲击
- Bug 修复
- 解决卸载过程中可能死锁的问题
JuiceFS 4.9.17 (2023/8/21)
- 改进
- 解决大量客户端频繁预热根目录的元数据缓存导致服务过载的问题
- 延长 sync 的 --flush-wait 到 60 秒以减少碎片
- 收到超时的应答时打印日志
- 使用多个 gluster 客户端来提升性能
- Bug 修复
- 修复 Java SDK 中可能使用已关闭的文件系统的问题
- 修复更新 mtab 信息导致卡死的问题
JuiceFS 4.9.16 (2023/8/8)
- 改进
- 根据跟目录的元数据缓存预热请求的响应时间自动调整间隔,防止过载
JuiceFS 4.9.15 (2023/8/7)
- Bug 修复
- 解决访问损坏的目录导致客户端 crash 的问题
JuiceFS 4.9.14 (2023/7/27)
- 新增
- 支持使用 Gluster 作为对象存储
- 支持通过 S3 网关访问指定挂载点下的绝对路径的符号链接
JuiceFS 4.9.13 (2023/7/25)
- 改进
- 给 sync 命令增加
--flush-wait
来调整自动写入数据的间隔以减少碎片
- 给 sync 命令增加
JuiceFS 4.9.11 (2023/6/29)
- 改进
- 新增
--prefix-internal
参数来给内部文件名加上前缀避免冲突
- 新增
JuiceFS 4.9.10 (2023/6/26)
- Bugfix
- 修复在高负载下热更新可能导致卡死的问题
- 修复合并高频写入后可能导致其他文件长度不对的问题(读到多余的数据,4.9.6 引入)。
- 修复删除 Quota 时错误码处理不对的问题。
JuiceFS 4.9.9 (2023/6/19)
- 改进
- 减少不必要的内存清零,提升读的性能
- 给 sync 命令增加 jfs 的客户端参数
JuiceFS 4.9.8 (2023/6/15)
- 改进
- 减少重建缓存时的 warning 日志
JuiceFS 4.9.7 (2023/6/12)
-
改进
- 给 sync 命令新增 --inplace 参数来原地更新 JuiceFS 中的文件,以减少临时文件和重复写入的数据量
-
Bug 修复
- 修复限速导致的死锁(4.9.5 引入)
- 使用 Rename 覆盖目录导致客户端 crash (4.9.3 引入)
JuiceFS 4.9.6 (2023/6/1)
- 改进
- 使用 jfs:// 同步数据时支持 umask 环境设置
- 通过并发读提升合并大量碎片的性能
- 减少重复的碎片合并,减少写放大
- 使用异步提交来合并频繁写入的数据
JuiceFS 4.9.5 (2023/6/1)
- Bug 修复
- 修复 KS3 生成的域名
- 修复当用户的 GID 变化导致客户端 crash 的问题
- 解决可能使用已经释放的 context 的问题
- 解决 getxattr 错误号不对的问题(把内部错误号当做标准错误)
- 改进
- 减少 UID 冲突的警告日志
- 进一步提升限速的准确性
- gc 命令应该扫描待删除的文件以减少误报
JuiceFS 4.9.4 (2023/4/19)
-
改进
- 记录所有的 meta 连接的错误
-
Bug 修复
- 修复挂载子目录时 warmup 失败的问题(4.9.0 引入)
JuiceFS 4.9.3 (2023/4/19)
- 改进
- 使用 PIPE 来传递隐私信息给子进程
- 支持使用 df 看子目录的容量
- 给 sync 命令写入数据到 jfs:// 增加失败日志,用户排查是否有临时文件泄漏
- Bug 修复
- 修复 CopyFileRange 在用户有多个组时权限检查不对的问题
- 修复尝试删除大目录导致的性能问题(被合并了)
JuiceFS 4.9.2 (2023/4/19)
- 新增
- 增加 quota 子命令
- 改进
- 限制数据复制使用的带宽(用于后台任务的总带宽)
JuiceFS 4.9.1 (2023/4/6)
-
改进
- 改进镜像集群数据同步的容错能力
-
Bug 修复
- 修复启用数据复制时意外退出的问题(4.9.0 引入)
- 修复 UID 映射可能导致冲突的问题
- 修复 fallocate 后文件长度不对的问题(缓存未完全生效)
JuiceFS 4.9.0 (2023/3/8)
-
新增
- 新增多个子命令 gateway, WebDAV, debug, summary, clone, sync、stats、profile、status、destroy、bench、objbench, load, fsck, gc
- 支持使用多个 bucket 来存储数据(%d 通配符)
- 从控制台查看客户端的命令行参数
-
改进
- S3 接口兼容 S3A 访问方式
- 在数据合并后,主动失效客户端的数据索引缓存,减少可能的 404 请求
- 改进从挂载点管理回收站的能力(按关键字查看和恢复等)
- 调试接口监听到 127.0.0.1 而不是 localhost
- 支持 HTTP DNS(解析元数据的 IP 地址并验证)
- 限制内存不够时写入等待时间为最多 1 秒钟,避免大量读写导致内存竞争时写卡主的问题
- 优化元数据缓存的性能和内存使用
- 减少分布式缓存的读放大问题(第一次读用 Range Get)
- 将恢复文件时创建的目录的权限调整为 0755
- 支持加密的 OBS 桶
- 改进列出超大目录时导致元数据响应变慢的问题。
-
Bug 修复
- 修复 S3 List 接口中对象不存在的错误码
- 修复 S3 接口 List 空目录的问题
-
Java SDK
- 支持配置 Kerberos 用户映射规则
- 支持给 Hadoop 应用配置独立缓存集群
- 支持只允许 Java SDK 访问的 token (一般跟 Kerberos 和 Ranger 配合使用)
- 在 Java 的日志中查看全部错误日志
- 改善 Java SDK 每次读取小于 128KB 时的性能
- 客户端在启动时清理缓存数据,解决因生命周期短而无法及时清理缓存的问题
- 支持通过 Token 限制 Hadoop 和 S3 网关只能访问某个子目录
- 支持使用 JuiceFS 来保存缓存节点列表文件
- 在启用 Kerberos 的 YARN 集群中,支持用定时任务更新节点列表
- 解决 Java SDK 的依赖冲突问题