IT技术互动交流平台

mogileFS分布式文件存储解决方案

作者:Cisco527  发布日期:2013-11-12 09:44:52

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体系结构说明:


Tag标签: mogileFS   文件存储  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规