1. 程式人生 > >MogileFS簡單搭建和使用

MogileFS簡單搭建和使用

簡介

MogileFS是一個開源的分散式檔案儲存系統,由LiveJournal旗下的Danga Interactive公司開發。Danga團隊開發了包括 Memcached、MogileFS、Perlbal 等多個知名的開源專案。

MogileFS組成:

  • server:主要包括mogilefsd和mogstored兩個應用程式。mogilefsd實現的是tracker,它通過資料庫來儲存元資料資訊,包括站點domain、class、host等;mogstored是儲存節點(store node),它其實是個WebDAV服務,預設監聽在7500埠,接受客戶端的檔案儲存請求。在MogileFS安裝完後,要執行mogadm工具將所有的store node註冊到mogilefsd的資料庫裡,mogilefsd會對這些節點進行管理和監控。
  • utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。
  • 客戶端API:MogileFS的客戶端API很多,例如Perl、PHP、Java、Python等,用這個模組可以編寫客戶端程式,實現檔案的備份管理功能等。

儲存節點

  • 儲存主機(節點)
    這個是 MogileFS 儲存檔案存放在這些機器上,也是 mogstored 節點,也叫 Storage Server,一臺儲存主要都要啟動一個 mogstored 服務.擴容就是增加這些機器.

  • 裝置(device)
    一個儲存節點,可以有多個 device, 就是用來存放檔案的目錄(例如掛載的目錄),每個裝置都有一個裝置id,需要在 mogstored 的配置檔案中的 docroot 配置的專案 指定的目錄下面建立相應的裝置的目錄,目錄名為\ $docroot/dev$id,裝置是不能刪除的.只能將其裝置的狀態的值置為dead,當一個裝置 dead 之後,就真的 dead了,裡面的資料也無法恢復了,且這個dead了的裝置的 id 也不能再用.

  • Domain域

  1. 一個MogileFS可以有多個Domain
  2. 用來存放不同檔案(大小,型別)同一個Domain內key必須唯一
  3. 不同Domain內,key可以相同
  • Class
  1. 檔案屬性管理
  2. 定位檔案儲存在不同裝置上的份數定位檔案儲存在不同裝置上的份數

在這裡插入圖片描述

流程

在這裡插入圖片描述
(這裡的trackers可以有多個.這裡只是為了搭建簡單)
客戶端訪問檔案大致流程

  1. 客戶端去詢問Tracker,訪問的檔案的位置。
  2. Tracker查詢資料庫,並告訴客戶端它請求訪問的檔案的位置
  3. 客戶端去對應的儲存節點獲取檔案

安裝

第一步:資料庫節點安裝MariaDB資料庫

資料庫節點安裝MariaDB資料庫

yum install mariadb mariadb-server -y

啟動資料庫

systemctl  start mariadb

在這裡插入圖片描述

第二步:tracker和storage節點安裝Mogilefs

tracker和storage節點都執行下面命令

yum  groupinstall "Development Tools"  -y #開發工具包組
yum -y install make gcc gcc-devel unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes openssl openssl-devel   perl-IO-Socket-*

然後執行下面的命令,第一次進入會找附近的映象等,直接一直回車就可以了

perl -MCPAN -e shell

等到下面這個頁面
在這裡插入圖片描述
執行命令,開始正式安裝MogileFS和相關的依賴包

install App::cpanminus
install Danga::Socket
install IO::AIO
install Perlbal
install MogileFS::Client
install MogileFS::Utils
install MogileFS::Server

第三步:資料庫節點建立相關使用者和配置資料庫

進入資料庫建立使用者

MariaDB [(none)]> grant all on mogilefs.* to 'moguser'@'192.168.253.%' identified by 'mogpass';

初始化mogilefs相關資料庫

mogdbsetup --dbhost=192.168.253.158 --dbport=3306 --dbname=mogilefs --dbuser=moguser --dbpass=mogpass

在這裡插入圖片描述
進入資料庫,檢視相關表資訊
在這裡插入圖片描述

第四步:配置tracker節點並啟動服務

[[email protected] ~]# cat /etc/mogilefsd.conf 
# Enable daemon mode to work in background and use syslog
daemonize = 1  #是否守護程序啟動,1為是
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /tmp/mogilefsd.pid  #pid檔案路徑
# Database connection information
db_dsn = DBI:mysql:mogilefs:host=192.168.253.158 #資料庫地址
db_user = moguser #連線資料庫的使用者
db_pass = mogpass #連線資料庫的密碼
# IP:PORT to listen on for mogilefs client requests
listen = 192.168.253.158:7001 #監聽的地址
# Optional, if you don't define the port above.
conf_port = 7001
# Number of query workers to start by default.
query_jobs = 10
# Number of delete workers to start by default.
delete_jobs = 1
# Number of replicate workers to start by default.
replicate_jobs = 5
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1
# Number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1
# Minimum amount of space to reserve in megabytes
# default: 100
# Consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200
# Number of seconds to wait for a storage node to respond.
# default: 2
# Keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2
# Number of seconds to wait to connect to a storage node.
# default: 2
# Keep this low so overloaded nodes get skipped.
#conn_timeout = 2
# Allow replication to use the secondary node get port,
# if you have apache or similar configured for GET's
#repl_use_get_port = 1

