Skip to main content

版本更新

注意

这是一份针对 JuiceFS 云服务 的版本发布历史,如果你想了解 JuiceFS 社区版的版本发布历史请查看 GitHub

JuiceFS 5.1.4 (2024/11/4)

  • Bug 修复
    • S3 网关中返回 Content-Type
    • 修复回写模式下重启后不会上传遗留的数据块的问题

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 参数来控制顺序读时的预读窗口
    • 减少无单机缓存时访问分布式缓存的读放大
    • 提升 gcfsck 命令的扫描元数据的速度
    • 限制缓存节点并发处理的请求数以避免过载,让客户端直接访问对象存储
    • 在日志中记录导致断开缓存节点的错误信息
    • 减少删除大型克隆目录时对元数据服务造成的压力
    • 提升 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 的版本冲突问题
    • 解决 gatewaywebdav 子命令始终将日志写入默认日志文件的问题
    • 修复 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)

  • 新增
    • gatewaywebdav 命令新增 --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 来调整自动写入数据的间隔以减少碎片

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 的依赖冲突问题

JuiceFS 4.8.7 (2023/2/28)

  • Bug 修正
    • 修复从华为云 OBS 读最后一个字节时数据错误的问题。

JuiceFS 4.8.6 (2023/2/16)

  • Bug 修正
    • 解决使用了 writeback_cache FUSE 参数时写入文件碰到 permission denied 错误的问题。

JuiceFS 4.8.5 (2023/2/7)

  • Bug 修正
    • 修复 writeback 模式不工作的的问题(4.8.1 引入)

JuiceFS 4.8.4 (2023/1/9)

  • 改进

    • 当缓存盘快满时改成同步上传,避免写满缓存盘。
    • 允许在 Impala 中使用不同的 scheme 来访问 JuiceFS。
    • 同时支持 KS3 的公有云和私有云。
    • 解决在高并发的机器上 FUSE 的读线程太多导致 CPU 竞争问题。
  • Bug 修正

    • 修复 warmup 命令因为并发操作导致 crash 的问题。
    • 不要在 Java SDK 中做缓存数据迁移。
    • 解决 readdir 缓存未失效的问题。
    • 修复 import 命令不稳定的问题。
    • 解决 对象存储的 PUT 操作的耗时重复计算的问题。

JuiceFS 4.8.3 (2022/11/30)

  • 改进
    • 允许设置对象存储出错重试次数。
    • 延迟删除因数据合并导致的删除,减少并发的读操作失败的可能性。

JuiceFS 4.8.2 (2022/11/24)

  • Bug 修正
    • 将内置的 Apache Ranger 降级到 2.1.0 以解决兼容问题。
    • 解决 Java SDK 中打包的 jersey 的冲突问题。
    • 解决 Java SDK 中访问 OBS 的域名不对的问题。

JuiceFS 4.8.1 (2022/10/28)

  • 新特性

    • 支持火山引擎
    • 支持调整文件系统的哈希前缀
  • 改进

    • 给 Windows 上访问 wmic 加上 5 秒超时。
    • 一旦发现有内存引用计数错误,打印更多相关调用信息到日志问题。
    • 数据合并时不使用 writeback 模式,确保客户端都能读到合并后的数据。
    • 允许使用 AWS_REGION 来指定 KS3 的私有部署区域。
    • 调整读数据超时机制,确保低带宽时不容易超时失败。
    • 限制并发的分布式缓存请求为 1000,避免带宽竞争导致失败。
    • 不使用 buffer-size 指定的内存来做分布式缓存迁移,避免影响读写性能。
  • Bug 修正

    • 修复分布式缓存节点断开连接时的竞争问题。
    • 修复挂载的子目录被拆分时导致 lookup 不对的问题。
    • 解决 Java SDK 中 4 个以上线程同时访问一个文件导致性能下降的问题。
    • 解决 rmr 删除后内核缓存不对的问题。
    • 修复元数据操作的竞争导致 crash 的问题。
    • 修复 Java SDK 的随机读时预读数据可能不对的问题。

JuiceFS 4.8.0 (2022/08/25)

  • 新特性

    • 支持使用 Kerberos 作为 Java SDK 的用户验证。
    • 支持使用 Apache Ranger 在 Java SDK 中管理文件权限。
    • 新增 dump 命令把元数据导出为跟社区版兼容的 JSON 格式。
    • 新增挂载参数 --fsck 用来检测文件系统的数据完整性。
    • Java SDK 支持苹果 M1 芯片
    • 新增 --readdir-cache 参数来启用内核的 readdir 缓存(需要同时延长 entrycache 和 attrcache 否则性能更差)。
  • 改进

    • 改进递归删除 rmr 命令,在删除大目录时提供进度信息。
    • 允许在容器内做预热、递归删除等操作。
    • 显示预热操作的进度信息。
    • 改进元数据缓存,避免快速遍历时内存暴涨。
    • 改进遍历回收站中文件的性能。
    • 调整 Java SDK 的 access log 格式,可以使用社区版的 profile 命令来分析。
    • 在 Java SDK 的文件状态中返回是否设置了 ACL。
    • 统一在 Java SDK 中对过长的文件名错误使用统一的异常。
    • 改进大量 readdir 操作时的锁竞争问题。
    • 允许 S3 网关和 Java SDK 设置文件路径缓存。
    • 允许延迟 hflush 以提升 HBase 写入 WAL 时的性能。
    • 在挂载点显示虚拟文件 .stats 和 .accesslog。
  • Bug 修正

    • 修复 Java SDK 为同一个目录创建多个快照时失败的问题。
    • 修复 S3 网关的路径以 / 结尾导致失败的问题。
    • 修复 Java SDK 中某些特定长度文件的 checksum 计算跟 HDFS 不一致的问题。

JuiceFS 4.7.6 (2022/07/15)

  • Bug 修正
    • 修复异常的分布式缓存请求导致客户端奔溃的问题。

JuiceFS 4.7.5 (2022/06/24)

  • Bug 修正
    • 修复 Java SDK 中复用文件句柄导致可能读数据错误的问题(关闭后再读)。
    • 修复 Java SDK 中 truncate 再 append 后可能读不到新数据的问题(存在打开的句柄)。

