女人下边被舔全过视频软件,美丽的姑娘免费观看在线播放,久久人人爽爽人人爽人人片av,麻豆精产国品,久久久久久夜精品精品免费啦

GlusterFS分布式存儲

GlusterFS分布式存儲

目錄

glusterfs簡介

glusterfs部署

glustefs分布式存儲優(yōu)化

glusterfs在企業(yè)中應(yīng)用場景

參考文章地址

 

一、glusterfs簡介

Glusterfs是一個開源的分布式文件系統(tǒng),是Scale存儲的核心,能夠處理千數(shù)量級的客戶端。是整合了許多存儲塊(server)通過Infiniband RDMA或者 Tcp/Ip方式互聯(lián)的一個并行的網(wǎng)絡(luò)文件系統(tǒng)。

  特征:

  • 容量可以按比例的擴展,且性能卻不會因此而降低。
  • 廉價且使用簡單,完全抽象在已有的文件系統(tǒng)之上。
  • 擴展和容錯設(shè)計的比較合理,復(fù)雜度較低
  • 適應(yīng)性強,部署方便,對環(huán)境依賴低,使用,調(diào)試和維護便利

二、glusterfs安裝部署

一般在企業(yè)中,采用的是分布式復(fù)制卷,因為有數(shù)據(jù)備份,數(shù)據(jù)相對安全。

 網(wǎng)絡(luò)要求全部千兆環(huán)境,gluster 服務(wù)器至少有 2 塊網(wǎng)卡,1 塊網(wǎng)卡綁定供 gluster 使用,剩余一塊分配管理網(wǎng)絡(luò) IP,用于系統(tǒng)管理。如果有條件購買萬兆交換機,服務(wù)器配置萬兆網(wǎng)卡,存儲性能會更好。網(wǎng)絡(luò)方面如果安全性要求較高,可以多網(wǎng)卡綁定。

 跨地區(qū)機房配置 Gluster,在中國網(wǎng)絡(luò)格局下不適用。

  • 注意:GlusterFS將其動態(tài)生成的配置文件存儲在/var/lib/glusterd中。如果在任何時候GlusterFS無法寫入這些文件(例如,當后備文件系統(tǒng)已滿),它至少會導(dǎo)致您的系統(tǒng)不穩(wěn)定的行為; 或者更糟糕的是,讓您的系統(tǒng)完全脫機。建議為/var/log等目錄創(chuàng)建單獨的分區(qū),以確保不會發(fā)生這種情況。

1、安裝glusterfs前的環(huán)境準備 

  1.1、服務(wù)規(guī)劃:

操作系統(tǒng) IP 主機名 硬盤數(shù)量(三塊)
centos 7.4 10.0.0.101 node1 sdb:5G  sdc:5G  sdd:5G
centos 7.4 10.0.0.102 node2 sdb:5G  sdc:5G  sdd:5G
centos 7.4 10.0.0.103 node3 sdb:5G  sdc:5G  sdd:5G
centos 7.4 10.0.0.104 node4 sdb:5G  sdc:5G  sdd:5G
centos 7.4 10.0.0.105 node5-client sda:20G

 

   1.2、首先關(guān)閉iptables和selinux,配置hosts文件如下(全部glusterfs主機)

注:node01~node04所有的主機hosts文件均為此內(nèi)容;同時全部修改為對應(yīng)的主機名,centos7修改主機名方式:#hostnamectl set-hostname 主機名 (即為臨時和永久生效)
可以使用#hostnamectl status   查看系統(tǒng)基本信息

復(fù)制代碼

