分佈式文件系統由來
在介紹以前咱們先來看下文件系統及典型的NFS文件系統。html
計算機經過文件系統管理,存儲數據的。而如今數據信息時代中人們可獲取數據成指數倍的增加,單純經過增長硬盤個數來拓展計算機系統的存儲的方式,已經明顯不能知足目前的需求。 分佈式文件系統能夠有效解決數據的存儲和管理難題,將固定於某個地點的某個文件系統,拓展到多個地點、多個文件系統。衆多的節點組成一個文件系統網絡,每一個節點能夠分佈在不一樣的區域的地點,經過網絡進行節點間的通訊和數據傳輸。人們無需關係數據存儲哪一個節點上或從哪一個節點獲取的,只須要像使用本地文件同樣管理和存儲文件系統中的數據。
典型表明NFSnode
NFS即網絡文件系統,它容許網絡計算機之間經過TCP/IP網絡共享資源,在NFS應用中,本地的NFS客戶端應用能夠透明的讀取遠端NFS服務器上的文件。
優勢以下:
1.節約使用的磁盤空間
客戶端常用的數據能夠集中放在一臺機器上,並使用NFS發佈,那麼網絡內部全部計算機能夠經過網絡訪問,沒必要單獨共享。
2.節約硬件資源
NFS還能夠共享軟驅,CDROM和ZIP等存儲設備,減小整個網絡上的可移動設備的數量。
3.用戶主目錄設定linux
對於特殊用戶,如管理員等,爲了管理的須要,可能會常常登陸到網絡中全部的計算機,若每一個客戶端,均保存這個用戶的主目錄很繁瑣,並且不能保證數據的一致性,實際上,通過NFS服務的設定,而後在客戶端指定這個用戶主目錄位置,並自動掛載,就能夠在任何計算機上使用用戶主目錄的文件。
GlusterFS概述算法
GlusterFS是Scale-Out存儲解決方案Gluster的核心,它是一個開源的分佈式文件系統,具備強大的橫向擴展能力,經過擴展可以支持數PB存儲容量和處理數千客戶端。GlusterFS藉助TCP/IP或GlusterFS基於可堆疊的用戶空間設計,可爲各類不一樣的數據負載提供優異的性能。 GlusterFS支持運行在任何標準的IP網絡上標準應用程序客戶端,用戶能夠在全局統一的命名空間使用NFS、CIFS等標準協議來訪問應用數據。GlusterFS使用的用戶可擺脫原有的獨立,高成本的封閉存儲系統,可以利用普通廉價的存儲設備來部署可集中管理、橫向拓展、虛擬化的存儲池,存儲容量可拓展至TP/PB級.
前glusterfs已rehat收購,官方網站是:https://www.gluster.org/centos
GlusterFS安裝部署
1.安裝glusterfs依賴的包api
yum install -y centos-release-gluster37.noarch yum --enablerepo=centos-gulster*-test install gluster-server gluster-cli gluster-geo-replication
2、GlusterFS安裝部署實踐
2.1GlusterFS安裝環境準備
#準備好4臺Centos6-x86_64虛擬機 內存1G 數據盤10G 網絡選擇nat;
每臺機器,關閉 selinux iptables並作每臺好主機名解析:緩存
192.168.10.101 mystorage1 192.168.10.102 mystorage2 192.168.10.103 mystorage3 192.168.10.104 mystorage4
補充說明:
#修改主機名2個位置安全
1. 修改 /etc/sysconfig/network 另一個是 /etc/hosts vi /etc/sysconfig/network 裏面有一行 HOSTNAME=localhost.localmain修改爲localhost.localdomain做爲主機名 /etc/hosts裏面有一行 127.0.0.1 localhost.localdomain(主機名hostname)
2.2關閉selinux及iptables服務器
#關閉selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux或 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #關閉iptables /etc/init.d/iptables stop #永久關閉 chkconfig iptables off
2.3安裝epel源(4臺主機分別執行)網絡
GlusterFS yum 源有部分包依賴epel源 yum -y install epel-release
2.4安裝glusterfs源(4臺主機分別執行)
wget -P /etc/yum.repos.d/ https://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/RHEL/glusterfs-epel.repo
或者gluster的相關包下載到本地目錄
主要包括
glusterfs-3.7.4-2.e16.x86_64.rpm glusterfs-cli-3.7.4-2.e16.x86_64.rpm glusterfs-debuginfo-3.7.4-2.e16.x86_64.rpm glusterfs-geo-replication-3.7.4-2.e16.x86_64.rpm glusterfs-rdma-3.7.4-2.e16.x86_64.rpm glusterfs-api-3.7.4-2.e16.x86_64.rpm glusterfs-client-xlators-3.7.4-2.e16.x86_64.rpm glusterfs-fuse-3.7.4-2.e16.x86_64.rpm glusterfs-libs-3.7.4-2.e16.x86_64.rpm glusterfs-server-3.7.4-2.e16.x86_64.rpm
下載地址:
https://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/epel-6.8/x86_64/
例如:(4臺主機分別執行)
執行yum -y install glusterfs-* mkdir -p /opt/glusterfs
一直執行完畢,沒有報錯的話,glusterfs安裝完畢;
2.5或者yum安裝(4臺主機分別執行)
yum install -y centos-release-gluster37.noarch yum --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
2.6配置Glusterfs
#查看gluster版本信息
glusterfs -V
#啓動中止服務(4臺主機分別執行)
/etc/init.d/glusterd start /etc/init.d/glusterd stop
#添加開機啓動(4臺主機分別執行)
chkconfig glusterd on
#查看glusterfs的運行狀態(4臺主機分別執行)
/etc/init.d/glusterd status
2.7存儲主機加入信任存儲池配置(4臺主機分別執行)
說明:每臺主機上加入除本機之外對應的其餘3臺主機的存儲池配置
gluster peer probe mystorage2 gluster peer probe mystorage3 gluster peer probe mystorage4
#查看配置鏈接存儲池的狀態(4臺主機分別執行)
gluster peer status
3、GlusterFS配置實踐
3.1 配置以前的準備工做
安裝xfs支持包(4臺主機分別執行)
yum -y install xfsprogs
fdisk -l #查看磁盤塊設備,查看相似的信息
#磁盤分區(這步能夠不作)
fdisk /dev/vdb n p 1(數字) 回車 w
再次執行fdisk -l查看
說明:若是格式話分區的磁盤大於4T使用 parted命令
生產環境中:磁盤的分區的分區暫時不作。直接對應格式化便可。
#分區格式化,每臺機器上執行
mkfs.xfs -f /dev/sdb
#分別在4臺機器上 執行
mkdir -p /storage/brick1 #創建掛在塊設備的目錄 mount /dev/sdb /storage/brick1
執行df -h查看
#開機自動掛載(4臺機器中每臺執行)
編輯/etc/fstab添加以下
/dev/sdb /storage/brick1 xfs defaults 0 0
或者執行命令:(4臺機器中每臺執行)
echo "/dev/sdb /storage/brick1 xfs defaults 0 0" >> /etc/fstab
#4臺機器中機器分別執行掛載命令
mount -a
#每臺機器執行查看掛載狀況命令;(4臺機器也都自動掛載了)
df -h
3.2建立volume及其操做
Distributed,分佈卷,算法隨機分佈到bricks組的捲上。 Replicated 複製試卷,相似raid1 replica數必須等於volume中brick所包含存儲服務器數,可用性高。 Striped,帶條帶的卷,相似raid0 stripe數必須等於volume中brick所包含的存儲服務器數,文件被分割數據模塊,以RoundRobin的方式存儲在bricks,併發顆粒度是數據塊,大文件性能好. Distributed Striped分佈式的條帶卷,volume中的brick所包含的存儲服務器數必須是stripe的倍數(>=2倍)兼顧分佈式和條帶的功能、(生產環境通常不使用,官方也不推薦) Distributed Relicated分佈式的複製卷,volume中brick1所包含的存儲服務器數必須是replica的倍數(>=2倍)兼顧分佈式和複製的功能。(生產環境使用較多)
情景1:
3.3建立分佈卷(任意一臺主機執行便可)[意義是跨主機整合磁盤]
gluster volume create gv1 mystorage1:/storage/brick1 mystorage2:/storage/brick1 force
3.4建立啓動卷(任意一臺主機執行便可)
[root@ mystorage1brick1]# gluster volume start gv1
#查看配置卷的信息
[root@ mystorage1brick1]# gluster volume info
3.5掛載到目錄(任意一臺主機執行便可)
mount -t glusterfs 127.0.0.1:/gv1 /mnt
3.6#查看掛載後的磁盤(任意一臺主機執行便可)
df -h
3.7建立文件查看測試結果
#mystorage1s上建立文件
[root@mystorage1 mnt]# touch a b c dd ddf
#mystorage3查看建立文件
[root@mystorage3 mnt]# ls a b c dd ddf
情景2:
3.8測試NFS方式掛載及查看數據
[root@mystorage4 /]# umount /mnt/ [root@mystorage4 /]# mount -o mountproto=tcp -t nfs 192.168.56.11:/gv1 /mnt/ [root@mystorage4 /]# df -h [root@mystorage4 /]# umount /mnt/
#測試掛載另一臺機器
[root@mystorage4 /]# mount -o mountproto=tcp -t nfs 192.168.56.12:/gv1 /mnt/ [root@mystorage4 /]# df -h [root@mystorage4 /]# umount /mnt/
情景3:
3.9建立分佈式複製卷(storage3和storage4)[生產場景推薦使用此種方式]
[root@mystorage1 mnt]# gluster volume create gv2 replica 2 mystorage3:/storage/brick1 mystorage4:/storage/brick1 force [root@mystorage2 ~]# gluster volume start gv2 [root@mystorage1 mnt]# df -h [root@mystorage1 mnt]# mount -t glusterfs 127.0.0.1:/gv2 /opt [root@mystorage1 mnt]# df -h [root@mystorage1 mnt]# cd /opt/ [root@mystorage1 opt]# touch sdfsd sdf
3.10測試查看分佈式複製的數據(storage3和storage4)
[root@mystorage3 mnt]# cd /storage/brick1 [root@mystorage3 brick1]# ls sdfsd sdf [root@mystorage4 mnt]# cd /storage/brick1 [root@mystorage4 brick1]# ls sdfsd sdf
說明:以上兩種狀況,一是建立分佈卷,另外建立分佈式複製卷,生產場景中通常使用1個卷(整合多個磁盤到一個卷)使用分佈式複製卷場景(情景3)居多。
情景4:
3.11建立分佈式條帶卷
#建立卷目錄(4臺主機分別執行)
mkdir -p /storage/brick2
#添加開機啓動自動掛載(4臺主機分別執行)
echo "/dev/sdc /storage/brick2 xfs defaults 0 0" >>/etc/fstab
#執行掛載(4臺主機分別執行)
mount -a
#查看掛載狀況(4臺主機分別執行)
df -h
#建立分佈式條帶卷(storage1上執行)
gluster volume create gv3 stripe 2 mystorage3:/storage/brick2 mystorage4:/storage/brick2 force
#啓動卷(storage1上執行)
gluster volume start gv3
#查看配置卷信息
gluster volume info
#建立要掛載的目錄(分別在4臺機器的根上新建gv1 gv2 gv3)
mkdir /gv1 /gv2 /gv3
#執行掛載命令(storage4上執行)(4臺機器也可都執行)
mount -t glusterfs 127.0.0.1:gv1 /gv1 mount -t glusterfs 127.0.0.1:gv2 /gv2 mount -t glusterfs 127.0.0.1:gv3 /gv3 df -h
#咱們建立一個10M的目錄測試(storage4上)
[root@mystorage4 gv3]# ls -a . .. .trashcan [root@mystorage4 gv3]# dd if=/dev/zero bs=1024 count=10000 of=/gv3/10M.file [root@mystorage4 gv3]# dd if=/dev/zero bs=2048 count=10000 of=/gv3/20M.file [root@mystorage4 gv3]# cd /storage/brick2 [root@mystorage4 brick2]# ls -lh
#進入到storage3上看下
[root@mystorage3 gv3]# cd /storage/brick2 [root@mystorage3 brick2]# ls -lh
對比兩邊的文件你會發現兩個文件被打散分別存儲在storage3和storage4上了、
[root@mystorage3 gv3]# ls -lh #也會看到剛咱們建立的兩個文件。
#咱們在storage3上 gv2目錄測試
[root@mystorage3 gv2]# dd if=/dev/zero bs=1024 count=10000 of=/gv2/10M.file [root@mystorage3 gv2]# dd if=/dev/zero bs=2048 count=10000 of=/gv2/20M.file
#進入到storage3 brick1和storage4 brick1對比查看
[root@mystorage3 brick1]# ls -lh [root@mystorage4 brick1]# ls -lh
3.12 添加磁盤操做
#中止gv2 數據服務
gluster volume stop gv2
#添加新加的磁盤的到存儲池
gluster volume add-brick gv2 replica 2 mystorage1:/storage/brick2 mystorage2:/storage/brick2 force
#啓動啓動卷
gluster volume start gv2
#取消掛載gv2,從新掛載
umount /gv2 mount -t glusterfs 127.0.0.1:/gv2 /gv2
#查看掛載結果(gv2已經變成20G了)
df -h
#查看gv2卷信息
gluster volume info gv2
注意說明:
當你給分佈式複製卷和分佈式條帶卷中增長bricks時,你增長的bricks的數目必須是複製卷和條帶卷數目的倍數。例如:
你給一個分佈式複製卷的replica爲2 你在增長bricks的時候數量必須爲2.4.6.8等。
3.13磁盤存儲的平衡:
注意;平衡佈局是頗有必要的,由於佈局結構是靜態的,當新的bricks加入現有卷,新建的文件會分佈在舊的brick中,因此須要平衡佈局結構,使新加入的bricks生效,佈局只是使新佈局生效。並不會在新的佈局上移動老的數據,若是想在新佈局生效後,從新平衡卷中的數據,還須要對卷中的數據進行平衡。
執行命令:(可在storage1上執行)
gluster volume rebalance gv2 start
#查看執行平衡後同步的狀態
gluster volume rebalance gv2 status
3.14移除brick
注意:你可能想在線縮小卷的大小。例如:當硬件損壞或者網絡故障的時候,你可能想在卷中移除相關的bricks注意,當你移除bricks的時候,你在gluster的掛載點不能繼續訪問數據,只有配置文件中的信息移除後你才能繼續訪問bricks的數據。當移除分佈式複製卷或者分佈式條帶卷的時候,移除的bricks數目必須是replica或者stripe的倍數。例如:一個分佈式條帶卷的stripe是2 當你移除bricks的時候必須是二、四、六、8等。
執行操做:
gluster volume stop gv2
#移除操做
gluster volume remove-brick gv2 replica 2 mystorage3:/storage/brick1 mystorage4:/storage/brick1 force
3.15刪除卷
#storege4上看下掛載狀況
df -h
#卸載gv1
umount /gv1
#中止卷
gluster volume stop gv1
#刪除卷
gluster volume
#查看卷信息
gluster volume info gv1
GlusterFS在企業中應用場景
理論和實踐分析,GlusterFS目前主要使用大文件存儲場景,對於小文件尤爲是海量小文件,存儲效率和訪問性能都表現不佳,海量小文件LOSF問題是工業界和學術界的人工難題,GlusterFS做爲通用的分佈式文件系統,並無對小文件額外的優化措施,性能很差也是能夠理解的。
Media -文檔、圖片、音頻、視頻 *Shared storage -雲存儲、虛擬化存儲、HPC(高性能計算) *Big data -日誌文件、RFID(射頻識別)數據