JuiceFS 4.7.4 (2022/05/27)

  • 改进
    • 保留客户端的元数据缓存直到指定的失效时间。

JuiceFS 4.7.3 (2022/04/20)

  • Bug 修正
    • 修复在 Java SDK 中删除不存在的扩展属性时异常类型跟 HDFS 不同的问题。
    • 校验 writeback 模式未上传数据的长度

JuiceFS 4.7.2 (2022/04/06)

  • 改进
    • 校验 OBS 返回的 ETag 以确保数据完整性。

JuiceFS 4.7.1 (2022/03/14)

  • 改进

    • 减低分布式缓存的迁移速率以减少对访问性能的影响。
  • Bug 修正

    • 识别分布式缓存中同一个主机上的多个进程,减少不必要的数据迁移。
    • 修复分布式缓存相关的连接泄漏问题(4.5.6 引入)。

JuiceFS 4.7.0 (2022/02/23)

  • 新特性

    • 支持在多分区的企业版挂载子目录。
    • 支持通过 Ranger 设置文件访问权限。
    • 新增 .accesslog (跟社区版格式一样)。
    • 自动迁移分布式缓存中的数据块到新节点(默认一个小时后,可以通过 JFS_CACHE_REBALANCE_DELAY 调整)。
    • 允许 S3 网关模拟多个桶。
    • 允许 S3 网关记住上次文件的 ETag。
  • 改进

    • 改进挂载时访问元数据服务失败的处理,尽快报错退出。
    • 优化 Java SDK 启动时间。
    • Java SDK 使用 conf-dir 来保存配置文件(不需要里面的 .juicefs 子目录)。
    • 优化元数据缓存的内存效率。
    • 持久化 UID 映射,避免冲突。
    • 使用内核中的 ACL 检查,性能更好。
    • 当权限不足时,让 snapshot 失败,而不是对部分文件做快照。
    • 默认缓存大小改到 100GB(默认保证最少 20% 剩余空间)。
    • 超级用户组的用户拥有超级用户权限。
    • 允许使用只读的 AK 作为只读挂载使用。
  • Bug 修正

    • 解决 Java SDK 里面 concat 时的权限检查问题。
    • 解决 truncate 时可能导致死锁的问题。
    • 修复空目录的 nlink 可能不对的问题(应该是 2)。

JuiceFS 4.6.2 (2022/02/11)

  • Bug 修正
    • 修复分布式缓存启用时可能导致死锁的问题。
    • 修复 Java SDK 里面场景文件时没有使用设置的 umask 的问题。
    • 修复 Java SDK 里面文件的修改时间可能不一致的问题。

JuiceFS 4.6.1 (2022/01/18)

  • 改进
    • 调整元数据缓存策略,避免过多无效缓存。
    • 提升 FUSE 后台请求的限制到 200。
    • 允许 --subdir 参数不以 / 开头。
  • Bug 修正
    • 解决当对象存储超时存在竞争的情况(只打印日志,不影响使用)。

JuiceFS 4.6.0 (2021/12/09)

  • 新特性
    • 支持 Java SDK 的双写模式(主和从都可以是 JuiceFS 或者 HDFS),便于数据迁移。
    • 支持 distcp --diff 方式加快增量数据拷贝。
  • 改进
    • 增加文件句柄数和线程数的指标。
    • 兼容 Apache Impala>=3.4
    • 在 .jfsconfig 中显示调试端口的地址
    • 将 statfs 系统调用的 bsize 和 frsize 从 64K 改成 4K, 这样 du 统计的文件大小跟本地文件系统更接近。因为目录的大小已经包含里面文件的大小会导致 du 重复计算,不建议使用 du 统计目录的大小,直接使用 ls -lh 更快更方便。
    • 平滑迁移支持 concat 操作。
    • 只解析元数据域名的 IPv4 地址,缓解启用了 IPv6 的环境的 DNS 服务器压力。
    • 增加更多与分布式缓存有关的监控指标,详细请看 .stats 文件。
    • 通过 .trash 的属性查看回收站中的文件数量和总大小。
  • Bug 修正
    • 修复 writeback 模式下缓存大小统计不对的问题。
    • 支持包含由 + 的 KS3 的 AK。
    • 修复访问包含 Java SDK 创建的快照导致客户端异常退出的问题。

JuiceFS 4.5.6 (2021/11/03)

  • 新特性
    • 支持作为 NFS 协议的文件存储的缓存使用,通过 NFSv3 直接访问。
    • 改进缓存功能 (–source), 允许通过 JuiceFS 写入数据到原存储系统。
    • 写入数据时建立分布式缓存(通过 juicefs.write-group-cache=false 来禁用)。
    • 支持 Kite。
  • 改进
    • 在 Java SDK 中的 concat 调用成功后删除源文件,跟 HDFS 保持兼容。
    • 大幅提升 concat 的性能。
    • 将默认的预热并发数从 3 改为 1,降低预热导致的带宽消耗。
  • Bug 修正
    • 修复通过 S3 网关写入时不能覆盖对象的问题(4.5.5 引入)。
    • 修复 copy_file_range 返回 EACCES 的问题。

JuiceFS 4.5.5 (2021/10/15)

  • 新特性
    • 支持 FUSE 进程自动恢复和热升级,通过 juicefs version -u -r 平滑升级所有挂载的 JuiceFS 客户端。
    • 新增 --block-interrupt 来指定屏蔽请求中断的时长(当请求的处理时间超过它才允许被中断)。
  • 改进
    • 兼容 Hadoop 2.6。
    • 记录所有失败的文件系统请求到错误日志中。
    • 清理 S3 网关的分段碎片 (不进入回收站)。
    • 在使用 –opencache 时启用内核缓存。
    • 提升大文件随机读写的性能。
    • 让 Java SDK 中读数据流返当前文件回未读的总数据量,而不是缓冲区中的数据量,兼容 HDFS 的行为。
    • 将 Java SDK 中列出的目录项进行排序,跟 HDFS 保持兼容。
  • Bug 修正
    • 允许分别禁用 BSD 锁和 POSIX 锁。
    • 支持含有 / 的 KS3 密钥。
    • 修复 concat 在某些情况下可能会导致数据错误的情况。
    • 解决通过 nfsd 导出时的故障切换问题。