[root@node01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.101  node01
10.0.0.102  node02
10.0.0.103  node03
10.0.0.104  node04
[root@node01 ~]# systemctl stop firewalld.service       #停止firewalld
[root@node01 ~]# systemctl disable firewalld.service    #禁止firewalld開機自啟
[root@node01 ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config   #關(guān)閉SELinux
[root@node01 ~]# setenforce 0
[root@node01 ~]# getenforce
Permissive
[root@node01 ~]# ntpdate time.windows.com   #同步時間

復(fù)制代碼

   1.3、安裝gluterfs源(全部glusterfs主機)

復(fù)制代碼

[root@node01 ~]#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo   #不是必須的
[root@node01 ~]#yum search  centos-release-gluster   #查看有哪些版本的glusterfs源    
================================================ N/S matched: centos-release-gluster =================================================
centos-release-gluster310.noarch : Gluster 3.10 (Long Term Stable) packages from the CentOS Storage SIG repository
centos-release-gluster312.noarch : Gluster 3.12 (Long Term Stable) packages from the CentOS Storage SIG repository
centos-release-gluster313.noarch : Gluster 3.13 (Short Term Stable) packages from the CentOS Storage SIG repository
centos-release-gluster36.noarch : GlusterFS 3.6 packages from the CentOS Storage SIG repository
centos-release-gluster37.noarch : GlusterFS 3.7 packages from the CentOS Storage SIG repository
centos-release-gluster38.noarch : GlusterFS 3.8 packages from the CentOS Storage SIG repository
centos-release-gluster39.noarch : Gluster 3.9 (Short Term Stable) packages from the CentOS Storage SIG repository

復(fù)制代碼

     這里我們使用glusterfs的3.12版本的源

[root@node01 ~]# yum  -y  install centos-release-gluster312.noarch

   1.4、安裝glusterfs(全部glusterfs主機)

在安裝glusterfs的時候直接指定源為glusterfs源,由于 源[centos-gluster310-test]的enable為0,所以在指定源的時候用–enablerepo來讓源生效

GlusterFS分布式存儲插圖1 cat /etc/yum.repos.d/CentOS-Gluster-3.12.repo

    安裝glusterfs

[root@node01 ~]# yum -y --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication

  1.5、查看glusterfs版本并啟動glusterfs服務(wù)(全部glusterfs主機)

復(fù)制代碼

[root@node01 ~]# glusterfs -V
glusterfs 3.12.5

[root@node01 ~]# systemctl start glusterd.service
[root@node01 ~]# systemctl enable glusterd.service
[root@node01 ~]# systemctl status glusterd.service
[root@node01 ~]# netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      866/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      972/master          
tcp        0      0 0.0.0.0:24007           0.0.0.0:*               LISTEN      2268/glusterd       
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      866/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      972/master          
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2266/rpcbind        
udp        0      0 0.0.0.0:745             0.0.0.0:*                           2266/rpcbind        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           527/chronyd         
udp6       0      0 :::111                  :::*                                2266/rpcbind        
udp6       0      0 :::745                  :::*                                2266/rpcbind        
udp6       0      0 ::1:323                 :::*                                527/chronyd  

復(fù)制代碼

   1.6、格式化磁盤(全部glusterfs主機)

  在每臺主機上創(chuàng)建幾塊硬盤,做接下來的分布式存儲使用

 注:創(chuàng)建的硬盤要用xfs格式來格式化硬盤,如果用ext4來格式化硬盤的話,對于大于16TB空間格式化就無法實現(xiàn)了。所以這里要用xfs格式化磁盤(centos7默認的文件格式就是xfs),并且xfs的文件格式支持PB級的數(shù)據(jù)量

 如果是centos6默認是不支持xfs的文件格式,要先安裝xfs支持包

yum install xfsprogs -y

  用fdisk -l 查看磁盤設(shè)備,例如查看data-1-1的磁盤設(shè)備,這里的sdc、sdd、sde是新加的硬盤

[root@node01 ~]# fdisk -l
Disk /dev/sdb: 5368 MB, 5368709120 bytes
Disk /dev/sdc: 5368 MB, 5368709120 bytes
Disk /dev/sdd: 5368 MB, 5368709120 bytes

   特別說明:

   如果磁盤大于 2T 的話就用 parted 來分區(qū),這里我們不用分區(qū)(可以不分區(qū));
   做分布式文件系統(tǒng)的時候數(shù)據(jù)盤一般不需要做 RAID,一般系統(tǒng)盤會做 RAID 1;
   如果有raid卡的話,較好用上,raid卡有數(shù)據(jù)緩存功能,也能提高磁盤的iops,較好的話,用RAID 5;
   如果都不做raid的話,也是沒問題的,glusterfs也是可以保證數(shù)據(jù)的安全的。

這里使用官方推薦的格盤方式:http://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/#purpose-of-this-document
[root@node01 ~]# mkfs.xfs  -i size=512 /dev/sdb
[root@node01 ~]# mkfs.xfs  -i size=512 /dev/sdc
[root@node01 ~]# mkfs.xfs  -i size=512 /dev/sdd

  在四臺機器上創(chuàng)建掛載塊設(shè)備的目錄,掛載硬盤到目錄

復(fù)制代碼

mkdir -p /data/brick{1..3}
echo '/dev/sdb /data/brick1 xfs defaults 0 0' >> /etc/fstab
echo '/dev/sdc /data/brick2 xfs defaults 0 0' >> /etc/fstab
echo '/dev/sdd /data/brick3 xfs defaults 0 0' >> /etc/fstab
#掛載
mount -a

[root@node01 ~]# df -h
/dev/sdc        5.0G   33M  5.0G   1% /data/brick2
/dev/sdd        5.0G   33M  5.0G   1% /data/brick3
/dev/sdb        5.0G   33M  5.0G   1% /data/brick1

復(fù)制代碼

注:再次說明——以上操作均在node01-node04上同時操作

 

 2、操作

   2.1、將分布式存儲主機加入到信任主機池并查看加入的主機狀態(tài)

 隨便在一個開啟glusterfs服務(wù)的主機上將其他主機加入到一個信任的主機池里,這里選擇node01

復(fù)制代碼

[root@node01 ~]# gluster peer probe node02
peer probe: success.
[root@node01 ~]# gluster peer probe node03
peer probe: success.
[root@node01 ~]# gluster peer probe node04
peer probe: success.

復(fù)制代碼

       查看主機池中主機的狀態(tài)

復(fù)制代碼

[root@node01 ~]# gluster peer status
Number of Peers: 3      #除本機外,還有三臺主機主機池中

Hostname: node02
Uuid: 6020709d-1b46-4e2c-9cdd-c4b3bba47b4b
State: Peer in Cluster (Connected)

Hostname: node03
Uuid: 147ee557-51f1-43fe-a27f-3dae2880b5d4
State: Peer in Cluster (Connected)

Hostname: node04
Uuid: f61af299-b00d-489c-9fd9-b4f6a336a6c7
State: Peer in Cluster (Connected)
注意:一旦建立了這個池,只有受信任的成員可能會將新的服務(wù)器探測到池中。新服務(wù)器無法探測池,必須從池中探測。

復(fù)制代碼

 

  2.2、創(chuàng)建glusterfs卷

GlusterFS 五種卷  

  • Distributed:分布式卷,文件通過 hash 算法隨機分布到由 bricks 組成的卷上。
  • Replicated: 復(fù)制式卷,類似 RAID 1,replica 數(shù)必須等于 volume 中 brick 所包含的存儲服務(wù)器數(shù),可用性高。
  • Striped: 條帶式卷,類似 RAID 0,stripe 數(shù)必須等于 volume 中 brick 所包含的存儲服務(wù)器數(shù),文件被分成數(shù)據(jù)塊,以 Round Robin 的方式存儲在 bricks 中,并發(fā)粒度是數(shù)據(jù)塊,大文件性能好。
  • Distributed Striped: 分布式的條帶卷,volume中 brick 所包含的存儲服務(wù)器數(shù)必須是 stripe 的倍數(shù)(>=2倍),兼顧分布式和條帶式的功能。
  • Distributed Replicated: 分布式的復(fù)制卷,volume 中 brick 所包含的存儲服務(wù)器數(shù)必須是 replica 的倍數(shù)(>=2倍),兼顧分布式和復(fù)制式的功能。

 分布式復(fù)制卷的brick順序決定了文件分布的位置,一般來說,先是兩個brick形成一個復(fù)制關(guān)系,然后兩個復(fù)制關(guān)系形成分布。

 企業(yè)一般用后兩種,大部分會用分布式復(fù)制(可用容量為 總?cè)萘?復(fù)制份數(shù)),通過網(wǎng)絡(luò)傳輸?shù)脑捿^好用萬兆交換機,萬兆網(wǎng)卡來做。這樣就會優(yōu)化一部分性能。它們的數(shù)據(jù)都是通過網(wǎng)絡(luò)來傳輸?shù)摹?/p>

 配置分布式卷

