juicedata/juicefs

GitHub: juicedata/juicefs

JuiceFS 是一款基于对象存储和独立元数据引擎的高性能分布式 POSIX 文件系统,为云原生环境提供强一致性的共享存储解决方案。

Stars: 13318 | Forks: 1177

JuiceFS Logo

Latest Stable Release GitHub Workflow Status GitHub Workflow Status Go Report English doc Join Slack

**JuiceFS** 是一款基于 Apache License 2.0 协议发布的高性能 [POSIX](https://en.wikipedia.org/wiki/POSIX) 文件系统,专为云原生环境设计。通过 JuiceFS 存储的数据将被持久化到对象存储(Object Storage)*(例如 Amazon S3)* 中,而对应的元数据则可以根据场景和需求持久化到 Redis、MySQL 和 TiKV 等多种兼容的数据库引擎中。 借助 JuiceFS,海量云存储可以直接连接到大数据、机器学习、人工智能以及生产环境中的各种应用平台。无需修改代码,即可像使用本地存储一样高效地使用海量云存储。 📖 **文档**:[快速入门指南](https://juicefs.com/docs/community/quick_start_guide) ## 核心特性 1. **完全兼容 POSIX**:像本地文件系统一样使用,与现有应用无缝对接,不破坏业务工作流。 2. **完全兼容 Hadoop**:JuiceFS 的 [Hadoop Java SDK](https://juicefs.com/docs/community/hadoop_java_sdk) 兼容 Hadoop 2.x 和 Hadoop 3.x 以及 Hadoop 生态系统中的多种组件。 3. **兼容 S3**:JuiceFS 的 [S3 网关](https://juicefs.com/docs/community/s3_gateway) 提供兼容 S3 的接口。 4. **云原生**:提供 [Kubernetes CSI 驱动](https://juicefs.com/docs/community/how_to_use_on_kubernetes),便于在 Kubernetes 中使用 JuiceFS。 5. **可共享**:JuiceFS 是一种共享文件存储,可供成千上万的客户端进行读写。 6. **强一致性**:确认的修改将在所有挂载了同一文件系统的服务器上立即可见。 7. **卓越性能**:延迟可低至几毫秒,吞吐量几乎可以无限扩展*(取决于对象存储的容量)*。[测试结果](https://juicefs.com/docs/community/benchmark) 8. **数据加密**:支持传输中和静态数据加密(详情请参阅[指南](https://juicefs.com/docs/community/security/encrypt))。 9. **全局文件锁**:JuiceFS 同时支持 BSD 锁(flock)和 POSIX 记录锁(fcntl)。 10. **数据压缩**:JuiceFS 支持 [LZ4](https://lz4.github.io/lz4) 或 [Zstandard](https://facebook.github.io/zstd) 来压缩您的所有数据。 [架构](#architecture) | [快速开始](#getting-started) | [进阶主题](#advanced-topics) | [POSIX 兼容性](#posix-compatibility) | [性能基准测试](#performance-benchmark) | [支持的对象存储](#supported-object-storage) | [谁在使用](#who-is-using) | [路线图](#roadmap) | [报告问题](#reporting-issues) | [社区贡献](#contributing) | [社区](#community) | [使用情况追踪](#usage-tracking) | [许可证](#license) | [致谢](#credits) | [常见问题](#faq) ## 架构 JuiceFS 由三个部分组成: 1. **JuiceFS Client**:协调对象存储和元数据存储引擎,并实现 POSIX、Hadoop、Kubernetes 和 S3 网关等文件系统接口。 2. **数据存储(Data Storage)**:存储数据,支持多种数据存储介质,例如本地磁盘、公有云或私有云对象存储以及 HDFS。 3. **元数据引擎(Metadata Engine)**:存储相应的元数据,包含文件名、文件大小、权限组、创建和修改时间以及目录结构等信息,支持 Redis、MySQL、SQLite 和 TiKV 等不同的元数据引擎。 ![JuiceFS Architecture](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a6737943a3213726.png) JuiceFS 可以将文件系统的元数据存储在不同的元数据引擎中,例如 Redis,它是一个快速、开源的内存键值数据存储,特别适合存储元数据;同时,所有数据将通过 JuiceFS 客户端存储在对象存储中。[了解更多](https://juicefs.com/docs/community/architecture) ![data-structure-diagram](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/17d08c3800213737.svg) 存储在 JuiceFS 中的每个文件都被按固定大小分割成 **"Chunk"**,默认上限为 64 MiB。每个 Chunk 由一个或多个 **"Slice"** 组成,切片的长度取决于文件的写入方式。每个切片由固定大小的 **"Block"** 组成,默认为 4 MiB。这些 Block 最终会被存储在对象存储中;同时,文件及其 Chunk、Slice 和 Block 的元数据信息将通过 JuiceFS 存储在元数据引擎中。[了解更多](https://juicefs.com/docs/community/architecture/#how-juicefs-store-files) ![How JuiceFS stores your files](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/29738067f4213748.svg) 在使用 JuiceFS 时,文件最终会被拆分为 Chunk、Slice 和 Block 并存储在对象存储中。因此,在对象存储平台的文件浏览器中找不到存储在 JuiceFS 中的源文件;相反,存储桶(bucket)中只有一个 chunks 目录和一堆数字编号的目录和文件。别慌!这正是 JuiceFS 高性能运行的秘密! ## 快速开始 在开始之前,请确保您具备以下条件: 1. 一个受支持的元数据引擎,请参阅[如何设置元数据引擎](https://juicefs.com/docs/community/databases_for_metadata) 2. 一个用于存储数据块的受支持的对象存储,请参阅[支持的对象存储](https://juicefs.com/docs/community/how_to_setup_object_storage) 3. 下载并安装 [JuiceFS 客户端](https://juicefs.com/docs/community/installation) 请参考[快速入门指南](https://juicefs.com/docs/community/quick_start_guide)立即开始使用 JuiceFS! ### 命令参考 在[命令参考](https://juicefs.com/docs/community/command_reference)中查看所有命令行选项。 ### 容器 JuiceFS 可以作为 Docker 和 Podman 的持久化卷使用,详情请查看[这里](https://juicefs.com/docs/community/juicefs_on_docker)。 ### Kubernetes 在 Kubernetes 上使用 JuiceFS 也非常容易。请在[这里](https://juicefs.com/docs/community/how_to_use_on_kubernetes)查找更多信息。 ### Hadoop Java SDK 如果您想在 Hadoop 中使用 JuiceFS,请查看 [Hadoop Java SDK](https://juicefs.com/docs/community/hadoop_java_sdk)。 ## 进阶主题 - [Redis 最佳实践](https://juicefs.com/docs/community/redis_best_practices) - [如何设置对象存储](https://juicefs.com/docs/community/how_to_setup_object_storage) - [缓存](https://juicefs.com/docs/community/cache) - [故障诊断与分析](https://juicefs.com/docs/community/fault_diagnosis_and_analysis) - [FUSE 挂载选项](https://juicefs.com/docs/community/fuse_mount_options) - [在 Windows 上使用 JuiceFS](https://juicefs.com/docs/community/installation#windows) - [S3 网关](https://juicefs.com/docs/community/s3_gateway) 更多信息请参考 [JuiceFS 文档中心](https://juicefs.com/docs/community/introduction)。 ## POSIX 兼容性 JuiceFS 已通过最新 [pjdfstest](https://github.com/pjd/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 还提供: - **关闭到打开一致性**。一旦文件被写入*并*关闭,在随后的任何客户端打开和读取中,都能保证看到写入的数据。在同一个挂载点内,所有写入的数据都可以被立即读取。 - 重命名和所有其他元数据操作都是原子的,由受支持的元数据引擎事务保证。 - 从同一挂载点取消链接后,已打开的文件仍可访问。 - Mmap(已通过 FSx 测试)。 - 支持 punch hole 的 Fallocate。 - 扩展属性(xattr)。 - BSD 锁(flock)。 - POSIX 记录锁(fcntl)。 ## 性能基准测试 ### 基本测试 JuiceFS 提供了一个子命令,可以运行一些基本测试来帮助您了解它在您的环境中的工作情况: ![JuiceFS Bench](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5ebbb9963a213757.png) ### 吞吐量 使用 [fio](https://github.com/axboe/fio) 对 JuiceFS、[EFS](https://aws.amazon.com/efs) 和 [S3FS](https://github.com/s3fs-fuse/s3fs-fuse) 进行了顺序读写测试。 ![Sequential Read Write Benchmark](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/899bbea902213806.svg) 上面的结果显示,JuiceFS 可以提供比其他两者高 10 倍以上的吞吐量(查看[更多详情](https://juicefs.com/docs/community/fio))。 ### 元数据 IOPS 使用 [mdtest](https://github.com/hpc/ior) 对 JuiceFS、[EFS](https://aws.amazon.com/efs) 和 [S3FS](https://github.com/s3fs-fuse/s3fs-fuse) 进行了简单的 mdtest 测试。 ![Metadata Benchmark](https://raw.githubusercontent.com/juicedata/juicefs/main/docs/en/images/metadata-benchmark.svg) 结果显示,JuiceFS 可以提供比其他两者显著更高的元数据 IOPS(查看[更多详情](https://juicefs.com/docs/community/mdtest))。 ### 分析性能 如果您遇到性能问题,请参阅[实时性能监控](https://juicefs.com/docs/community/fault_diagnosis_and_analysis#performance-monitor)。 ## 支持的对象存储 - Amazon S3 *(以及其他兼容 S3 的对象存储服务)* - Google Cloud Storage - Azure Blob Storage - 阿里云对象存储服务(OSS) - 腾讯云对象存储(COS) - 七牛云对象存储(Kodo) - QingStor 对象存储 - Ceph RGW - MinIO - 本地磁盘 - Redis - ... JuiceFS 支持众多对象存储服务。[了解更多](https://juicefs.com/docs/community/how_to_setup_object_storage#supported-object-storage)。 ## 谁在使用 JuiceFS 已具备生产环境可用性,并在生产环境中被数千台机器使用。我们汇总并记录了一份用户列表,请见[这里](https://juicefs.com/docs/community/adopters)。此外,JuiceFS 还有几个与其他开源项目集成的合作项目,记录在[这里](https://juicefs.com/docs/community/integrations)。如果您也在使用 JuiceFS,请随时告诉我们,也欢迎大家分享您的具体使用经验。 存储格式稳定,并将被所有未来版本支持。 ## 路线图 - 网关优化 - 断点续传同步 - 预读优化 - 大规模场景优化 - 快照 ## 报告问题 我们使用 [GitHub Issues](https://github.com/juicedata/juicefs/issues) 来跟踪社区报告的问题。如有任何疑问,您也可以[联系](#community)社区。 ## 使用情况追踪 JuiceFS 默认收集**匿名**使用情况数据,以帮助我们更好地了解社区如何使用 JuiceFS。仅报告核心指标(如版本号),不包括用户数据或任何其他敏感数据。相关代码可以在[这里](pkg/usage/usage.go)查看。 您也可以通过命令行选项 `--no-usage-report` 轻松禁用报告: ``` juicefs mount --no-usage-report ``` ## 许可证 JuiceFS 基于 Apache License 2.0 开源,请参阅 [LICENSE](LICENSE)。 ## 常见问题 ### 为什么 JuiceFS 不支持 XXX 对象存储? JuiceFS 支持许多对象存储服务。请先查看[此列表](https://juicefs.com/docs/community/how_to_setup_object_storage#supported-object-storage)。如果您想使用的对象存储兼容 S3,您可以将其视为 S3。否则,请尝试报告问题。 ### 我可以使用 Redis 集群作为元数据引擎吗? 可以。自 [v1.0.0 Beta3](https://github.com/juicedata/juicefs/releases/tag/v1.0.0-beta3) 起,JuiceFS 支持使用 [Redis 集群](https://redis.io/docs/manual/scaling)作为元数据引擎,但需要注意的是,Redis 集群要求事务中所有操作的键必须位于同一个哈希槽(hash slot)中,因此一个 JuiceFS 文件系统只能使用一个哈希槽。 更多信息请参阅 [“Redis 最佳实践”](https://juicefs.com/docs/community/redis_best_practices)。 ### JuiceFS 和 XXX 有什么区别? 更多信息请参阅 [“与其他文件系统的对比”](https://juicefs.com/docs/community/comparison/juicefs_vs_alluxio)。 更多常见问题,请参阅[完整列表](https://juicefs.com/docs/community/faq)。 ## Stargazers 趋势 [![Star History Chart](https://api.star-history.com/svg?repos=juicedata/juicefs&type=Date)](https://star-history.com/#juicedata/juicefs&Date)
标签:Apex, EVTX分析, Go语言, Gradle集成, JuiceFS, POSIX, Redis, S3, TiKV, 云存储, 人工智能, 元数据管理, 分布式存储, 分布式文件系统, 大数据, 存储接口, 存储解决方案, 容器存储, 对象存储, 开源, 搜索引擎查询, 数据持久化, 数据湖, 文件存储, 日志审计, 机器学习, 漏洞探索, 用户模式Hook绕过, 目录扫描, 程序破解, 请求拦截