JuiceFS 4.5.4 (2021/09/07)

  • 新特性
    • 支持通过 Java API 来设置目录配额。
    • 允许给分布式缓存指定所用的 IP(--group-ip)。
  • 改进
    • 检测 POSIX 锁的死锁问题,并返回相应的错误码 EDEADLK。
    • 提升 warmup 功能的性能。
  • Bug 修正
    • 修复 Java SDK 中读数据的统计计数。
    • 修正 POSIX 锁的范围(相差 1)。
    • 修复创建或者替换扩展属性。

JuiceFS 4.5.3 (2021/08/19)

  • 新特性
    • 数据迁移工具支持 Hive 3。
    • juicefs info 命令支持 inode(要求当前路径为挂载点)
    • 当缓存盘的数据丢失时自动重建。
    • 给 S3 网关增加日志文件(--log)和 umask(默认 022) 参数。
    • 允许通过挂载点来查看和恢复回收站的数据,可通过挂载点下面的 .trash 虚拟目录进行。
  • 改进
    • 加快过期缓存的 chunk 信息放在内存增长过快。
    • 重新将故障的缓存节点加回。
    • 在热身时不加载磁盘上已有的缓存数据以提升速度。
    • 支持 FUSE 参数 nonempty。
    • Hadoop SDK 支持 LDAP。
    • 不同用户间更好地共享元数据缓存。
  • Bug 修正
    • 解决 华为 OBS 在出错重试时可能导致数据丢失的问题。
    • 解决读写混合式文档长度不对可能导致数据被覆盖的问题。
    • 修正 读数据时可能导致 crash 的 bug。
    • 修正 S3 网关分段上传的 Bug。
    • 修正 Rename 有时会返回 ENOTSUP 的问题。

JuiceFS 4.5.2 (2021/07/25)

  • 新特性
    • 增加一个显示当前打开文件数量的指标 (handles)。
    • 允许通过环境变量 JFS_BLOCK_INTERRUPT=N 来调整屏蔽中断的时间(默认 1 秒)。
    • 新增限制下载速度的参数。
  • 改进
    • 改进客户端缓存数据索引的内存消耗。
    • 将挂载客户端的缓存数据扫描频率从 5 分钟一次降低到 24 小时一次。
    • 简化 Java SDK 的内置工具的调用方式。
    • 减少数据加解密时的内存使用量。
    • 在自动 UID 映射时识别系统中的 UID 变化。
  • Bug 修正
    • 修正内存使用指标可能不准的问题。
    • 修复读数据时可能导致内存泄漏的问题。
    • 解决限速过低时可能导致的死锁问题。
    • 隐藏 WebDAV 接口的 List 返回的特殊项(. 和 ..)。
    • 修复 访问 Backblaze 时的内存泄漏问题。

JuiceFS 4.5.1 (2021/06/17)

  • 改进
    • 限制写入数据时使用的内存最多为 --buffer-size 的 200%
    • 去掉 Java SDK 中的 slf4j 避免版本冲突。
    • 更快地释放缓存空间。
  • Bug 修正
    • 将对象存储的 List 操作返回的个数限制为 1000(某些对象存储不支持大于 1000)。

JuiceFS 4.5.0 (2021/05/26)

  • 新特性
    • 允许使用独立的缓存节点作为对象存储的缓存层(通过 --cache-group 和 --no-sharing 制定)。
    • 增加参数 --max-cached-inodes 控制缓存的元数据数量。
    • 给 warmup 增加文件列表支持,允许给指定的文件列表建立缓存。
    • 支持 Linode 的对象存储。
  • 改进
    • 优化客户端的内存分配,降低 CPU 使用量。
    • 挂载后立即按照制定的缓存大小清理缓存。
    • 优化 writeback 模式下缓存清理的效率。
    • 增大分布式缓存的连接池数量,减少短连接。
    • 改进 warmup, 确保所有数据块都被建立缓存。
    • Java SDK 支持 Windows。
  • Bug 修正
    • 解决在高负载下元数据服务连接断开时可能导致导致死锁的 Bug(2020/12/20 日之后的版本受影响)。
    • 解决 S3 网关不能下载目录的问题。
    • 修复 Flock 偶尔会返回 EINVAL 的问题。
    • 修复回收站中的文件 nlink 不准确的问题。

JuiceFS 4.4.10 (2021/04/02)

  • 新特性
    • 支持使用 JuiceFS 作为其他 POSIX 文件系统的缓存(通过 --source-dir 制定数据源的位置)。
    • 支持更新文件的访问时间 atime(默认不启用)。
    • 支持 Scaleway 的对象存储。
    • 增加 --disallow-list 参数来禁用 WebDAV 的列目录功能。
  • 改进
    • 支持 macOS FUSE v4.x
    • 提升在 Spark/MapReduce 里读小文件的性能。
    • 禁止中断 open/mkdir 操作,很多上层应用没有处理好中断错误。
    • 允许中断被拆分目录上的 readdir() 操作。
  • Bug 修正
    • 解决 FUSE 请求被频繁中断的问题。
    • 去掉符号链接最后的 x00。
    • 解决因为竞争导致请求意外卡主的问题。
    • 解决 gofuse 可能导致 crash 的问题(重复关闭 channel)。
    • 提高对象存储的空闲连接池到 500 以减少高负载下的短连接。
    • 解决当没有剩余空间时 statvfs 显示不准确的问题。
    • 解决扩展属性 (xattr) 缓存未正常更新的问题。
    • 解决文件系统被意外关闭后 crash 的问题。
    • 解决在 Flink 里使用 JuiceFS 的兼容性问题。
    • 解决获取节点列表时跟其他库的兼容性问题。

