分布式文件系统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等,用这个模块可以编写客户端程序,实现文件的备份管理功能等。



马哥Linux,智者的选择

官方站点:www.magedu.com

官方博客:www.178linux.com

官方博客:mageedu.blog.51cto.com



以上是关于分布式文件系统Mogilefs介绍的主要内容,如果未能解决你的问题,请参考以下文章

分布式文件系统MogileFS

mogilefs分布式部署及说明

分布式文件系统mogilefs的简单应用

深入浅出分布式文件系统MogileFS集群

深入浅出分布式文件系统MogileFS集群

mogilefs分布式文件系统搭建详解