建立使用者

useradd -M  mogile   #建立使用者  

啟動服務

[[email protected] ~]# su mogile    #因為不能用root啟動這個服務所以需要切換使用者
bash-4.2$  mogilefsd -c /etc/mogilefsd.conf  #手動啟動服務

在這裡插入圖片描述

第五步:配置storage 節點

[[email protected] ~]# cat /etc/mogstored.conf
maxconns = 10000 
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /mogilefs/data   #存放資料的目錄

建立相關目錄

useradd -M  mogile   #建立使用者  
mkdir -pv /mogilefs/data/dev1 (158目錄為dev1,168目錄為dev2,128目錄為dev3)
chown -R mogile:mogile /mogilefs

啟動服務

 mogstored -config /etc/mogstored.conf  -d

在這裡插入圖片描述

到此tracker和儲存節點都安裝好了接下來就是管理的了。

storage 節點管理

tracker新增儲存主機(storage 節點)

現在加入“儲存節點”到 trackers 中.告訴註冊自己到 trackers.相當於為每個主機加入 MogileFS 的儲存系統

mogadm --trackers=192.168.253.158:7001  host add 192.168.253.158 --ip=192.168.253.158 --port=7500 --status=alive
mogadm --trackers=192.168.253.158:7001  host add 192.168.253.168 --ip=192.168.253.168 --port=7500 --status=alive
mogadm --trackers=192.168.253.158:7001  host add 192.168.253.128 --ip=192.168.253.128 --port=7500 --status=alive

檢視儲存主機(storage 節點)列表

mogadm --trackers=192.168.253.158:7001  host list

在這裡插入圖片描述

檢查trackers和儲存節點

mogadm --trackers=192.168.253.158:7001  check 

在這裡插入圖片描述

新增儲存裝置

格式:mogadm device add <storage_node_name> ID
檢查我們加入的"裝置"資訊,這裡的ID和主機/mogilefs/data/devID這個目錄有關

mogadm --trackers=192.168.253.158:7001  device add 192.168.253.158 1
mogadm --trackers=192.168.253.158:7001  device add 192.168.253.168 2
mogadm --trackers=192.168.253.158:7001  device add 192.168.253.128 3

檢視儲存裝置

mogadm --trackers=192.168.253.158:7001  device list

在這裡插入圖片描述

域和類的管理

域的管理命令

  mogadm domain add <domain>                     新增
  mogadm domain delete <domain>                 刪除
  mogadm domain list                                  檢視

建立3個域,分別是domain1,domain2,domain3

mogadm --trackers=192.168.253.158:7001  domain add domain1
mogadm --trackers=192.168.253.158:7001  domain add domain2
mogadm --trackers=192.168.253.158:7001  domain add domain3

檢視域

mogadm --trackers=192.168.253.158:7001  domain list

在這裡插入圖片描述
刪除域

mogadm --trackers=192.168.253.158:7001  domain delete domain1

在這裡插入圖片描述

類管理命令

  mogadm class add <domain> <class> [opts]           新增

      <class>              Name of class to add.
      <domain>             Domain to add class to.
      --hashtype=s         Hash algorithm string ('MD5', 'NONE').
      --mindevcount=i      Minimum number of replicas.
      --replpolicy=s       Replication policy string.

  mogadm class delete <domain> <class>              刪除
  mogadm class list                                 檢視
  mogadm class modify <domain> <class> [opts]        修改

建立類

mogadm --trackers=192.168.253.158:7001 class add  domain2 class1  --mindevcount=2
mogadm --trackers=192.168.253.158:7001 class add  domain2 class2 --hashtype=MD5  --mindevcount=3

檢視類

mogadm --trackers=192.168.253.158:7001 class list

在這裡插入圖片描述

檔案管理

上傳檔案

格式: mogupload --trackers=host --domain=foo --key=’/hello.jpg’ --file=’./hello.jpg’

#將本地的/etc/fstab檔案上傳到domain2域中。key為/fstab
mogupload --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab' --file='/etc/fstab' 

檢視檔案資訊

格式:mogfileinfo --trackers=host --domain=foo --key=’/hello.jpg’

mogfileinfo --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab'

在這裡插入圖片描述
這裡可以看到一個url我們可以用瀏覽器訪問
在這裡插入圖片描述
可以看到這個就是我們上傳的檔案,所以MogileFS儲存的檔案也可以利用http協議

刪除檔案

格式:mogdelete --trackers=host --domain=foo --key=’/hello.jpg’

mogdelete  --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab'

列出所有檔案的key

格式:moglistkeys --trackers=host --domain=foo --key_prefix=‘bar/’

列出指定的fid檔案

格式:moglistfids --trackers=host --fromfid=123 --count=5000