JuiceFS 4.4.9 (2020/11/16)

  • 新特性
    • 新增将数据从 HDFS 平滑迁移到 JuiceFS 的工具。
    • 支持 IBM COS。
  • 改进
    • 支持中断兼容模式下的写操作。
    • 优化直接使用 Ceph 的底层 librados 作为存储后端时的性能。
    • 使用 Hadoop SDK 删除符号链接时,被指向的文件或者目录也会被删除。
    • 改进 Windows 客户端的日志的时间精度到毫秒。
    • 增加 Windows 客户端的线程数到 16(之前是 CPU 个数)。
    • 增加 Linux 客户端的后台请求数到 50(之前是 12)。
  • Bug 修正
    • 解决无法查询 POSIX ACL 的问题(4.4.7 引入)。
    • 解决 Hadoop SDK 中列出符号链接时的兼容性问题。
    • 解决无法创建缓存目录导致 crash 的问题。
    • 解决 Windows 下文件句柄被意外释放的问题。
    • 解决 Hadoop SDK 中文件系统被关闭后,正在进行的文件系统操作可能导致崩溃的问题。
    • 解决 Hadoop SDK 中多次关闭打开的文件可能导致其他文件也被关闭的问题。
    • 解决 Hadoop SDK 中过大的读请求可能导致内存不够的问题。

JuiceFS 4.4.8 (2020/10/21)

  • 新特性
    • 可以使用 JuiceFS 作为其他存储系统的缓存。
  • 改进
    • 增加元数据请求的数据校验。
    • 显示所挂载的子目录的空间,不再是整个文件系统的空间。
    • 扩大符号链接的支持范围到所有操作。
    • 改进启用分布式缓存后的 I/O 本地化。
    • 确保客户端不会因为损坏的网络消息导致崩溃。
  • Bug 修正
    • 修正写数据时可能会崩溃的情况。
    • 修正 POSIX 锁偶尔失败的情况。
    • 修正挂载后 /etc/mtab 没有被正确导致看不到挂载点的问题。

JuiceFS 4.4.7 (2020/09/18)

  • 新特性
    • 提供独立的兼容 S3 协议的网关 (beta),保持跟 POSIX 接口的实时互通。
    • 为挂载客户端同时提供兼容 WebDAV 的 HTTP 接口。
    • 支持限制多个客户端使用的对象存储总带宽。
    • 默认启用 Go 实现的 FUSE 模块以获得更好的性能和稳定性,可以通过 GOFUSE=0 来切换回原来使用的 libfuse。
    • 支持阿里云 EMR 的临时 Token。
    • 支持又拍云和有孚云
  • 改进
    • 改进同时读一个大文件时的性能。
    • 改进某些场景下 LZ4 解压缩性能。
    • 限制客户端缓存的元信息到 5 百万 Inode(默认缓存 5 分钟)。
    • 限制 getattr(1) 和 statvfs 到 300 毫秒,保证 df 操作不会卡住。
    • 增加在客户端挂载成功和退出时的日志。
    • 解决 Hadoop SDK 依赖的 asm 的兼容性问题。
    • 解决 Apache Spark 的 Executor 先后启动后导致的任务调度倾斜问题。
  • Bug 修正
    • 解决初始化 Hadoop SDK 时碰到中断信号后导致无法被初始化的问题。

JuiceFS 4.4.6 (2020/08/14)

  • 新特性
    • 使用 Go 实现的 FUSE 模块,性能更快,通过 GOFUSE=1 来切换使用。
    • 支持 copy_file_range() 系统调用,文件系统内部拷贝速度更快。
    • 增加挂载参数控制随机读过的数据块的预热并发数。
    • 支持 MIPS64EL 架构(龙芯处理器)。
    • 客户端统计数据中增加各种性能指标,比如元数据或者对象存储操作的耗时等。
    • 支持七牛云的内网访问。
  • 改进
    • 当文件系统的使用量低于 64KB 时,显示为 64KB(之前显示为 0)
    • 容忍系统内存不足的情况,避免 Crash
    • 检查缓存盘的 inodes 使用率,确保不会超过 80% 或指定的比例。
    • 在 macOS 挂载时,在 Finder 里显示文件系统的名字。
    • 删除数据时及时释放缓存空间。
  • Bug 修正
    • 修复元数据缓存未及时清除的问题,24 小时后 inode 被复用时可能导致文件信息错误。
    • 修正 Hadoop SDK 跟 Presto 的兼容性问题
    • 让七牛存储的 PUT 操作幂等。
    • 修复谷歌云的挂载。

JuiceFS 4.4.5 (2020/07/2)

  • 新特性
    • Windows 客户端支持大小写不敏感。
    • Hadoop SDK 支持符号链接到其他存储系统,比如链接到 hdfs://nm1:8080/xxxx
    • Hadoop SDK 可指定全局的用户组信息,每 10 分钟定时刷新。
  • 改进
    • hadoop fs -du 中显示文件大小总和,而非计费大小,跟 HDFS 保持一致。
    • 挂载时检查所用的 prefix 的权限,便于给 AK/SK 设置更细粒度的权限控制。
  • Bug 修正
    • 修正 Hadoop SDK 读取失败时异常不准确的问题。
    • 修正兼容模式下可能导致死锁的问题。

JuiceFS 4.4.4 (2020/06/14)

  • 新特性
    • 新增 --ioretries 参数,指定在出现服务或者网络故障时元数据操作的重试次数。如果 ioretries 小于 5,当元数据访问失败后不会立即清空缓存,已有缓存数据可以读。 在元数据不可用期间,写操作以及后续的 close 可能返回 IOError,但写入的数据仍然保留在客户端内存中,待服务恢复后继续持久化(不丢失)。
    • 增加 --cache-partial-only 参数,只缓存小文件和随机读的部分,适合对象存储的吞吐比缓存盘还高的情况。
  • 改进
    • 改进随机写的性能。
    • 改进碎片合并的性能。
    • 改进持续追加多个文件时的性能,将新数据合并写入对象存储以减少 PUT 请求的数量。之后会按照文件再合并碎片以改进读的性能。
    • 改进数据写入时对元数据故障的容忍能力,减少元数据故障导致写入失败的可能性。
  • Bug 修正
    • 解决客户端碎片合并太慢导致内存暴增的问题。
    • 修正 Hadoop SDK 在某些情况下不能更新集群节点列表的问题。
    • 修正挂载时不能使用 DNS 更新初始 IP 的问题。
    • 使用 us-east-1 作为 S3 兼容后端存储的 Region。
    • 修正文件被删除后客户端的缓存没有被正确失效的问题,它会导致不必要的对象存储请求(404)。

