JuiceFS 是一款专门为云原生环境设计的分布式文件系统,提供完备的 POSIX 兼容性,可将海量低价的云存储作为本地磁盘使用,亦可同时被多台主机同时挂载读写。
JuiceFS 创新的设计了分层插件式架构,元数据引擎和数据存储引擎都有多种选择,数据存储引擎对接任意对象存储存储系统,目前已支持 33 种,几乎覆盖全球所有常见的对象存储服务。元数据引擎陆续开放了对 Redis、MySQL、MariaDB、PostgreSQL、SQLite 等数据库的支持。
元数据作为“数据的数据“,是否能够高效、安全、可靠的存储,是评价一个分布式文件系统的关键指标。而元数据引擎作为存储元数据的核心,它的设计和实现需要兼顾性能、规模、持久性、成本等多方面因素。
一个元数据引擎难以适应所有的应用场景,所以 JuiceFS 选择多引擎设计。在性能优先的场景下,我们可以使用内存型的 Redis,而在可靠性要求较高的场景下,我们可以使用 MySQL 或 PostgreSQL。但 JuiceFS 并没有止步于此,因为我们始终还是会需要一个既能满足性能,又能满足可靠性,同时还要兼具大规模扩容能力的元数据引擎。
TiKV 作为一款开源分布式事务键值数据库,可以很好满足高性能、大规模、持久性安全多方面的需求。经过社区用户的共同探讨,JuiceFS 决定研发对 TiKV 的支持并第一时间联络到 TiKV 社区,参加到第二届 TiDB Hacking Camp 活动中。
TiDB Hacking Camp 是由 PingCAP 联合经纬中国主办,并与众多合作伙伴协办的一个长期孵化活动。活动联合 TiDB 的生态伙伴、合作企业等,旨在帮助 TiDB 生态项目从社区中获取更多资源和帮助,使其能够快速成长达到有实际应用场景的成熟阶段。
在 7 月 23 日 TiDB DevCon 上进行了项目启动仪式,JuiceFS 团队代表也向与会嘉宾介绍了 JuiceFS x TiKV 项目的背景和进展。
目前,支持 TiKV 的第一个预览版本已经合并到 JuiceFS 主干代码中,接下来向大家分享相关的用法细节,各位 Hacker 有兴趣可以尝试使用。
由于目前还没有正式发布,我们需要从源码手动编译:
$ make juicefs.tikv
使用 TiKV 作为元数据引擎时,需要使用如下格式来指定参数:
tikv://<pd_addr>[,<pd_addr>...]/<prefix>
其中 prefix 是用户自定义的字符串,当多个文件系统共用一个 TiKV 集群时可用来区分,例如:
$ juicefs.tikv format \
--storage minio \
--bucket http://192.168.1.6:9000/jfs \
--access-key minioadmin \
--secret-key minioadmin \
tikv://192.168.1.6:2379,192.168.1.7:2379,192.168.1.8:2379/jfs \
<your-volume-name>
挂载文件系统:
$ sudo juicefs.tikv mount -d tikv://192.168.1.6:6379,192.168.1.7:6379,192.168.1.8:6379/jfs /mnt/jfs
以上就是 JuiceFS 即将发布的 TiKV 元数据引擎的配置方法。目前,我们的工程师还在对 TiKV 引擎做持续的优化,以期更理想的综合表现。如果你对 JuiceFS 的引擎或其他的功能实现有好的意见或建议,非常欢迎到 GitHub 上与我们一起探讨交流。