GlusterFS部署實操


版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 ————— 作者:kirin

01、簡介

GFS(glusterfs),是一個開源的分布式文件系統,可以將數據存儲在不同的節點服務器上,達到硬件磁盤陣列的效果,從而保證數據的高可用高

02、GlusterFS特點

★擴展性和高性能

★高可用

★全局統一命令空間

★彈性卷管理

★基於標准協議

03、GlusterFS術語

★Brick:GFS中的存儲單元,通過是一個受信存儲池中的服務器的一個導出目錄。可以通過主機名和目錄名來標識,如’SERVER:EXPORT’

★Volume:卷

★FUSE:內核文件系統,Filesystem Userspace是一個可加載的內核模塊,其支持非特權用戶創建自己的文件系統而不需要修改內核代碼。通過在用戶空間運行文件系統的代碼通過FUSE代碼與內核進行橋接。

★VFS:虛擬文件系統

★Glusterd:Gluster management daemon,要在trusted storage pool中所有的服務器上運行

04、卷分類:

# 分布式卷
將數據分開放在不同的節點,並沒有對文件進行分塊。比如一共有100個文件,分布式卷是將這100個通過hash算法文件分開放在不同的節點上,每個文件都是完整的可以打開的

# 條帶卷
將數據分開放在不同的節點,對每個文件進行分塊,類似raid0

# 復制卷
對每個數據進行備份,兩份數據分別放在兩個節點,類似raid1

# 分布式條帶卷
兼顧分布式和條帶卷的功能,主要用於大文件訪問處理,至少最少需要 4 台服務器。

# 分布式復制卷
兼顧分布式卷和復制卷的功能,用於需要冗余的情況下

一、環境准備

1.1虛擬機准備

五台虛擬機:一台作為客戶機,另外四台作為節點,每個虛擬機新增4塊磁盤(每塊磁盤20G)

角色 大小
node1:10.0.0.101 20*4
node2:10.0.0.102 20*4
node3:10.0.0.103 20*4
node4:10.0.0.104 20*4
客戶端:10.0.0.100 100

1.2配置四台節點服務器

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# hostnamectl set-hostname node3
[root@localhost ~]# hostnamectl set-hostname node4
注意:不用忘記關閉所有節點防火牆跟防護功能啊!!!。
注意:做好時間同步啊!!!
yum install -y ntpdate.x86_64
ntpdate 0.asia.pool.ntp.org
寫入定時任務

1.3修改hosts文件

vim /etc/hosts
10.0.0.101 node1
10.0.0.102 node2
10.0.0.103 node3
10.0.0.104 node4
10.0.0.100 clinet
注意:5台機器都要修改


如果不做解析的話會出現如下報錯

1.4掛載Gluster文件系統跟修改fstab配置文件

1.4.1--4台節點服務器格式化新添加的4塊磁盤,這里不在贅述了

1.4.2.格式化4塊新添加的數據盤
]#  mkfs.xfs /dev/sdb

1.4.3.然后創建4個目錄掛載/data/{sdb,sd...},
]#  mkdir -p /data/sd{b..e}

1.4.4.掛載格式化后的數據盤

1.4.5.修改fstab配置文件也不在贅述。
]# vim /etc/fstab

1.5安裝GlusterFS

注意四台節點操作一致
###修改yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清理yum源
[root@node1 ~]#   yum clean all
生成yum緩存
[root@node1 ~]#   yum makecache                                                                 
#安裝gluster
[root@node1 ~]# yum -y install centos-release-gluster   ###這是安裝yum源
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma  ##安裝依賴包
#啟動glusterfs
systemctl start glusterd.service
#查看狀態
啟動后一定要看狀態。
 systemctl status glusterd.service                                                   

1.6添加加入存儲信息池

只要一台主機上添加其他節點即可,這里我在node1節點上操作
[root@node1 ~]# gluster peer probe node2  ###把node2加入存儲池
peer probe: success. 

