版本更新

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

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]{.title-ref} 控制缓存的元数据数量。
    • 给 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]{.title-ref} 制定数据源的位置)。
    • 支持更新文件的访问时间 atime(默认不启用)。
    • 支持 Scaleway 的对象存储。
    • 增加 [--disallow-list]{.title-ref} 参数来禁用 WebDAV 的列目录功能。
  • 改进
    • 支持 macos FUSE v4.x
    • 提升在 Spark/MapReduce 里读小文件的性能。
    • 禁止中断 open/mkdir 操作,很多上层应用没有处理好中断错误。
    • 允许中断被拆分目录上的 readdir() 操作。
  • Bug 修正
    • 解决 FUSE 请求被频繁中断的问题。
    • 去掉符号链接最后的 x00。
    • 解决因为竞争导致请求意外卡主的问题。
    • 解决 gofuse 可能导致 crash 的问题(重复关闭channel)。
    • 提高对象存储的空闲连接池到 500 以减少高负载下的短连接。
    • 解决当没有剩余空间时 statvfs 显示不准确的问题。
    • 解决扩展属性(xattr)缓存未正常更新的问题。
    • 解决 FileSystem 被意外关闭后 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 作为其他存储系统的缓存。
  • 改进
    • 增加元数据请求的数据校验。
    • 显示所挂载的子目录的空间,不再是整个文件系统的空间。
    • 扩大符号链接的支持范围到所有操作。
    • 改进启用分布式缓存后的 IO 本地化。
    • 确保客户端不会因为损坏的网络消息导致崩溃。
  • Bug 修正
    • 修正写数据时可能会崩溃的情况。
    • 修正 POSIX 锁偶尔失败的情况。
    • 修正挂载后 [/etc/mtab]{.title-ref} 没有被正确导致看不到挂载点的问题。

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]{.title-ref} 操作不会卡住。
    • 增加在客户端挂载成功和退出时的日志。
    • 解决 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]{.title-ref} 参数,指定在出现服务或者网络故障时元数据操作的重试次数。 如果 ioretries 小于 5,当元数据访问失败后不会立即清空缓存,已有缓存数据可以读。 在元数据不可用期间,写操作以及后续的close可能返回 IOError,但写入的数据仍然保留在客户端内存中,待服务恢复后继续持久化(不丢失)。
    • 增加 [--cache-partial-only]{.title-ref} 参数,只缓存小文件和随机读的部分,适合对象存储的吞吐比缓存盘还高的情况。
  • 改进
    • 改进随机写的性能。
    • 改进碎片合并的性能。
    • 改进持续追加多个文件时的性能,将新数据合并写入对象存储以减少 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]{.title-ref} 启用。
    • 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]{.title-ref} 参数指定,默认为根目录。可以在网站控制台设置允许挂载的子目录。
    • 允许指定读写数据的内存大小,通过参数 [--buffer-size]{.title-ref} 指定(默认为 300 MiB)。当对象存储比较慢时,增大缓存可以提升读写性能。
    • 允许指定缓存盘的剩余空间比例来避免缓存数据把磁盘写满,通过参数 [--free-space-ratio]{.title-ref} 来指定(默认 0.2)。
    • 增加挂载参数来禁用 POSIX 锁和 BSD 锁,`--no-posix-lock` 和 [--no-bsd-lock]{.title-ref}。
  • 改进
    • 大幅改进读数据的预读机制和内存管理,大幅减少客户端在读写数据时的内存占用(一般不会超过 500MB)。
    • 改进写数据的重试,减少超时导致的 IO 错误。
    • 改进磁盘缓存的性能,减少系统调用次数。
  • 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。
    • 支持包含 [.]{.title-ref} 的 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]{.title-ref} 来启用(会影响数据写入性能)。
    • 增加 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]{.title-ref}, 指定下载对象时的最长时间(秒),避免个别慢请求导致的性能抖动。
  • 改进
    • 改进元数据缓存未建立时的性能。
    • 关闭文件时中断超时的读写操作。
    • 写入数据到 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]{.title-ref},以提高打开文件的性能。
    • 对启用数据复制的文件系统,如果主要的对象存储不可用,它会自动切换到备份的对象存储。
    • 实现故障重试时的请求的幂等性。
  • 改进
    • 改进元数据缓存的一致性保证。
    • 改进兼容模式的写入性能和大文件的读性能。
    • 改进 JuiceFS SDK 的兼容性和性能。
    • 改进在 Hadoop 中使用挂载方式访问 JFS 的性能(也需要使用 JuiceFS SDK 来加速)
  • Bug 修正
    • 解决兼容模式下多次 Flush 导致数据可能出现错误的情况。
    • 解决不能自动创建 Digital Ocean 对象存储 Bucket 的问题。

