MogileFS是一个perl编写的分布式文件存储应用,目前有一些线上的公司都是以此为基础来构建自己的分布式文件应用,抽时间测试了一下。
一、搭建MogileFS
关于MogileFS在扶凯的网站(http://www.php-oa.com/2010/09/26/perl-mogilefs-1.html)上有很详细的介绍,关于安装搭建我也只是简单描述。
Mysql server:27.17.28.133:3306
MogileFS trackers:27.17.28.133:7777
MogileFS store1:node134 27.17.28.134:7500
MogileFS store2:node135 27.17.28.135:7500
在三台机器上都安装
cpanm MoglieFS::Server
cpanm MoglieFS::Utils
分别配置好
/etc/mogilefs/mogilefs.conf (三台都装)
trackers = 27.17.28.133:7777
/etc/mogilefs/mogilefsd.conf (trackers)
db_dsn = DBI:mysql:MogileFS:host=27.17.28.133 db_user = mogile db_pass = mogilepw listen = 27.17.28.133:7777 conf_port = 7777 query_jobs = 10 delete_jobs = 1 replicate_jobs = 5 reaper_jobs = 1
/etc/mogilefs/mogstored.conf (stored)
maxconns = 10000 httplisten = 27.17.28.135:7500 mgmtlisten = 27.17.28.135:7501 docroot=/data/mogdata
配置mysql
CREATE DATABASE MogileFS DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
grant all on MogileFS.* to ‘mogile’@’%’ identified by ‘mogilepwd’;
FLUSH PRIVILEGES;
初始化tracker
# mogdbsetup –dbhost=27.17.28.133 –dbname=MogileFS –dbuser=mogile –dbpass=mogilepw
添加用户
# useradd mogile
启动trackers
$ mogilefsd -c /etc/mogilefs/mogilefsd.conf –daemon
启动stored
# mogstored -d
二、文件存储
添加存储节点
# mogadm host add node134 –ip=27.17.28.134 –port=7500 –status=alive
# mogadm host add node135 –ip=27.17.28.135 –port=7500 –status=alive
查看节点
# mogadm host list
添加存储设备
node134# mkdir -p /var/mogdata/dev1
# mogadm device add node134 1
查看存储设备
# mogadm device list
添加存储域
# mogadm domain add test.com
查看存储域
# mogadm domain list
添加存储类
存储域内有一个默认的存储类(class)default
# mogadm class add test.com upload_image –mindevcount=2
查看存储类
# mogadm class list
上传一个文件
# mogupload –trackers=27.17.28.133:7777 –domain=test.com –key=’memcached-1.4.13.tar.gz’ –file=’/tmp/memcached-1.4.13.tar.gz’
查看文件信息
# mogfileinfo –domain=test.com –key=’memcached-1.4.13.tar.gz’
三、mogileFS for PHP
下载mogilesFs的php扩展包:http://pecl.php.net/package/mogilefs,和其他php的扩展包一样的安装。
# /data/app/php/bin/phpize
# ./configure –with-php-config=/data/app/php-cgi/bin/php-config
# make & make install
如有neon的报错请安装neon-devel包。
在php.ini中加载拓展
extension=”mogilefs.so”
php中mogileFS模块的使用,在官方文档中的说明了貌似很陈旧,其用法还是直接看扩展包你的README吧。
<?php $client = new MogileFs(); //链接tracker服务器,指定存储域 $client--->connect('27.17.28.133', 7777, 'test.com'); //根据key来获取文件信息 //$stat_str=$client->fileInfo("memcached-1.4.13.tar.gz"); //根据key来获取文件保存路径 $stat_str=$client->get("memcached-1.4.13.tar.gz"); //奇怪,用官方的getPaths竟然报错次方法未定义 var_dump($stat_str); ?>