分布式文件系统Mogilefs介绍
Posted 马哥Linux运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式文件系统Mogilefs介绍相关的知识,希望对你有一定的参考价值。
一、分布式文件系统简介:
什么是分布式存储:
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
分布式文件系统设计目标 :
访问透明
位置透明
并发透明
失效透明
硬件透明
可扩展性
复制透明
迁移透明
CAP理论:
C:Consistency(一致性) 任何一个读操作总是能够读取之前完成的写操作。
A:Availability(可用性) 每一次操作总是能够在确定的时间返回。
P: Partition Tolerance ( 分区容错性)在出现网络分区的情况下,仍然能够满足一致性和可用性。
有科学家都在致力于CAP三元素并存的时候,Eric.Brewer教授指出CAP永远无法兼顾,只能根据具体应用来权衡和取舍,并且至多两个元素可以共存,后来由两位麻省理工学院的科学家证明此观点是具有前瞻性的,由此形成Brewer的 CAP定理。
正所谓鱼和熊掌不可兼得,关注一致性就需要处理因系统不可用而带来写操作失败的情况,反之关注可用性就无法保证每次都能读取到最新的写入操作。传统关系型数据库侧重于CA,而非关系型键值数据库则侧重于AP 。
强一致性(ACID):在单机环境中,强一致性可以由数据库的事务来保证;在分布式环境中,强一致性很难做到,即便是做到也会因为分布式事物所带来的性能低下,不适合在互联网的环境中应用。
弱一致性(包括最终一致性):系统不能保证后续访问返回最新的值,在访问到最新值之前这段时间称之为 不一致窗口 。
最终一致性:是弱一致性的一种特例,存储系统保证如果对象有多次更新,在渡过 不一致窗口之后必将放回最后更新的值。
服务器的一致性:N代表节点的个数;W代表更新的时候需要确认已经被更新的节点个数;R代表读取数据需要的节点数量。
W + R > N —->强一致性(通常N=3,W=R=2)
W=N,R=1 —-> 最佳读
W=1,R=N —-> 最佳写
W + R <= N —-> 弱一致性
分布式存储或分布式文件系统
集中式:
NAS
SAN
分布式存储:
专用的元数据节点:集中元数据存储,数据节点至负责存储数据
无专用元数据几点:所有数据均完整存储元数据,存储了部分数据
常见的分布式文件系统:
GFS:Google File System GFS擅长处理单个大文件 。
HDFS:Hadoop Distributed File System 根据GFS思想开发的,擅长处理单个大文件,使用场景,数据不太多的大文件。
TFS:Taobao File System 淘宝开源的文件系统,擅长处理海量小文件,适用于大规模场景。将元数据存储于关系型数据库或其他高性能存储中,从而能维护海量文件元数据。
GlusterFS:去中心化设计:擅长处理单个大文件
ceph:整合到linux内核实现的文件系统,已经被收录在内核,是一个 Linux PB级别的分布式文件系统。
MogilesFS:MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群
二、MogilesFS介绍:
1.MogilesFS简介:
MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
目前使用 MogileFS的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个.国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店,大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。
2.MogileFS特性:
1) 应用层提供服务,不需要使用核心组件
2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
3)自动复制文件,复制文件的最小单位不是文件,而是class
4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信
5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现
6)不用共享任何数据
3.MogileFS的组成
1)Tracker–跟踪器,调度器
MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等.这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),包括将请求负载平衡到多个”query workers”中,然后让mogilefs的子进程去处理.
mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡.trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,tarcker的配置文件为/etc/mogilefs/mogilefsd.conf,监听在TCP的7001端口
2)Database–数据库部分
主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
3)mogstored–存储节点
数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何 WebDAV 服务器都可以, 不过推荐使用 mogstored . mogilefsd可以配置到两个机器上使用不同端口… mogstored 来进行所有的 DAV 操作和流量,IO监测,并且你自己选择的HTTP服务器(默认为 perlbal)用来做 GET 操作给客户端提供文件.
典型的应用是一个挂载点有一个大容量的SATA磁盘. 只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点.当然还需要mogadm这个工具增加这台机器到Cluster中.
配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口
4.基本工作流程:
应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.
tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。
应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).
应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.
tracker 将该名称和域命的名空间关联 (通过数据库来做的)
tracker, 在后台,开始复制文件,知道他满足该文件类别设定的复制规则
5.MogileFS的组成:
1) server:主要包括mogilefsd和mogstored两个应用程序。mogilefsd实现的是tracker,它通过数据库来保存元数据信息,包括站点domain、class、 host等;mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口,接受客户端的文件存储请求。在MogileFS安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
2) utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。
3) 客户端API:MogileFS的客户端API很多,例如Perl、php、Java、Python等,用这个模块可以编写客户端程序,实现文件的备份管理功能等。
以上是关于分布式文件系统Mogilefs介绍的主要内容,如果未能解决你的问题,请参考以下文章