歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 分布式文件系統MogileFS的使用

分布式文件系統MogileFS的使用

日期:2017/2/28 13:58:00   编辑:Linux教程

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安裝,可自動安裝依賴的包。

Copyright © Linux教程網 All Rights Reserved