JuiceFS Office Hours 近期问题回顾(2021 年 8 月)

高昌健 2021.09.06

什么是 JuiceFS Office Hours?

JuiceFS Office Hours 是每周三 17:00-18:00 的线上交流活动,主要目的是通过每周一次线上交流的形式,介绍和演示 JuiceFS 的新特性、解答用户疑问、了解使用场景及相关技术交流等。

要怎么参加 JuiceFS Office Hours?

请在每周三 17:00 左右点击这个链接:https://meeting.tencent.com/dm/nVMnpAWkaFgu

哪里能看到历史收集的问题和回答?

历史收集的问题和回答会定期更新到 JuiceFS 官方博客,请订阅官方博客了解最新动态。

安装 JuiceFS CSI Driver 时必须创建 ServiceAccount 吗?

是的,JuiceFS CSI Driver 依赖 ServiceAccount 进行 RBAC 权限管理。

只能通过 Helm 安装 JuiceFS CSI Driver 吗?

不是,JuiceFS CSI Driver 也支持直接通过 kubectl 进行安装,详细步骤请参考官方文档

JuiceFS 下一步的计划是什么?

近期计划是正式发布支持 TiKV 元数据引擎的版本(注:TiKV 元数据引擎已经在 v0.16.1 支持),后续会再支持 FoundationDB 元数据引擎。中长期会聚焦在开发者体验和可观测性上。

JuiceFS 使用对象存储数据时,如何支持文件的随机读写的?随机读写的性能如何?

JuiceFS 支持随机读写,包括通过 mmap 等进行的随机读写。

随机读依赖对象存储的 GetObject 接口支持指定读取的范围(比如 S3 的 API 支持 Range 参数)。对象存储不支持随机写(某些对象存储支持追加写,比如阿里云的 OSS),如果要实现随机写需要将对象下载到本地修改完以后再重新上传,这里写放大是很严重的(以及附加的读放大)。JuiceFS 实现随机写依赖其独有的文件存储格式。JuiceFS 的 block 在生成以后便是不可变的(immutable),因此在随机写入时会为新写入的数据生成新的 block,不会修改已有的 block。同时在元数据中更新 chunk 对应的 slice 列表,新增一个 slice,在读取时这个 slice 列表会重新组合成一个新的「文件视图」,使得 JuiceFS 客户端可以读到新写入的数据。

因为 JuiceFS 不会修改已经存储在对象存储上的 block,随机写会造成一些 block 包含陈旧的数据,JuiceFS 客户端会自动在后台进行垃圾回收,清理这些废弃数据。也可以通过 juicefs gc 这个子命令显式触发。

Redis 作为元数据引擎时会占用多大内存?

Redis 的内存占用与文件系统中存储的文件数量关联,我们的经验值是 1 个文件大约占用 300 字节内存。因此如果存储 1 亿个文件,大约需要 30GB 内存。详情参考 Redis 最佳实践

请问 JuiceFS Windows 客户端的稳定性如何?

JuiceFS Windows 客户端依赖 WinFsp 这个第三方组件,目前这个方案已经在 JuiceFS 社区版和托管服务中稳定使用多年。关于如何在 Windows 上使用 JuiceFS 请参考文档

JuiceFS 托管服务的收费模式是什么?

JuiceFS 托管服务是由官方提供的 SaaS 服务,面向开源的 JuiceFS 提供一系列实用的管理功能以及一个采用 Raft 算法实现的高可用、强一致性、高性能的元数据服务集群。收费模式是按量付费,具体请查看价格方案

JuiceFS 支持对接 MinIO 吗?

支持,具体请参考文档

JuiceFS 与 S3FS 的差别是什么?

JuiceFS 完全兼容 POSIX,除此之外还提供诸如 mmap、fallocate、扩展属性、文件锁等高级特性。在性能评测中,JuiceFS 相比 S3FS 也有着几十倍,甚至上百倍的性能提升。

TiKV 元数据管理目前是否已达到生产可用状态,最近的 0.16.x 两个小版本都有其相关的 bugfix 吗?

目前 TiKV 元数据引擎还没有生产可用状态,欢迎大家多多试用给我们反馈问题。0.16.2 包含一个与 TiKV 有关的 bug 修复(#759),推荐升级到 0.16.2。

目前 Prometheus 监控方案的数据具体是如何从客户端拉取的?是客户端主动上报还是怎么样?

JuiceFS 文件系统挂载好以后会监听一个用于获取 Prometheus 监控指标的端口(默认端口号是 9567,可以通过 --metrics 选项修改),需要配置 Prometheus 主动从这个地址拉取监控指标。如果你是在 Kubernetes 上使用 JuiceFS,可以参考这个文档配置 Prometheus。

如果你使用的是 JuiceFS Hadoop Java SDK,需要通过相关配置主动上报监控指标到 Pushgateway,详细步骤请参考这个文档