一. 准备工作
1. 装好Mysql (请确认操作系统版本是64位还是32位,请装对应的版本,安装过程省略)
2. 为mogile创建用户
# useradd mogile
3.用Mysql客户端为MogileFS创建数据库和用户
>create database mogilefs;
>grant all privileges on mogilefs.* to 'mogile'@'%' identified by '123456';
>flush privileges;
>exit;
4.下载MogileFS
# mkdir /usr/local/src/mogilefs
# cd /usr/local/src/mogilefs
# svn checkout http://code.sixapart.com/svn/mogilefs/trunk
二.安装Tracker
1. # cd /usr/loca/src/mogilefs/trunk/server
2. # perl Makefile.PL 提示一堆perl包没安装
3. # perl -MCPAN -e shell
cpan> install ABC::abc 逐一安装上面提示的包(不要安装DBD::mysql这个不要用cpan装)
4. # perl Makefile.PL (没有错误后就执行第5步,还有包没安装就执行第3步)
5. # make; make test test出现下面错误先忽略
------------------------------------------------------------------------------------------------------------------------------------------------
Test returned status 2 (wstat 512, 0x200)
t/replpolicy................ok
t/store.....................Can't locate MogileFS/RebalancePolicy/DrainDevices.pm in @INC (@INC contains: /usr/local/src/mogileFS/server/blib/lib /usr/local/src/mogileFS/server/blib/arch /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 . /usr/local/src/mogileFS/server/blib/lib/mogdeps) at /usr/local/src/mogileFS/server/blib/lib/MogileFS/Worker/Replicate.pm line 14.
BEGIN failed--compilation aborted at /usr/local/src/mogileFS/server/blib/lib/MogileFS/Worker/Replicate.pm line 14.
Compilation failed in require at /usr/local/src/mogileFS/server/blib/lib/MogileFS/Server.pm line 61.
BEGIN failed--compilation aborted at /usr/local/src/mogileFS/server/blib/lib/MogileFS/Server.pm line 61.
Compilation failed in require at t/store.t line 8.
BEGIN failed--compilation aborted at t/store.t line 8.
t/store.....................dubious
Test returned status 2 (wstat 512, 0x200)
t/util......................ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/00-startup.t 2 512 ?? ?? % ??
t/10-weighting.t 2 512 ?? ?? % ??
t/20-filepaths.t 2 512 ?? ?? % ??
t/30-rebalance.t 2 512 ?? ?? % ??
t/domains-classes.t 2 512 ?? ?? % ??
t/hosts-devices.t 2 512 ?? ?? % ??
t/mogstored-shutdown.t 2 512 ?? ?? % ??
t/multiple-hosts-replpol.t 2 512 ?? ?? % ??
t/replpolicy-parsing.t 2 512 ?? ?? % ??
t/store.t 2 512 ?? ?? % ??
Failed 10/13 test scripts, 23.08% okay. 0/23 subtests failed, 100.00% okay.
make: *** [test_dynamic] 错误 255
---------------------------------------------------------------------------------------------------------------------------------------------------------
6.# make install
7.安装 utils
# cd /usr/local/src/mogilefs/trunk/until
# perl Makefile.PL
# make;make install
8.安装 api
# cd /usr/local/src/mogileFS/api/perl/MogileFS-Client
# perl Makefile.PL
# make;make install
# cd /usr/local/src/mogileFS/api/perl/MogileFS-Client-FilePaths
# perl Makefile.PL
# make;make install
-----------------------------------------------------------------------------------------------------------------------------------------------------------
9.设置数据库连接
# mogdbsetup --dbhost=127.0.0.1 dbport=3306 --dbname=mogilefs dbuser=mogile dbpass=123456 --yes
报错如下(是因为DBD::mysql的perl包没有装)
Failed to load MogileFS::Store::MySQL: Can't locate DBD/mysql.pm in @INC (@INC contains: lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Store/MySQL.pm line 5.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Store/MySQL.pm line 5.
Compilation failed in require at (eval 8) line 1.
BEGIN failed--compilation aborted at (eval 8) line 1.
下载DBD::mysql包并安装(请不要使用CPAN安装,否则会出错,因为CPAN安装的话不能加入安装选项)
# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.018.tar.gz
# perl Makefile --help 查看安装选项
# perl Makefile.PL --libs="-L/usr/local/mysql/lib -lmysqlclient -L/usr/lib -lz " --cflags=-I/usr/local/mysql/include --mysql_config=/usr/local/mysql/bin/mysql_config --testhost=127.0.0.1--testsocket=tmp/mysql5.sock --testdb=test --testuser=root --testpassword=123456
# make ; make install 装成功后,再一次设置数据库连接
# mogdbsetup --dbhost=127.0.0.1 dbport=3306 --dbname=mogilefs dbuser=mogile dbpass=123456 --yes
--------------------------------------------------------------------------------------------------------------------------------------------------
如果出现以下错误
/usr/local/bin/mogdbsetup: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.so: undefined symbol: mysql_init
说明DBD::mysql包安装不正确, 估计是--libs选项不正确 --libs="-L/usr/local/mysql/lib -lmysqlclient -L/usr/lib -lz "
删除原有DBD::mysql
# rm -rf /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql
重新编译安装DBD::mysql
# perl Makefile.PL --libs="-L/usr/local/mysql/lib -lmysqlclient -L/usr/lib -lz " --cflags=-I/usr/local/mysql/include --mysql_config=/usr/local/mysql/bin/mysql_config --testhost=127.0.0.1--testsocket=tmp/mysql5.sock --testdb=test --testuser=root --testpassword=123456
再一次设置数据库连接
# mogdbsetup --dbhost=127.0.0.1 dbport=3306 --dbname=mogilefs dbuser=mogile dbpass=123456 --yes
OK!!!!!
----------------------------------------------------------------------------------------------------------------------------------------------------
10. 拷贝配置文件到/etc/mogilefs/下
# mkdir /etc/mogilefs
如果这台是Tracker
# cp /usr/local/src/mogileFS/trunk/server/conf/mogilefsd.conf /etc/mogilefs/ ---mogilefs主配置文件(tracker的)
如果这台是Host
# cp /usr/local/src/mogileFS/trunk/server/conf/mogstored.conf /etc/mogilefs/ ---Storage Server的配置文件(host的)
三. 启动Tracker
1.修改配置文件参数 (不多说)
# vi /etc/mogilefs/mogilefsd.conf
数据库监听地址不要使用127.0.0.1不然 su mogile -c "mogilefsd -c /etc/mogilefs/mogiled.conf --deamon" 启动会报错
listen=127.0.0.1:7001 把监听地址改成0.0.0.0或者网卡的地址
2. 启动mogilefsd
# su mogile -c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon"
报错
Can't locate MogileFS/RebalancePolicy/DrainDevices.pm in @INC (@INC contains: lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 . /usr/lib/perl5/site_perl/5.8.8/mogdeps) at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Worker/Replicate.pm line 14.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Worker/Replicate.pm line 14.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Server.pm line 61.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/MogileFS/Server.pm line 61.
Compilation failed in require at /usr/local/bin/mogilefsd line 16.
BEGIN failed--compilation aborted at /usr/local/bin/mogilefsd line 16.
解决办法
下载 http://cpansearch.perl.org/src/BRADFITZ/mogilefs-server-2.17/lib/MogileFS/RebalancePolicy/DrainDevices.pm
放进 /usr/lib/perl5/site_perl/5.8.8/MogileFS/RebalancePolicy/
如果目录不存在则 # mkdir /usr/lib/perl5/site_perl/5.8.8/MogileFS/RebalancePolicy/