復(fù)制代碼

#在信任的主機池中任意一臺設(shè)備上創(chuàng)建卷都可以,而且創(chuàng)建好后可在任意設(shè)備掛載后都可以查看
[root@node01 ~]# gluster volume create gv1 node01:/data/brick1 node02:/data/brick1 force      #創(chuàng)建分布式卷
volume create: gv1: success: please start the volume to access data
[root@node01 ~]# gluster volume start gv1    #啟動卷gv1
volume start: gv1: success
[root@node01 ~]# gluster volume info gv1     #查看gv1的配置信息

Volume Name: gv1
Type: Distribute  #分布式卷
Volume ID: 85622964-4b48-47d5-b767-d6c6f1e684cc
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick1
Brick2: node02:/data/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node01 ~]# mount -t glusterfs 127.0.0.1:/gv1 /opt   #掛載gv1卷
[root@node01 ~]# df -h
文件系統(tǒng)        容量  已用  可用 已用% 掛載點/dev/sdc        5.0G   33M  5.0G    1% /data/brick2
/dev/sdd        5.0G   33M  5.0G    1% /data/brick3
/dev/sdb        5.0G   33M  5.0G    1% /data/brick1
127.0.0.1:/gv1   10G   65M   10G    1% /opt     #連個設(shè)備容量之和
[root@node01 ~]# cd /opt/
[root@node01 opt]# touch {a..f}      #創(chuàng)建測試文件
[root@node01 opt]# ll
總用量 0
-rw-r--r--. 1 root root 0 2月   2 23:59 a
-rw-r--r--. 1 root root 0 2月   2 23:59 b
-rw-r--r--. 1 root root 0 2月   2 23:59 c
-rw-r--r--. 1 root root 0 2月   2 23:59 d
-rw-r--r--. 1 root root 0 2月   2 23:59 e
-rw-r--r--. 1 root root 0 2月   2 23:59 f
# 在node04也可看到新創(chuàng)建的文件,信任存儲池中的每一臺主機掛載這個卷后都可以看到
[root@node04 ~]# mount -t glusterfs 127.0.0.1:/gv1 /opt
[root@node04 ~]# ll /opt/
總用量 0
-rw-r--r--. 1 root root 0 2月   2 2018 a
-rw-r--r--. 1 root root 0 2月   2 2018 b
-rw-r--r--. 1 root root 0 2月   2 2018 c
-rw-r--r--. 1 root root 0 2月   2 2018 d
-rw-r--r--. 1 root root 0 2月   2 2018 e
-rw-r--r--. 1 root root 0 2月   2 2018 f
[root@node01 opt]# ll /data/brick1/
總用量 0
-rw-r--r--. 2 root root 0 2月   2 23:59 a
-rw-r--r--. 2 root root 0 2月   2 23:59 b
-rw-r--r--. 2 root root 0 2月   2 23:59 c
-rw-r--r--. 2 root root 0 2月   2 23:59 e
[root@node02 ~]# ll /data/brick1
總用量 0
-rw-r--r--. 2 root root 0 2月   2 23:59 d
-rw-r--r--. 2 root root 0 2月   2 23:59 f
#文件實際存在位置node01和node02上的/data/brick1目錄下,通過hash分別存到node01和node02上的分布式磁盤上

