mogileFS是一个散播式文件存储的办理方案,他由Six Apart开拓下面列出了他的一些特性(由mogileFS页面 先容翻译而来)
1. 操纵层——不必要出格的核心组件
2. 无单点失败——MogileFS安装的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个 呆板上,因此没有单点失败。(你也可以将跟踪器和存储节点运行在同一台呆板上,如许你就没有须要用4台呆板)推举至少两台呆板。
3. 主动的文件复制——基于差别的文件“分类”,文件可以被主动的复制到多个有充足存储空间的存储节点上,如许可以满意这个“种别”的最少复制哀求。比如你有一 个图片网站,你可以设置原始的JPEG图片必要复制 至少三份,但实际只有1or2份拷贝,假如损失了数据,那么Mogile可以重新成立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节 约 磁盘,不然你将存储同样的拷贝多份,完备没有须要。
4. “比RAID很多几多了”——在一个非存储地区网络的RAID(non-SAN RAID)的成立中,磁盘是冗余的,但主机不是,假如你所有呆板坏了,那么文件也将不能拜访。 MogileFS在差别的呆板之间举办文件复制,因此文件始终是可用的。
5. 传输中立,无出格协议——MogileFS客户端可以通过NFS或HTTP来和MogileFS的存储节点来通讯,但起首必要见告跟踪器一下。
6. 大略的定名空间——文件通过一个给定的key来断定,是一个全局的定名空间。你可以本身天生多个定名空间,只要你乐意,不外如许也许在同一MogileFS中会造成key斗嘴。
7. 不消共享任何对象——MogileFS不必要依靠昂贵的SAN来共享磁盘,每个呆板只用掩护好本身的磁盘。
8. 不必要RAID——在MogileFS中的磁盘可以是做了RAID的也可以是没有,假如是为了安详性着想的话RAID没有须要买了,由于MogileFS已经供给了。
9. 不会碰到文件体系本身的不可知情况——在MogileFS中的存储节点的磁盘可以被技俩化成多种技俩(ext3,reiserFS等等)。MogilesFS会做本身内部目次的哈希,以是它不会碰到文件体系本身的一些限定,比如一个目次中的最大文件数。你可以放心的应用。

