[转]分布式文件系统 MogileFS 安装手册
一、【理論知識】
MogileFS 是一個分布式文件存儲的解決方案,它能夠做到不需要特殊的核心組件、無單點失敗、自動的文件復制、比RAID好多了、傳輸中立,無特殊協議(客戶端可以通過NFS或HTTP來和MogileFS通信)、簡單的命名空間、不用共享任何東西、不需要RAID、不會碰到文件系統本身的不可知情況 等等優點。
相關知識和安裝方面的問題可以去看官方的wiki:http://mogilefs.pbwiki.com/。(有可能被GFW了,請使用代理或者安裝一個Firefox的gladder插件來訪問)
[ Mogilefs分為幾部分 ]
1. 數據庫(MySQL)部分
你可以用mogdbsetup程序來初始化數據庫。數據庫保存了Mogilefs的所有元數據,你可以單獨拿數據庫服務器來做,也可以跟其他程序跑在一起,數據庫部分非常重要,類似郵件系統的認證中心那么重要,如果這兒掛了,那么整個Mogilefs將處于不可用狀態。因此最好是HA結構。
2. 存儲節點
mogstored程序的啟動將使本機成為一個存儲節點。啟動時默認去讀/etc/mogilefs/mogstored.conf ,具體配置可以參考配置部分。mogstored啟動后,便可以通過mogadm增加這臺機器到cluster中。一臺機器可以只運行一個 mogstored作為存儲節點即可,也可以同時運行其他程序。
3. trackers(跟蹤器)
mogilefsd即trackers程序,類似mogilefs的wiki上介紹的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定義好trackers,因此最好同時運行多個trackers來做負載均衡。trackers也可以只運行在一臺機器上,也可以跟其他程序運行在一起,只要你配置好他的配置文件即可,默認在/etc/mogilefs/mogilefsd.conf。
4. 工具
主要就是mogadm,mogtool這兩個工具了,用來在命令行下控制整個mogilefs系統以及查看狀態等等。
5. Client
Client實際上是一個Perl的pm,可以寫程序調用該pm來使用mogilefs系統,對整個系統進行讀寫操作。
[ 概念定義 ]
可以參考官方wiki的這兒,簡單說一下
domain:最高域,在一個域下key是唯一的。
class:包含在domain中,可以針對每一個class定義保存的份數。
key:對文件的唯一標識。
file:文件。
[ 適用性 ]
由于Mogilefs不支持對一個文件的隨機讀寫,因此注定了只適合做一部分應用。比如圖片服務,靜態HTML服務。
即文件寫入后基本上不需要修改的應用,當然你也可以生成一個新的文件覆蓋上去。
二、【安裝Perl和相關包】
[ 安裝環境 ]
操作系統:RHEL 4 (AS 4)
Perl版本:Perl v5.8.8
注意:請確保你的Perl版本為大于 v5.8.8,不然可能安裝會有問題,另外,本文所有操作都是在一臺機器上完成,可能多臺機器上稍微有些不同,請自行調整
[ MySQL ]
安裝前請安裝好MySQL,如果MySQL Server和MogileFS不是一臺機器,請在MogileFS機器安裝好MySQL Client,本文假設MySQL Client安裝在:/usr/local/mysql 目錄,安裝完客戶端后請建立一個軟鏈接:
ln -s /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib/libmysqlclient.so.15
[ Perl包安裝 ]
因為MogileFS需要使用很多相關的Perl包,請逐一按照一下次序安裝,本文采用的是比較笨,比較簡單的安裝方法,逐個把包下載回來本機手工安裝,沒有使用cpan的包安裝方式。
要下載包,請在http://search.cpan.org中輸入包名,然后下載,一般提供的是最新版,如果版本跟下面不一致,請以最新版為準。
為方便使用,本文包下載地址列表:(不保證您閱讀本文的時候有效)
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/BSD-Resource-1.2901.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.22.tar.gz
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.9715.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/Danga-Socket-1.59.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Net-Netmask-1.9015.tar.gz
http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/IO-AIO-3.07.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/Perlbal-1.71.tar.gz
http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Client-Async-0.94.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Server-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1607.tar.gz
http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.008.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/MogileFS-Client-1.08.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/mogilefs-server-2.20.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Base-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/IO-stringy-2.110.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz
?
包安裝次序:(務必按照本次序進行)
BSD-Resource-1.2901.tar.gz
Sys-Syscall-0.22.tar.gz
—
Time-HiRes-1.9715.tar.gz
Danga-Socket-1.57.tar.gz
—
Net-Netmask-1.9015.tar.gz
IO-AIO-3.07tar.gz (本包要求Perl v5.8.8以上)
Perlbal-1.71.tar.gz
—
String-CRC32-1.4.tar.gz
Gearman-1.07.tar.gz
Gearman-Client-Async-0.93.tar.gz
Gearman-Server-1.08.tar.gz
—
#make test 有可能會有一個錯誤,不用管它
DBI-1.607.tar.gz
DBD-mysql-4.008.tar.gz
#以下命令假設MySQL服務器是在本機
perl Makefile.PL? –testhost=localhost –testuser=root –mysql_config=/usr/local/mysql/bin/mysql_config
—
IO-Compress-Base-2.015.tar.gz
IO-Compress-Zlib-2.015.tar.gz
Compress-Raw-Zlib-2.015.tar.gz
Compress-Zlib-2.015.tar.gz
IO-stringy-2.110.tar.gz
—
MogileFS-Client-1.08.tar.gz
mogilefs-server-2.20.tar.gz
MogileFS-Utils-2.13.tar.gz
?一定要按以上順序安裝,解壓縮,生成Makefile,測試,安裝 這樣的步驟來執行,命令是:
# tar zxvf xxxxx.tar.gz
# cd xxxxx
# perl Makefile.PL
# make
# make test
# make install
這樣就安裝成功了,注意make test的錯誤提示,如果不是很嚴重的錯誤提示,基本可以忽略繼續下一步。
三、【配置MogileFS】
以下操作除非明確指定,不然是以root用戶來運行,當然,你也可以使用自己的帳戶來執行(除了一些特權操作),另外 10.15.6.28 是本機IP,本試驗只使用了一臺機器。如果配置過程不太順利,請反復檢查后反復試驗。
1. 創建數據庫(初始化)
可以預先在數據庫服務器上建立好一個叫做 mogilefs 的數據庫,便于進行下面的步驟.
#mogdbsetup --dbhost=10.15.6.28 --dbname=mogilefs --dbuser=root
--dbhost 是數據庫主機地址, --dbname是數據庫名,--dbuser是訪問該數據庫的用戶,如果有密碼請加上--dbpass選項,最好訪問數據庫的是超級用戶root或者具有很高權限的新建數據庫用戶,因為MogileFS需要一些比較高權限的初始化操作。
2. tracker配置
新建tracker配置文件 /etc/mogilefsd.conf ,寫入以下文件內容:(請去掉#后面的注意信息)
db_dsn DBI:mysql:mogilefs #數據庫配置
db_user mogile #數據庫用戶
db_pass 123123 #數據庫密碼
conf_port 6001 #tracker端口
listener_jobs 5
?
db_dsn指向的是你數據庫的位置,如果你數據庫不在同一個機器上,請改為:
db_dsn DBI:mysql:mogilefs:127.0.0.1
?
由于mogilefsd不能用root用戶啟動.所以添加mogile用戶
# adduser mogile
在配置下面以前先啟動 trackers server
# su mogile
# mogilefsd -c /etc/mogilefsd.conf --daemon
3. Storage Server 配置
說明:以下命令假設你的 Perl 的包文件都在 /usr/lib/perl5/5.8.8 目錄,如果不是,請自行修改。
用mogadm工具將storage server加到數據庫中:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host add mogilestorage --ip=10.15.6.28 --port=7500 --status=alive
(由于本文是在一臺機器上配,故trackers的地址和ip地址是一樣的)
用下面命令來檢測是否成功:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host list
加入一個設備到你的storage server:
# mogadm -lib=/usr/lib/perl5/5.8.8 -trackers=10.15.6.28:6001 device add mogilestorage 1
用下面命令來檢測是否成功:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 device list
Device ID 是唯一的,一旦創建將無法刪除,只能mark為dead. 所以,如果你某個磁盤壞了,你mark為dead, 后來又修好了,
那么你必須重新格式化并命名為新的device id, 不支持將device從dead變為alive.
?
新建Storage配置文件: /etc/mogstored.conf 內容是: (請去掉#后面的注意信息)
httplisten=0.0.0.0:7500 #HTTP監聽端口
mgmtlisten=0.0.0.0:7501 #MongileFS監聽端口
docroot=/opt/mogdata #數據存儲物理路徑
?
建立存放數據的路徑:(必須使用root權限才能創建)
# mkdir -p /opt/mogdata/dev1
說明:mogadm 參數的用法請參考 http://search.cpan.org/~dormando/MogileFS-Utils/mogadm
4. 運行MogileFS
啟動 Storage Server
# mogstored -c /etc/mogstored.conf --daemon
如果沒有啟動Trackers,請啟動 Trackers
# su mogile
$ mogilefsd -c /etc/mogilefsd.conf --daemon
查看你所有的服務都起來沒有
# ps -ef | grep mogilefsd
# ps -ef | grep mogstored
?
四、【MogileFS使用測試】
生成domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 domain add testdomain
?
加一個 class 到domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 class add testdomain testclass
寫一個perl文件試一下test.pl
?? 1. #=======================================
?? 2. use MogileFS::Client;
?? 3. my $mogfs = MogileFS::Client->new(domain=>'testdomain', hosts=>['10.0.22.184:6001'], root=>'/home/xiehl/mogdata',);
?? 4. my $fh = $mogfs->new_file("file_key", "testclass");
?? 5. die $fh unless $fh->print($mogfs->readonly);
?? 6. my $content = "file.txt";
?? 7. @num = $mogfs->store_content("file_key","testclass",$content);
?? 8. print "@num \n";
?? 9. my $file_contents = $mogfs->get_file_data("file_key");
? 10. print "$file_contents \n";
? 11. #$mogfs->delete("file_key");
? 12. $fh->print($file_contents);
? 13. @urls = $mogfs->get_paths("file_key");
? 14. print "@urls \n";
? 15. #=======================================
執行腳本
# perl test.pl
本文返回的內容是:(可能你返回的內容會不同,格式類似就行)
8
SCALAR(0×9ddaaa8)
http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid
在瀏覽器里輸入:http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid,將會看到輸出:
file.txt
能夠訪問我們存儲的數據,配置成功!
五、【附加內容】
[ MySQL檢測代碼 ]
如果需要檢測你的DBI和MySQL Client是否安裝正常,可以使用一下數據庫測試代碼來檢測能否正常連接到MySQL:
?? 1. #=======================================
?? 2. #!/usr/bin/perl
?? 3. # DBI is perl module used to connect to the database
?? 4. use DBI;
?? 5.
?? 6. # hostname or ip of server (for local testing, localhost should work)
?? 7. $config{’dbServer’} = "localhost";
?? 8. $config{’dbUser’} = "root";
?? 9. $config{’dbPass’} = "";
? 10. $config{’dbName’} = "test";
? 11. $config{’dataSource’} = "DBI:mysql:$config{’dbName’}:$config{’dbServer’}";
? 12.
? 13. # Connect to MySQL
? 14. my $dbh = DBI->connect($config{’dataSource’},$config{’dbUser’},$config{’dbPass’}) or
? 15. die "Can’t connect to $config{’dataSource’}<br>$DBI::errstr";
? 16.? print "Connected successfully<br>";
? 17. $dbh->disconnect();
? 18. #=======================================
? 19. ?
[ 相關參考 ]
mogilefs 最新版本安裝: http://www.wuei.net/?p=33
Mogilefs學習: http://blog.chifeng.name/?p=220
mogileFS的工作方式: http://www.sunnyu.com/?p=32
mogileFS分布式文件存儲解決方案: http://www.sunnyu.com/?p=10
[ 擴展閱讀 ]
編譯mogileFS的php模塊: http://www.sunnyu.com/?p=78
mogileFS體系結構分析: http://www.sunnyu.com/?p=31
mogileFS體系結構分析: http://www.sunnyu.com/?p=30
轉載于:https://www.cnblogs.com/Magicworks/archive/2009/03/11/1408853.html
總結
以上是生活随笔為你收集整理的[转]分布式文件系统 MogileFS 安装手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net序列化与反序列化通用方法
- 下一篇: 面试三