復(fù)制代碼

 

配置復(fù)制卷

復(fù)制代碼

注:復(fù)制模式,既AFR, 創(chuàng)建volume 時帶 replica x 數(shù)量: 將文件復(fù)制到 replica x 個節(jié)點中。
這條命令的意思是使用Replicated的方式,建立一個名為gv2的卷(Volume),存儲塊(Brick)為2個,分別為node01:/data/brick2和node02:/data/brick2;
fore為強制創(chuàng)建:因為復(fù)制卷在雙方主機通信有故障再恢復(fù)通信時容易發(fā)生腦裂。本次為實驗環(huán)境,生產(chǎn)環(huán)境不建議使用。

[root@node01 ~]# gluster volume create gv2 replica 2 node01:/data/brick2 node02:/data/brick2 force
volume create: gv2: success: please start the volume to access data
[root@node01 ~]# gluster volume start gv2    #啟動gv2卷
volume start: gv2: success
[root@node01 ~]# gluster volume info gv2   #查看gv2信息
Volume Name: gv2
Type: Replicate   #復(fù)制卷
Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick2
Brick2: node02:/data/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
[root@node01 ~]# mount -t glusterfs 127.0.0.1:/gv2 /mnt
[root@node01 ~]# df -h
文件系統(tǒng)        容量  已用  可用 已用% 掛載點
/dev/sdc        5.0G   33M  5.0G    1% /data/brick2
/dev/sdd        5.0G   33M  5.0G    1% /data/brick3
/dev/sdb        5.0G   33M  5.0G    1% /data/brick1
127.0.0.1:/gv1   10G   65M   10G    1% /opt
127.0.0.1:/gv2  5.0G   33M  5.0G    1% /mnt    #容量是總?cè)萘康囊话?[root@node01 ~]# cd /mnt/
[root@node01 mnt]# touch {1..6}
[root@node01 mnt]# ll /data/brick2
總用量 0
-rw-r--r--. 2 root root 0 2月   3 01:06 1
-rw-r--r--. 2 root root 0 2月   3 01:06 2
-rw-r--r--. 2 root root 0 2月   3 01:06 3
-rw-r--r--. 2 root root 0 2月   3 01:06 4
-rw-r--r--. 2 root root 0 2月   3 01:06 5
-rw-r--r--. 2 root root 0 2月   3 01:06 6
[root@node02 ~]# ll /data/brick2
總用量 0
-rw-r--r--. 2 root root 0 2月   3 01:06 1
-rw-r--r--. 2 root root 0 2月   3 01:06 2
-rw-r--r--. 2 root root 0 2月   3 01:06 3
-rw-r--r--. 2 root root 0 2月   3 01:06 4
-rw-r--r--. 2 root root 0 2月   3 01:06 5
-rw-r--r--. 2 root root 0 2月   3 01:06 6
#創(chuàng)建文件的實際存在位置為node01和node02上的/data/brick2目錄下,因為是復(fù)制卷,這兩個目錄下的內(nèi)容是完全一致的。

