mogilefs簡單使用

有夢想的linux小白發表於2020-12-13

架構

在這裡插入圖片描述
mogilefs包含了三個節點,tracker、database和storage

  • tracker是mogilefs功能的實現,它相當於一個排程器,使用者發來請求後,由tracker通過放database來查詢使用者想要訪問資料的後設資料,然後在返回給使用者真正的uri。使用者再次請求真正的uri。
  • database是儲存mogilefs的後設資料,tracker來管理和操作。
  • storage node是儲存節點,所有的儲存檔案都是在這個機器上。

其它術語

  • Domain:一個mogilefs可以有多個domain,用來存放不同檔案,不同Domain內,同一個Domain內key必須唯一,key可以相同。 每一個儲存節點稱為一個主機host,一個主機上可以有多個儲存裝置dev(單獨的硬碟),每個裝置都有ID號,Domain+Fid用來定位檔案。
  • class:檔案屬性管理,定位檔案儲存在不同裝置上的份數。 一個domain內有多個class,是最小複製單元,而不是檔案。 class決定了把資料放在哪幾個伺服器上
    找檔案的時候,通過domain加fileid來查詢。

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

mogilefs的安裝

主機功能
11.2.3.63tracker,database,mogstored
11.2.3.25mogstored

由於網上已經停止了對mogilefs的更新,所有的包都停留在centos6上。 下面是在centos7上演示

1)安裝各種依賴包

yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes```

2)安裝mogilefs服務的包

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201213024848869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NTY0MzY2,size_16,color_FFFFFF,t_70)



```bash
yum install -y *.rpm

3)安裝資料庫

yum install -y mariadb-server

4)為資料庫建立使用者


MariaDB [(none)]> GRANT ALL  ON *.* TO 'ydong'@'11.2.%.%' IDENTIFIED BY 'centos'; 
Query OK, 0 rows affected (0.00 sec)

此種方式建立的使用者許可權太大,可以專門建立一個使用者只對mogilefs表有效

5)生成mogilefs庫

[root@localhost ~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=ydong --dbpass=centos --dbport=3306 --dbname=mogilefs

This will attempt to setup or upgrade your MogileFS database.
It won't destroy existing data.
Run with --help for more information.  Run with --yes to shut up these prompts.

Continue? [N/y]: y

Create/Upgrade database name 'mogilefs'? [Y/n]: y   是否生成mogilefs庫

Grant all privileges to user 'ydong', connecting from anywhere, to the mogilefs database 'mogilefs'? [Y/n]: y  是否支援遠端連線

6)配置tracker

daemonize = 1 ##設定為1表示啟動為守護程式 
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 db_user = username db_pass = password ##配置資料庫連線相關資訊 
listen = 127.0.0.1:7001 ##mogilefs監聽地址,監聽在127.0.0.1表示只允許從本機登入進行管理 
query_jobs = 10 ##啟動多少個查詢工作執行緒
delete_jobs = 1 ##啟動多少個刪除工作執行緒 
replicate_jobs = 5 ##啟動多少個複製工作執行緒 
reaper_jobs = 1 ##啟動多少個用於回收資源的執行緒 
maxconns = 10000 ##儲存系統的最大連線數. 
httplisten = 0.0.0.0:7500 ##可通過http訪問的服務埠 
mgmtlisten = 0.0.0.0:7501 ##mogilefs的管理埠 
docroot = /var/mogdata ##該項決定了資料的在storage上儲存的實際位置,建議使用的是一個單獨掛載使用的磁碟

7)啟動tracker,mogilefs不用在root使用者下啟動 需要切到mogilefs使用者執行

[root@localhost ~]# mogilefsd -h
Unknown option: h
mogilefsd cannot be run as root

bash-4.2$ systemctl start mogilefsd

8)配置mogstored

[root@localhost ~]# cat /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogilefs   #資料存放的目錄。此目目錄需要以mogilefs使用者來訪問

