天天看點

glusterfs分布式檔案系統初探

    公司有幾台就伺服器,正好有個項目對磁盤的容量以及性能有一定的要求,故而尋求分布式檔案系統方面的知識,最終采用了glusterfs。以下對部署以及測試過程潦做記錄。

    glusterfs分布式檔案系統采用C/S模式,其中用戶端作為對外提供服務的點,并且負責配置設定管理資料在後端多台server間的存儲。

    實驗采用6台伺服器做整個分布式架構,其中4台存儲端實作類似RAID 10模式的存儲池,兩台用戶端通過挂載至存儲池,兩台用戶端之間通過keepalived做雙機熱備。

    要求:glusterfs禁止在系統分區上建立glusterfs卷,是以需要server端每台機器都要有一個獨立于跟分區之外的分區加入glusterfs,并且此獨立分區要求大小一緻(否則,到後期會遇到問題,導緻無法繼續支援高可用特性)。

Server端:

1、采用yum方式安裝,首先配置glusterfs官方的yum源,執行下面指令

vi  /etc/yum.repos.d/glusterfs-epel.repo   添加以下内容(紅色部分)

[glusterfs-epel]

name=GlusterFS is a clustered file-system capable of scaling toseveral petabytes.

baseurl=http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/epel-$releasever/$basearch/

enabled=1

skip_if_unavailable=1

gpgcheck=1

gpgkey=http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/pub.key

[glusterfs-noarch-epel]

baseurl=http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/epel-$releasever/noarch

[glusterfs-source-epel]

name=GlusterFS is a clustered file-system capable of scaling toseveral petabytes. - Source

baseurl=http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/epel-$releasever/SRPMS

enabled=0

2、yum 安裝

     yum  install glusterfsglusterfs-server

會安裝下圖所示軟體包

3、啟動glusterd服務:執行  service glusterd start

4、将用于存儲的主機加入到“存儲池”

在配置glusterfs卷之前,首先應該建立“存儲池”将實際提供存儲的機器加入到“存儲池”。

執行:gluster peer probe  server(IP/hostname)  

此過程隻需要在一台glusterfs-server上執行即可,以上指令對每個server執行一次,如下圖

注意:執行peer probe 的時候不需要跟本機(hostname/IP)

在其中一台server機上檢視存儲池内的資訊,執行glusterpeer status,如下圖

5、Create volume(建立卷)

Glusterfs的卷有多種可選模式,我們采用其中的兩種Distributed和Replicated,其中Distributed類似于磁盤的RAID 0模式;Replicated類似于磁盤的RAID1模式(glusterfs中可以制定副本的數量,這裡我們存儲兩個副本即可)。我們利用此兩種模式在4台server間做成類似于RAID 10的模式,提供高性能和高可用的存儲服務。

在任意一台server執行:

glustervolume create ftp-volume replica 2 192.168.5.201:/data/ftp-data192.168.5.202:/data/ftp-data 192.168.5.203:/data/ftp-data192.168.5.204:/data/ftp-data

##上述指令中:dir為每台伺服器上要加入存儲池的目錄(此目錄最好做一個單獨分區挂載至此目錄)。按照上述指令server2:/dir作為server1:/dir的副本;server4:/dir作為server3:/dir的副本

6、建立完卷後,要啟動卷,執行指令:

Gluster  volume start  test-volume,如下圖

至此,server端配置完成

另外,可以執行以下指令檢視卷資訊

Client端

1、yum安裝,配置glusterfs官方yum源參照server端設定過程。

yum  install glusterfs  glusterfs-client

會安裝下圖所示安裝包

2、安裝完成後,執行挂載操作

mount -t glusterfs192.168.5.201:/ftp-volume /glusterfs/          

#此處選擇任一台伺服器進行載即可

在/etc/rc.local添加如下内容,以便實作開機自動挂載

mount -t glusterfs192.168.5.201:/ftp-volume /glusterfs/ 2>/var/log/gluster-client.err

在client端執行df  -h檢視挂載情況,如下圖

說明client端已經挂載成功,可以像使用本地目錄一樣使用此目錄,資料會分散存儲在後端4台

Server上,并且依照我們的設定,每個檔案都會存儲兩個副本。

二、管理、監控等其他操作

 1、檢視存儲節點,在任意一台server上執行如下指令

 2、檢視卷資訊,任意一台server上執行如下指令

    如圖所示,卷test-volume共包含了三個存儲節點的6個塊(brick)。

 3、擴充卷

将新的存儲節點加入到“存儲池”中,在原來“存儲池”中的任意一台主機執行

在新節點上準備好要加入卷的“獨立分區”(差別于跟分區,并且要跟其他節點的資料分區大小一緻)以及目錄,執行以

上圖表示将1.201上的兩個目錄作為兩個“塊”添加到glusterfs卷中

檢視卷資訊可以看到新添加的“塊”(birck)資訊

三、實測資料(通過區域網路ftp方式)

上傳目錄,包含衆多随機大小的檔案共2.1G:

         通過glusterfs,平均速度為2.59M/S

         不通過glusterfs,平均速度為2.20M/S

上傳另一目錄,總大小2.7G :

         通過glusterfs,平均速度為2.76M/S

         不通過glusterfs,平均速度為2.29M/S

下載下傳目錄2.1G

         通過glusterfs,平均速度為3.55M/S

不通過glusterfs,平均速度為3.09M/S

下載下傳另一目錄2.7G

         通過glusterfs,平均速度為3.81M/S

不通過glusterfs,平均速度為3.59M/S

上傳單個大檔案

通過glusterfs,平均速度為10.61M/S

不通過glusterfs,平均速度為6.31M/S

說明:操作目錄時整體速度偏慢,是因為通過ftp上傳下載下傳包含很多檔案的目錄時每個檔案都要進行建立連接配接過程然後傳輸,是以會影響整體速度,但是這并不影響我們測試glusterfs檔案系統能否給我們帶來性能提升。

通過以上測試可以得出結論,通過glusterfs的分布式存儲,對于磁盤讀寫的性能是有很大提升的。

最後附上glusterfs administrator guid

<a href="http://down.51cto.com/data/2364487" target="_blank">附件:http://down.51cto.com/data/2364487</a>

     本文轉自kai404 51CTO部落格,原文連結:http://blog.51cto.com/kaifly/1417176,如需轉載請自行聯系原作者