復(fù)制代碼

 

配置條帶卷


 

復(fù)制代碼

[root@node01 ~]# gluster volume create gv3 stripe 2 node01:/data/brick3 node02:/data/brick3 force
volume create: gv3: success: please start the volume to access data
[root@node01 ~]# gluster volume start gv3
volume start: gv3: success
[root@node01 ~]# gluster volume info gv3

Volume Name: gv3
Type: Stripe
Volume ID: 54c16832-6bdf-42e2-81a9-6b8d7b547c1a
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick3
Brick2: node02:/data/brick3
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node01 ~]# mkdir /data01
[root@node01 ~]# mount -t glusterfs 127.0.0.1:/gv3 /data01
[root@node01 ~]# df -h
文件系統(tǒng)        容量  已用  可用 已用% 掛載點
127.0.0.1:/gv3   10G   65M   10G    1% /data01
[root@node01 ~]# dd if=/dev/zero bs=1024 count=10000 of=/data01/10M.file
[root@node01 ~]# dd if=/dev/zero bs=1024 count=20000 of=/data01/20M.file
[root@node01 ~]# ll /data01/ -h
總用量 30M
-rw-r--r--. 1 root root 9.8M 2月   3 02:03 10M.file
-rw-r--r--. 1 root root  20M 2月   3 02:04 20M.file
*************************************************************************************
#文件的實際存放位置:
[root@node01 ~]# ll -h /data/brick3
總用量 15M
-rw-r--r--. 2 root root 4.9M 2月   3 02:03 10M.file
-rw-r--r--. 2 root root 9.8M 2月   3 02:03 20M.file
[root@node02 ~]# ll -h /data/brick3
總用量 15M
-rw-r--r--. 2 root root 4.9M 2月   3 02:03 10M.file
-rw-r--r--. 2 root root 9.8M 2月   3 02:04 20M.file
# 上面可以看到 10M 20M 的文件分別分成了 2 塊(這是條帶的特點),寫入的時候是循環(huán)地一點一點在node01和node02的磁盤上.

#上面配置的條帶卷在生產(chǎn)環(huán)境是很少使用的,因為它會將文件破壞,比如一個圖片,它會將圖片一份一份地分別存到條帶卷中的brick上。

復(fù)制代碼


 

 配置分布式復(fù)制卷

較少需要4臺服務(wù)器才能創(chuàng)建,[生產(chǎn)場景推薦使用此種方式]

復(fù)制代碼

#將原有的復(fù)制卷gv2進行擴容,使其成為分布式復(fù)制卷;

#要擴容前需停掉gv2

  [root@node01 ~]# gluster volume stop gv2

[root@node01 ~]# gluster volume add-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force  #添加brick到gv2中
volume add-brick: success
[root@node01 ~]# gluster volume start gv2
volume start: gv2: success
[root@node01 ~]# gluster volume info gv2

Volume Name: gv2
Type: Distributed-Replicate    # 這里顯示是分布式復(fù)制卷,是在 gv2 復(fù)制卷的基礎(chǔ)上增加 2 塊 brick 形成的
Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick2
Brick2: node02:/data/brick2
Brick3: node03:/data/brick1
Brick4: node04:/data/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

注意:當你給分布式復(fù)制卷和分布式條帶卷增加 bricks 時,你增加的 bricks 數(shù)目必須是復(fù)制或條帶數(shù)目的倍數(shù),
例如:你給一個分布式復(fù)制卷的 replica 為 2,你在增加 bricks 的時候數(shù)量必須為2、4、6、8等。
擴容后進行測試,發(fā)現(xiàn)文件都分布在擴容前的卷中。

復(fù)制代碼

 

配置分布式條帶卷

復(fù)制代碼

#將原有的復(fù)制卷gv3進行擴容,使其成為分布式條帶卷
#要擴容前需停掉gv3
[root@node01 ~]# gluster volume stop gv3
[root@node01 ~]# gluster volume add-brick gv3 stripe 2 node03:/data/brick2 node04:/data/brick2 force  #添加brick到gv3中
[root@node01 ~]# gluster volume start gv3
volume start: gv3: success
[root@node01 ~]# gluster volume info gv3