JuiceFS 4.4.3 (2020/05/20)

  • 新特性
    • 新增 Windows 客户端,支持 Windows Server 2012、Windows 10 等,目前仅开放给企业版客户。
    • 支持 ARM64 架构。
    • 支持全内存的数据缓存方式,通过挂载参数 --cache-dir memory 启用。
    • Hadoop SDK 支持分布式缓存。
  • 改进
    • 改进分布式缓存的随机读支持,减少读放大。
    • 改进随机读的性能。
  • Bug 修正
    • 解决读阿里云 OSS 时如果 Range 越界被忽略,导致结果不对的问题。
    • 解决当阿里云 OSS 启用了多版本支持后,遍历时返回空结果导致遍历不完整的问题。
    • 解决客户端频繁尝试清理残余的上传碎片导致后端存储过载的问题。
    • 解决挂载时如果没有对象存储的 PUT 权限却尝试去创建 Bucket 的问题。
    • 解决 Hadoop SDK 跟 CDH 5.8 的兼容性。

JuiceFS 4.4.2 (2020/04/22)

  • Bug 修正
    • 修复当使用 writeback 模式并且有很高的写入压力时,后台的异步合并任务可能导致数据丢失的问题, 受影响的版本包括 4.3.14 到 4.4.1 (发布日期在 2020/2/28 到 2020/04/09 之间) ,建议使用 writeback 模式的用户升级(已经升级服务端禁止使用有 bug 的客户端做碎片合并)。

JuiceFS 4.4.1 (2020/04/12)

  • 新特性
    • 支持使用 TiKV 作为存储后端。
    • 增加后台任务的控制权限,可以创建访问规则来禁止后台任务(删除、合并和同步等)。
    • 支持使用 LZ4 算法来压缩数据,压缩比比 Zstandard 低,但速度更快。
    • 支持 fallocate 的所有模式。
  • 改进
    • 改进顺序读大文件的性能。
    • 改进 writeback 模式下读数据的性能,不再需要等上传完成。
    • 调整了多缓存目录时的 hash 算法,使得分布更均衡。但它更之前的不兼容,会导致之前缓存的数据失效。
    • 在客户端日志中显示进程 ID,方便区分多个不同的挂载进程。
    • 改进 Hadoop SDK 的缓存调度机制,增加参数控制副本数。
  • Bug 修正
    • 修正使用通配符来匹配缓存目录时,只匹配到已经创建了子目录的部分目录的问题。
    • 修正 Hadoop SDK 列目录时碰到长度超过 127 个字符时出错的问题。
    • 修正 Hadoop SDK 在读写失败时错误码不对的问题。

JuiceFS 4.4.0 (2020/03/12)

  • 新特性
    • 允许挂载子目录,挂载时通过 --subdir 参数指定,默认为根目录。可以在网站控制台设置允许挂载的子目录。
    • 允许指定读写数据的内存大小,通过参数 --buffer-size 指定(默认为 300 MiB)。当对象存储比较慢时,增大缓存可以提升读写性能。
    • 允许指定缓存盘的剩余空间比例来避免缓存数据把磁盘写满,通过参数 --free-space-ratio 来指定(默认 0.2)。
    • 增加挂载参数来禁用 POSIX 锁和 BSD 锁,--no-posix-lock--no-bsd-lock
  • 改进
    • 大幅改进读数据的预读机制和内存管理,大幅减少客户端在读写数据时的内存占用(一般不会超过 500MB)。
    • 改进写数据的重试,减少超时导致的 I/O 错误。
    • 改进磁盘缓存的性能,减少系统调用次数。
  • Bug 修正
    • 修正 Hadoop SDK 在某种随机读模式下数据可能错误的问题。

JuiceFS 4.3.14 (2020/02/20)

  • 新特性
    • 支持更改文件系统的存储格式(兼容模式或者优化模式的相互转换)。
    • 新增 benchmark 命令(juicefs benchmark),方便做基本的性能测试。
  • 改进
    • 降低写入数据时的内存使用量。
  • Bug 修正
    • 修复 warmup 不能预热整个大文件的情况。
    • 修复第一次挂载基于 GCS 的文件系统时不能创建存储桶的问题。

JuiceFS 4.3.13 (2020/01/20)

  • 新特性
    • mount 命令增加 --max-space 参数(默认不启用),限制挂载点的总空间。
    • mount 命令增加 --put-timeout 参数(默认为 60 秒),超时后自动重试。
  • 改进
    • 将给腾讯云 COS 的请求的 UserAgent 改为 JuiceFS。
    • 支持金山云 KS3 低版本的 API。
    • 支持包含 . 的 S3 桶名称。
    • Hadoop SDK 中增加超级用户的配置项:juicefs.superuser
    • 遍历超过一千万文件的目录时卡住的问题。
    • Hadoop SDK 不再产生 syslog。
  • Bug 修正
    • 修正文件锁返回 EIO 的问题。
    • 修正某些情况下文件的 nlink 的缓存不更新的问题。
    • 修正使用 Aliyun OSS 的临时 Token 时不能及时刷新的问题。
    • 修正 Hadoop SDK 写入文件时 mtime 不能实时更新的问题。

JuiceFS 4.3.12 (2019/11/14)

  • 新特性
    • 支持 Hadoop File System 的 POSIX ACL。
    • 支持 Hadoop File System 的 getFileChecksum API,使得 DistCp 能够使用跟 HDFS 完全一样的算法来校验 JuiceFS 中数据完整性, 需要设置 juicefs.file.checksum 来启用(会影响数据写入性能)。
    • 增加 Java 客户端的各种统计计数。
  • 改进
    • 改进 Java 客户端 rename() 方法的性能,减少正常情况下的检查请求次数。
    • 改进 Java 客户端在读数据时的内存使用。
  • Bug 修正
    • 修复可能导致客户端卡住的 Bug: 当中断一个超过 300ms 仍未完成的元数据请求时,该请求的锁没有释放, 之后收到该请求的回应时会死锁。
    • 修复导入对象时数据大小可能不对的问题(4.3.11 引入)。

