sidebar_label | sidebar_position | slug |
---|---|---|
技术架构 |
2 |
/architecture |
本文介绍 JuiceFS 的核心架构,以及 JuiceFS 存储文件的原理。
JuiceFS 文件系统由三个部分组成:
作为文件系统,JuiceFS 会分别处理数据及其对应的元数据,数据会被存储在对象存储中,元数据会被存储在元数据服务引擎中。
在 数据存储 方面,JuiceFS 支持几乎所有的公有云对象存储,同时也支持 OpenStack Swift、Ceph、MinIO 等私有化的对象存储。
在 元数据存储 方面,JuiceFS 采用多引擎设计,目前已支持 Redis、TiKV、MySQL/MariaDB、PostgreSQL、SQLite 等作为元数据服务引擎,也将陆续实现更多元数据存储引擎。欢迎 提交 Issue 反馈你的需求。
在 文件系统接口 实现方面:
文件系统作为用户和硬盘之间交互的媒介,它让文件可以妥善的被存储在硬盘上。如你所知,Windows 常用的文件系统有 FAT32、NTFS,Linux 常用的文件系统有 Ext4、XFS、Btrfs 等,每一种文件系统都有其独特的组织和管理文件的方式,它决定了文件系统的存储能力和性能等特征。
JuiceFS 作为一个文件系统也不例外,它的强一致性、高性能等特征离不开它独特的文件管理模式。
与传统文件系统只能使用本地磁盘存储数据和对应的元数据的模式不同,JuiceFS 会将数据格式化以后存储在对象存储(云存储),同时会将数据对应的元数据存储在 Redis 等数据库中。
任何存入 JuiceFS 的文件都会被拆分成固定大小的 "Chunk",默认的容量上限是 64 MiB。每个 Chunk 由一个或多个 "Slice" 组成,Slice 的长度不固定,取决于文件写入的方式。每个 Slice 又会被进一步拆分成固定大小的 "Block",默认为 4 MiB。最后,这些 Block 会被存储到对象存储。与此同时,JuiceFS 会将每个文件以及它的 Chunks、Slices、Blocks 等元数据信息存储在元数据引擎中。
使用 JuiceFS,文件最终会被拆分成 Chunks、Slices 和 Blocks 存储在对象存储。因此,你会发现在对象存储平台的文件浏览器中找不到存入 JuiceFS 的源文件,存储桶中只有一个 chunks 目录和一堆数字编号的目录和文件。不要惊慌,这正是 JuiceFS 文件系统高性能运作的秘诀!
除了挂载文件系统以外,你还可以使用 JuiceFS S3 网关,这样既可以使用 S3 兼容的客户端,也可以使用内置的基于网页的文件管理器访问 JuiceFS 存储的文件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。