高手问答第 274 期 —— 聊聊分布式文件系统与 JuiceFS

OSC哒哒 发布于 01/04 18:53
阅读 5K+
收藏 15

文件系统是计算机中一个非常重要的组件,为存储设备提供一致的访问和管理方式。在不同的操作系统中,文件系统会有一些差别,但也有一些共性几十年都没怎么变化:

  1. 数据是以文件的形式存在,提供 Open、Read、Write、Seek、Close 等API 进行访问;
  2. 文件以树形目录进行组织,提供原子的重命名(Rename)操作改变文件或者目录的位置。

文件系统提供的访问和管理方法支撑了绝大部分的计算机应用,Unix 的“万物皆文件”的理念更是凸显了它的重要地位。JuiceFS 是一款开源分布式文件系统,创新的将对象存储作为底层存储介质,实现了存储空间的无限扩展。任何存入 JuiceFS 的文件都会按照特定规则被拆分成固定大小的数据块保存在对象存储,数据块的元数据则保存在 Redis、MySQL 等数据库中。

OSCHINA 本期高手问答(1 月 5 日- 1 月 11 日)将以「分布式文件系统」为切入点展开讨论,「分布式文件系统的架构设计」、「分布式文件系统的特点」,除了上述范围,你也可以将讨论的内容外延到文件系统整个领域,包括文件系统的发展历程、未来展望、应用场景等等,还可以专注于开源的分布式文件系统 JuiceFS 的架构设计、实践等。

为此,我们邀请到了嘉宾@苏锐   @Juicedata 来和大家一起探讨分布式文件系统。

 嘉宾简介

苏锐,JuiceFS 合伙人,作为1号成员参与创建 JuiceFS,先通过全球公有云上的 SaaS 产品获得国内外几十家商业客户,之后于 2021 年 1 月 JuiceFS 开源。

为了鼓励踊跃提问,@Juicedata  会在问答结束后从提问者中抽取 5 名幸运用户赠予 JuiceFS 定制搪瓷杯一个
 
 

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

加载中
1
小白兔爱吃大灰狼
小白兔爱吃大灰狼

高手问答第 274 期 —— 聊聊分布式文件系统与 JuiceFS

@zzy00321   @乌龟壳   @crf1111   @Li_Peng   @贺小皮蛋

恭喜以上五位网友分别获得       JuiceFS 定制搪瓷杯一个
请于1月21日前登陆账号,   私信     @小白兔爱吃大灰狼              告知快递信息(格式:姓名+电话+地址)
0
小xu中年
小xu中年

@苏锐 不知道新的JuiceFS是依赖redis、mysql什么版本呢?如何考虑系统安全问题呢?

苏锐
苏锐
Redis 可以参考最佳实践 https://juicefs.com/docs/zh/community/redis_best_practices 各种引擎用流行的版本都能支持,JuiceFS 会尽量兼容更多的引擎和版本
0
z
zzy00321

@苏锐 JuiceFS的对象存储相对传统的块存储分布式文件系统有啥优点?JuiceFS的存储现在是针对什么业务场景使用的?

苏锐
苏锐
您的问题很专业。JuiceFS 是一个 object-based 的分布式文件系统,相比 block-based 有更好的弹性。Object Storage 可以认为是完全弹性的,但是 Block Storage 大多做不到。目前 JuiceFS 主要用在 大数据、AI、DevOps 和各种需要 NAS 的应用场景,在 juicefs.com 上可以看到很多案例和客户实践
0
贺小皮蛋
贺小皮蛋

@苏锐  老师您好 如果文件被拆分成固定大小的数据块,那这些数据块是怎么保证顺序的,以及数据库块的大小是固定的吗 会不会出现大量的内存碎片, 读取的时候是不是要占用大量内存进行合并数据库 

