一飞开源
阅读702

[开源]高性能POSIX文件系统,像本地存储一样高效用海量云端存储

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

JuiceFS 是一款高性能 POSIX 文件系统,针对云原生环境特别优化设计,在 Apache 2.0 开源协议下发布。使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如 Amazon S3),而数据所对应的元数据可以根据场景需求被持久化在 Redis、MySQL、TiKV 等多种数据库引擎中。

JuiceFS 可以简单便捷的将海量云存储直接接入已投入生产环境的大数据、机器学习、人工智能以及各种应用平台,无需修改代码即可像使用本地存储一样高效使用海量云端存储。

二、开源协议

使用Apache-2.0开源协议

三、界面展示





四、功能概述

JuiceFS 是基于 Redis 和对象存储(例如 Amazon S3)构建的开源 POSIX 文件系统,针对云本机环境进行了设计和优化。

核心特性

  1. POSIX 兼容:像本地文件系统一样使用,无缝对接已有应用,无业务侵入性;
  2. HDFS 兼容:完整兼容 HDFS API,提供更强的元数据性能;
  3. S3 兼容:提供 S3 网关 实现 S3 协议兼容的访问接口;
  4. 云原生:通过 Kubernetes CSI 驱动 可以很便捷地在 Kubernetes 中使用 JuiceFS;
  5. 多端共享:同一文件系统可在上千台服务器同时挂载,高性能并发读写,共享数据;
  6. 强一致性:确认的修改会在所有挂载了同一文件系统的服务器上立即可见,保证强一致性;
  7. 强悍性能:毫秒级的延迟,近乎无限的吞吐量(取决于对象存储规模),查看性能测试结果;
  8. 数据安全:支持传输中加密(encryption in transit)以及静态加密(encryption at rest),查看详情;
  9. 文件锁:支持 BSD 锁(flock)及 POSIX 锁(fcntl);
  10. 数据压缩:支持使用 LZ4 或 Zstandard 压缩数据,节省存储空间。

支持的对象存储

  • 亚马逊 S3
  • 谷歌云存储
  • 微软云存储
  • 阿里云 OSS
  • 腾讯云 COS
  • 青云 QingStor 对象存储
  • Ceph RGW
  • MinIO
  • 本地目录
  • Redis
  • ……

JuiceFS 支持几乎所有主流的对象存储服务,查看详情。

谁在使用

JuiceFS 已经可以用于生产环境,目前有几千个节点在生产环境中使用它。我们收集汇总了一份使用者名单,记录在这里。另外 JuiceFS 还有不少与其他开源项目进行集成的合作项目,我们将其记录在这里。如果你也在使用 JuiceFS,请随时告知我们,也欢迎你向大家分享具体的使用经验。

JuiceFS 的存储格式已经稳定,会被后续发布的所有版本支持。

产品路线图

  • 支持使用 FoundationDB 做元数据引擎
  • 基于目录的配额
  • 基于用户和组的配额
  • 快照
  • 一次写入多次读取(WORM)

五、技术选型

架构

JuiceFS 由三个部分组成:

  1. JuiceFS 客户端:协调对象存储和元数据存储引擎,以及 POSIX、Hadoop、Kubernetes、S3 Gateway 等文件系统接口的实现;
  2. 数据存储:存储数据本身,支持本地磁盘、对象存储;
  3. 元数据引擎:存储数据对应的元数据,支持 Redis、MySQL、SQLite 等多种引擎;


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 个方面的准备:

  • 准备 Redis 数据库
  • 准备对象存储
  • 下载安装 JuiceFS 客户端

请参照 快速上手指南 立即开始使用 JuiceFS!

命令索引

请点击 这里 查看所有子命令以及命令行参数。

容器

JuiceFS 可以为 Docker、Podman 等容器化技术提供持久化存储,请查阅 文档 了解详情。

Kubernetes

在 Kubernetes 中使用 JuiceFS 非常便捷,请查看 这个文档 了解更多信息。

Hadoop Java SDK

JuiceFS 使用 Hadoop Java SDK 与 Hadoop 生态结合。

进阶主题

详细内容请查看 README.md 文档。

六、源码地址

源码下载

关注下面的标签,发现更多相似文章

一飞开源
发布了 篇专栏 · 获取点赞 · 获取阅读

评论

查看更多
相关推荐
关于作者
一飞开源
获得点赞 100
文章被阅读 1000
相关文章