JuiceFS 4.3.9 (2019/6/24)

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

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]{.title-ref}) 时缓存数据大小计算不准确导致空间占用过多的问题。
    • 修正启用元数据缓存(`--metacache`)时文件权限可能错误的问题。
    • 修正批量上传模式下可能导致 IO 错误的问题。

JuiceFS 4.3.3 (2018/11/20)

  • 新特性:
    • 增加参数调整内核中的元数据缓存:`--attrcacheto`, [--entrycacheto]{.title-ref}, [--direntrycacheto]{.title-ref}。
    • 通过 [--passphrase]{.title-ref} 来记住密码(可以为空字符串),也可直接添加到配置文件中,避免要求手动输入。
  • 改变:
    • 改进 .stats 中对象存储访问计数,增加 head 和 error, 更加准确。
    • 调整命令行下目录大小的显示,去掉浮点数编码,直接显示该目录下所有数据大小总和。这是服务端变更,不需要升级客户端。
    • 在客户端的版本号中显示编译的时间和 Git Revision。
    • 允许通过 [--cache-size 0]{.title-ref} 来禁用缓存。
    • 停用检查挂载是否正常的机制。
    • 使用兼容 S3 的访问入口来访问 JSS,并优先尝试 HTTPS。
    • 不使用 HTTP/2 来访问 Azure 以提高并发度。
  • Bug 修正:
    • 支持以 HTTP 方式访问七牛云存储(默认为 HTTPS)。
    • 解决兼容模式下清理碎片时会退出的问题。
    • 解决并发加载缓存时可能会加载失败的问题。
    • 修正 [juicefs grep]{.title-ref} 的 反向查找 ([-v]{.title-ref} 参数)。
    • 解决 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]{.title-ref} 不再自动更新,需要手动运行 [juicefs version --upgrade]{.title-ref} 来更新到最新版。
    • 支持 FUSE fallocate(): 在使用 fio 测试时不再需要加 [--fallocate=none]{.title-ref} 参数。
    • 改进导入对象时的性能,增加缓存,更快地跳过已经导入的对象。
  • Bug修正:
    • 当频繁的 read/write/truncate 操作时,可能因为竞争使用了失效的文件长度导致 IO 错误。
    • 解压超预期长度的对象时的 IO 错误,避免产生过长的对象。
    • 解决兼容模式下并发 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]{.title-ref}。
    • 新增挂载选项,让客户端为文件提供 HTTP 访问方式,可作为 NGINX 等 Web 服务器的后端。
    • 在 .stats 中增加了对象存储访问的统计计数。
    • 支持迅达云。
  • 改进:
    • 改进客户端性能,降低内存使用。

JuiceFS 4.2.4 (2017/12/10)

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

JuiceFS 4.2.3 (2017/11/15)

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

JuiceFS 4.2.2 (2017/11/08)

  • 新特性:
    • 支持快速合并文件,无需拷贝数据,使用方法请看 [juicefs merge -h]{.title-ref} ,读取合并后的文件也需要将客户端需要升级到 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]{.title-ref} 启用它。
    • 默认启用到元数据服务和对象存储的传输加密。
    • 在客户端中自动同步复制的对象存储,每周一次,不需要再手动运行 [juicefs heal]{.title-ref}。
  • 改进:
    • 异步将文件中的碎片重写成更大的数据块。
    • 改进文件查询时的数据块缓存,提高小文件读取的性能。
    • 去掉文件不存在的缓存,它不能被及时失效。
    • 复用 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]{.title-ref} 显示客户端版本号。
    • 根据客户的版本限制同时使用的客户端数量,免费版最多 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]{.title-ref}
  • 改进:
    • 实现基于目录的一致性缓存,一旦发生变更会自动失效,大幅提升频繁文件访问时的性能。需要在挂载时使用 [--dircache]{.title-ref} 来启用,默认缓存时间是 5 分钟。
    • 当 syslog 不可用时,不打印日志,而不是退出。
    • 客户端大小从 18MB 缩小到 4MB,缩小下载客户端的时间。
    • 改进复制到另一个对象存储时的效率,降低它对写入性能的影响。
  • 问题修正:
    • 解决客户端在连不上元数据服务后异常退出的问题。

JuiceFS 4.1.11 (2017/4/26)

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