Volume Name: gv3
Type: Distributed-Stripe   # 這里顯示是分布式條帶卷,是在 gv3 條帶卷的基礎(chǔ)上增加 2 塊 brick 形成的
Volume ID: 54c16832-6bdf-42e2-81a9-6b8d7b547c1a
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick3
Brick2: node02:/data/brick3
Brick3: node03:/data/brick2
Brick4: node04:/data/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

復(fù)制代碼


 

 


 

分布式復(fù)制卷的 較佳實踐:

 1)搭建條件
  - 塊服務(wù)器的數(shù)量必須是復(fù)制的倍數(shù)
   - 將按塊服務(wù)器的排列順序指定相鄰的塊服務(wù)器成為彼此的復(fù)制
例如,8臺服務(wù)器:
 - 當復(fù)制副本為2時,按照服務(wù)器列表的順序,服務(wù)器1和2作為一個復(fù)制,3和4作為一個復(fù)制,5和6作為一個復(fù)制,7和8作為一個復(fù)制
 - 當復(fù)制副本為4時,按照服務(wù)器列表的順序,服務(wù)器1/2/3/4作為一個復(fù)制,5/6/7/8作為一個復(fù)制
 2)創(chuàng)建分布式復(fù)制卷
磁盤存儲的平衡
平衡布局是很有必要的,因為布局結(jié)構(gòu)是靜態(tài)的,當新的 bricks 加入現(xiàn)有卷,新創(chuàng)建的文件會分布到舊的 bricks 中,所以需要平衡布局結(jié)構(gòu),使新加入的 bricks 生效。布局平衡只是使新布局生效,并不會在新的布局中移動老的數(shù)據(jù),如果你想在新布局生效后,重新平衡卷中的數(shù)據(jù),還需要對卷中的數(shù)據(jù)進行平衡。

復(fù)制代碼

#在gv2的分布式復(fù)制卷的掛載目錄中創(chuàng)建測試文件入下
[root@node01 ~]# df -h
文件系統(tǒng)        容量  已用  可用 已用% 掛載點
127.0.0.1:/gv2   10G   65M   10G    1% /mnt
[root@node01 ~]# cd /mnt/
[root@node01 mnt]# touch {x..z}
#新創(chuàng)建的文件只在老的brick中有,在新加入的brick中是沒有的
[root@node01 mnt]# ls /data/brick2
1  2  3  4  5  6  x  y  z
[root@node02 ~]# ls /data/brick2
1  2  3  4  5  6  x  y  z
[root@node03 ~]# ll -h /data/brick1
總用量 0
[root@node04 ~]# ll -h /data/brick1
總用量 0
# 從上面可以看到,新創(chuàng)建的文件還是在之前的 bricks 中,并沒有分布中新加的 bricks 中

# 下面進行磁盤存儲平衡
[root@node01 ~]# gluster volume rebalance gv2 start
[root@node01 ~]# gluster volume rebalance gv2 status  #查看平衡存儲狀態(tài)
# 查看磁盤存儲平衡后文件在 bricks 中的分布情況
[root@node01 ~]# ls /data/brick2
1  5  y
[root@node02 ~]# ls /data/brick2
1  5  y
[root@node03 ~]# ls /data/brick1
2  3  4  6  x  z
[root@node04 ~]# ls /data/brick1
2  3  4  6  x  z
#從上面可以看出部分文件已經(jīng)平衡到新加入的brick中了
每做一次擴容后都需要做一次磁盤平衡。 磁盤平衡是在萬不得已的情況下再做的,一般再創(chuàng)建一個卷就可以了。

復(fù)制代碼

 

 

移除 brick

你可能想在線縮小卷的大小,例如:當硬件損壞或網(wǎng)絡(luò)故障的時候,你可能想在卷中移除相關(guān)的 bricks。
  注意:當你移除 bricks 的時候,你在 gluster 的掛載點將不能繼續(xù)訪問數(shù)據(jù),只有配置文件中的信息移除后你才能繼續(xù)訪問 bricks 中的數(shù)據(jù)。當移除分布式復(fù)制卷或者分布式條帶卷的時候,移除的 bricks 數(shù)目必須是 replica 或者 stripe 的倍數(shù)。


 

  但是移除brick在生產(chǎn)環(huán)境中基本上不做的,如果是硬盤壞掉的話,直接換個好的硬盤即可,然后再對新的硬盤設(shè)置卷標識就可以使用了,后面會演示硬件故障或系統(tǒng)故障的解決辦法。

復(fù)制代碼

[root@node01 ~]# gluster volume stop gv2
[root@node01 ~]# gluster volume remove-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force   #強制移除brick塊
[root@node01 ~]# gluster volume info gv2
Volume Name: gv2
Type: Replicate
Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
Status: Stopped
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick2
Brick2: node02:/data/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
# 如果誤操作刪除了后,其實文件還在 /storage/brick1 里面的,加回來就可以了
[root@node01 ~]# gluster volume add-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force
volume add-brick: success
[root@node01 ~]# gluster volume info gv2

