紫影基地

 找回密码
 立即注册
查看: 660|回复: 0

分布式文件系统调研

[复制链接]
阅读字号:

57

主题

62

帖子

904

积分

高级会员

Rank: 4

积分
904
发表于 2021-11-8 14:12:31 | 显示全部楼层 |阅读模式
本帖最后由 moonstar 于 2021-11-8 14:23 编辑

数据存储方式

文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些格式各有各的功能和限制。文件存储会以文件和文件夹的层次结构来整理和呈现数据;块存储会将数据拆分到任意划分且大小相同的卷中; 对象存储会管理数据并将其链接至关联的元数据。
三者的本质差别是使用数据的“用户”不同:
  • 文件存储的用户是自然人
  • 块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库
  • 对象存储的用户则是其它计算机软件
块存储

141421d4my9oulyf0f2b5b.png
块存储一般体现形式是卷或者硬盘(比如windows的c盘),数据是按字节来访问的,对于块存储而言,对里面存的数据内容和格式是完全一无所知的。好比上面图中,数据就像玉米粒一样堆放在块存储里,块存储只关心玉米粒进来和出去,不关心玉米粒之间的关系和用途。
块存储只负责数据读取和写入,因此性能很高,适用于对响应时间要求高的系统。比如数据库等。
文件存储

141426ch00b2dku016ebnx.png
文件存储一般体现形式是目录和文件(比如C:\Users\Downloads\text.doc),数据以文件的方式存储和访问,按照目录结构进行组织。文件存储可以对数据进行一定的高级管理,比如在文件层面进行访问权限控制等。好比上面图中,数据像玉米粒一样组成玉米棒子,再对应到不同的玉米杆上,要找到某个玉米粒,先找到玉米杆,再找到玉米棒子,然后根据玉米粒在玉米棒子上的位置找到它。
文件存储可以很方便的共享,因此用途非常广泛。比如常用的NFS、CIFS、ftp等都是基于文件存储的。
对象存储

141439gftef15858v919vs.png
对象存储一般体现形式是一个UUID,数据和元数据打包在一起作为一个整体对象存在一个超大池子里。对于对象访问,只需要报出它的UUID,就能立即找到它,但访问的时候对象是作为一个整体访问的。好比上面图中,数据的玉米粒被做成了玉米罐头,每个玉米罐头都有一个唯一出厂号,但是买卖罐头,都一次是一盒为单位。
从设计之初衷(一般的对象存储都是基于哈希环之类的技术来实现),对象存储就可以非常简单的扩展到超大规模,因此非常适合数据量大、增速又很快的视频、图像等。
分布式文件系统比较及部分原理

[tr]存储系统CephFSGlusterFSTFSHDFSMooseFSFastDFSMogileFS[/tr]
开发语言C++CC++JavaCCPerl
系统性能




很高
数据存储方式对象/文件/块文件/块文件文件文件/块文件
集群节点通信协议私有协议(TCP)私有协议(TCP)/ RDAM(远程直接访问内存)TCPTCPTCPTCPHTTP
专用元数据存储点占用MDS占用NS占用MDS占用MFS占用DB
在线扩容支持支持支持支持支持支持支持
冗余备份支持支持支持支持支持支持不支持
单点故障不存在不存在存在存在存在不存在存在
跨集群同步不支持支持支持不支持不支持部分支持不支持
易用性安装简单,官方文档专业化安装简单,官方文档专业化安装复杂,官方文档少安装简单,官方文档专业化安装简单,官方文档多安装简单,社区相对活跃未知
适用场景单集群的大中小文件跨集群云存储跨集群的小文件Mapreduce使用的文件存储单集群的大中文件单集群的中小文件未知
FUSE挂载支持支持未知支持支持不支持不支持
访问接口POSIXPOSIX不支持POSIX不支持POSIXPOSIX不支持POSIX不支持POSIX
TFS

TFS(Taobao File System)是由淘宝开发的一个分布式文件系统,其内部经过特殊的优化处理,适用于海量的小文件存储,目前已经对外开源。TFS采用自有的文件系统格式存储,因此需要专用的API接口去访问,目前官方提供的客户端版本有:C++/JAVA/PHP(没有C的接口)
  • 特点
    • 主备热切换
    • 所有元数据都是在内存中,处理效率非常高效
    • 系统架构也非常简单,管理也很方便
    • 具备负载均衡和冗余备份的功能;对小文件会采取合并策略,减少数据碎片
  • 优点
    • 针对小文件量身定做,随机IO性能比较高
    • 支持在线扩容机制,增强系统的可扩展性
    • 实现了软RAID,增强系统的并发处理能力及数据容错恢复能力
    • 支持主备热倒换,提升系统的可用性
    • 支持主从集群部署,其中从集群主要提供读/备功能
  • 缺点
    • TFS只对小文件做优化,不适合大文件的存储
    • 不支持POSIX通用接口访问,通用性较低
    • 不支持自定义目录结构,及文件权限控制
    • 通过API下载,存在单点的性能瓶颈
    • 官方文档非常少,学习成本高
  • 应用场景
    • 多集群部署的应用
    • 存储后基本不做改动
    • 海量小型文件

FastDFS