[root@localhost ~]# mkdir /data/mogilefs -p
[root@localhost ~]# chown -R mogilefs.mogilefs /data/
[root@localhost ~]# ll /data/
總用量 0
drwxr-xr-x 2 mogilefs mogilefs 6 12月 13 03:22 mogilefs

9)啟動mogstored節點

[root@localhost ~]# mogstored -c /etc/mogilefs/mogstored.conf --daemon

10)將儲存節點加入到tracker中

[root@localhost ~]# mogadm host add  11.2.3.63 --status=alive

顯示tracker中的host
[root@localhost ~]# mogadm host list
11.2.3.63 [1]: alive
  IP:       11.2.3.63:7500

修改tracker的host
[root@localhost ~]# mogadm host modify  11.2.3.63 --status=down
[root@localhost ~]# mogadm host list
11.2.3.63 [1]: down
  IP:       11.2.3.63:7500

11)新增儲存裝置(device)。也就是mogstored裡面docroot指定的目錄供儲存裝置使用。在該目錄裡建目錄使用 dev + ID 這種格式,記的所有系統中 ID 不能重複.也必須和配置檔案中的路徑一樣

[root@localhost ~]# mkdir /data/mogilefs/dev1
[root@localhost ~]# chown -R mogilefs.mogilefs /data/mogilefs/

[root@localhost ~]# mogadm device add 11.2.3.63 1
[root@localhost ~]# mogadm device list
11.2.3.63 [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev1:   alive      5.209     44.767     49.976        100


12)新增別的儲存節點(11.2.3.25)。 按照1、2、8步驟安裝

mogstored -c /etc/mogilefs/mogstored.conf --daemon

13)在tracker中新增


[root@localhost ~]# mogadm host list
11.2.3.63 [1]: alive
  IP:       11.2.3.63:7500

11.2.3.25 [2]: down
  IP:       11.2.3.25:7500

14)為第二個節點新增裝置

在11.2.3.25中建立dev2的目錄
[root@localhost ~]# ll /data/mogilefs/
總用量 0
drwxr-xr-x 3 mogilefs mogilefs 37 12月 13 03:47 dev2

[root@localhost ~]# mogadm device list
11.2.3.63 [1]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev1:   alive      5.209     44.767     49.976        100

11.2.3.25 [2]: alive
                    used(G)    free(G)   total(G)  weight(%)
   dev2:   alive      4.014     45.962     49.976        100

15)在tracker中建域

[root@localhost ~]# mogadm domain add imgs 
[root@localhost ~]# mogadm domain add files
[root@localhost ~]# mogadm domain list
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 files                default                   2        MultipleHosts() NONE   

 imgs                 default                   2        MultipleHosts() NONE   

class:複製檔案的最小單位 (最大為64M,如果一個單檔案超出此大小將拆分為多個class儲存)。在一個域中,可以有多個類,主要是用來控制複製單元的,類是用來做屬性管理的,類是比域 domain 低一個級別,可以定義一個檔案儲存在不同 device 中的份數.一個檔案必須通過 domain,class 和 key 才能找出來.我們可以給不同的重要程度的檔案,不同熱度的檔案,來分別用類來控制份數.
mindevcount:表示最小的份數

16)上傳檔案

[root@localhost ~]# mogupload --trackers=127.0.0.1 --domain=files --key='/fstab' --file='/etc/fstab'

key:http訪問的url  
file:本地檔案

17)查詢檔案

[root@localhost ~]# mogfileinfo --tracker=127.0.0.1 --domain=files --key='/fstab'
- file: /fstab
     class:              default
  devcount:                    1
    domain:                files
       fid:                    2
       key:               /fstab
    length:                  541
 - http://11.2.3.25:7500/dev2/0/000/000/0000000002.fid
.fid的檔案就是web訪問的路徑

在這裡插入圖片描述