Volume Name: gv2
Type: Distributed-Replicate
Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
Status: Stopped
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node01:/data/brick2
Brick2: node02:/data/brick2
Brick3: node03:/data/brick1
Brick4: node04:/data/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

復(fù)制代碼

刪除卷
  一般會用在命名不規(guī)范的時候才會刪除 
[root@node01 ~]# gluster volume stop gv1
[root@node01 ~]# gluster volume delete gv
模擬誤刪除卷信息故障及解決辦法

復(fù)制代碼

[root@node01 ~]# ls /var/lib/glusterd/vols/
gv2  gv3
[root@node01 ~]# rm -rf /var/lib/glusterd/vols/gv3 #刪除卷gv3的卷信息
[root@node01 ~]# ls /var/lib/glusterd/vols/     #再查看卷信息情況如下:gv3卷信息被刪除了
gv2
[root@node01 ~]# gluster volume sync node02      #因為其他節(jié)點服務(wù)器上的卷信息是完整的,比如從node02上同步所有卷信息如下:
Sync volume may make data inaccessible while the sync is in progress. Do you want to continue? (y/n) y
volume sync: success
[root@node01 ~]# ls /var/lib/glusterd/vols/    #驗證卷信息是否同步過來
gv2  gv3

復(fù)制代碼

 

模擬復(fù)制卷數(shù)據(jù)不一致故障及解決辦法

復(fù)制代碼

[root@node01 ~]# ls /data/brick2    #復(fù)制卷的存儲位置的數(shù)據(jù)
1  5  y
[root@node01 ~]# rm -f /data/brick2/y
[root@node01 ~]# ls /data/brick2
1  5
[root@node02 ~]# ls /data/brick2
1  5  y
[root@node01 ~]# gluster start gv2   #因為之前關(guān)閉了,如果未關(guān)閉可以忽略此步。
[root@node01 ~]# cat /mnt/y     #通過訪問這個復(fù)制卷的掛載點的數(shù)據(jù)來同步數(shù)據(jù)
[root@node01 ~]# ls /data/brick2/     #這時候再看復(fù)制卷的數(shù)據(jù)是否同步成功
1  5  y

復(fù)制代碼

 

3、glustefs分布式存儲優(yōu)化

復(fù)制代碼

Auth_allow  #IP訪問授權(quán);缺省值(*.allow all);合法值:Ip地址
Cluster.min-free-disk  #剩余磁盤空間閥值;缺省值(10%);合法值:百分比
Cluster.stripe-block-size  #條帶大?。蝗笔≈担?28KB);合法值:字節(jié)
Network.frame-timeout  #請求等待時間;缺省值(1800s);合法值:1-1800
Network.ping-timeout  #客戶端等待時間;缺省值(42s);合法值:0-42
Nfs.disabled  #關(guān)閉NFS服務(wù);缺省值(Off);合法值:Off|on
Performance.io-thread-count  #IO線程數(shù);缺省值(16);合法值:0-65
Performance.cache-refresh-timeout  #緩存校驗時間;缺省值(1s);合法值:0-61
Performance.cache-size  #讀緩存大?。蝗笔≈担?2MB);合法值:字節(jié)

Performance.quick-read: #優(yōu)化讀取小文件的性能
Performance.read-ahead: #用預(yù)讀的方式提高讀取的性能,有利于應(yīng)用頻繁持續(xù)性的訪問文件,當應(yīng)用完成當前數(shù)據(jù)塊讀取的時候,下一個數(shù)據(jù)塊就已經(jīng)準備好了。
Performance.write-behind:先寫入緩存內(nèi),在寫入硬盤,以提高寫入的性能。
Performance.io-cache:緩存已經(jīng)被讀過的、

復(fù)制代碼

 

 

3.1、優(yōu)化參數(shù)調(diào)整方式

復(fù)制代碼

命令格式:
gluster.volume set <卷><參數(shù)>


例如:
#打開預(yù)讀方式訪問存儲
[root@node01 ~]# gluster volume set gv2 performance.read-ahead on

#調(diào)整讀取緩存的大小
[root@mystorage gv2]# gluster volume set gv2 performance.cache-size 256M

復(fù)制代碼

 

 

3.2、監(jiān)控及日常維護

復(fù)制代碼

使用zabbix自帶的模板即可,CPU、內(nèi)存、磁盤空間、主機運行時間、系統(tǒng)load。日常情況要查看服務(wù)器監(jiān)控值,遇到報警要及時處理。
#看下節(jié)點有沒有在線
gluster volume status nfsp

