MogileFS介绍及安装

来源:互联网 发布:淘宝开店类目有哪些 编辑:程序博客网 时间:2024/06/10 19:57

此文件有pdf说明文件但无法上传


安装包自己做了一些安装脚本,需要的q我呵呵

   MogileFS是一种分布式文件存储系统。可支持文件自动备份的功能,提供高可用性和高可扩展性。Mogilefs不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用,如图片服务,静态HTML服务等,这些应用在文件写入后基本上不需要对文件进行修改,但是可以生成一个新的文件覆盖原有文件。

Mogilefs分为如下几部分:

1、数据库部分

数据库保存了Mogilefs的所有元数据,一般使用MySQL,可以单独拿数据库服务器来做,也可以跟其他程序跑在一起。可以用 mogdbsetup程序来初始化数据库。数据库部分非常重要,因为一个MogileFS系统的所有Tracker都必须指向同一个数据库,因此如果数据库出现问题,那么整个MogileFS系统将处于不可用状态,因此数据库最好采用HA结构,如MySQL主从复制架构,这样可以降低数据库出现问题对 MogileFS系统的影响。

2、跟踪器(Tracker)

mogilefsd即trackers程序,类似mogilefs的wiki上介绍,trackers做了很多工作,主要有以下几个:

    * Replication: 机器间复制文件

    * Deletion:从命名空间删除是立即的,从文件系统删除是异步的

    * QueryWorker: 响应客户端的请求

    * Reaper:在磁盘失败后将文件复制请求重新放到队列中

    * Monitor:监测主机和设配的健康度和状态

Tracker是访问MogileFS的入口,所有系统管理相关的操作都要通过其中的某个trackers完成,应用系统的一些操作也要通过trackers,因此一个高业务量的MogileFS系统最好同时运行多个trackers来做负载均衡。

3、存储节点(Storage)

mogstored程序的启动将使本机成为一个存储节点。mogstored启动后,便可以通过mogadm增加这台机器到系统中。一台机器可以只运行一个 mogstored作为存储节点即可,也可以同时运行其他程序。存储节点下面还需要定义设备(device),每个设备都有一个唯一的ID编号,设备也是用mogadm添加到MogileFS系统中的。

4、工具

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

5、客户端(Client)

客户端通过接口访问mogilefs系统,对整个系统进行文件读写操作。

