关于运维:JuiceFS-V10-RC1-发布大幅优化-dumpload-命令性能-深度用户不容错过

25次阅读

共计 1941 个字符,预计需要花费 5 分钟才能阅读完成。

各位社区的搭档,

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 类数据库作元数据引擎的文件系统: 请务必降级
  • 应用其它元数据引擎的文件系统:倡议降级

介绍了这么多,大家连忙点此上手试试吧~

正文完
 0