分布式文件系统 MogileFS 安装手册

一、【理论知识】

MogileFS 是一个分布式文件存储的 解决方案,它能够做到 不需要特殊的核心组件、无单点失败、自动的文件复制、比RAID好多了、传输中立,无特殊协议(客户端可以通过NFS或HTTP来和MogileFS通 信)、简单的命名空间、不用共享任何东西、不需要RAID、不会碰到文件系统本身的不可知情况 等等优点。

相关知识和安装方面的问题可以去看官方的wiki:http://mogilefs.pbwiki.com/。(有可能被GFW了,请使用代理或者安装一个Firefox的gladder插件来访问)

[ Mogilefs分为几部分 ]

1. 数据库(MySQL)部分
你可以用 mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,你可以单独拿数据库服务器来做,也可以跟其他程序跑在一起,数据库 部分非常重要,类似邮件系统的认证中心那么重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。因此最好是HA结构。

2. 存储节点
mogstored 程序的启动将使本机成为一个存储节点。启动时默认去读/etc/mogilefs/mogstored.conf ,具体配置可以参考配置部分。mogstored启动后,便可以通过mogadm增加这台机器到cluster中。一台机器可以只运行一个 mogstored作为存储节点即可,也可以同时运行其他程序。

3. trackers(跟踪器)
mogilefsd即 trackers程序,类似mogilefs的wiki上介绍的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交 道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。trackers也可以只运行在一台机器 上,也可以跟其他程序运行在一起,只要你配置好他的配置文件即可,默认在/etc/mogilefs/mogilefsd.conf。

4. 工具
主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。

5. Client
Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。

[ 概念定义 ]
可以参考官方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的包安装方式。
要下载包,请在http://search.cpan.org中输入包名,然后下载,一般提供的是最新版,如果版本跟下面不一致,请以最新版为准。

为方便使用,本文包下载地址列表:(不保证您阅读本文的时候有效)

http://search.cpan.org/CPAN/authors/id/J/JH/JHI/BSD-Resource-1.2901.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.22.tar.gz
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.9715.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/Danga-Socket-1.59.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Net-Netmask-1.9015.tar.gz
http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/IO-AIO-3.07.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/Perlbal-1.71.tar.gz
http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Client-Async-0.94.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Server-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.607.tar.gz
http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.008.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/MogileFS-Client-1.08.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/mogilefs-server-2.20.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Base-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/IO-stringy-2.110.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz

包安装次序:(务必按照本次序进行)

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 参数的用法请参考 http://search.cpan.org/~dormando/MogileFS-Utils/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

  1. #=======================================
  2. use MogileFS::Client;
  3. my $mogfs = MogileFS::Client->new(domain=>'testdomain', hosts=>['10.0.22.184:6001'], root=>'/home/xiehl/mogdata',);
  4. my $fh = $mogfs->new_file("file_key", "testclass");
  5. die $fh unless $fh->print($mogfs->readonly);
  6. my $content = "file.txt";
  7. @num = $mogfs->store_content("file_key","testclass",$content);
  8. print "@num \n";
  9. my $file_contents = $mogfs->get_file_data("file_key");
  10. print "$file_contents \n";
  11. #$mogfs->delete("file_key");
  12. $fh->print($file_contents);
  13. @urls = $mogfs->get_paths("file_key");
  14. print "@urls \n";
  15. #=======================================

执行脚本
# perl test.pl

本文返回的内容是:(可能你返回的内容会不同,格式类似就行)

8
SCALAR(0×9ddaaa8)
http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid

在浏览器里输入:http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid,将会看到输出:
file.txt

能够访问我们存储的数据,配置成功!

五、【附加内容】

[ MySQL检测代码 ]

如果需要检测你的DBI和MySQL Client是否安装正常,可以使用一下数据库测试代码来检测能否正常连接到MySQL:

  1. #=======================================
  2. #!/usr/bin/perl
  3. # DBI is perl module used to connect to the database
  4. use DBI;
  5. # hostname or ip of server (for local testing, localhost should work)
  6. $config{’dbServer’} = "localhost";
  7. $config{’dbUser’} = "root";
  8. $config{’dbPass’} = "";
  9. $config{’dbName’} = "test";
  10. $config{’dataSource’} = "DBI:mysql:$config{’dbName’}:$config{’dbServer’}";
  11. # Connect to MySQL
  12. my $dbh = DBI->connect($config{’dataSource’},$config{’dbUser’},$config{’dbPass’}) or
  13. die "Can’t connect to $config{’dataSource’}<br>$DBI::errstr";
  14. print "Connected successfully<br>";
  15. $dbh->disconnect();
  16. #=======================================

[ 相关参考 ]

