code学习

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

作者:Gitee
高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

文件系统提供的访问和管理方法支撑了绝大部分的计算机应用。如今,一切数据似乎都在向“云”转移,如果只是上传数据量小的文件,上云似乎没有太多阻碍。然而面对大量且突发的计算数据任务时,上传文件却往往面临着新挑战、新难题。这时,分布式文件系统发挥了其价值功能。

迄今为止,受到 Google File System (GFS)论文的影响,市面上诞生了许多优秀的开源分布式文件存储系统,如 CephFS、HDFS、Lustre、MogileFS 等。

不同的分布式文件系统都有其特点与优势,大家也可以根据需要自行选择。有趣的是,最近在 Gitee 上发现了一款开源分布式文件系统——JuiceFS,它创新将对象存储作为底层存储介质,实现了存储空间的无限扩展。这究竟是如何实现的?它会是云时代分布式文件系统的新答案吗?咱们一起瞧瞧。

JuiceFS 是什么?

JuiceFS 是一款面向云原生设计的分布式文件系统,基于 Redis 和对象存储构建。它主要通过 Redis 来存储文件的元数据,无需修改代码就可以像本地存储一样将海量云存储直接投入生产环境的大数据、机器学习、人工智能等各种应用平台中。

项目作者:Juicedata

开源许可证:Apache-2.0

项目地址:https://gitee.com/juicedata/JuiceFS

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

技术是如何实现的?

JuiceFS 采用“数据”与“元数据”分离存储的架构,JuiceFS 依靠 Redis 来存储文件的元数据。Redis是基于内存的高性能的键值数据存储,较为适合存储元数据。因此,当数据将通过 JuiceFS 客户端存储到对象存储中,能更好的实现文件系统的分布式设计。

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

1.任何存入 JuiceFS 的文件都会被拆分成固定大小的 "Chunk",默认的容量上限是 64 MiB。

2.每个 Chunk 由一个或多个 "Slice" 组成,Slice 的长度不固定,取决于文件写入的方式。

3.每个 Slice 又会被进一步拆分成固定大小的 "Block",默认为 4 MiB,最后这些 Block 会被存储到对象存储。

4.同时,JuiceFS 会将每个文件以及它的 Chunks、Slices、Blocks 等元数据信息存储在元数据引擎中。

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

注意:

如果你发现在对象存储平台的文件浏览器中找不到存入 JuiceFS 的源文件,存储桶中只有一个 chunks 目录和一堆数字编号的目录和文件时,请不用担心。因为使用 JuiceFS,文件最终会被拆分成 Chunks、Slices 和 Blocks 存储在对象存储。

核心架构

JuiceFS由 三部分 组成:

  • JuiceFS 客户端

用于协调对象存储和元数据存储引擎,以及 POSIX、Hadoop、Kubernetes、S3 Gateway 等文件系统接口的实现。

  • 数据存储

存储数据本身,支持本地磁盘、对象存储。

  • 元数据引擎

存储数据对应的元数据,支持 Redis、MySQL、SQLite 等多种引擎。

架构图

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

如何操作?

操作前准备

1.准备 Redis 数据库

2.准备对象存储

安装客户端

创建文件系统

以 Linux 系统为例

1.创建名为 myjfs 文件系统

juicefs format sqlite3://myjfs.db myjfs           

2.查看返回信息,分析myjfs 的存储路径是 file:///Users/herald/.juicefs/local/myjfs/

2021/12/14 18:26:37.666618 juicefs[40362] <INFO>: Meta address: sqlite3://myjfs.db
[xorm] [info]  2021/12/14 18:26:37.667504 PING DATABASE sqlite3
2021/12/14 18:26:37.674147 juicefs[40362] <WARNING>: The latency to database is too high: 7.257333ms
2021/12/14 18:26:37.675713 juicefs[40362] <INFO>: Data use file:///Users/herald/.juicefs/local/myjfs/
2021/12/14 18:26:37.689683 juicefs[40362] <INFO>: Volume is formatted as {Name:myjfs UUID:d5bdf7ea-472c-4640-98a6-6f56aea13982 Storage:file Bucket:/Users/herald/.juicefs/local/ AccessKey: SecretKey: BlockSize:4096 Compression:none Shards:0 Partitions:0 Capacity:0 Inodes:0 EncryptKey:}           

挂载文件系统

1.将 myjfs 文件系统挂载到 ~/jfs 文件夹里

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

2.为了在后台保持挂载,你可以在挂载时指定 -d 或 --background 选项,即让客户端在守护进程中挂载文件系统

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

3.执行下列命令后,可将 挂载点 ~/jfs 卸载

juicefs umount ~/jfs           

注意:

由于 SQLite 是单文件数据库,挂载时要注意数据库文件的的路径,JuiceFS 同时支持相对路径和绝对路径。

因篇幅有限,针对如何设置对象存储、如何进行缓存管理、如何针对故障诊断与分析等相关问题就不再详述,你也可以前往 Gitee 仓库查看文档详情,了解 JuiceFS 的进一步实践。

年终狂欢最后两周,错过再等一年

自 11 月 8 日以来,Gitee 企业版已经开启了 「年终狂欢季」 活动,三重惊喜福利新老用户均可享受!

活动地址:https://gitee.com/activity/2022double11

新老同享 好礼畅领

现在购买 Gitee 企业版任意版本,即可获得使用时长赠送,最多可享六个月使用时长,且购买任意版本两年及以上即可获赠价值 488 元的办公室好礼一份。

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

高阶功能 不限时免

在 Gitee 企业版年终狂欢季进行的同时,Gitee 团队也在努力为企业和团队提供更强的产品能力,继项目流水线和 GiteeScan 的全新进化后,Gitee 企业版也在近日全新上线了 Gitee 自动化(Gitee Automation)功能。感兴趣的快去 Gitee 企业版试试吧。

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?
高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

友福同享 荐者有份

同时,Gitee 推荐官计划也将在活动期间火热升级,活动期间奖励提升至 150%,成为推荐官,最高躺赢 45% 现金!

高兼容+云原生,JuiceFS 会是分布式文件系统的新答案吗?

现在前往年终狂欢主会场,和 25 万企业一起为高效研发创造无限可能吧!

活动地址:https://gitee.com/activity/2022double11

继续阅读