MogileFS 安裝與配置
目錄
一、MogileFS 介紹
1.1、環境
二、MogileFS 安裝
2.1、Mysql安裝
2.2、安裝MogileFS 相關Perl模塊
2.3、MogileFS Server 安裝
2.4、MogileFS Storage 存儲節點安裝
三、MogileFS 配置
3.1、mysql數據庫設置
3.2、創建mysql連接
3.3、創建Tracker配置文件
3.4、MogileFS 啓動與停止
3.5、MogileFS Storage 節點配置
3.6、啓動MogileFS Storage 節點
四、管理配置MogileFS
4.1、添加Storeage節點到Tracker
4.2、在存儲節點中添加設備
4.3、在存儲節點中使設備失效
4.4、添加域和類
4.5、查看域和tracker節點
4.6、mogadm 詳細參數
五、MogileFS PHP擴展模塊
5.1、安裝MogileFS PHP擴展
5.2、添加MogileFS PHP模塊
5.3、MogileFS 客戶端 API 調用資料
六、MogileFS Nginx 模塊安裝
6.1、下載Nginx_mogilefs_module
6.2、添加Nginx_mogilefs_module模塊
6.3、配置Nginx_mogilefs_module 模塊
七、Mogtool 工具創建文件和讀取文件內容
7.1、創建文件
7.2、讀取文件
八、FUSE API 掛載 MogileFS文件系統
8.1、安裝操作系統相應fuse支持
8.2、安裝Perl Fuse支持
8.3、Mount MogileFS文件系統
8.4、查看MogileFS系統文件
九、MogileFS參考資料
一、MogileFS 介紹< xmlnamespace prefix ="o" />
MogileFS 是一個開源的分佈式文件系統,用於組建分佈式文件集羣,由 LiveJournal 旗下 Danga Interactive 公司開發, Danga 團隊開發了包括 Memcached 、 MogileFS 、 Perlbal 等不錯的開源項目: ( 注: Perlbal 是一個強大的 Perl 寫的反向代理服務器 ) 。目前國內使用 MogileFS 的有圖片託管網站 yupoo 等。
官方的介紹網站:
http://www.danga.com/mogilefs/
Google Code 上的信息
http://code.google.com/p/mogilefs/
詳細內容請見 : http://www.tech-q.cn/thread-12293-1-1.html
1.1、環境
MogileFS 相關服務器
IP
系統
Tracker ( 調度器 )
192.168.0.11
Centos 5.5 x32
Storage Nodes 1 ( 存儲節點 1)
192.168.0.22
Centos 5.5 x32
Storage Nodes 2 ( 存儲節點 2)
192.168.0.33
Centos 5.5 x32
Mysql
192.168.0.44
Centos 5.5 x32
2.1、Mysql安裝
請參考 http://www.chinasa.net/archives/17/
2.2、安裝MogileFS 相關Perl模塊
首先要安裝 perl
# yum install perl
以下 Perl 模塊均可使用以下命令進行安裝 , 如安裝 Sys::Syscall 模塊。
# cpan –I Sys::Syscall
Sys::Syscall
Danga::socket
BSD::Resource
common::sense
IO::AIO
Perlbal
ExtUtils::MakeMaker
Test::Simple
DBI
Net::Netmask
IO::WrapTie
MogileFS::Client
DBD::mysql
MogileFS::Utils
Gearman::Client
Gearman::server
注 : 存儲節點服務器不用安裝 DBD::mysql 模塊
以上 Perl 模塊也可到 http://search.cpan.org/ 網站上下載安裝,如安裝 Sys::Syscall 模塊。
# wget http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
# tar zxvf Sys-Syscall-0.23.tar.gz
# cd Sys-Syscall-0.23
# perl Makefile.PL
# make
# make install
2.3、MogileFS Server 安裝
# wget http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Server-2.44.tar.gz
# tar zxvf MogileFS-Server-2.44.tar.gz
# cd MogileFS-Server-2.44
# perl Makefile.PL
# make
# make install
2.4、MogileFS Storage 存儲節點安裝
參考 2.2 、 2.3 。 DBD::mysql 可不用安裝
三、MogileFS 配置
3.1、mysql數據庫設置
mysql> create database mogilefs;
mysql> grant all on mogilefs.* to 'mogile'@'%' identified '000000'
mysql> flush privileges;
3.2、創建mysql連接
# /usr/lib/mogdbsetup --dbhost=192.168.0.144 --dbname=mogilefs --dbuser=mogile --dbpassword=000000
3.3、創建Tracker配置文件
# vi /etc/mogliefs/mogilefsd.conf
內容如下:
db_dsn = DBI:mysql:mogilefs:host=192.168.0.144;port=3306;mysql_connect_timeout=5
db_user = mogile
db_pass = 000000
conf_port = 7001
listener_jobs = 5
node_timeout = 5
rebalance_ignore_missing = 1
3.4、MogileFS 啓動與停止
由於 mogilefs 不能以 root 用戶運行 , 創建 mogile 用戶
# Useradd mogile –s /sbin/nologin
# su mogile –c “mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon”
使用 pkill mogilefsd 來停止 mogilefs 服務
3.5、MogileFS Storage 節點配置
創建 Storage 配置文件
vi /etc/mogilefs/mogstored.conf
內容如下 :
httplisten=0.0.0.0:7500
mgmtlisten=0.0.0.0:7501
docroot=/data/mogdata
3.6、啓動MogileFS Storage 節點
Mogstored –daemon
使用 pkill mogstored 來停止 mogstored 服務
四、管理配置MogileFS
4.1、添加Storeage節點到Tracker
# mogadm --trackers=192.168.0.11:7001 host add mog_store_22 --ip= 192.168.0.22 --port=7500 --status=alive
4.2、在存儲節點中添加設備
# mogadm --trackers=192.168.0.11:7001 device add mog_store_22 101
在 /data/mogdata/ 目錄中創建 dev201 文件夾
4.3、在存儲節點中使設備失效
# mogadm device mark mog_store_22 dev101 dead
4.4、添加域和類
添加 image 域
# mogadm domain add image
在 image 域中添加 upload 類 存儲份數爲 2
# mogadm class add image upload –mindevcount=2
4.5、查看域和tracker節點
# mogadm domain list
domain class mindevcount replpolicy
-------------------- -------------------- ------------- ---------------------------------------------------------
image default 2 MultipleHosts()
image upload 2 MultipleHosts()
# mogadm –trackers=192.168.0.11:7001 check
Checking trackers...
127.0.0.1:7001 ... OK
Checking hosts...
[ 1] mog_store_22 ... OK
[ 2] mog_store_33 ... OK
Checking devices...
host device size(G) used(G) free(G) use% ob state I/O%
---- ------------ ---------- ---------- ---------- ------ ---------- -----
[ 1] dev101 17.354 9.753 7.601 56.20% writeable 0.0
[ 2] dev201 13.456 1.491 11.965 11.08% writeable 0.0
[ 2] dev202 8.973 2.550 6.423 28.42% writeable 0.0
---- ------------ ---------- ---------- ---------- ------
total: 39.782 13.794 25.988 34.67%
4.6、mogadm 詳細參數
# mogadm
Usage: (enter any command prefix, leaving off options, for further help)
mogadm check Check the state of the MogileFS world.
mogadm stats Show MogileFS system statistics. (DEPRECIATED: use mogstats instead)
mogadm host ...
host add ... Add a host to MogileFS.
host delete ... Delete a host.
host list List all hosts.
host mark ... Change the status of a host. (equivalent to 'modify --status')
host modify ... Modify a host's properties.
mogadm device ...
device add ... Add a device to a host.
device list ... List all devices, for each host.
device mark ... Mark a device as {alive,dead,down,drain,readonly}
device modify ... Modify a device's properties.
device summary ... List the summary of devices, for each host.
mogadm domain ...
domain add ... Add a domain (namespace)
domain delete ... Delete a domain.
domain list List all hosts.
mogadm class ...
class add ... Add a file class to a domain.
class delete ... Delete a file class from a domain.
class list List all classes, for each domain.
class modify ... Modify properties of a file class.
mogadm slave ...
slave add ... Add a slave node for store usage
slave delete ... Delete a slave node for store usage
slave list List current store slave nodes.
slave modify ... Modify a slave node for store usage
mogadm fsck ...
fsck clearlog Clear the fsck log
fsck printlog Display the fsck log
fsck reset ... Reset fsck position back to the beginning
fsck start Start (or resume) background fsck
fsck status Show fsck status
fsck stop Stop (pause) background fsck
fsck taillog Tail the fsck log
mogadm settings ...
settings list List all server settings
settings set ... Set server setting 'key' to 'value'
五、MogileFS PHP擴展模塊
5.1、安裝MogileFS PHP擴展
# svn checkout http://svn.usrportage.de/php-mogilefs/trunk
# cd trunk
# phpize
# ../configure --with-php-config=/opt/php/bin/php-config
# make
# make install
5.2、添加MogileFS PHP模塊
修改 /opt/php/etc/php.ini 配置文件,添加以下內容:
extension=mogilefs.so
重啓 web 服務器 , 使用 phpinfo() 函數可看見 mogilefs 已經被加載,如下圖所示
5.3 、MogileFS 客戶端 API 調用資料
JAVA –http://github.com/eml/java-mogilefs
Ruby – http://seattlerb.rubyforge.org/mogilefs-client/
PHP – http://projects.usrportage.de/index.fcgi/php-mogilefs
Python – http://www.albany.edu/~ja6447/mogilefs.py
六、MogileFS Nginx 模塊安裝
安裝了 Nginx_mogilefs_module 可使用 Nginx 直接讀取 Mogilefs 文件系統裏的文件。
配置文檔請看 : http://www.grid.net.ru/nginx/mogilefs.en.html
6.1、下載Nginx_mogilefs_module
# wget http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz
6.2、添加Nginx_mogilefs_module模塊
# tar zxvf nginx_mogilefs_module-1.0.4.tar.gz
# ./configure --prefix=/opt/nginx --add-module=/data/mfs/nginx_mogilefs_module-1.0.4
# make
# make install
6.3、配置Nginx_mogilefs_module 模塊
在 nginx 配置文件中加入以下內容 :
server {
listen 80;
server_name img.test.com;
index index.html;
location / {
mogilefs_tracker 192.168.0.11:7001;
mogilefs_domain image;
mogilefs_pass {
proxy_pass $mogilefs_path;
proxy_hide_header Content-Type;
proxy_buffering off;
}
}
注: mogilefs_domain image 這裏的 image 就是 mogilefs 中創建的域
七、Mogtool 工具創建文件和讀取文件內容
7.1、創建文件
如將 /data/up.txt 文件創建到 image 域中 upload/up.txt 文件。命令如下 :
# mogtool --trackers=192.168.0.11:7001 --domain=image inject /data/up.txt "upload/up.txt"
注 :/data/up.txt 爲本地系統文件
Upload/up.txt 爲 mogilefs 文件內文件
Mogilefs 文件系統中沒有目錄概念,將創建的文件名以 upload/up.txt 來代替。
7.2、讀取文件
# mogtool --trackers=192.168.0.11:7001 --domain=image extract upload/up.txt -
Fetching piece 1...
Trying http://192.168.0.22:7500/dev101/0/000/000/0000000001.fid...
Wide character in print at /usr/bin/mogtool line 1285, <Sock_192.168.0.11:7001> line 1.
up file txt
注 : upload/up.txt - 這裏的 – 號不能卻少,否則會出現語法錯誤
http://192.168.0.22:7500/dev101/0/000/000/0000000001.fid 爲 upload/up.txt 文件的實際地址
up file txt 爲 upload/up.txt 文件內容
八、FUSE API 掛載 MogileFS文件系統
8.1、安裝操作系統相應fuse支持
yum install fuse fuse-devel fuse-libs
8.2、安裝Perl Fuse支持
cpan -i FUSE::Client
cpan -i FUSE::Server
cpan -i FUSE::Fuse
注 : 如安裝過程中提示卻少模塊,就安裝相應模塊。
8.3、Mount MogileFS文件系統
下載 http://www.spicylogic.com/allenday/blog/2008/07/14/mogilefs-fuse-bigfile-support/腳本,如文件名爲 fuse.pl
將 MogileFS 文件系統掛載到 /mnt 目錄下。命令如下 :
# perl fuse.pl /mnt &
8.4、查看MogileFS系統文件
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 19G 9.8G 7.7G 57% /
/dev/hda1 99M 17M 78M 18% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/fuse 2 0 2 0% /mnt
注 : 這裏掛載 MogileFS 文件系統到 /mnt 下,文件大小顯示 2 , 這裏不是很清楚,希望大家多研究。
# ls /mnt/
1111.jpg 1112.jpg upload/up.txt
這樣使用起來比較直觀,操作文件就與本地文件系統一樣。
九、MogileFS參考資料
http://www.tech-q.cn/thread-12293-1-1.html