[root@node1 ~]# gluster peer probe node3  ###把node3加入存儲池
peer probe: success. 
[root@node1 ~]# gluster peer probe node4  ###把node4加入存儲池
peer probe: success. 
#查看所有節點
[root@node1 ~]# gluster peer status    ####這是命令
Number of Peers: 3
 
Hostname: node2
Uuid: 61ea3244-2d19-48dc-ab1c-e30bd4e7d01d
State: Peer in Cluster (Connected)
 
Hostname: node3
Uuid: 134437ba-1bce-4d4a-ab62-689f99796dba
State: Peer in Cluster (Connected)
 
Hostname: node4
Uuid: 72b81ad1-0428-4488-a146-c8a0d5b466f3
State: Peer in Cluster (Connected)

二、創建各種卷

1:分布式卷

文件分布在不同的服務器,不具備冗余性,單點故障會造成數據丟失,似乎類似於read0

1.1服務端配置
注意:不用忘記關閉所有節點防火牆跟防護功能啊!!!。
注意:做好時間同步啊!!!
隨便找一台機器創建即可這里我用node4操作
#創建卷
在node4創建利用node1和node2上的兩塊磁盤創建;dis-vol為磁盤名;force表示強制'
[root@node4 ~]# gluster volume create dis-vol node1:/data/sdb node2:/data/sdb force

#查看卷
[root@node4 ~]# gluster volume list   ###這才是命令
dis-vol

#啟動
[root@node4 ~]# gluster volume start dis-vol   ###這才是命令
volume start: dis-vol: success

#查看狀態
[root@node4 ~]# gluster volume info dis-vol   ###這才是命令
Volume Name: dis-vol
Type: Distribute
Volume ID: 351d5534-d3d1-450b-93c5-beac0a39e757
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on

#如果不想用可以關閉
[root@node4 ~]#  gluster volume stop dis-vol 
#甚至可以刪除它
[root@node4 ~]# gluster volume delete dis-vol

1.2客戶端配置

注意:不用忘記關閉所有節點防火牆跟防護功能啊!!!。

注意:做好時間同步啊!!!

#配置安裝GFS源
1.下載阿里雲yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.清理yum源&生成緩存:
yum clean all && yum makecache
3.安裝源:
yum -y install centos-release-gluster
4.安裝軟件包:
yum -y install glusterfs glusterfs-fuse  
####host文件修改了嗎?
#創建臨時掛載點:
root@client ~]# mkdir -p /test/dis     #遞歸創建掛載點
[root@client ~]# mount.glusterfs node2:dis-vol /test/dis    #掛載分布式node2是隨意寫的只要是地地址池里面的節點都行
[root@node4 ~]# df – h#檢查是否掛載

#測試卷:創建5個40M的文件
dd if=/dev/zero of=/demo1.log bs=1M count=40
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1M count=40
dd if=/dev/zero of=/demo5.log bs=1M count=40
#創建的5個文件復制到掛載點上
[root@client ~]#  cp /demo* /test/dis
#查看一下吧
[root@client dis]#  cd /test/dis
[root@client dis]# ll -h
總用量 200M
-rw-r--r--. 1 root root 40M 5月  13 22:45 demo1.log
-rw-r--r--. 1 root root 40M 5月  13 22:45 demo2.log
-rw-r--r--. 1 root root 40M 5月  13 22:45 demo3.log
-rw-r--r--. 1 root root 40M 5月  13 22:45 demo4.log
-rw-r--r--. 1 root root 40M 5月  13 22:45 demo5.log

#自行前往node1與node2查看發生了什么變化
#node1查看一下
[root@node1 ~]#  cd /data/sdb
[root@node1 sdb1]# ll -h
總用量 160M
-rw-r--r--. 2 root root 40M 5月  13 22:45 demo1.log
-rw-r--r--. 2 root root 40M 5月  13 22:45 demo2.log
-rw-r--r--. 2 root root 40M 5月  13 22:45 demo3.log
-rw-r--r--. 2 root root 40M 5月  13 22:45 demo4.log
 