mogilefs 最新版本安装: http://www.wuei.net/?p=33
Mogilefs学习: http://blog.chifeng.name/?p=220
mogileFS的工作方式: http://www.sunnyu.com/?p=32
mogileFS分布式文件存储解决方案: http://www.sunnyu.com/?p=10

[ 扩展阅读 ]
编译mogileFS的php模块: http://www.sunnyu.com/?p=78
mogileFS体系结构分析: http://www.sunnyu.com/?p=31
mogileFS体系结构分析: http://www.sunnyu.com/?p=30

转载于:https://www.cnblogs.com/wycg1984/archive/2010/04/27/1722413.html

分布式文件系统 MogileFS 安装手册相关推荐

  1. [转]分布式文件系统 MogileFS 安装手册

    一.[理论知识] MogileFS 是一个分布式文件存储的解决方案,它能够做到不需要特殊的核心组件.无单点失败.自动的文件复制.比RAID好多了.传输中立,无特殊协议(客户端可以通过NFS或HTTP来 ...

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

        一,简介    MogileFS是一款开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发.Danga团队开发了包括 Memcached.Mogi ...

  3. FastDFS分布式文件系统的安装及配置

    由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构初期,使用这种简单的方式实现了静态资源的读写分离,但随着网站数据量的增加,图片服务器渐渐成 ...

  4. 分布式文件系统FastDFS安装教程

    前言 FastDFS(Fast Distributed File System)是一款开源轻量级分布式文件系统,本文不讲解原理和架构,只是在个人使用部署过程中耗费了好长时间和精力,遇到了很多的坑,于是 ...

  5. 分布式文件系统mogileFS

    内容: 一.[理论知识] MogileFS 是一个分布式文件存储的 解决方案,它能够做到 不需要特殊的核心组件.无单点失败.自动的文件复制.比RAID好多了.传输中立,无特殊协议(客户端可以通过NFS ...

  6. 基于CentOS的分布式文件系统GlusterFS安装、集群搭建和运维

    一.准备工作 1.1 glusterfs的发展史 2011年10月04日,红帽收购Gluster. 2014年4月30日,红帽公司以1.75亿美元的价格将Ceph的企业级产品提供商Inktank收入囊 ...

  7. nginx 文件服务器 开源,在开源分布式文件系统MogileFS 中使用 Nginx

    然后修改你的 mogstored.conf 这个文件,关掉原来的 Perlbal 的监听.但注意了 mogstored 这个服务还是必须启动的,因为他会监控硬盘的好坏和 IO 的性能,只要给 serv ...

  8. 分布式文件系统之MogileFS的使用

    一.mogilefs简介 MogileFS 是一个开源的分布式文件系统,用于组建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司开发,Danga 团队开发了包 ...

  9. FastDFS分布式文件系统(详细入门级介绍)

    分布式文件系统 (Distributed File System) 是一个软件/软件服务器: 这个软件可以用来管理文件: 但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些 ...

  10. Windows Server 2003 R2中的“分布式文件系统”案例应用

    "分布式文件系统(DFS)"是从Windows 2000 Server开始提供的服务,用于将企业网络中分散的多台服务器进行集中管理并对外提供统一的访问.启用DFS后,网络中的用户只 ...

最新文章

  1. 最长公共子序列Java代码实现
  2. SQL基本语句及用法
  3. oracle 常见操作
  4. 【嵌入式】嵌入式天地博客汇总
  5. C++ STL容器之 list 初步
  6. Java 数字签名原理及产生
  7. GoF的23种设计模式
  8. fluidsim元件库下载_模块七FluidSIM软件应用 (1)
  9. 计算机考试67,注册电气工程师基础考试计算机基础知识试题答案(67)
  10. SubType.prototype.constructor = SubType原因
  11. 【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216
  12. 懒人理财法之基金定投(Automatic Investment Plan)
  13. 用于食品标签的光学字符识别(OCR)视觉系统
  14. 如何确定IP在同一网段
  15. ubuntu下查看电脑系统信息
  16. Python生成汉字字符以及对应分辨率的图片
  17. P1291 SHOI2002 百事世界杯之旅
  18. centos7.4安装中文字体黑体宋体
  19. 基于MTK平台的Android预制语音信箱号码
  20. 图像算法所用软件下载汇总

热门文章

  1. 计算机二级java难不_计算机二级java含金量如何 对就业有帮助吗
  2. 通信中间件 Fast DDS 基础概念简述与通信示例
  3. python 安装talib模块
  4. iapp软件库源码分享
  5. java batik 乱码_linux下batik-rasterizer.jar生成图片中文乱码
  6. JVM内存模型(通俗易懂)
  7. ojdbc maven
  8. GitKraken -- 超好用的 Git 可视化工具
  9. mac制作Windows10镜像
  10. mac M1 下安装docker 及相关镜像