(http://www.admindigest.com/4/mogilefs%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE/#mogilefs%E4%BB%8B%E7%BB%8D)

MogileFS特点

    * 应用层——不需要特殊的核心组件

    * 无单点失败——MogileFS安装的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个机器上,因此没有单点失败。(你也可以将跟踪器和存储节点运行在同一台机器上,这样你就没有必要用4台机器)推荐至少两台机器。(没有单点失败本人持保留意见)

    * 自动的文件复制——基于不同的文件分类,文件可以被自动的复制到多个有足够存储空间的存储节点上,这样可以满足这个类别的最少复制要求。比如你有一个图片网站,你可以设置原始的JPEG图片需要复制 至少三份,但实际只有1or2份拷贝,如果丢失了数据,那么Mogile可以重新建立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节约 磁盘,否则你将存储同样的拷贝多份,完全没有必要。

    * 比RAID好多了”——在一个非存储区域网络的RAID(non-SAN RAID)的建立中,磁盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 MogileFS在不同的机器之间进行文件复制,因此文件始终是可用的。

    * 传输中立,无特殊协议——MogileFS客户端可以通过NFS或HTTP来和MogileFS的存储节点来通信,但首先需要告知跟踪器一下。

    * 简单的命名空间——文件通过一个给定的key来确定,是一个全局的命名空间。你可以自己生成多个命名空间,只要你愿意,不过这样可能在同一MogileFS中会造成key冲突。

    * 不用共享任何东西——MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘。

    * 不需要RAID——在MogileFS中的磁盘可以是做了RAID的也可以是没有,如果是为了安全性着想的话RAID没有必要买了,因为 MogileFS已经提供了。

* 不会碰到文件系统本身的不可知情况——在MogileFS中的存储节点的磁盘可以被格式化成多种格式(ext3,reiserFS等等)。 MogilesFS会做自己内部目录的哈希,所以它不会碰到文件系统本身的一些限制,比如一个目录中的最大文件数。你可以放心的使用。

mogileFS 适合于静态存储,就是那种一次保存,多次读取型的资源,比如以html方式静态化处理的动态文件,图片文件,其他只提供下载的文件等。

(http://blog.csdn.net/starxu85/archive/2008/12/04/3447301.aspx)

Mogilefs 的网站地址(http://www.danga.com/mogilefs)

MogileFS实例架构图

    两台服务器10.0.0.122和10.0.0.130,分别安装Tracker, Storage。服务器10.0.0.122安装MySQL主数据库,服务器10.0.0.130安装MySQL从数据库。两台服务器上的Tracker 都使用10.0.0.122的MySQL主数据库进行数据插入、更新和查询,同时可以使用10.0.0.130的MySQL从数据库进行数据的查询。




本文档所使用架构情况是:



MogileFS安装

(详细的安装可以参考:http://code.google.com/p/mogilefs/http://www.admindigest.com/4/mogilef

简单化安装可以下载MFS.tgz,内部封装好的安装包。

简单化安装可以下载MFS.tgz,内部封装好的安装包。

1.tar -zxvf  libwww-perl-xxx.tar.gz && cd libwww-perl-xxx && perl Makefile.PL && make && make install(具体原因参考附录Can't locate LWP/UserAgent.pm in @INC)

2.tar -zxvf mysql-5.1.41-linux-x86_64-icc-glibc23.tar.gz && cd mysql-5.1.41-linux-x86_64-icc-glibc23 && ./scripts/mysql_install_db && ln -s /data/mysql-5.1.41-linux-x86_64-icc-glibc23 /usr/local/mysql 并把/data/mysql-5.1.41-linux-x86_64-icc-glibc23/bin加入系统环境路径。(参考附录中Can't locate DBD/mysql.pm in @INC

3.mkdir /data/mogilefs && cd /data/mogilefs && tar -zxvf MFS.tgz  

4../install_all.sh

5../install_core.sh

(顺序不能乱)

-------------------------------------------------------------------------------------------------------------

tar xvf mogconf.tar

mkdir /etc/mogilefs

cp mogilefs/mogilefs.conf /etc/mogilefs/

cp mogilefs/mogilefsd.conf /etc/mogilefs/

cp mogilefs/mogtool.conf /etc/mogilefs/

cp mogilefs/mogstored.conf /etc/mogilefs/

echo "########### DONE Create Config file ##########"

echo

#installation starts here

#It will search for install.sh in each sub- folder and starts installation for each  

for i in `find . -type f |grep install.sh`; do

    echo "################## "$i" #########################"  

    name=`echo $i |grep install.sh | awk -F"/" '{print $(NF-1)}'` 

    cd `echo $PWD\/$name`

    sh install.sh

    cd ..

    echo "##################   DONE    ######################"

    echo

done

install_core.sh

-------------------------------------------------------------------------------------------------------------

for i in `find . -type f |grep install_core_mfs.sh`; do

    echo "################## "$i" #####################"  

    name=`echo $i |grep install_core_mfs.sh | awk -F"/" '{print $(NF-1)}'` 

    cd `echo $PWD\/$name`

    sh install_core_mfs.sh

    cd ..

    echo "##################   DONE   ############################"

    echo " "

done

install_all中安装的包有(可参考原网站的安装方法):

./Perlbal-1.73/install.sh

./Gearman-Client-Async-0.93/install.sh

./Sys-Syscall-0.22/install.sh

./MogileFS-Client-1.09/install.sh

./BSD-Resource-1.2903/install.sh

./IO-stringy-2.110/install.sh

./MogileFS-Client-FilePaths-0.02/install.sh

./Gearman-Server-1.08/install.sh

./ExtUtils-MakeMaker-6.55_02/install.sh

./common-sense-2.02/install.sh

./Gearman-1.07/install.sh

./DBD-mysql-4.013/install.sh

./Net-Netmask-1.9015/install.sh

./IO-AIO-3.261/install.sh

./Danga-Socket-1.56/install.sh

install_core 中安装的包有(可参考原网站的安装方法):

./DBI-1.609/install_core_mfs.sh

./MogileFS-Utils-2.12/install_core_mfs.sh

./mogilefs-server-2.36/install_core_mfs.sh

MogileFS配置文件

mogilefs.conf  mogilefsd.conf  mogtool.conf  mogstored.conf 

mogilefs.conf : 配置trackerip和端口。

eg: trackers = 192.168.10.171:6001, 192.168.10.172:6001

mogilefsd.comf:  配置MogileFSdb相应信息。

eg

db_dsn = DBI:mysql:mogilefs:192.168.10.172

db_user = mogile

db_pass = pconline

listen = 0.0.0.0:6001

conf_port = 6001

(

也可以:

db_dsn= DBI:mysql:mogilefs:host=192.168.10.172;port=3306;mysql_connect_timeout=5

)

listener_jobs = 50

delete_jobs = 1

replicate_jobs = 5

reaper_jobs = 1

min_free_space = 100

#max_disk_age = 5

#node_timeout = 2

#old_repl_compat = 1

#default_mindevcount = 2

mogilefsd不会以root身份运行,所以在mysql数据库中要创建一个非root的用户给MogileFS使用。

mogstored.conf:配置storage的信息。

    maxconns = 10000    最大连接数

    httplisten = 0.0.0.0:7500     监听端口

    mgmtlisten = 0.0.0.0:7501   管理端口

    docroot = /data/mogdata  数据目录