JuiceFS 4.3.11 (2019/10/17)

  • 新特性
    • 支持使用 Beansdb 做为对象存储。
    • Hadoop 客户端中支持扩展属性 (xattr)。
    • 按照文件系统的回收站时间清理 Hadoop 的回收站(/user/name/.Trash)。
    • 新增挂载参数 --get-timeout, 指定下载对象时的最长时间(秒),避免个别慢请求导致的性能抖动。
  • 改进
    • 改进元数据缓存未建立时的性能。
    • 关闭文件时中断超时的读写操作。
    • 写入数据到 S3/OSS/COS 时增加校验,读取时用于检测对象存储中的数据是否损坏。
    • 允许 writeback 模式中缓存更多数据到本地盘(提高在网络受限时的写入性能)。
    • 限制删除对象存储中数据的速度,避免短时间内删除请求过多导致同期的写入或者下载请求被限速。
    • 自动创建缓存目录(尤其是在使用通配符时),Hadoop 客户端可以通过参数(auto-create-cache-dir=false)改成手动创建。
    • 可根据剩余空间的比例来清理缓存数据(默认 20%)。
  • Bug 修正
    • 修正全局 UID 映射的 Bug(部分情况下会映射两次导致歧义)。
    • 修正恢复压缩后的分块的 Bug(导致解压缩失败)。

JuiceFS 4.3.10 (2019/9/2)

  • 新特性
    • 支持同时从多个机器对同一个文件的进行并发写入(不同位置)。
    • 支持通过任意的 schema 来使用 JuiceFS,比如 s3://volume/path
    • 增加挂载参数 --opencache,以提高打开文件的性能。
    • 对启用数据复制的文件系统,如果主要的对象存储不可用,它会自动切换到备份的对象存储。
    • 实现故障重试时的请求的幂等性。
  • 改进
    • 改进元数据缓存的一致性保证。
    • 改进兼容模式的写入性能和大文件的读性能。
    • 改进 JuiceFS SDK 的兼容性和性能。
    • 改进在 Hadoop 中使用挂载方式访问 JFS 的性能(也需要使用 JuiceFS SDK 来加速)
  • Bug 修正
    • 解决兼容模式下多次 Flush 导致数据可能出现错误的情况。
    • 解决不能自动创建 DigitalOcean 对象存储 Bucket 的问题。

JuiceFS 4.3.9 (2019/6/24)

  • 新特性:
    • 发布 Hadoop 客户端,兼容 Hadoop 生态的各个数据分析工具。
    • 新增客户端性能分析工具 juicefs profile
  • 改进:
    • 改进写入性能,减少客户端到元数据服务器的请求数量。
    • 识别客户端所在机器上新创建的用户。

JuiceFS 4.3.7 (2019/5/17)

  • 新特性:
    • 使用多个目录做缓存,在 --cache-dir 中使用 : 来分隔目录,也可以使用通配符(需要加引号)。
    • 支持 FUSE 参数 -o writeback_cache 以在 3.15 及以上 的内核中启用写入缓存,极大提高随机写入和碎片写入的性能。
    • 支持 Wasabi。
  • 改变
    • 改进随机写的性能(尽量合并相邻的写入)。
    • 更改挂载点的子类型为 fuse.juicefs(之前是 fuse), 方便在 mlocate 等中禁止索引 JuiceFS 中的文件,将 fuse.juicefs 加入到 PRUNEFS 中。
    • 改进混合读写时的元数据缓存,大幅提高性能。
    • 改进预读机制,提高顺序读的性能。
    • 改进访问 OSS 的连接池。
    • 减少 GC 时 Head 请求的调用。
    • 减少客户端碎片合并以及数据同步的并发度,减低内存占用。
  • Bug 修正:
    • 修正导入单个对象时反复调用 List 的问题。
    • 兼容 3.1- 的内核不会在 release 时 unlock 的问题。

JuiceFS 4.3.6 (2019/4/1)

  • 新特性:
    • 支持华为云 OBS
    • 支持 MinIO
  • Bug 修正:
    • 修复发送给元数据服务的数据量的计数器。
    • 修复元数据服务故障切换时可能导致正在追加的文件因重试失败(已在 4.3.1 中修复)导致文件损坏的问题。强烈建议升级 4.3.1 之前的客户端。

JuiceFS 4.3.5 (2019/2/20)

  • 新特性:
    • 支持 32 位 Linux 操作系统。
    • 新增 lsof 功能:列出最近 10 分钟打开过的文件。
    • 新增缓存预热功能 (warmup): 可以将一个目录下的所有文件的数据并行加载到缓存,以之后的访问提速。
    • 支持 阿里云的 ECS 的 RAM 规则,在给 ECS 绑定了有 OSS 访问权限的 RAM 规则后,挂在时不再需要提供 AK(用空字符串代替)。
  • 改变:
    • 改进异步写入性能(对超过 4MB 的文件也使用异步上传到对象存储)。
    • 改进启用元数据缓存时的小文件读取性能。
  • Bug 修正:
    • 修正启用异步写入 (--writeback) 时缓存数据大小计算不准确导致空间占用过多的问题。
    • 修正启用元数据缓存(--metacache)时文件权限可能错误的问题。
    • 修正批量上传模式下可能导致 I/O 错误的问题。

JuiceFS 4.3.3 (2018/11/20)

  • 新特性:
    • 增加参数调整内核中的元数据缓存:--attrcacheto, --entrycacheto, --direntrycacheto
    • 通过 --passphrase 来记住密码(可以为空字符串),也可直接添加到配置文件中,避免要求手动输入。
  • 改变:
    • 改进 .stats 中对象存储访问计数,增加 head 和 error,更加准确。
    • 调整命令行下目录大小的显示,去掉浮点数编码,直接显示该目录下所有数据大小总和。这是服务端变更,不需要升级客户端。
    • 在客户端的版本号中显示编译的时间和 Git Revision。
    • 允许通过 --cache-size 0 来禁用缓存。
    • 停用检查挂载是否正常的机制。
    • 使用兼容 S3 的访问入口来访问 JSS,并优先尝试 HTTPS。
    • 不使用 HTTP/2 来访问 Azure 以提高并发度。
  • Bug 修正:
    • 支持以 HTTP 方式访问七牛云存储(默认为 HTTPS)。
    • 解决兼容模式下清理碎片时会退出的问题。
    • 解决并发加载缓存时可能会加载失败的问题。
    • 修正 juicefs grep 的 反向查找 (-v 参数)。
    • 解决 COS 的 AppID 问题。

