流行的开源分布式文件系统比较

简介: http://get.jobdeer.com/501.get 我现在有海量的数据文件(1000万个文件)需要存储,需要让其他计算机可以很容易地访问,数据无价,我还希望这个文件系统带冗余功能。

http://get.jobdeer.com/501.get

我现在有海量的数据文件(1000万个文件)需要存储,需要让其他计算机可以很容易地访问,数据无价,我还希望这个文件系统带冗余功能。



我首先注意到的是Ubuntu Enterprise Cloud的提供者:Eucalyptus。它提供了和AWS(Amazon Web Service)几乎完全兼容的云计算接口。看起来似乎是个云存储的靠谱解决方案。


Eucalyptus模仿Amazon的S3服务,提供了一个叫做Walrus的存储服务组件。


可是,经过一番探索,我发现Eucalyptus想说爱你不容易。


一方面是因为Eucalyptus配置起来很麻烦,缺乏文档,网上几乎找不到任何相关帮助,


另一方面,虽然理论上Eucalyptus和AWS的EC2/S3兼容,但实际上并非如此,很多在AWS上可以用的工具,在Eucalyptus上就无法使用


最关键是,直到最后我把Walrus配置完成之后,才发现Walrus根本不像我想的那样,是一个带冗余的云存储系统。而只是一个实现了S3接口的单机软件而已。


实际上Walrus和Eucalyptus的另一个组件sc(storage controller)没有任何关联,Walrus只是提供了和S3一致的接口,而它的实现方式,既不带冗余,也不能分开部署在多台服务器上。


于是我开始寻找一个真正的分布式文件系统,来解决我的存储难题。一找才发现,市面上各种分布式文件系统品种繁多,层出不穷。列举几个主要的:


mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多。


fastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。


mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多


glusterFS:支持FUSE,比mooseFS庞大


ceph:支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟。


lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖


NFS:老牌网络文件系统,具体不了解,反正NFS最近几年没发展,肯定不能用。


本来我打算用mogileFS,因为它用的人最多,而且我的主要需求都是在web方面。


但是研究了它的api之后发现,Key-Value型文件系统没有目录结构,导致不能用list某个子目录的所有文件,不能直接像本地文件系统一样操作,干什么事情都需要一个api,让人十分不爽。


mogileFs这种做法,可能是受同一个开发团队的另一个大名鼎鼎的产品memcached的侦听端口+api模式影响,也有可能是mogileFS刚开始设计的时候,FUSE还没有开始流行。


总之我决心要找一个支持FUSE的分布式文件系统,最后就在mooseFS, glusterFS, ceph中选择。从技术上来看,ceph肯定是最棒的,用c编写,进入linux-2.6.34内核,基于btrfs文件系统,保证了它的高性能,而多台master的结构彻底解决了单点依赖问题,从而实现了高可用。可是ceph太不成熟了,它基于的btrfs本身就不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中。


而且国内用的人较少,linux发行版中,ubuntu10.04的内核版本是2.6.32,仍然不能直接使用ceph。


而glusterFS比较适合大型应用,口碑相对较差,因此也不考虑。


最后我选择了缺点和优点同样明显的mooseFS。虽然它有单点依赖,它的master非常占内存。但是根据我的需求,mooseFS已经足够满足我的存储需求。国内mooseFS的人比较多,并且有很多人用在了生产环境,更加坚定了我的选择。


打算用一台高性能服务器(双路至强5500, 24GB内存)作为为master,两台HP DL360G4(6块SCSI 146GB)作为chunk服务器,搭建一个冗余度为2的分布式文件系统,提供给web服务中的每一台服务器使用。
目录
相关文章
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
594 5
|
5月前
|
存储 NoSQL Linux
JuiceFS-开源分布式文件系统入门(一篇就够了)(下)
JuiceFS-开源分布式文件系统入门(一篇就够了)(下)
109 0
|
8天前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch
|
19天前
|
分布式计算 Ubuntu 调度
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
|
5月前
|
存储 关系型数据库 MySQL
[重磅更新]PolarDB-X V2.3 集中式和分布式一体化开源发布
2023年云栖大会,PolarDB-X 正式发布 2.3.0版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,可以100%兼容MySQL。同时在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。
|
5月前
|
存储 Kubernetes API
JuiceFS-开源分布式文件系统入门(一篇就够了)(上)
JuiceFS-开源分布式文件系统入门(一篇就够了)(上)
183 0
|
7月前
|
缓存 算法 架构师
阿里P9架构师终于把毕生心血而成的分布式高可用算法笔记开源了
说在前面的话 分布式系统无处不在。 一台计算机内部多个互联的处理器组成了一个分布式系统,它们通过“一致性缓存”算法使每个处理器核心看到相同的数据。近三十年来,随着互联网的发展,越来越多的互联网后台系统采用计算机集群的方式来应对海量请求和数据的需求,这个计算机集群也是分布式系统。 为了简化分布式系统的开发,出现了很多为开发者提供分布式框架的开源项目,例如Apache基金会旗下的ZooKeeper项目就是一个应用广泛的分布式框架。 同时,国内也有很多关于如何使用这些分布式框架来搭建应用的书籍,它们极大地推动了分布式系统在国内的应用。我们不仅要知道如何使用这些现成的分布式框架来搭建应用,而且应
|
4月前
|
存储 消息中间件 分布式计算
重磅开源!阿里巴巴分布式核心原理,成功登顶GitHub周榜!
分布式系统架构是当今互联网企业的重要基础设施,它能够支撑海量用户并发访问和亿级数据量的超大规模业务系统。阿里巴巴作为互联网巨头,在分布式架构方面有着丰富的经验与成果(文末有免费领取方式!)
|
9月前
|
敏捷开发 架构师 Java
GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽
在分布式系统中,一次业务处理可能需要多个应用来实现,比如用户发送一次下单请求,就涉及到订单系统创建订单,库存系统减库存,而对于一次下单,订单创建与减库存应该是要同时成功或者同时失效,但在分布式系统中,如果不做处理,就很有可能订单创建成功,但是减库存失败,那么解决这类问题,就需要用到分布式事务……
|
5月前
|
Ubuntu 调度 数据安全/隐私保护
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公