Skip to main content

JuiceFS 是什么?

JuiceFS 是一款面向云环境设计的高性能共享文件系统,在 AGPL v3.0 开源协议下发布。提供完备的 POSIX 兼容性,可将海量低价的云存储作为本地磁盘使用,亦可同时被多台主机同时挂载读写。

使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如,Amazon S3),而数据所对应的元数据可以根据场景需要被持久化在 Redis、MySQL、SQLite 等多种数据库中。

JuiceFS 提供了丰富的 API,可以在不修改代码的前提下无缝对接已投入生产的大数据、机器学习、人工智能等应用平台,为其提供海量、弹性、低价的高性能存储。

核心特性

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

JuiceFS 适用于所有文件形式数据的管理、分析、归档、备份。尤其可以支持大数据分析和机器学习对数据存储的需求。

POSIX、HDFS、NFS、S3 兼容让 JuiceFS 不会对客户的业务系统带来任何侵入性,零成本替换。运维人员不用再为可用性、灾难恢复、监控、扩容等工作烦恼,专注于业务开发,提升研发效率。同时运维细节的简化,也让运维团队更容易向 DevOps 团队转型。

技术架构

JuiceFS 文件系统由三个部分组成:

  • JuiceFS 客户端:协调对象存储和元数据存储引擎,以及 POSIX、Hadoop、Kubernetes、S3 Gateway 等文件系统接口的实现;
  • 数据存储:存储数据本身,支持本地磁盘、对象存储;
  • 元数据引擎:存储数据对应的元数据(metadata)包含文件名、文件大小、权限组、创建修改时间和目录结构,支持 Redis、MySQL、TiKV 等多种引擎;

image

作为文件系统,JuiceFS 会分别处理数据及其对应的元数据,数据会被存储在对象存储中,元数据会被存储在元数据服务引擎中。

数据存储 方面,JuiceFS 支持几乎所有的公有云对象存储,同时也支持 OpenStack Swift、Ceph、MinIO 等私有化的对象存储。

元数据存储 方面,JuiceFS 采用多引擎设计,目前已支持 Redis、TiKV、MySQL/MariaDB、PostgreSQL、SQLite 等作为元数据服务引擎,也将陆续实现更多元数据存储引擎。欢迎 提交 Issue 反馈你的需求。

文件系统接口 实现方面:

  • 通过 FUSE,JuiceFS 文件系统能够以 POSIX 兼容的方式挂载到服务器,将海量云端存储直接当做本地存储来使用。
  • 通过 Hadoop Java SDK,JuiceFS 文件系统能够直接替代 HDFS,为 Hadoop 提供低成本的海量存储。
  • 通过 Kubernetes CSI Driver,JuiceFS 文件系统能够直接为 Kubernetes 提供海量存储。
  • 通过 S3 Gateway,使用 S3 作为存储层的应用可直接接入,同时可使用 AWS CLI、s3cmd、MinIO client 等工具访问 JuiceFS 文件系统。

应用场景

JuiceFS 为海量数据存储设计,可以作为很多分布式文件系统和网络文件系统的替代,特别是以下场景:

  • 大数据分析:HDFS 兼容,没有任何特殊 API 侵入业务;与主流计算引擎(Spark, Presto, Hive 等)无缝衔接;无限扩展的存储空间;运维成本几乎为 0;完善的缓存机制,高于对象存储性能数倍。
  • 机器学习:POSIX 兼容,可以支持所有机器学习、深度学习框架;共享能力提升团队管理、使用数据效率。
  • 容器集群中的持久卷:Kubernetes CSI 支持;持久存储并与容器生存期独立;强一致性保证数据正确;接管数据存储需求,保证服务的无状态化。
  • 共享工作区:可以在任意主机挂载;没有客户端并发读写限制;POSIX 兼容已有的数据流和脚本操作。
  • 数据备份:在无限平滑扩展的存储空间备份各种数据,结合共享挂载功能,可以将多主机数据汇总至一处,做统一备份。

更详细的信息请查看 解决方案

数据隐私

JuiceFS 是开源软件,采用对象存储和数据库分别存储数据和其对应的元数据。你存储的数据会按照一定的规则被拆分成数据块,保存在你自己定义的对象存储中,数据所对应的元数据则存储在你自己定义的数据库中。如果需要,你可以通过阅读 JuiceFS 的代码,对数据隐私的设计做进一步的了解和审计。

注意:如果你使用的是 JuiceFS 官方的托管服务,你的数据仍然存储在你自己的对象存储中,但数据对应的元数据会被存储在 JuiceFS 官方提供的高可用元数据存储集群中。