JuiceFS 4.3.2 (2018/10/07)

  • 新特性:
    • 数据压缩变成可选:默认使用 Zstandard 压缩,可以调整为不压缩以获得更好的随机读性能。
    • 通过 API 提供客户端的统计计数:每个客户的统计信息(/.stats)也可以通过 JSON API 或者 Prometheus API 拿到。
    • 客户端统计信息新增:read_bytes、write_bytes、uptime、cpuusage、memusage
    • 新增 Append Only 访问模式:该模式下允许读取和写入新数据,但不允许删除或者修改已有数据。

JuiceFS 4.3.1 (2018/09/14)

  • 新特性
    • 文件的分块大小可配置:默认为 4MB,可以调整为最小 64K、最大 16MB,可以配置使用更小的分块大小改进随机读的性能,降低时延,提高 IOPS。
  • 改进:
    • 改进挂载的速度,尤其是 DNS 不稳定或者比较慢的情况下。
    • 改进对金山云的支持,可自动创建对象存储的 bucket。
    • 改进当使用无效命令时的错误信息显示。
  • Bug 修正:
    • 修正升级后不能正常显示版本号的 Bug。
    • 修正连接到元数据服务的重试间隔,避免可能出现的 IOError。
    • 修正挂载到相对路径的问题。

JuiceFS 4.3.0 (2018/08/22)

  • 新特性:
    • 存储数据加密:使用随机生成的对称密钥使用 AES-256-GCM 对每个对象进行加密,再用 RSA 加密对象密钥,一起保存到对象存储中。RSA 私钥(可选密码保护)可在挂载时提供(自行管理),也可由我们统一管理(设置密码)。
    • 增加限制对象存储删除操作 QPS 的参数,减少突发的大量删除操作对对象存储的压力。
    • 增加限制对象存储写入速度的参数,对网络带宽的使用进行更有效的控制。
    • 支持百度云。
    • 支持 Digital Ocean.
  • 改进:
    • juicefs 不再自动更新,需要手动运行 juicefs version --upgrade 来更新到最新版。
    • 支持 FUSE fallocate(): 在使用 fio 测试时不再需要加 --fallocate=none 参数。
    • 改进导入对象时的性能,增加缓存,更快地跳过已经导入的对象。
  • Bug 修正:
    • 当频繁的 read/write/truncate 操作时,可能因为竞争使用了失效的文件长度导致 I/O 错误。
    • 解压超预期长度的对象时的 I/O 错误,避免产生过长的对象。
    • 解决兼容模式下并发 Open() 操作导致 fd 泄露的问题。
    • 解决兼容模式下潜在的竞争冲突。
    • 限制腾讯云 COS 的 List 操作的 limit 为 1000。
    • 修正 localhost 不能被解析为 IPv4 地址时客户端 CPU 消耗过高的问题。
    • 解决导入文件时不能正确处理结尾的 "/" 的问题。

JuiceFS 4.2.7 (2018/03/24)

  • 新特性:
    • 新增对象存储 List 操作的统计。
    • 兼容模式下支持硬链接。
    • 兼容模式下允许修改文件(比较慢)。
  • 改进:
    • 取消兼容模式下的回收站功能(可能导致数据被误删)。
    • 提升遍历大目录时的性能。
    • 兼容模式下同步删除文件,避免异步删除时可能的误删。
    • 改进写入缓存的效率,降低内存使用。
  • Bug 修正:
    • 修正可用空间和可用 inode 数不准确的问题。
    • 修正递归删除时的权限检查问题(非 root 删除时)。
    • 数据写入时可能出现死锁的问题。

JuiceFS 4.2.6 (2018/03/05)

  • 新特性:
    • 新增兼容模式,文件会以完整路径为名原样地保存到对象存储,可以用对象存储的 API 直接访问。 功能上有一些限制,文件一但写入完成就不能修改,不支持硬链接和快照。
    • 合并小文件成大的对象再上传,降低对象存储的 PUT 请求的调用以降低成本提高性能,通过 --writeback--batch 参数启用。
    • 支持 Backblaze B2.
  • 改进:
    • 运行到前台时,DEBUG 日志不进 syslog。

JuiceFS 4.2.5 (2018/01/31)

  • 新特性:
    • 快速删除一个目录里面的所有文件和子目录,详情见 juicefs rmr
    • 新增挂载选项,让客户端为文件提供 HTTP 访问方式,可作为 NGINX 等 Web 服务器的后端。
    • 在 .stats 中增加了对象存储访问的统计计数。
    • 支持迅达云。
  • 改进:
    • 改进客户端性能,降低内存使用。

JuiceFS 4.2.4 (2017/12/10)

  • 新特性:
    • 支持文件系统镜像,可以在全球的任何云的任何区域设立只读镜像,实现近实时数据复制(秒级别延时)。
    • 支持以组为单位的缓存共享。挂载时指定一个组名 (--group-name),所有相同组名的客户端之间(且内网互通)可以实现缓存共享,大概提高热点数据的访问性能。
    • 开放回收站的 Web UI, 用户可以自行在网站上恢复被误删的文件,也可以永久删除文件以清理回收站空间。
    • 支持京东云。
    • 支持美团云。
  • 改进:
    • 改进缓存共享的性能,降低 CPU 和内存使用。

JuiceFS 4.2.3 (2017/11/15)

  • 新特性:
    • 垃圾回收机制:默认每周会扫描一次对象存储中的数据,清理因为各种意外导致的小量残留对象。
    • 增加一个命令行选项 --gc 来立即执行垃圾垃圾回收操作。
    • 实现客户端的缓存共享机制,处于统一内网的客户端之间可以共享内存和磁盘缓存,大大提高缓存利用率, 改进热点数据的访问性能,降低对象存储的访问成本(请求数)。