#啟動完全修復(fù)
gluster volume heal gv2 full

#查看需要修復(fù)的文件
gluster volume heal gv2 info

#查看修復(fù)成功的文件
gluster volume heal gv2 info healed

#查看修復(fù)失敗的文件
gluster volume heal gv2 heal-failed

#查看主機的狀態(tài)
gluster peer status

#查看腦裂的文件
gluster volume heal gv2 info split-brain

#激活quota功能
gluster volume quota gv2 enable

#關(guān)閉quota功能
gulster volume quota gv2 disable

#目錄限制(卷中文件夾的大?。?gluster volume quota limit-usage /data/30MB --/gv2/data

#quota信息列表
gluster volume quota gv2 list

#限制目錄的quota信息
gluster volume quota gv2 list /data

#設(shè)置信息的超時時間
gluster volume set gv2 features.quota-timeout 5

#刪除某個目錄的quota設(shè)置
gluster volume quota gv2 remove /data

備注:quota功能,主要是對掛載點下的某個目錄進行空間限額。如:/mnt/gulster/data目錄,而不是對組成卷組的空間進行限制。

復(fù)制代碼

 

 

3.3、Gluster日常維護及故障處理

注:給自己的提示:此處如有不詳之處查看qq微云–linux-glusterfs文件夾

 1、硬盤故障

如果底層做了raid配置,有硬件故障,直接更換硬盤,會自動同步數(shù)據(jù)。
  如果沒有做raid處理方法:

 

 2、一臺主機故障

 

一臺節(jié)點故障的情況包含以下情況:

物理故障
同時有多塊硬盤故障,造成數(shù)據(jù)丟失
系統(tǒng)損壞不可修復(fù)
解決方法:

找一臺完全一樣的機器,至少要保證硬盤數(shù)量和大小一致,安裝系統(tǒng),配置和故障機同樣的 IP,安裝 gluster 軟件,
保證配置一樣,在其他健康節(jié)點上執(zhí)行命令 gluster peer status,查看故障服務(wù)器的 uuid

 

復(fù)制代碼

[root@mystorage2 ~]# gluster peer status
Number of Peers: 3

Hostname: mystorage3
Uuid: 36e4c45c-466f-47b0-b829-dcd4a69ca2e7
State: Peer in Cluster (Connected)

Hostname: mystorage4
Uuid: c607f6c2-bdcb-4768-bc82-4bc2243b1b7a
State: Peer in Cluster (Connected)

Hostname: mystorage1
Uuid: 6e6a84af-ac7a-44eb-85c9-50f1f46acef1
State: Peer in Cluster (Disconnected)
復(fù)制代碼
修改新加機器的 /var/lib/glusterd/glusterd.info 和 故障機器一樣

[root@mystorage1 ~]# cat /var/lib/glusterd/glusterd.info
UUID=6e6a84af-ac7a-44eb-85c9-50f1f46acef1
operating-version=30712
在信任存儲池中任意節(jié)點執(zhí)行

# gluster volume heal gv2 full
就會自動開始同步,但在同步的時候會影響整個系統(tǒng)的性能。

可以查看狀態(tài)

# gluster volume heal gv2 info

復(fù)制代碼

 

 

 

GlusterFS在企業(yè)中應(yīng)用場景

  理論和實踐分析,GlusterFS目前主要使用大文件存儲場景,對于小文件尤其是海量小文件,存儲效率和訪問性能都表現(xiàn)不佳,海量小文件LOSF問題是工業(yè)界和學(xué)術(shù)界的人工難題,GlusterFS作為通用的分布式文件系統(tǒng),并沒有對小文件額外的優(yōu)化措施,性能不好也是可以理解的。

復(fù)制代碼

Media
  -文檔、圖片、音頻、視頻
 *Shared storage  
  -云存儲、虛擬化存儲、HPC(高性能計算)
 *Big data
  -日志文件、RFID(射頻識別)數(shù)據(jù)

復(fù)制代碼

 

 

西數(shù)科技: 司法鑒定/產(chǎn)品質(zhì)量鑒定/檢驗檢測/數(shù)據(jù)恢復(fù)專家. 4006184118

相關(guān)文章

發(fā)表回復(fù)

您的郵箱地址不會被公開。 必填項已用 * 標注

聯(lián)系我們

聯(lián)系我們

025-86883952

在線咨詢: QQ交談

郵箱: wd@wdsos.com

工作時間:周一至周五,9:00-17:30,節(jié)假日休息

關(guān)注微信
微信掃一掃關(guān)注我們

微信掃一掃關(guān)注我們