#node2查看一下
[root@node2 opt]# cd /data/sdb
[root@node2 sdb1]# ll -h
總用量 40M
-rw-r--r--. 2 root root 40M 5月  13 22:45 demo5.log

2.復制卷

同一個文件保存一份或多分副本,復制模式因為要保存副本,所以磁盤利用率較低。

多個節點上的存儲空間不一致,那么將安裝木桶效應取最低節點的容量作為該卷的總容量

似乎類似於read1

2.1服務端配置
注意:不用忘記關閉所有節點防火牆跟防護功能啊!!!。
注意:做好時間同步啊!!!
本次在node03上操作
#創建卷
[root@node3 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb node4:/data/sdb force
寫錯節點名字或者沒做hosts解析會報一下錯誤

#查看卷
[root@node3 ~]# gluster volume list  #命令在這
dis-vol
rep-vol

#啟動
[root@node3 ~]#   gluster volume start rep-vol

2.2客戶端配置
#創建掛載點
[root@client dis]#  mkdir /test/rep-vol
#掛載
[root@client dis]# mount.glusterfs node2:rep-vol /test/rep-vol/
#復制到掛載點
[root@client /]# cp demo* /test/rep-vol/
#node3節點查看
[root@node3 sdc1]# cd /data/sdb
[root@node3 sdb1]# ll -h
總用量 200M
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo1.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo2.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo3.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo4.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo5.log
#node4節點查看 
[root@node4 ~]# cd /data/sdb
[root@node4 sdb1]# ll -h
總用量 200M
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo1.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo2.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo3.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo4.log
-rw-r--r--. 2 root root 40M 5月  13 23:23 demo5.log

三、分布式復制卷

兼顧分布式卷和復制卷的功能;用於需要冗余的情況下,有點類似read10

3.1服務端配置

注意:不用忘記關閉所有節點防火牆跟防護功能啊!!!。
注意:做好時間同步啊!!!
#創建卷
[root@node4 ~]# gluster volume create dis-rep replica 2 node1:/data/sde node2:/data/sde node3:/data/sde node4:/data/sde force

##開啟
gluster volume start dis-rep
gluster volume info dis-rep

3.2客戶端掛載

#創建掛載點、掛載並查看掛載情況
[root@client ~]# mkdir /test/dis-rep
[root@client ~]# mount.glusterfs node1:dis-rep /test/dis-rep/
[root@client ~]# df -h

#復制卷到掛載卷
[root@client /]# cp demo* /test/dis-rep/
#去node1節點查看
[root@node1 ~]# cd /data/sde
[root@node1 sde1]# ll -h
總用量 160M
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo1.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo2.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo3.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo4.log
#node2節點查看
[root@node2 ~]# cd /data/sde1
[root@node2 sde1]# ll -h
總用量 160M
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo1.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo2.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo3.log
-rw-r--r--. 2 root root 40M 5月  14 09:04 demo4.log
#node3查看
[root@node3 ~]# cd /data/sde1
[root@node3 sde1]# ll -h
總用量 40M
-rw-r--r--. 2 root root 40M 9月  14 09:04 demo5.log
#node4查看
[root@node4 ~]# cd /data/sde1
[root@node4 sde1]# ll -h
總用量 40M
-rw-r--r--.: 2 root root 40M 9月  14 09:04 demo5.log

四、故障測試

隨便關閉一個節點觀察結果,這里以關閉node2服務器為例觀察
[root@client /]# cd /test/
[root@client test]# ls
dis  dis-rep  rep-vol
[root@client test]# ls dis #查看分布卷
demo1.log  demo2.log  demo3.log  demo4.log //這邊缺少deme05.log
 
[root@client test]# ls dis-rep/  #查看復制卷
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log    #這邊是完整的
 
[root@client test]# ls rep-vol/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log   #查看分布式復制卷  也是完整的

五、訪問控制

##僅拒絕
[root@node1~]# gluster volume set dis-vol auth.reject 10.0.0.100
volume set: success
##僅允許
[root@node1 ~] gluster volume set dis-vol auth.allow 10.0.0.100
volume set: success


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM