各位社区的伙伴,

JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化。

这个优化需求来自于某个社区重度用户,这个用户在将亿级数量文件的元数据从 Redis 迁移至 TiKV 时遇到了内存占用过高的问题,我们接到反馈后着手优化,最终使 dump 所需内存降低 95%,load 所需内存降低 80%。

下面,我们来为你详细解读一下 JuiceFS v1.0 RC1 的主要变化。

元数据迁移备份工具 dump/load 命令的优化

现有的 dump 命令实现中,会先将元数据引擎中的所有数据加载到客户端内存,形成一个类似只读快照的版本,再按照文件系统树型结构输出到指定文件。得益于 Redis 本身的高速随机读性能,v1.0 RC1 优化了 Redis 作为元数据引擎时的 dump 流程,不再做整个快照,而是一边预读一边输出,使其所需内存节省 95%,速度提升 100%。从 SQL 和 TiKV 备份元数据时,会使用单个事务来读数据以确保整个文件系统的一致性。

现有的 load 命令实现中,会先加载整个元数据集合,再并发导入到元数据引擎中。v1.0 RC1 对所有元数据引擎都做了优化,实现了流式加载功能,同样将其所需内存节省 80%,速度提高 25%。

以 Redis 元数据引擎 Dump & Load 一千万文件为例子,v1.0 Beta3 与 v1.0 RC1 的性能对比如下:

很多用户是一开始使用 Redis 作为元数据引擎,随着数据规模的增长,可能需要迁移到 TiKV 或者 SQL 引擎,这些优化可以保证用户在有上亿文件时仍然能够高效地完成元数据引擎的迁移。

后续我们也会详细解析此次 dump/load 命令优化的技术细节,敬请期待。

新增对象存储测试工具 objbench

对象存储是 JuiceFS 的底座,当用户在使用 JuiceFS 遇到问题时经常不确定是 JuiceFS 的问题还是对象存储的问题,所以我们在 v1.0 RC1 中新增 objbench 命令来帮助用户验证某个对象存储是否被 JuiceFS 支持以及测试与其共同使用时的性能表现。具体请参考JuiceFS Objbench 文档

新支持对接持续性能分析平台 Pyroscope

受 Go 圈技术大牛「鸟窝」的一篇可观测性实践博客的启发,我们想到了在 JuiceFS 中对接持续性能分析工具,一改 JuiceFS 过去只能通过 pprof 这个分析工具肉眼排查的窘境。于是在这个版本中,我们对接了 Pyroscope(一个开源的持续性能分析平台),通过这个工具,可以记录分析 JuiceFS 的运行状态,例如某段时间内 JuiceFS 代码中函数的 CPU 耗时、对象分配大小等细节数据。请参考使用 Pyroscope 文档了解如何在 JuiceFS 中使用 Pyroscope。

其它新增

新支持 SQL 数据库、etcd 做数据存储,具体请参考JuiceFS 设置对象存储文档

新支持 juicefs info 命令中根据文件 inode 找到其完整路径

注意:查找在 v1.0 RC1 之前创建的文件时,可能出现路径查找不到或者路径不全的情况。

新增 juicefs rmrjuicefs warmup 命令的进度条,并允许中断操作。

注意:使用 v1.0 RC1 的 JuiceFS 客户端操作 v1.0 RC1 之前的挂载点时,会显示一直没有进度,但实际命令能够正常执行。

其它调整

  1. 大幅提升 SQL 元数据引擎的稳定性。我们在对 JuiceFS S3 网关进行压力测试的过程中发现了 SQL 元数据引擎在高负载下的一些问题,其中包括所使用的 ORM 框架的几个 bug,都进行了修复并反馈给上游。
  2. 限制了单次清理回收站和文件缓存的数量,提高了在大规模应用下的稳定性。
  3. 支持在容器内使用 juicefs warmup 命令
  4. 提升 juicefs rmr 命令的性能并减低内存使用
  5. juicefs sync 命令也进行了增强,改进了使用免密登录 SSH 拷贝数据的情况,修复了几个 bug。
  6. 支持通过 juicefs config 命令动态修改数据存储的 Access Key 和 Secret Key
  7. 大量的错误日志描述优化

支持通过 juicefs config 命令动态修改数据存储的 Access Key 和 Secret Key

Bug 修复

  • 修复了 juicefs sync 读取源端文件失败时未打印错误日志的问题
  • 修复了只读客户端无法执行 warmup 的问题
  • 修复了大量删除文件时因 0 号 Slice 导致事务频繁冲突的问题
  • 修复了 SQL 类数据库作元数据引擎时,操作事务性未完全保证的问题
  • 修复了使用 TiKV 作元数据引擎时,可能因空连接导致 JuiceFS 客户端 panic 的问题
  • 修复了 List 元数据备份失败时,可能导致 JuiceFS 客户端 panic 的问题

升级建议

  • 使用 SQL 类数据库作元数据引擎的文件系统:请务必升级
  • 使用其它元数据引擎的文件系统:建议升级

JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过的更多相关文章

  1. JuiceFS v1.0 beta3 发布,支持 etcd、Amazon MemoryDB、Redis Cluster

    JuiceFS v1.0 beta3 在元数据引擎方面继续增强,新增 etcd 支持小于 200 万文件的使用场景,相比 Redis 可以提供更好的可用性和安全性.同时支持了 Amazon Memor ...

  2. JuiceFS v1.0.0 Beta1 发布,加强数据安全能力

    在 JuiceFS 开源一周年之际,我们迎来了首个里程碑版本 JuiceFS v1.0.0 Beta1,并将开源许可从 AGPL v3 修改为 Apache License 2.0. JuiceFS ...

  3. PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区

    PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区 PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具

  4. [译]ABP v1.0终于发布了!

    ABP v1.0终于发布了! 今天是个大日子!经过约3年的不断开发,第一个稳定的ABP版本,1.0,已经发布了.感谢为该项目做出贡献或试用过的每个人. 立即开始使用新的ABP框架:abp.io/get ...

  5. mysql awr v1.0.1发布

    现发布mysql awr v1.0.1 修复问题: 1.galera cluster下flush table/index_statistcs时如果系统中业务ddl频繁可能会导致很多进程处于prepar ...

  6. Omi v1.0震撼发布 - 令人窒息的Web组件化框架

    原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...

  7. Rookey.Frame v1.0 视频教程发布了

    经过昨天几个小时的折腾, Rookey.Frame v1.0开发视频教程终于发布了,由于是第一次做视频有很多地方做的不够好,后续我会慢慢改进,争取将视频教程做好. 本期发布视频: (一)Rookey. ...

  8. Omi v1.0震撼发布 - 开放现代的Web组件化框架

    原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...

  9. OBS Studio 24.0 RC1 发布 – 有大惊喜

    导读 对于那些使用OBS Studio进行跨平台直播和屏幕录制需求的人来说,OBS Studio 24.0即将推出,但首先发布的是他们的候选版本,以审查进入这一重大更新的新功能. OBS Studio ...

随机推荐

  1. 在keil中加入DSP库并且使用arm_math.h

    如果不开启硬件FPU,代码设置和编译控制建议二选一,否则会出现宏定义重复定义的报错

  2. 我们可以定向调度某个pod在某个node上进行创建

    集群环境:1.k8s用的是二进制方式安装 2.操作系统是linux (centos)3.操作系统版本为 7.2/7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令 ...

  3. MySql各版本

    Mysql 各个版本区别: 1.MySQL Community Server 社区版本,开源免费,但不提供官方技术支持. 2.MySQL Enterprise Edition 企业版本,需付费,可以试 ...

  4. 学习打卡day14&&构建之法阅读笔记第二篇

    对于书中所提到的结对编程我还是有些许感受的,在大二上学期我就有和同学合作,共同完成编码.有时候可能是我来做非常非常简易的前端页面部分,然后给同学一个基础框架,让同学往框架里面填充,时而遇到问题我再来沟 ...

  5. redis 知识点收集 注意理解底层

    学redis,首先要明白其特性,其次要理解明白redis与操作系统底层的关系,这点很重要.这是一个优秀的学习方法,作为计算机专业,应当时刻想着技术和操作系统计算机组成数据结构的联系,听起来有些书生气死 ...

  6. ES Bridge跨链桥服务升级,新增BSC跨链网络

    3月15日,Equal Sign Bridge(ES Bridge)跨链桥宣布新增BSC跨链网络,方便更多用户参与到ES Bridge的建设与发展,未来还将持续拓展更多的主流跨链币种,提升各链间的互操 ...

  7. JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多个图层

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  8. HMS Core Discovery第14期回顾长文|纵享丝滑剪辑,释放视频创作力

    HMS Core Discovery第14期直播<纵享丝滑剪辑,释放视频创作力>,已于4月21日圆满结束,本期直播我们同HMS Core视频编辑服务(Video Editor Kit)的产 ...

  9. 登录口爆破之ldap的md5加密、验证码认证

    ldap的md5加密配合autoDecoder插件.captcha-killer-modified插件 autoDecoder例 需要传入的数据包为: {"username":&q ...

  10. Django视图函数:CBV与FBV (ps:补充装饰器)

    CBV 基于类的视图  FBV 基于函数的视图 CBV: 1 项目目录下: 2 urlpatterns = [ 3 path('login1/',views.Login.as_view()) #.as ...