2021-05-12 14:32:11
分散式檔案系統MogileFS的使用
MogileFS簡介
MogileFS是一套開源的分散式儲存元件,由LiveJournal旗下的Danga Interactive研發,主要應用於儲存海量的小檔案。
MogileFS有3個元件:
1)Tracker Nodes:是檔案系統叢集的核心節點,借助資料庫節點儲存後設資料,主要功能包括監控後端Storage節點,及指示Storage節點完成資料的新增、刪除、查詢,及節點之間資料的複製等,該節點上執行的進程為mogilefsd。往往Tracker節點有多個,以實現負載均衡和高可用;
2)Storage Nodes:實際儲存資料的位置,基於WebDAV模式工作,能完成檔案建立、刪除、重新命名等操作,執行的進程為mogstored;
3)database Nodes:幫助Tracker節點存放後設資料及全域性資訊,包括host,domain,class等。資料庫建議使用高可用叢集,防止單點故障。
實現機制
在該檔案系統叢集中,每一個資料塊都會有多個副本,存放於多個Storage Node上,不同的檔案系統副本的數量各不相同(一般建議為3份),在Tracker Node上會分別單獨記錄每一個資料塊的儲存位置(位於哪個Storage及路徑)。若某個Storage節點不線上了,用戶端向Tracker節點請求獲取資料時,Tracker節點會返回用於冗餘的副本的儲存位置給用戶端。這樣就保證了整個檔案系統中資料的高可用性。當有資料儲存至某一storage節點後,各storage節點會根據Tracker的指示通過節點間通訊將副本傳送至其他節點上。若某一storage下線了,該節點上的副本會由其他節點重新提供,保證副本的個數不少於指定的值。
MogileFS結構圖
工作原理:用戶端需要存取資料時,首先與Tracker進行互動,Tracker通過查詢資料庫來獲取用戶端存取資料時所需要存取的後設資料,然後返回給用戶端,用戶端利用Tracker返回的結果,與Storage Nodes節點進行互動完成資料存取(一次有可能聯絡一個也可能聯絡多個)。
MogileFS 設定 Memcached http://www.linuxidc.com/Linux/2012-03/56905.htm
在 MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56904.htm
在開源分散式檔案系統MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56573.htm
自定義Nagios監控MogileFS儲存節點指令碼 http://www.linuxidc.com/Linux/2011-12/49394.htm
部署MogileFS
部署Tracker Nodes
1)安裝程式包
使用cpan線上安裝,首先安裝必要的perl庫。
[root@node1 ~]# cpan Sys::Syscall
[root@node1 ~]# cpan IO::WrapTie
[root@node1 ~]# cpan Danga::Socket
[root@node1 ~]# cpan IO::AIO
[root@node1 ~]# cpan MogileFS::Client
[root@node1 ~]# cpan Net::Netmask
[root@node1 ~]# cpan Perlbal
安裝MogileFS Server:
[root@node1 ~]# cpan MogileFS::Server
或者下載原始碼包編譯安裝:
[root@node1 ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Server-2.72.tar.gz
[root@node1 ~]# tar xf MogileFS-Server-2.72.tar.gz
[root@node1 ~]# cd MogileFS-Server-2.72
[root@node1 MogileFS-Server-2.72]# perl Makefile.PL
[root@node1 MogileFS-Server-2.72]# make && make install
2)完成設定
建立組態檔目錄並新增組態檔:
[root@www ~]# mkdir /etc/mogilefs
[root@node1 ~]# vim /etc/mogilefs/mogilefsd.conf
daemonize = 1
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host=192.168.1.134;port=3306;mysql_connect_timeout=5 #連線資料庫的資訊
db_user = mogilefs #資料庫上的使用者名稱
db_pass = mogilefs #使用者名稱對應的密碼
listen = 0.0.0.0:7001 #監聽的地址和埠
conf_port = 7001
query_jobs = 10 #用於查詢的進程數
delete_jobs = 1 #用於刪除操作的進程數
replicate_jobs = 5 #用於複製的進程數
reaper_jobs = 1 #用於回收資源的進程數
在資料庫節點上建立資料庫,並授權使用者:
MariaDB [(none)]> create database mogilefs;
Query OK, 1 row affected (0.04 sec)
MariaDB [(none)]> grant all on mogilefs.* to 'mogilefs'@'192.168.%.%' identified by 'mogilefs';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
初始化資料庫:
[root@node1 ~]# mogdbsetup --dbhost=192.168.1.134 --dbname=mogilefs --dbuser=mogilefs --dbpass=mogilefs --dbrootpass=mogilefs
若出現如下錯誤,是沒有安裝perl連線mysql的驅動引起的,安裝perl-DBD-MySQL即可。
Failed to load MogileFS::Store::MySQL: Can't locate DBD/mysql.pm in @INC (@INC contains: lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/MogileFS/Store/MySQL.pm line 5.........
........
###########################################
[root@node1 ~]# yum install perl-DBD-MySQL
3)啟動服務
mogilefsd不能以root身份執行,必須用其他使用者執行,為此新增mogilefs使用者,然後啟動服務:
[root@node1 ~]# useradd -r mogilefs
[root@node1 ~]# su - mogilefs -c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon"
更好的方式是新增服務指令碼,然後通過指令碼啟動服務。
這裡有一項需要注意,Sys::Syscall的0.25版本存在bug,在檔案系統執行過程中,向檔案系統上新增資料,其不會按照預設策略保留2個副本,預設策略如下:
上傳的檔案資訊:
可以看到,資料僅有一份,儲存在192.168.1.127節點上。Sys::Syscall的0.25版本為最新版本,使用cpan預設安裝的就是這個版本,降級到0.23版本即可,或者直接下載安裝0.23版本。
wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
###############################
perl Makefile.PL
make && make install
部署Storage Nodes
1)安裝程式包(與上述一致)
[root@node2 ~]# cpan Sys::Syscall
[root@node2 ~]# cpan IO::WrapTie
[root@node2 ~]# cpan Danga::Socket
[root@node2 ~]# cpan IO::AIO
[root@node2 ~]# cpan MogileFS::Client
[root@node2 ~]# cpan Net::Netmask
[root@node2 ~]# cpan Perlbal
[root@node2 ~]# cpan MogileFS::Server
2)完成設定
建立目錄並新增組態檔:
[root@node2 ~]# mkdir /etc/mogilefs
[root@node2 ~]# vim /etc/mogilefs/mogstored.conf
maxconns = 10000 #最大併行連線數
httplisten = 0.0.0.0:7500 #http監聽的地址
mgmtlisten = 0.0.0.0:7501 #管理介面監聽地址
docroot = /mogdata/data #用於儲存的目錄
新增,掛載分割區,根據/etc/mogilefs/mogstored.conf中的docroot設定資訊新增目錄,並修改屬主屬組:
[root@node2 ~]# fdisk /dev/sdb
[root@node2 ~]# mkfs -t ext4 -b 4096 /dev/sdb1
[root@node2 ~]# mkdir -pv /mogdata/data
mkdir: created directory `/mogdata'
mkdir: created directory `/mogdata/data'
[root@node2 ~]# mount /dev/sdb1 /mogdata/data/
[root@node2 ~]# chown -R mogilefs.mogilefs /mogdata/
3)啟動服務
新增使用者,啟動服務(同上述一樣,最好使用指令碼):
[root@node2 ~]# useradd -r mogilefs
[root@node2 ~]# su - mogilefs -c "mogstored -c /etc/mogilefs/mogstored.conf --daemon"
安裝MogileFS-Utils管理MogileFS
在控制節點上安裝MogileFS-Utils,可用於新增host,device,domain,class等管理操作。
[root@node1 ~]# cpan MogileFS::Utils
或者
[root@node1 ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Utils-2.29.tar.gz
[root@node1 ~]# tar xf MogileFS-Utils-2.29.tar.gz
[root@node1 ~]# cd MogileFS-Utils-2.29
[root@node1 MogileFS-Utils-2.29]# perl Makefile.PL
[root@node1 MogileFS-Utils-2.29]# make && make install
建議直接使用cpan安裝,可自動安裝依賴的包。
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-09/122947p2.htm
相關文章