JuiceFS 4.2.2 (2017/11/08)

  • 新特性:
    • 支持快速合并文件,无需拷贝数据,使用方法请看 juicefs merge -h,读取合并后的文件也需要将客户端需要升级到 4.2.1。
    • 允许挂载到非空目录。
  • 改进:
    • 改进多区域异步复制,带宽不够时不影响写入性能。
    • 给 UFile 增加进程内 DNS 缓存,提高性能和稳定性。
    • 当客户端持续追加写入数据但没有 fsync 或 close 时,每 5 秒强制更新,降低其他客户端读这个文件的更新延时。
  • 错误修正:
    • 解决启用目录缓存时,根目录的文件缓存不能被正确失效的问题。

JuiceFS 4.2.1 (2017/11/02)

  • 新特性:
    • 调整了元数据的数据结构和写入数据的算法,大大提高了随机写的性能(几倍到几十倍的提升),也为快速文件合并提供了支持。
    • 支持 Kubernetes 的 Flex 存储卷,JuiceFS 可以作为它的驱动使用,实现了 init, mount 和 unmount 调用。
    • 支持微软 Azure。
    • 增加网易云支持。
    • 默认禁用 xattr, 可以用个 --enable-xattr 启用它。
    • 默认启用到元数据服务和对象存储的传输加密。
    • 在客户端中自动同步复制的对象存储,每周一次,不需要再手动运行 juicefs heal
  • 改进:
    • 异步将文件中的碎片重写成更大的数据块。
    • 改进文件查询时的数据块缓存,提高小文件读取的性能。
    • 去掉文件不存在的缓存,它不能被及时失效。
    • 复用 HTTP 连接,有助于改善性能和稳定性。
    • 改进 UFile 的错误日志。
    • 延长出错重试时的时间间隔,能够容忍对象存储更长时间的不稳定。
  • 错误修正:
    • 修正升级时覆盖符号链接的问题。

JuiceFS 4.1.26 (2017/10/5)

  • 新特性:
    • 根据文件系统的名字,自动生成对象存储的桶名(Bucket),并在首次挂载时创建存储桶。
    • 支持非 Root 用户挂载
  • 改进:
    • 使用 musl 编译和静态链接,不再依赖 glibc,它的静态编译有严重 Bug。
    • 大大降低随机写时的内存使用。
    • 改善 UFile 的 Copy 操作,提高性能,降低带宽需求。
    • JuiceFS 自动适应 Python2 或者 Python3 环境,支持绝大多数 Linux 发行版。

JuiceFS 4.1.25 (2017/9/16)

  • 新特性:
    • juicefs version 显示客户端版本号。
    • 根据客户的版本限制同时使用的客户端数量,免费版最多 10 个并发挂载,标准试用版 100 个,标准 1000 个,企业版无限制。
    • 支持腾讯云 COS(V5 API)。
    • 增加对象存储的慢请求的日志(超过 10 秒)。
  • 改进:
    • JuiceFS 出错退出时使用非 0 退出码。
    • 提高对象存储的并发上传请求数到 50,提高写入性能。
    • 及时清理本地缓存,并监控所在分区的空间使用率,避免写满。

JuiceFS 4.1.24 (2017/9/3)

  • 新特性
    • 使用文件夹的 nlink 属性来表示它的内部 Inode 的数量。
    • 将文件数量调整为 Inode 数量限制,文件夹和符号链接按 256K 计算,避免客户写入大量空文件夹影响服务质量。
    • 在 oplog 增加操作用时,并在日志中记录超过 10 秒的慢操作。
    • 允许用户中断所有文件系统操作,当某个操作很慢或者被卡主时不会影响应用正常退出。
  • 错误修正:
    • 解决写入失败时客户端异常退出的 Bug。

JuiceFS 4.1.23 (2017/8/4)

  • 改进:
    • 在本地缓存未压缩的数据块,大大提升随机读性能(不需要解压缩整个数据块)。
    • 对象存储的出错重试次数从 3 增加到 10。
    • 挂载时等待挂载成功再退出。

JuiceFS 4.1.21 (2017/7/17)

  • 改进:
    • 改进加密传输。
    • 改进中国区的客户端下载速度。

JuiceFS 4.1.20 (2017/7/14)

  • 改进:
    • 改进写入本地缓存的性能。

JuiceFS 4.1.18 (2017/7/3)

  • 改进:
    • 提升元数据服务的性能,支持 300K QPS 以上。

JuiceFS 4.1.17 (2017/6/20)

  • 新特性:
    • 支持七牛云存储。
  • 问题修正:
    • 修正导入文件的 Bug。

JuiceFS 4.1.15 (2017/6/2)

  • 新特性:
    • 自动管理用户的 UID/GID, 实现基于用户名的权限管理,不同机器上相同用户名的用户被正确识别为同一个用户。
  • 改进:
    • 支持将对象存储中的数据块分区写入,可以避免新数据集中写入导致的性能瓶颈(需要创建文件系统时单独设置,不可更改)。
    • 改进元数据写入的性能,实现每秒 1 万以上的写操作。
  • 问题修正:
    • 修正 untar 时文件的修改时间不对的问题。

JuiceFS 4.1.13 (2017/5/24)

  • 新特性:
    • 增加金山云支持。
    • 支持从对象存储快速导入对象,无需拷贝数据,可每秒导入超过 1 万个对象,请参考 juicefs import -h
  • 改进:
    • 实现基于目录的一致性缓存,一旦发生变更会自动失效,大幅提升频繁文件访问时的性能。需要在挂载时使用 --dircache 来启用,默认缓存时间是 5 分钟。
    • 当 syslog 不可用时,不打印日志,而不是退出。
    • 客户端大小从 18MB 缩小到 4MB,缩小下载客户端的时间。
    • 改进复制到另一个对象存储时的效率,降低它对写入性能的影响。
  • 问题修正:
    • 解决客户端在连不上元数据服务后异常退出的问题。

JuiceFS 4.1.11 (2017/4/26)

  • 新特性:
    • 支持自动复制数据到另外一个对象存储,它可以是不同公有云或是同一个公有云的不同区。
    • 检查并修复被复制的两个对象存储的差异(需要手动运行 juicefs heal)。
    • 调整文件夹的大小统计,改用计费数据使用量而不是文件的逻辑大小,用 nlink 表示文件夹中文件的数量。
  • 问题修正:
    • 解决高并发写入时计数器溢出导致卡主的问题