Mogilefs 的网站所在(http:// /mogilefs )

php 扩张 的所在( )供给了一个php扩张用来在php中应用mogileFS。
这儿也有一个所在,svn的源码库

mogileFS 安装步调(
mogileFS 应用perl 编写的,在安装前你应当先安装好perl。同时mogileFS也必要一个数据库用来生涯文件数据的跟踪信息(如今好像可以应用MySQL推举 , SQLite,Oracle,Postsql)。

这儿有一个兄弟的中文安装学习条记 mogileFS学习

mogileFS 适宜于静态存储,就是那种一次生涯,多次读取型的资源,比如以html行动静态化处理赏罚的动态文件,图片文件,其他只供给下载的文件等。

二、mogileFS的事变行动

下面扼要阐述 MogileFS 是怎么事变的.

mogileFS由如下一些部分构成:
Application: 想要 生涯/加载 文件的操纵
Tracker (the mogilefsd process): 基于变乱的(event-based) 父 进程/动静 总线来管理全部来之于客户妒攀??用的交互(requesting operations to be performed), 包孕将哀求负载均衡到 “query workers” 中,让mogilefsd的子进程行止理赏罚. 你可以在差别的呆板上运行两个Tracker, 为了高可用性, 或应用更多的Tracker为了负载均衡(你必要运行多于两个的Tracker). mogilefsd的子进程有:
Replication — 个呆板间复制文件
Deletion — 从定名空间删除是立即的,从文件体系删除是异步的
Query — 相应客户端的哀求
Reaper — 在磁盘失败后将文件复制哀求重新放到行列中
Monitor — 监测主机和设配的康健度和状况

Database — 数据库用来寄放MogileFS的元数据 (定名空间, 和文件在那边). 这应当设置一个高可用性(HA)的环境以预防单点失败.
Storage Nodes — 实际文件寄放的地方. 存储节点是一个HTTP做事器,用来做 删除,寄放等事变,任何WebDAV做事器都可以, 不外推举应用 mogstored 。 mogilefsd 可以设置到两个呆板上应用差别端口… mogstored 为全部 DAV 操纵 (和流量监测), 并且你本身选择的快速的HTTP做事器用来做 GET 操纵(给客户端供给文件). 典范的用户没一个加载点有一个大容量的 SATA 磁盘,他们被加载到 /var/mogdata/devNN.

High-level 流程:
操纵措施哀求打开一个文件 (通过RPC 关照到 tracker, 找到一个可用的呆板). 做一个 “create_open” 哀求.
tracker 做一些负载均衡(load balancing)处理赏罚,决议应当去哪儿,然后给操纵措施一些也许用的职位。
操纵措施写到此中的一个职位去 (假如写失败,他会重新实行并写到其它一个职位去).
操纵措施 (client) 通过”create_close” 见告tracker文件写到那边去了.
tracker 将该名称和域命的名空间关联 (通过数据库来做的)
tracker, 在靠山, 起头复制文件,知道他满意该文件种别设定的复制正直
然后,操纵措施通过 “get_paths” 哀求 domain+key (key == “filename”) 文件, tracker基于每一职位的I/O忙碌情况中兴(在内部颠末 database/memcache/etc 等的一些决议处理赏罚), 该文件可用的完备 URLs所在列表.
操纵措施然后按序次实行这些URL所在. (tracker’继承监测主机和装备的状况,因此不会返回逝世毗连,默认情况下他对返回列表中的第一个元素做双重反省,除非你不要他这么做..)

[ 观念界说 ]
可以参考官方wiki的这儿,大略说一下
domain:最高域,在一个域下key是唯一的。
class:包孕在domain中,可以针对每一个class界说生涯的份数。
key:对文件的唯一标识。
file:文件。

[ 适用性 ]
由于Mogilefs不支持对一个文件的随机读写,因此注定了只适宜做一部分操纵。比如图片做事,静态HTML做事。
即文件写入后根本上不必要批改的操纵,固然你也可以天生一个新的文件覆盖上去。

三、【安装Perl和干系包】

[ 安装环境 ]
操纵体系:RHEL 4 (AS 4)
Perl版本:Perl v5.8.8
留意:请确保你的Perl版本为大于 v5.8.8,不然也许安装会有题目,其它,本文全部操纵都是在一台呆板上完成,也许多台呆板上轻微有些差别,请自行调度

[ MySQL ]
安装前致意装好MySQL,假如MySQL Server和MogileFS不是一台呆板,请在MogileFS呆板安装好MySQL Client,本文假设MySQL Client安装在:/usr/local/mysql 目次,安装完客户端后请成立一个软链接:
ln -s /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib/libmysqlclient.so.15

[ Perl包安装 ]

由于MogileFS必要应用很多干系的Perl包,请逐一服从一下序次安装,本文采用的是比拟笨,比拟大略的安装行动,逐个把包下载返来本机手工安装,没有应用cpan的包安装行动。
要下载包,请在中输入包名,然后下载,一样平常供给的是最新版,假如版本跟下面不同等,请以最新版为准。

为利便应用,本文包下载所在列表:(不担保您涉猎本文的时间有效)

包安装序次:(务必服从本序次举办)

BSD-Resource-1.2901.tar.gz
Sys-Syscall-0.22.tar.gz

Time-HiRes-1.9715.tar.gz
Danga-Socket-1.57.tar.gz

Net-Netmask-1.9015.tar.gz
IO-AIO-3.07.tar.gz (本包哀求Perl v5.8.8以上)
Perlbal-1.71.tar.gz

String-CRC32-1.4.tar.gz
Gearman-1.07.tar.gz
Gearman-Client-Async-0.93.tar.gz
Gearman-Server-1.08.tar.gz

#make test 有也许会有一个过错,不消管它
DBI-1.607.tar.gz
DBD-mysql-4.008.tar.gz

#以下下令假设MySQL做事器是在本机
perl Makefile.PL –testhost=localhost –testuser=root –mysql_config=/usr/local/mysql/bin/mysql_config

IO-Compress-Base-2.015.tar.gz
IO-Compress-Zlib-2.015.tar.gz
Compress-Raw-Zlib-2.015.tar.gz
Compress-Zlib-2.015.tar.gz
IO-stringy-2.110.tar.gz

MogileFS-Client-1.08.tar.gz
mogilefs-server-2.20.tar.gz
MogileFS-Utils-2.13.tar.gz

肯定要按以上序次安装,解紧缩,天生Makefile,测试,安装 如许的步调来推行,下令是:

# tar zxvf xxxxx.tar.gz
# cd xxxxx
# perl Makefile.PL
# make
# make test
# make install

如许就安装乐成了,留意make test的过错提醒,假如不是很严峻的过错提醒,根本可以漠视连续下一步。

四、【设置MogileFS】

以下操纵除非明了指定,不然是以root用户来运行,固然,你也可以应用本身的帐户来推行(除了一些特权操纵),其它 10.15.6.28 是本机IP,本尝试只应用了一台呆板。假如设置过程不太顺遂,请反复反省后反复尝试。

1. 创建数据库(初始化)
可以预先在数据库做事器上成立好一个叫做 mogilefs 的数据库,便于举办下面的步调.
#mogdbsetup --dbhost=10.15.6.28 --dbname=mogilefs --dbuser=root

--dbhost 是数据库主机所在, --dbname是数据库名,--dbuser是拜访该数据库的用户,假如有暗码请加上--dbpass选项,最好拜访数据库的是超等用户root可能具有很高权限的新建数据库用户,由于MogileFS必要一些比拟高权限的初始化操纵。

2. tracker设置
新建tracker设置文件 /etc/mogilefsd.conf ,写入以下文件内容:(请去掉#后头的留意信息)

db_dsn DBI:mysql:mogilefs #数据库设置
db_user mogile #数据库用户
db_pass 123123 #数据库暗码
conf_port 6001 #tracker端口
listener_jobs 5

db_dsn指向的是你数据库的职位,假如你数据库不在同一个呆板上,请改为:
db_dsn DBI:mysql:mogilefs:127.0.0.1

由于mogilefsd不能用root用户启动.以是添加mogile用户
# adduser mogile

在设置下面早年先启动 trackers server
# su mogile
# mogilefsd -c /etc/mogilefsd.conf --daemon

3. Storage Server 设置
阐发:以下下令假设你的 Perl 的包文件都在 /usr/lib/perl5/5.8.8 目次,假如不是,请自行批改。

用mogadm器材将storage server加到数据库中:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host add mogilestorage --ip=10.15.6.28 --port=7500 --status=alive
(由于本文是在一台呆板上配,故trackers的所在和ip所在是一样的)

用下面下令来检测是否乐成:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host list

介入一个装备到你的storage server:
# mogadm -lib=/usr/lib/perl5/5.8.8 -trackers=10.15.6.28:6001 device add mogilestorage 1

用下面下令来检测是否乐成:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 device list

Device ID 是唯一的,一旦创建将无法删除,只能mark为dead. 以是,假如你某个磁盘坏了,你mark为dead, 其后又修睦了,
那么你必需重新技俩化并定名为新的device id, 不支持将device从dead变为alive.

新建Storage设置文件: /etc/mogstored.conf 内容是: (请去掉#后头的留意信息)

httplisten=0.0.0.0:7500 #HTTP监听端口
mgmtlisten=0.0.0.0:7501 #MongileFS监听端口
docroot=/opt/mogdata #数据存储物理路径

成立寄放数据的路径:(必需应用root权限手法创建)
# mkdir -p /opt/mogdata/dev1

阐发:mogadm 参数的用法请参考

4. 运行MogileFS

启动 Storage Server
# mogstored -c /etc/mogstored.conf --daemon

假如没有启动Trackers,请启动 Trackers
# su mogile
$ mogilefsd -c /etc/mogilefsd.conf --daemon

查察你全部的做事都起来没有
# ps -ef | grep mogilefsd
# ps -ef | grep mogstored

五、【MogileFS应用测试】

天生domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 domain add testdomain

加一个 class 到domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 class add testdomain testclass

写一个perl文件试一下test.pl
#=======================================
use MogileFS::Client;
my $mogfs = MogileFS::Client->new(domain=>'testdomain', hosts=>['10.0.22.184:6001'], root=>'/home/xiehl/mogdata',);
my $fh = $mogfs->new_file("file_key", "testclass");
die $fh unless $fh->print($mogfs->readonly);
my $content = "file.txt";
@num = $mogfs->store_content("file_key","testclass",$content);
print "@num \n";
my $file_contents = $mogfs->get_file_data("file_key");
print "$file_contents \n";
#$mogfs->delete("file_key");
$fh->print($file_contents);
@urls = $mogfs->get_paths("file_key");
print "@urls \n";
#=======================================

推行脚本
# perl test.pl

本文返回的内容是:(也许你返回的内容会差别,技俩类似就行)

8
SCALAR(0×9ddaaa8)

在涉猎器里输入:,将会看到输出:
file.txt

可以或许拜访我们存储的数据,设置乐成!

六、【附加内容】

[ MySQL检测代码 ]

假如必要检测你的DBI和MySQL Client是否安装正常,可以应用一下数据库测试代码来检测可否正常毗连到MySQL:

#=======================================
#!/usr/bin/perl
# DBI is perl module used to connect to the database
use DBI;
# hostname or ip of server (for local testing, localhost should work)
$config{’dbServer’} = "localhost";
$config{’dbUser’} = "root";
$config{’dbPass’} = "";
$config{’dbName’} = "test";
$config{’dataSource’} = "DBI:mysql:$config{’dbName’}:$config{’dbServer’}";
# Connect to MySQL
my $dbh = DBI->connect($config{’dataSource’},$config{’dbUser’},$config{’dbPass’}) or
die "Can’t connect to $config{’dataSource’}<br>$DBI::errstr";
print "Connected successfully<br>";
$dbh->disconnect();
#=======================================

[ 干系参考 ]

mogilefs 最新版本安装:
Mogilefs学习:
mogileFS的事变行动:
mogileFS散播式文件存储办理方案:

[ 扩张涉猎 ]

编译mogileFS的php模块:
mogileFS体系结构说明:
mogileFS体系结构说明:

转载于:https://blog.51cto.com/cisco130/1323143

mogileFS分布式文件存储解决方案相关推荐

  1. 架构方案(16) 常见分布式文件存储介绍、选型比较、以及架构设计

    数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案.选型.架构设计等. 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从 ...

  2. 分布式文件存储相关概念

    分布式文件存储 1 常见专业术语 1.1 备份技术 出于数据恢复的目的而创建的一份额外的数据副本 分类:直接连接备份,网络连接备份, 脱局域网备份,脱服务器备份 在线备份,离线备份,近线备份 ①冷备份 ...

  3. 常见分布式文件存储介绍、选型比较、架构设计

    数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案.选型.架构设计等. 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从 ...

  4. BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略

    BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介.下载.案例应用之详细攻略 目录 MongoDB的简介 1.MongoDB的主要功能特性 2.对MongoDB进行增删改查( ...

  5. MongoDB 一个基于分布式文件存储的数据库

    简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: ...

  6. 分布式文件存储FASTDFS

    分布式文件存储FASTDFS 目录 概 述 小结 参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot a ...

  7. 盲沟低比?不不不,是芒果的笔,今天学一下分布式文件存储数据库MongoDB。

    老样子先上图,上一篇NOSQL有大佬说要把首图的数据库全部学习了,今天特意只上了一张小图,一个就够了! 文章目录 前言 一.MongoDB 历史 二.MongoDB 支持语言 三.MongoDB 与关 ...

  8. 文件存储解决方案-云存储阿里 OSS

    文件存储解决方案-云存储阿里 OSS 1.文件存储(上传)解决方案讨论 1.图解 文件存储解决方案-云存储阿里 OSS 解读上图 普通上传并不是分布式,也不是集群,可用性不高 普通上传的分布式情况,使 ...

  9. 分布式文件存储--MongoDB

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系 ...

最新文章

  1. 什么是生存分析(survival analysis)?
  2. StoreFront 登陆页面的话持续时间
  3. wxWidgets:wxStdOutputStreamBuffer类用法
  4. vue、bus 使用遇到的坑,组件之间无法传值;vue、bus 第一次获取不到值,后面再点击重复执行
  5. smallint占用几个字节_面试官问我:Object o = new Object() 占用了多少个字节?
  6. __builtin_expect提高运行效率
  7. ajax异步session值不唯一 总是改变 解决办法
  8. svn导入 ubuntu_ubuntu搭建SVN服务器详细教程
  9. 移动端mintUI mt-datetime-picker 组件使用详解
  10. linux 安装 yum 命令源
  11. cookie获取失败(时间差导致的cookie失效)
  12. 解决python处理word文档时的两个问题,截取内容和页眉横线
  13. 图像处理-灰度图像转化为伪彩图像
  14. php footer'=%3e2,为基于Wordpress的博客添加CNZZ统计代码
  15. Duplicate column name xxx
  16. matlab怎么求周期积分,Matlab中怎么求解积分
  17. 大陆打电话到香港要怎么打?那发信息呢?
  18. 公司企业邮箱怎么开通注册?仅需2步,教大家公司企业邮箱怎么弄
  19. “基于485总线的评分系统”
  20. 腾讯云服务器发送邮件的坑

热门文章

  1. SV processses
  2. 新客户上云 –虚拟机及相关服务常见问题集锦
  3. Cocos Studio 2.3.2不再支持直接导入PSD文件
  4. PHP操作MongoDB学习笔记
  5. extern C用法详解
  6. 点点滴滴积累——基于XMLSchema与Annotation的几种Advice的规则
  7. rip v1不支持vlsm的原因
  8. windows复制文件到 vmware centos虚拟机问题
  9. JS执行Promise
  10. 抽象同步器AQS应用之-- Semaphore、CountDownLatch、CyclicBarrier的介绍