同步操作将从 Juicedata/JuiceFS 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
JuiceFS 是一个建立在 Redis 和 S3 等对象存储之上的开源 POSIX 文件系统。它是为云原生环境设计,通过把元数据和数据分别持久化到 Redis 和对象存储中,它相当于一个无状态的中间件,帮助各种应用通过标准的文件系统接口来共享数据。
主要特性有:
除此之外,JuiceFS 还具有其它一些特性:
架构 | 开始使用 | 运维管理 | POSIX 兼容性 | 性能测试 | 支持的对象存储 | 状态 | 产品路线图 | 反馈问题 | 贡献 | 社区 | 使用量收集 | 开源协议 | 致谢 | FAQ
JuiceFS 使用 Redis 来存储文件系统的元数据。Redis 是一个开源的内存数据库,可以保障元数据的高性能访问。所有文件的数据会通过客户端存储到对象存储中,以下是它的架构图:
JuiceFS 中的文件格式,如下图所示。一个文件首先被拆分成固定大小的 "Chunk",默认 64 MiB。每个 Chunk 可以由一个或者多个 "Slice" 组成,它们是变长的。对于每一个 Slice,又会被拆分成固定大小的 "Block",默认为 4 MiB(格式化后就不可以修改)。最后,这些 Block 会被压缩和加密保存到对象存储中。压缩和加密都是可选的。
你可以直接下载预编译的版本:二进制版本。
你需要先安装 Go 1.14+,然后通过下面的方式来编译:
$ git clone https://github.com/juicedata/juicefs.git
$ cd juicefs
$ make
对于中国用户,建议设置 GOPROXY
到更快的镜像以加速编译,比如 Goproxy 中国。
需要 Redis(2.2 及以上)服务器来存储元数据,请参考 Redis Quick Start。
如果是 macOS 系统,还需要 macFUSE。
还需要一个对象存储,测试时可以用本地目录代替。
假定你已经有一个本地运行的 Redis 服务,下面用它来格式化一个叫做 test
的文件系统:
$ ./juicefs format localhost test
它会使用默认参数来格式化。如果 Redis 服务不在本地,你可以像这样完整填写它的地址:redis://user:password@host:6379/1
。Redis 密码可以通过环境变量 REDIS_PASSWORD
来指定,避免暴露在命令行选项中。
JuiceFS 还需要一个对象存储,可以通过参数 --storage
、--bucket
、--access-key
和 --secret-key
来指定。它默认会使用本地目录来模拟一个对象存储用于测试,详细的参数请看 ./juicefs format -h
。
关于各种对象存储如何设置的详细介绍,请查看这个文档。
一旦文件系统格式化好了,你可以把它挂载成一个目录,这个目录叫做 挂载点。
$ ./juicefs mount -d localhost ~/jfs
挂载之后你可以像使用本地盘一样使用它,详细的挂载参数,请运行 ./juicefs mount -h
。
如果你希望开机自动挂载 JuiceFS,请查看这个文档。
请点击这里查看所有子命令以及命令行参数。
在 Kubernetes 中使用 JuiceFS 非常便捷,请查看这个文档了解更多信息。
JuiceFS 使用 Hadoop Java SDK 与 Hadoop 生态结合。
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
除了 pjdfstests 覆盖的那些 POSIX 特性外,JuiceFS 还支持:
使用 fio 测试了 JuiceFS、EFS 和 S3FS 的顺序读写性能,结果如下:
上图显示 JuiceFS 可以比其他两者提供 10 倍以上的吞吐,详细结果请看这里。
使用 mdtest 测试了 JuiceFS、EFS 和 S3FS 的元数据性能,结果如下:
上图显示 JuiceFS 的元数据性能显著优于其他两个,详细的测试报告请看这里。
在文件系统的根目录有一个叫做 .accesslog
的虚拟文件,它提供了所有文件系统操作的细节,以及所消耗的时间,比如:
$ cat /jfs/.accesslog
2021.01.15 08:26:11.003330 [uid:0,gid:0,pid:4403] write (17669,8666,4993160): OK <0.000010>
2021.01.15 08:26:11.003473 [uid:0,gid:0,pid:4403] write (17675,198,997439): OK <0.000014>
2021.01.15 08:26:11.003616 [uid:0,gid:0,pid:4403] write (17666,390,951582): OK <0.000006>
每一行的最后一个数字是该操作所消耗的时间,单位是秒。你可以利用它来分析各种性能问题,未来我们也会提供更多工具来分析它。
完整的支持列表,请参照这个文档。
JuiceFS 目前是 beta 状态,核心的存储格式还没有完全确定,还不建议使用到生产环境中。如果你对它有兴趣,请尽早测试,并给我们反馈。
我们使用 GitHub Issues 来管理社区反馈的问题,你也可以通过其他渠道跟社区联系。
感谢你的兴趣,请参考 CONTRIBUTING.md。
欢迎加入 Discussions 和 Slack 频道跟我们的团队和其他社区成员交流。
JuiceFS 的客户端会收集 匿名 使用数据来帮助我们更好地了解大家如何使用它,它只上报诸如版本号等使用量数据,不包含任何用户信息,完整的代码在这里。
你也可以通过下面的方式禁用它:
$ ./juicefs mount --no-usage-report
使用 GNU AGPL v3.0 开源,详见 LICENSE。
JuiceFS 的设计参考了 Google File System、HDFS 以及 MooseFS,感谢他们的杰出工作。
已经支持了绝大部分对象存储,参考这个列表。如果它跟 S3 兼容的话,也可以当成 S3 来使用。否则,请创建一个 issue 来增加支持。
不可以。JuiceFS 使用了 Redis 的事务功能来保证元数据操作的原子性,而分布式版还不支持分布式事务。哨兵节点或者其他的 Redis 高可用方法是需要的。
请查看「Redis 最佳实践」了解更多信息。
请查看「与其它项目比较」文档了解更多信息。
更多 FAQ 请查看完整列表。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。