苏锐
苏锐
碎片合并有的。读取的时候不用担心,各种存储系统在读的时候也都是按某个大小的 page/block 去读
苏锐
苏锐
文件被分成很多 data block 存在对象存储中,每个 block key 会存在 meta engine 里(直接存太占空间了,设计上 16 个 block 为一个 chunk,存储 chunkid + offset)。block size 默认设为 4MiB 是最大值,实际会有小于该值的 block。
苏锐
苏锐
相反,还能提升性能。因为更容易通过并发方式同时读很多的 block 返回给调用端,当然获得高吞吐的同时,需要用一点内存资源来换
苏锐
苏锐
比如想读 1GB 的文件,在存储中是 sequantial read。如果全部读出来返回给请求端,更占内存,调用端的等待时间更长。都是 4K/64K/256K/1M 等容量去顺序读,以一个 streaming 的方式持续返回给调用端。所以 JuiceFS 把文件分成 block 存储不会影响性能。
0
blu10ph
blu10ph

@苏锐 您好,考虑到存取速度、修复难度以及迁移,对于底层文件系统的选择有什么推荐的吗?~

苏锐
苏锐
修复难度是个很难回答的好问题。需要您详细说说,要看是什么类型的损坏。
苏锐
苏锐
存取速度容易判断,结合你的业务场景来测试评估就行了。我想说的是在分布式存储中,只用一些 Benchmark Tool 来看跑分和实际业务场景中的表现是有不同的,一定用业务场景来测试。 迁移方面,通用流行的访问协议都不难,比如 JuiceFS 完全兼容 POSIX、HDFS、S3,还提供 juicesync 这个数据迁移工具,兼容几十种对象存储的 API。要考虑的是数据迁移中,业务的影响。
0
Morty777
Morty777

@苏锐  JuiceFS的跨节点、机架、机房、区域的副本放置策略,可用性程度,能不能简单讲讲

一致性协议的实现 以及涉及到 元数据管理,主丛切换的及时性和正确性

最后 就是 各种突发情况下 主从同步的策略,全面高效的负载均衡(空间/吞吐/副本)

苏锐
苏锐
JuiceFS 社区版使用流行的数据库引擎,包括 Redis、MySQL、PostgresSQL、TiKV 这些,每一个都有很多运维的实践经验。部署和运维的方案都用这些数据库引擎社区推荐的,必要的地方 JuiceFS 会提供一些最佳实践,比如使用 Redis 做元数据引擎 https://juicefs.com/docs/zh/community/redis_best_practices
0
crf1111
crf1111

@苏锐 老师好,JuiceFS是否提供开放Key-Value Storage的API接口,以及有哪些支持的程序设计语言?另外,对于有大量小文件写入的效率如何?谢谢,老师了。

苏锐
苏锐
Python SDK https://github.com/megvii-research/juicefs-python
苏锐
苏锐
可以用 S3 API 读写 JuiceFS 数据,参考 https://juicefs.com/docs/zh/community/s3_gateway 如果以 POSIX 方式访问,各种编程语言都原生支持了。编程语言的 SDK 目前有 Java SDK(是兼容 HDFS API 的)
0
o
osc_69772279

@苏锐 对于大文件的拆分性能是如何

苏锐
苏锐
JuiceFS 的优势所在,参照 https://juicefs.com/docs/zh/community/benchmark/
0
pyboy58
pyboy58

@苏锐    1.JuiceFS和 nas  nfs存储有啥区别?JuiceFS 优势在哪里?

2.JuiceFS 使用了什么设计模式?

苏锐
苏锐
1. 相比 NAS,JuiceFS 为云环境设计;弹性容量;更丰富的访问方式,包括 POSIX、HDFS、S3、K8s CSI;在 大数据、AI、DevOps 和众多需要 NAS 的场景上都适用,更高性价比 2. 参考架构设计 https://juicefs.com/docs/zh/community/architecture 采用元数据与数据分离的设计方案
0
Mark哥是我
Mark哥是我
同ceph是一类产品吗?如果是优势在哪里?
苏锐
苏锐
和 CephFS 是一类产品,可以参考 https://juicefs.com/docs/zh/community/comparison/juicefs_vs_cephfs
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部