FastDFS是国人开发的一款分布式文件系统,目前社区比较活跃,提供了C、Java和PHP API。实现软RAID10,提升并发IO的性能、简单负载均衡及数据的冗余备份;同时通过线性的添加新的逻辑存储组,从容实现存储容量的线性扩容。文件下载上,除了支持通过API方式,目前还提供了apache和nginx的插件支持,同时也可以不使用对应的插件,直接以Web静态资源方式对外提供下载。内部的网络模型使用比较成熟的libevent三方库,具备高并发的处理能力。
  • 特点
    • Tracker服务器是整个系统的核心枢纽,其完成了访问调度(负载均衡),监控管理Storage服务器
    • FastDFS支持多个备用的Tracker,消除系统的单点故障
    • 只有同组的Storage才做同步
    • FastDFS在主从文件ID上做取巧,完成了关联关系的存储
  • 优点
    • 针系统无需支持POSIX(可移植操作系统),降低了系统的复杂度,处理效率更高
    • 支持在线扩容机制,增强系统的可扩展性
    • 实现了软RAID10,增强系统的并发处理能力及数据容错恢复能力
    • 支持主从文件,支持自定义扩展名
    • 主备Tracker服务,增强系统的可用性
    • 支持小文件合并存储
  • 缺点
    • 不支持POSIX通用接口访问,通用性较低
    • 对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略
    • 同步机制不支持文件正确性校验,降低了系统的可用性
  • 应用场景
    • 单集群部署的应用
    • 存储后基本不做改动
    • 小中型文件

CephFS

Ceph是一个可以按对象/块/文件方式存储的开源分布式文件系统,其设计之初,就将单点故障作为首先要解决的问题,因此该系统具备高可用性、高性能及可扩展等特点。该文件系统支持目前还处于试验阶段的高性能文件系统BTRFS(B-Tree文件系统),同时支持按OSD方式存储,因此其性能是很卓越的。
  • 特点
    • Ceph底层存储是基于RADOS(可靠的、自动的分布式对象存储),它提供了LIBRADOS/RADOSGW/RBD/CEPH FS方式访问底层的存储系统
    • 通过FUSE,Ceph支持类似的POSIX访问方式;Ceph分布式系统中最关键的MDS节点是可以部署多台,无单点故障的问题,且处理性能大大提升
    • Ceph通过使用CRUSH算法动态完成文件inode number到object number的转换,从而避免再存储文件metadata信息,增强系统的灵活性
  • 优点
    • 支持对象存储(OSD)集群,通过CRUSH算法,完成文件动态定位, 处理效率更高
    • 支持通过FUSE方式挂载,降低客户端的开发成本,通用性高
    • 支持分布式的MDS/MON,无单点故障
    • 强大的容错处理和自愈能力
    • 支持在线扩容和冗余备份,增强系统的可靠性
  • 缺点
    • 目前处于试验阶段,系统稳定性有待考究
    • ceph目前还不足够成熟,它基于的btrfs本身也不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中
  • 应用场景
    • 全网分布式部署的应用
    • 对实时性、可靠性要求比较高官方宣传,存储容量可轻松达到PB级别

GlusterFS

GlusterFS是Red Hat旗下的一款开源分布式文件系统,它具备高扩展、高可用及高性能等特性,由于其无元数据服务器的设计,使其真正实现了线性的扩展能力,使存储总容量可 轻松达到PB级别,支持数千客户端并发访问;对跨集群,其强大的Geo-Replication可以实现集群间数据镜像,而且是支持链式复制,这非常适用于跨集群的应用场景。
  • 特点
    • 支持FUSE方式挂载,可以通过标准的NFS/SMB/CIFS协议像访问本体文件一样访问文件系统,同时其也支持HTTP/FTP/GlusterFS访问
    • 通过基于SSH的命令行管理界面,可以远程添加、删除存储节点,也可以监控当前存储节点的使用状态
    • 持集群节点中存储虚拟卷的扩容动态扩容;同时在分布式冗余模式下,具备自愈管理功能,在Geo冗余模式下,文件支持断点续传、异步传输及增量传送等特点
  • 优点
    • 支持POSIX(可移植操作系统),支持FUSE挂载通过多种协议访问,通用性比较高
    • 支持在线扩容机制,增强系统的可扩展性
    • 实现了软RAID,增强系统的并发处理能力及数据容错恢复能力
    • 强大的命令行管理,降低学习、部署成本
    • 支持整个集群镜像拷贝,方便根据业务压力,增加集群节点
    • 官方资料文档专业化,该文件系统由Red Hat企业级做维护,版本质量有保障
  • 缺点
    • 通用性越强,其跨越的层次就越多,影响其IO处理效率
    • 频繁读写下,会产生垃圾文件,占用磁盘空间
  • 应用场景
    • 多集群部署的应用
    • 中大型文件根据目前官方提供的材料,现有的使用GlusterFS系统存储容量可轻松达到PB

MooseFS

MooseFS是一个高可用的故障容错分布式文件系统,它支持通过FUSE方式将文件挂载操作,相对比较轻量级,同时其提供的web管理界面非常方便查看当前的文件存储状态。但其对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多。
HDFS

安装简单,官方文档专业化;大数据批量读写,吞吐量高;一次写入,多次读取,顺序读写;难以满足毫秒级别的低延时数据访问;不支持多用户并发写相同文件;不适用于大量小文件;适合存储非常大的文件。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-12 09:46 , Processed in 0.095049 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表