全部博文(167)
分类: LINUX
2010-06-01 12:16:37
|
|
|
安装包自己做了一些安装脚本,需要的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系统,对整个系统进行文件读写操作。
(%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE/#mogilefs%E4%BB%8B%E7%BB%8D)
* 应用层——不需要特殊的核心组件
* 无单点失败——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 的网站地址()
两台服务器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从数据库进行数据的查询。
本文档所使用架构情况是:
(详细的安装可以参考:
简单化安装可以下载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.conf mogilefsd.conf mogtool.conf mogstored.conf
mogilefs.conf : 配置tracker的ip和端口。
eg: trackers = 192.168.10.171:6001, 192.168.10.172:6001
mogilefsd.comf: 配置MogileFS的db相应信息。
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 数据目录