Skip to main content

版本更新

注意

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

JuiceFS 5.0.10 (2024/1/24)

  • 新增
    • 新增挂载参数 --sor-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 表示文件夹中文件的数量。
  • 问题修正:
    • 解决高并发写入时计数器溢出导致卡主的问题