分布式存储系统 MogileFS和FastDFS

本文详细介绍了分布式文件系统MogileFS和FastDFS的特性、架构及工作原理。MogileFS由tracker节点、database节点和storage节点组成,支持多节点冗余和自动文件复制。FastDFS则采用分组存储,文件ID由系统生成,支持与web server无缝对接。两者都在分布式存储中提供高效的数据管理和冗余备份方案。
摘要由CSDN通过智能技术生成
MogilesFS介绍

1、MogilesFS简介:
      MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个,国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。
2、MogileFS特性:

  • 1 )支持多节点冗余
  • 2)可实现自动的文件复制
  • 3)使用名称空间(命名空间),每个文件通过key来确定,比如123.jpg是一个key,真正存储的位置可能是/000/000/00/01/md5hash.fid
  • 4)不需要RAID,应用层可直接实现RAID,不共享任何东西,通过”集群接口”提供服务
  • 5)工作于应用层,没有特殊的组件要求
  • 6)不用共享任何数据,MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘

3、MogileFS的架构
MogileFS主要由三部分构成:tracker节点、database节点、storage节点
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的元数据(命名空间和文件在哪里等),是trackers来操作和管理它,可以用mogdbsetup程序来初始化数据库,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
3)storage–存储节点
      这个是MogileFS存储数据的真正节点,也是mogstored节点,也叫storage server,一台存储节点要启动一个mogstored服务,扩容就是增加这些主机节点实际存放数据的地方
配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口

3、MogileFS的工作原理
这里写图片描述
      客户端的请求先发给tracker节点,然后tracker节点到database节点去查询数据存储在什么位置,然后将结果反馈给客户端,客户端再根据tracker节点提供的路径去访问相应的storage节点去找到数据。tracker节点除了帮助客户端到数据库中去检索你要查找的数据,还管理storage节点,如果storage节点有损坏的,会控制storage节点进行数据自动迁移到其他节点,同时数据备份的时候也是由trackers节点来控制复制几个副本的。
4、MogileFS管理的几个概念
1、Domain:一个mogilefs可以有多个domain,用来存放不同文件(大小、类型),同一个domain内key必须唯一,不同domain内key可以是相同的
2、每个存储节点称为一个host主机,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有一个ID号,Domain+Fid来定位文件
3、Class:文件属性管理,复制文件的最小单位不是文件,而是class,定位文件存储在不同设备上的份数,也就是定义副本的数量

MogileFS安装和使用示例
准备三个主机,node1为tracker节点、database节点、storage节点,node2和node3为storage节点
1、在三个节点安装如下软件包

yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO #先用yum安装安装环境需要的包
[root@node1 app]#ls #将如下安装包下载到本地,再用yum本地安装如下包

MogileFS-Server-2.46-2.el7.centos.noarch.rpm #核心服务
MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm #tracker节点
MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm #storage节点
MogileFS-Utils-2.19-1.el7.centos.noarch.rpm #mogilefs的一些管理工具,如mogadm
perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm #依赖包
perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm

[root@node1 app]#yum localinstall ./*  -y #在三个节点上都要安装

2、在node1上操作

[root@node1 app]#yum install mariadb-server
[root@node1 app]#systemctl start mariadb
[root@node1 app]#ss -nlt
[root@node1 app]#mogdbsetup --help #初始化数据库的命令
[root@node1 app]#mogdbsetup --dbuser mogile --dbpass 123

#进行初始化数据库,会创建了一个mogilefs的数据库,同时里面有很多表,授权了一个mogile用户在任何主机都可以连接到此数据库

[root@node1 app]#vim /etc/mogilefs/mogilefsd.conf  #修改tracker的配置文件
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 #指明数据库的主机
db_user = mogile #授权的用户
db_pass = 123 #授权的密码
listen = 0.0.0.0:7001
[root@node1 app]#service mogilefsd start #启动tracker服务
[root@node1 app]#ss -nlt #发现监听在tcp/7001端口

3、在三个节点上对storage节点进行配置

[root@node1 app]#vim /etc/mogilefs/mogstored.conf #配置storage节点
maxconns = 10000 #最大并发连接
httplisten = 0.0.0.0:7500 #监听的端口
mgmtlisten = 0.0.0.0:7501 #管理命令监听的端口
docroot = /app/data/  #指明数据存放的目录,一般这个目录要使用单独的磁盘进行挂载,本实验就使用目录代替了,没有单独挂载磁盘
[root@node1 app]#mkdir /app/data
[root@node1 app]#chown mogilefs:mogilefs /app/data -R
[root@node1 app]#service mogstored start #启动storage服务
Starting mogstored (via systemctl):                        [  OK  ]
[root@node1 app]#ss -nlt #发现监听的是7500端口

4、在node1上的操作
添加主机到trackers中,这样storage节点才能被tracker节点所管理,并将主机信息注册到数据库中

[root@node1 app]#mogadm check #查看状态
[root@node1 app]#mogadm host add node1 --ip=172.18.21.107 --port=7500 --status=alive #添加storage节点的主机到tracker中
[root@node1 app]#mogadm host add node2 --ip=172.18.21.7 --port=7500 --status=alive
[root@node1 app]#mogadm host add node3 --ip=172.18.21.100 --port=7500 --status=alive
[root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值