JuiceFS 是一款高性能 POSIX 文件系统,针对云原生环境特别优化设计,在 Apache 2.0 开源协议下发布。使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如 Amazon S3),而数据所对应的元数据可以根据场景需求被持久化在 Redis、MySQL、TiKV 等多种数据库引擎中。
JuiceFS 可以简单便捷的将海量云存储直接接入已投入生产环境的大数据、机器学习、人工智能以及各种应用平台,无需修改代码即可像使用本地存储一样高效使用海量云端存储。
📺 视频:什么是 JuiceFS?
📖 文档:快速上手指南
架构 | 开始使用 | 进阶主题 | POSIX 兼容性 | 性能测试 | 支持的对象存储 | 谁在使用 | 产品路线图 | 反馈问题 | 贡献 | 社区 | 使用量收集 | 开源协议 | 致谢 | FAQ
JuiceFS 由三个部分组成:
JuiceFS 依靠 Redis 来存储文件的元数据。Redis 是基于内存的高性能的键值数据存储,非常适合存储元数据。与此同时,所有数据将通过 JuiceFS 客户端存储到对象存储中。了解详情
任何存入 JuiceFS 的文件都会被拆分成固定大小的 "Chunk",默认的容量上限是 64 MiB。每个 Chunk 由一个或多个 "Slice" 组成,Slice 的长度不固定,取决于文件写入的方式。每个 Slice 又会被进一步拆分成固定大小的 "Block",默认为 4 MiB。最后,这些 Block 会被存储到对象存储。与此同时,JuiceFS 会将每个文件以及它的 Chunks、Slices、Blocks 等元数据信息存储在元数据引擎中。了解详情
使用 JuiceFS,文件最终会被拆分成 Chunks、Slices 和 Blocks 存储在对象存储。因此,你会发现在对象存储平台的文件浏览器中找不到存入 JuiceFS 的源文件,存储桶中只有一个 chunks 目录和一堆数字编号的目录和文件。不要惊慌,这正是 JuiceFS 高性能运作的秘诀!
创建 JuiceFS,需要以下 3 个方面的准备:
请参照 快速上手指南 立即开始使用 JuiceFS!
请点击 这里 查看所有子命令以及命令行参数。
JuiceFS 可以为 Docker、Podman 等容器化技术提供持久化存储,请查阅 文档 了解详情。
在 Kubernetes 中使用 JuiceFS 非常便捷,请查看 这个文档 了解更多信息。
JuiceFS 使用 Hadoop Java SDK 与 Hadoop 生态结合。
请查阅 JuiceFS 文档中心 了解更多信息。
JuiceFS 通过了 pjdfstest 最新版所有 8813 项兼容性测试。
All tests successful.
Test Summary Report
-------------------
/root/soft/pjdfstest/tests/chown/00.t (Wstat: 0 Tests: 1323 Failed: 0)
TODO passed: 693, 697, 708-709, 714-715, 729, 733
Files=235, Tests=8813, 233 wallclock secs ( 2.77 usr 0.38 sys + 2.57 cusr 3.93 csys = 9.65 CPU)
Result: PASS
除了 pjdfstest 覆盖的那些 POSIX 特性外,JuiceFS 还支持:
JuiceFS 提供一个性能测试的子命令来帮助你了解它在你的环境中的性能表现:
使用 fio 测试了 JuiceFS、EFS 和 S3FS 的顺序读写性能,结果如下:
上图显示 JuiceFS 可以比其他两者提供 10 倍以上的吞吐,详细结果请看这里。
使用 mdtest 测试了 JuiceFS、EFS 和 S3FS 的元数据性能,结果如下:
上图显示 JuiceFS 的元数据性能显著优于其他两个,详细的测试报告请看这里。
如遇性能问题,查看「实时性能监控」。
JuiceFS 支持几乎所有主流的对象存储服务,查看详情。
JuiceFS 已经可以用于生产环境,目前有几千个节点在生产环境中使用它。我们收集汇总了一份使用者名单,记录在这里。另外 JuiceFS 还有不少与其他开源项目进行集成的合作项目,我们将其记录在这里。如果你也在使用 JuiceFS,请随时告知我们,也欢迎你向大家分享具体的使用经验。
JuiceFS 的存储格式已经稳定,会被后续发布的所有版本支持。
我们使用 GitHub Issues 来管理社区反馈的问题,你也可以通过其他渠道跟社区联系。
感谢你对 JuiceFS 社区的贡献!请参考 JuiceFS 贡献指南 了解更多信息。
欢迎加入 Discussions 和 Slack 频道 跟我们的团队和其他社区成员交流。
JuiceFS 的客户端会收集 匿名 使用数据来帮助我们更好地了解大家如何使用它,它只上报诸如版本号等使用量数据,不包含任何用户信息,完整的代码在 这里。
你也可以通过下面的方式禁用它:
juicefs mount --no-usage-report
使用 Apache License 2.0 开源,详见 LICENSE。
JuiceFS 的设计参考了 Google File System、HDFS 以及 MooseFS,感谢他们的杰出工作。
已经支持了绝大部分对象存储,参考这个列表。如果它跟 S3 兼容的话,也可以当成 S3 来使用。否则,请创建一个 issue 来增加支持。
可以。自 v1.0.0 Beta3 版本开始 JuiceFS 支持使用 Redis 集群版作为元数据引擎,不过需要注意的是 Redis 集群版要求一个事务中所有操作的 key 必须在同一个 hash slot 中,因此一个 JuiceFS 文件系统只能使用一个 hash slot。
请查看「Redis 最佳实践」了解更多信息。
请查看「同类技术对比」文档了解更多信息。
更多 FAQ 请查看完整列表。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。