3

开源云原生分布式文件系统 - JuiceFS

 2 years ago
source link: https://www.51cto.com/article/718881.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

开源云原生分布式文件系统 - JuiceFS

作者:JuiceFS 2022-09-15 21:04:20
今天要为大家介绍的就是一款为云环境设计的文件系统,JuiceFS 是一款云原生高性能分布式文件系统, 采用的是插件化的架构,「数据」与「元数据」分离,用户可按照场景需求选择适用的元数据以及数据引擎。
91af48c94203930e5e80958830698a4b0e7f62.png

大家最耳熟能详的分布式文件系统当属 HDFS,它的全称是 ​​Hadoop Distributed File System​​,在 Hadoop 技术栈盛行时大放异彩。随着云计算的发展成熟,数据上云成为趋势,但由于对象存储和文件存储的结构不同,在云上要进行大数据存储时会遇到很多问题:查询性能慢、数据不能保证一致性。

图片

今天要为大家介绍的就是一款为云环境设计的文件系统,JuiceFS 是一款云原生高性能分布式文件系统, 采用的是插件化的架构,「数据」与「元数据」分离,用户可按照场景需求选择适用的元数据以及数据引擎。使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如,Amazon S3),相对应的元数据可以按需存储在 Redis、MySQL、TiKV、SQLite 等多种数据库中。

图片

JuiceFS 于 2021 年 1 月在 GitHub 上开源,1年半时间已经获得 6.5 K Star,是基础领域备受关注的项目; JuiceFS 采用的是 Aache 2.0 许可证,意味着 用户可以更放心地将 JuiceFS 应用于各种商业环境,与自己的应用集成。在 AI 组件 Fluid 和 PaddlePaddle 中都可以看到 JuiceFS 的身影。

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

安装 JuiceFS 非常简单,你需要准备好元数据存储引擎(比如 Redis, MySQL),以及对象存储,最后下载 JuiceFS 客户端执行一行命令,就能立刻开始使用了。

你可以在 GitHub 项目页面找到 JuiceFS 最新版客户端下载地址,选择你所在平台的预编译版本,下载安装到 /usr/local/bin/juicefs。

当在终端输入并执行 juicefs 并返回了程序的帮助信息,就说明你成功安装了 JuiceFS 客户端。

创建文件系统

创建文件系统使用客户端提供的 format 命令,一般格式为:

juicefs format [command options] META-URL NAME

可见,格式化文件系统需要提供 3 种信息:

  • ​[command options]:设定文件系统的存储介质,留空则默认使用本地磁盘作为存储介质,路径为$HOME/.juicefs/local,/var/jfs​ 或C:/jfs/local。
  • META-URL:用来设置元数据存储,即数据库相关的信息,通常是数据库的 URL 或文件路径。
  • NAME:是文件系统的名称。

挂载文件系统

挂载文件系统使用客户端提供的 mount 命令,一般格式为:

juicefs mount [command options] META-URL MOUNTPOINT

与创建文件系统的命令类似,挂载文件系统需要提供以下信息:**[command options]**:用来指定文件系统相关的选项,例如:-d 可以实现后台挂载;META-URL:用来设置元数据存储。即数据库相关的信息,通常是数据库的 URL 或文件路径;MOUNTPOINT:指定文件系统的挂载点。例如,以下命令将 myjfs 文件系统挂载到 ~/jfs 文件夹:

juicefs mount sqlite3://myjfs.db ~/jfs

当你获得以下反馈即为挂载成功了!!

图片

验证文件系统

当挂载好文件系统以后可以通过 juicefs bench 命令对文件系统进行基础的性能测试和功能验证,确保 JuiceFS 文件系统能够正常访问且性能符合预期。

juicefs bench ~/jfs

运行 juicefs bench 命令以后会根据指定的并发度(默认为 1)往 JuiceFS 文件系统中写入及读取 N 个大文件(默认为 1)及 N 个小文件(默认为 100),并统计读写的吞吐和单次操作的延迟,以及访问元数据引擎的延迟。

验证成功之后,欢迎大展身手,探索更多玩法~

​项目地址:https://github.com/juicedata/juicefs。​

[1]HDFS API: https://juicefs.com/docs/zh/community/hadoop_java_sdk。

[2]S3 网关: https://juicefs.com/docs/zh/community/s3_gateway。

[3]CSI Driver: https://juicefs.com/docs/zh/community/how_to_use_on_kubernetes/。

[4]性能测试结果: https://juicefs.com/docs/zh/community/benchmark/。

[5]查看详情: https://juicefs.com/docs/zh/community/security/encrypt。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK