主頁 > 前端設計 > CentOS 7.6 GFS分布式檔案系統部署

CentOS 7.6 GFS分布式檔案系統部署

2020-09-22 11:52:12 前端設計

GFS分布式檔案系統

    • 一、概述
    • 二、作業流程
    • 三、卷型別
      • 1、分布式卷
      • 2、條帶卷
      • 3、復制卷
      • 4、分布式條帶卷
      • 5、分布式復制卷
    • 四、部署 GlusterFS 群集
      • 1、環境準備
      • 2、yum安裝glusterfs軟體
      • 3、開啟GlusterFS服務
      • 4、配置時間同步
      • 5、 添加節點
      • 6、創建卷
        • (1)創建分布式卷
        • (2)創建條帶卷
        • (3)創建復制卷
        • (4)創建分布式條帶卷
        • (5)創建分布式復制卷
      • 6、部署客戶端
      • 7、驗證資料存盤
      • 8、破壞測驗

一、概述

在企業中,一些重要的資料一般存盤在硬碟上,雖然硬碟本身的性能也在不斷提高,但 是無論硬碟的存取速度有多快,企業所追尋的首先是可靠性,然后才是效率,如果資料面臨 丟失的風險,再好的硬體也無法挽回企業的損失,加之近幾年云計算的出現,對存盤提出了更高的要求,而分布式存盤逐漸被人們所接受,它具有更好的性能、高擴展性以及可靠性, 大部分分布式解決方案都是通過元服務器存放目錄結構等元資料,元資料服務器提供了整個分布式存盤的索引作業,但是一旦元資料服務器損壞,整個分布式存盤業將無法作業,

二、作業流程

GlusterFS 的作業流程如下
(1) 客戶端或應用程式通過 GlusterFS 的掛載點訪問資料,
(2) Linux 系統內核通過 VFS API 收到請求并處理,
(3) VFS 將資料遞交給 FUSE 內核檔案系統,并向系統注冊一個實際的檔案系統 FUSE, 而 FUSE 檔案系統則是將資料通過/dev/fuse 設備檔案遞交給了 GlusterFS client 端,可以 將 FUSE 檔案系統理解為一個代理,
(4) GlusterFS client 收到資料后,client 根據組態檔對資料進行處理,
(5) 經過 GlusterFS client 處理后,通過網路將資料傳遞至遠端的 GlusterFS Server, 并且將資料寫入服務器存盤設備

三、卷型別

GlusterFS 支持七種卷,即分布式卷、條帶卷、復制卷、分布式條帶卷、分布式復制卷、 條帶復制卷和分布式條帶復制卷,這七種卷可以滿足不同應用對高性能、高可用的需求,

  • 分布式卷(Distribute volume):檔案通過 HASH 演算法分布到所有 Brick Server 上, 這種卷是Glusterf 的基礎;以檔案為單位根據 HASH 演算法散列到不同的Brick,其實只是擴大了磁盤空間,如果有一塊磁盤損壞,資料也將丟失,屬于檔案級的 RAID 0, 不具有容錯能力,
  • 條帶卷(Stripe volume):類似 RAID0,檔案被分成資料塊并以輪詢的方式分布到多個 Brick Server上,檔案存盤以資料塊為單位,支持大檔案存盤,檔案越大,讀取效率越高,
  • 復制卷(Replica volume):將檔案同步到多個 Brick 上,使其具備多個檔案副本, 屬于檔案級 RAID1,具有容錯能力,因為資料分散在多個 Brick 中,所以讀性能得 到很大提升,但寫性能下降,
  • 分布式條帶卷(Distribute Stripe volume):Brick Server 數量是條帶數(資料塊分布 的 Brick數量)的倍數,兼具分布式卷和條帶卷的特點,
  • 分布式復制卷(Distribute Replica volume):Brick Server 數量是鏡像數(資料副本數量)的倍數,兼具分布式卷和復制卷的特點,
  • 條帶復制卷(Stripe Replica volume):類似 RAID 10,同時具有條帶卷和復制卷的特點,
  • 分布式條帶復制卷(Distribute Stripe Replicavolume):三種基本卷的復合卷,通常用于類 Map Reduce應用,

1、分布式卷

分布式卷是 GlusterFS 的默認卷,在創建卷時,默認選項是創建分布式卷,在該模式下, 并沒有對檔案進行分塊處理,檔案直接存盤在某個 Server 節點上,直接使用本地檔案系統進行檔案存盤,大部分 Linux 命令和工具可以繼續正常使用,需要通過擴展檔案屬性保存 HASH 值,目前支持的底層檔案系統有 EXT3、EXT4、ZFS、XFS 等,由于使用的是本地檔案系統,所以存取效率并沒有提高,反而會因為網路通信的原因而 有所降低;另外支持超大型檔案也會有一定的難度,因為分布式卷不會對檔案進行分塊處理

分布式卷具有如下特點:

  • 檔案分布在不同的服務器,不具備冗余性,
  • 更容易且廉價地擴展卷的大小,
  • 存在單點故障會造成資料丟失,
  • 依賴底層的資料保護,

2、條帶卷

Stripe 模式相當于 RAID0,在該模式下,根據偏移量將檔案分成 N 塊(N 個條帶節點), 輪詢地存盤在每個 Brick Server 節點,節點把每個資料塊都作為普通檔案存入本地檔案系統 中,通過擴展屬性記錄總塊數(Stripe-count)和每塊的序號(Stripe-index),在配置時指定的條帶數必須等于卷中 Brick 所包含的存盤服務器數,在存盤大檔案時,性能尤為突出, 但是不具備冗余性

條帶卷具有如下特點,

  • 資料被分割成更小塊分布到塊服務器群中的不同條帶區,
  • 分布減少了負載且更小的檔案加速了存取的速度,
  • 沒有資料冗余

3、復制卷

復制模式,也稱為 AFR(AutoFile Replication),相當于 RAID1,即同一檔案保存一份 或多份副本,每個節點上保存相同的內容和目錄結構,復制模式因為要保存副本,所以磁盤 利用率較低,如果多個節點上的存盤空間不一致,那么將按照木桶效應取最低節點的容量作為該卷的總容量,在配置復制卷時,復制數必須等于卷中 Brick 所包含的存盤服務器數,復 制卷具備冗余性,即使一個節點損壞,也不影響資料的正常使用,

復制卷具有如下特點,

  • 卷中所有的服務器均保存一個完整的副本,
  • 卷的副本數量可由客戶創建的時候決定,
  • 至少有兩個塊服務器或更多服務器,
  • 具備冗余性

4、分布式條帶卷

分布式條帶卷兼顧分布式卷和條帶卷的功能,主要用于大檔案訪問處理,創建一個分布 式條帶卷最少需要 4 臺服務器

5、分布式復制卷

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

四、部署 GlusterFS 群集

1、環境準備

node1:192.168.245.203
node2:192.168.245.204
node3:192.168.245.205
node4:192.168.245.206
client:192.168.245.201
確定firewall防火墻和selinux已經關閉

iptables -F是沒有用的,一定要關閉firewall防火墻!!!

每臺node新添加4塊磁盤,大小20G

在這里插入圖片描述
給這些新添加的磁盤磁區并格式化

創建掛載點

[root@node1 ~]# mkdir -p /data/sd{b,c,d,e}1
[root@node1 ~]# ls /data
sdb1  sdc1  sdd1  sde1

掛載磁區

[root@node1 ~]# mount /dev/sdb1 /data/sdb1
[root@node1 ~]# mount /dev/sdc1 /data/sdc1
[root@node1 ~]# mount /dev/sdd1 /data/sdd1
[root@node1 ~]# mount /dev/sde1 /data/sde1
[root@node1 ~]# 
[root@node1 ~]# df -Th
檔案系統                型別      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs        50G  4.2G   46G    9% /
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       247G   37M  247G    1% /home
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/sdb1               ext4       20G   45M   19G    1% /data/sdb1
/dev/sdc1               ext4       20G   45M   19G    1% /data/sdc1
/dev/sdd1               ext4       20G   45M   19G    1% /data/sdd1
/dev/sde1               ext4       20G   45M   19G    1% /data/sde1

修改節點的主機名,因為它是用主機名來識別各節點的

[root@node1 ~]# echo "192.168.245.203 node1" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.204 node2" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.205 node3" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.206 node4" >>  /etc/hosts
  • 配置yum本地源

gfsrepo目錄里是本地rpm包,里面包含了gfs軟體包和依賴包

[root@node1 ~]# mkdir /abc
[root@node1 ~]# cd /abc
[root@node1 abc]# ll
總用量 12
drwxr-xr-x 3 root root 8192 9  13 23:47 gfsrepo

把之前的yum網路源的組態檔備份一下

[root@node1 abc]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  epel.repo
[root@node1 yum.repos.d]# mkdir bak
[root@node1 yum.repos.d]# mv * bak
mv: 無法將目錄"bak" 移動至自身的子目錄"bak/bak" 
[root@node1 yum.repos.d]# 
[root@node1 yum.repos.d]# ls
bak

編輯本地yum源

[root@node1 yum.repos.d]# vim GLFS.repo

[glfs]
name=glfs
baseurl=file:///abc/gfsrepo
gpgcheck=0
enabled=1

把yum本地源組態檔推送給其他node節點(為了節省時間)

[root@node1 yum.repos.d]# scp GLFS.repo root@192.168.245.204:/etc/yum.repos.d/
The authenticity of host '192.168.245.204 (192.168.245.204)' can't be established.
ECDSA key fingerprint is SHA256:5qVFPbfSJ8tArL82/yswIhMAg7vdiKoK4nZsexYkUX4.
ECDSA key fingerprint is MD5:aa:db:41:8e:a3:70:d8:44:ce:28:b7:88:fe:0c:63:bb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.245.204' (ECDSA) to the list of known hosts.
root@192.168.245.204's password: 
GLFS.repo                                                                                  100%   66    36.9KB/s   00:00    

yum安裝之前,顯示所有已經安裝和可以安裝的程式包

[root@node1 yum.repos.d]# yum list

2、yum安裝glusterfs軟體

yum安裝以下軟體包

[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

3、開啟GlusterFS服務

[root@node1 yum.repos.d]# systemctl start glusterd.service 

[root@node1 ~]# netstat -antp | grep gluster
tcp        0      0 0.0.0.0:24007           0.0.0.0:*               LISTEN      8760/glusterd       
tcp        0      0 0.0.0.0:49152           0.0.0.0:*               LISTEN      64209/glusterfsd    
tcp        0      0 0.0.0.0:49153           0.0.0.0:*               LISTEN      64514/glusterfsd    
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN      64788/glusterfsd    
tcp        0      0 0.0.0.0:49155           0.0.0.0:*               LISTEN      64963/glusterfsd   

4、配置時間同步

[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com
14 Sep 00:17:59 ntpdate[63937]: adjust time server 120.25.115.20 offset 0.007826 sec

5、 添加節點

只需要在一臺node上添加即可

[root@node1 ~]# gluster peer probe node2
peer probe: success. 
[root@node1 ~]# gluster peer probe node3
peer probe: success. 
[root@node1 ~]# gluster peer probe node4
peer probe: success. 

通過以下命令在每個節點上查看群集狀態,正常情況下每個節點的輸出結果均為“State: Peer in Cluster(Connected)”,如果顯示 Disconnected,請檢查 hosts 檔案配置

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

Hostname: node2
Uuid: bc421d97-5e05-43da-af1d-2b28c46acdd3
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 7d4ccf9d-83b3-4b8d-8a30-42a9da6a78ee
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: 4df47d8d-8dd4-4336-a411-9b96d996ae4a
State: Peer in Cluster (Connected)

6、創建卷

(1)創建分布式卷

使用gluster volume create創建卷,后面跟卷名稱,自己可識別即可,沒有指定型別,默認創建的是分布式卷,force表示強制,你想用哪些節點來存盤后面跟節點名和掛載點

[root@node1 ~]# gluster volume create fenbushi-vol node1:/data/sdb1 node2:/data/sdb1 force

volume create: fenbushi-vol: success: please start the volume to access data

gluster volume info 卷名可以查看卷的詳細資訊

[root@node1 ~]# gluster volume info fenbushi-vol 
 
Volume Name: fenbushi-vol
Type: Distribute
Volume ID: 47978ec2-b7e0-4ede-8723-cabec845ca31
Status: Created    <----還在創建狀態
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
nfs.disable: on

查看所有GFS卷串列

[root@node1 ~]# gluster volume list
fenbushi-vol

啟用分布式卷,創建之后還不能使用,必須要啟用它
使用gluster volume start 卷名啟用卷

[root@node1 ~]# gluster volume start fenbushi-vol 
volume start: fenbushi-vol: success

[root@node1 ~]# gluster volume info fenbushi-vol 
 
Volume Name: fenbushi-vol
Type: Distribute
Volume ID: 47978ec2-b7e0-4ede-8723-cabec845ca31
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
nfs.disable: on

(2)創建條帶卷

這里指定型別為 stripe,數值為 2,而且后面跟了 2 個 node節點,所以創建的是條帶卷,

[root@node1 ~]# gluster volume create tiaodai-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: tiaodai-vol: success: please start the volume to access data

啟用條帶卷

[root@node1 ~]# gluster volume start tiaodai-vol 
volume start: tiaodai-vol: success
[root@node1 ~]# gluster volume info tiaodai-vol 
 
Volume Name: tiaodai-vol
Type: Stripe
Volume ID: d30c1262-a8bf-41eb-9200-8092209ca1fb
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fenbushi-vol
tiaodai-vol

(3)創建復制卷

這里指定型別為 replica,數值為 2,而且后面跟了 2 個 node節點,所以創建的是復制卷

[root@node1 ~]# gluster volume create fuzhi-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: fuzhi-vol: success: please start the volume to access data

啟用復制卷

[root@node1 ~]# gluster volume start fuzhi-vol 
volume start: fuzhi-vol: success
[root@node1 ~]# gluster volume list
fenbushi-vol
fuzhi-vol
tiaodai-vol
[root@node1 ~]# gluster volume info fuzhi-vol 
 
Volume Name: fuzhi-vol
Type: Replicate
Volume ID: 39d55d25-5b6c-4b2e-85a6-24678ecfab43
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

(4)創建分布式條帶卷

這里指定型別為 stripe,數值為 2,而且后面跟了 4 個 node節點,是 2 的 2 倍,所以創建的是分布式條帶卷

[root@node1 ~]# gluster volume create fbsstr-vol stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: fbsstr-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume start fbsstr-vol 
volume start: fbsstr-vol: success
[root@node1 ~]# gluster volume info fbsstr-vol 
 
Volume Name: fbsstr-vol
Type: Distributed-Stripe
Volume ID: b31d3cd6-38c4-46f6-b380-c8e39f17bf54
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fbsstr-vol
fenbushi-vol
fuzhi-vol
tiaodai-vol

(5)創建分布式復制卷

這里指定型別為 replica,數值為 2,而且后面跟了 4 個 node節點,是 2 的 兩倍,所以創建的是分布式復制卷

[root@node1 ~]# gluster volume create fbsrep-vol replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: fbsrep-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume start fbsrep-vol 
volume start: fbsrep-vol: success
[root@node1 ~]# gluster volume info fbsrep-vol 
 
Volume Name: fbsrep-vol
Type: Distributed-Replicate
Volume ID: bcb1f7f3-9d17-4702-935e-1dbd00da25fd
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Brick4: node4:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fbsrep-vol
fbsstr-vol
fenbushi-vol
fuzhi-vol
tiaodai-vol

6、部署客戶端

在部署完分布式檔案系統后,需要對掛載的服務器安裝客戶端軟體,并創建掛載目錄, 將分布式檔案系統掛載到剛創建目錄即可,

客戶端上的準備作業:

[root@node1 yum.repos.d]# scp GLFS.repo root@192.168.245.201:/etc/yum.repos.d/

[root@client ~]# yum -y install glusterfs glusterfs-fuse

[root@client ~]# echo "192.168.245.203 node1" >>  /etc/hosts
[root@client ~]# echo "192.168.245.204 node2" >>  /etc/hosts
[root@client ~]# echo "192.168.245.205 node3" >>  /etc/hosts
[root@client ~]# echo "192.168.245.206 node4" >>  /etc/hosts

創建掛載點

[root@client ~]# mkdir -p /test/fbs   <----分布式卷
[root@client ~]# mkdir /test/tiaodai  <----條帶卷
[root@client ~]# mkdir /test/fuzhi    <----復制卷
[root@client ~]# mkdir /test/fbsstr   <----分布式條帶卷
[root@client ~]# mkdir /test/fbsrep   <----分布式復制卷
[root@client ~]# 
[root@client ~]# 
[root@client ~]# mount.glusterfs node1:fenbushi-vol /test/fbs
[root@client ~]# mount.glusterfs node1:tiaodai-vol /test/tiaodai/
[root@client ~]# mount.glusterfs node1:fuzhi-vol /test/fuzhi
[root@client ~]# mount.glusterfs node1:fbsstr-vol /test/fbsstr/
[root@client ~]# mount.glusterfs node1:fbsrep-vol /test/fbsrep/
[root@client ~]# 
[root@client ~]# df -TH
檔案系統           型別            容量  已用  可用 已用% 掛載點
/dev/sda3          xfs             317G   14G  303G    5% /
devtmpfs           devtmpfs        2.0G     0  2.0G    0% /dev
tmpfs              tmpfs           2.0G     0  2.0G    0% /dev/shm
tmpfs              tmpfs           2.0G   14M  2.0G    1% /run
tmpfs              tmpfs           2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1          xfs             1.1G  183M  881M   18% /boot
tmpfs              tmpfs           396M  4.1k  396M    1% /run/user/42
tmpfs              tmpfs           396M   25k  396M    1% /run/user/0
/dev/sr0           iso9660         4.6G  4.6G     0  100% /run/media/root/CentOS 7 x86_64
node1:fenbushi-vol fuse.glusterfs   43G   93M   40G    1% /test/fbs
node1:tiaodai-vol  fuse.glusterfs   43G   93M   40G    1% /test/tiaodai
node1:fuzhi-vol    fuse.glusterfs   22G   47M   20G    1% /test/fuzhi
node1:fbsstr-vol   fuse.glusterfs   85G  186M   80G    1% /test/fbsstr
node1:fbsrep-vol   fuse.glusterfs   43G   93M   40G    1% /test/fbsrep

在掛載時,所指定的 node1 只是為了從它那里獲取到必要的配置資訊,在掛載之后, 客戶機不僅僅會與 node1 進行通信,也會直接和邏輯存盤卷內其他 node所在的主機進行通信,

7、驗證資料存盤

產生5個測驗檔案,每個大小40M

[root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040位元組(42 MB)已復制,0.0238866 秒,1.8 GB/
[root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040位元組(42 MB)已復制,0.0317271 秒,1.3 GB/
[root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040位元組(42 MB)已復制,0.0369535 秒,1.1 GB/
[root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040位元組(42 MB)已復制,0.0357797 秒,1.2 GB/
[root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040位元組(42 MB)已復制,0.0162924 秒,2.6 GB/

將這些測驗檔案分別拷貝到掛載點

[root@client ~]# cp /demo* /test/tiaodai/
[root@client ~]# cp /demo* /test/fuzhi/
[root@client ~]# cp /demo* /test/fbs
[root@client ~]# cp /demo* /test/fbsrep/
[root@client ~]# cp /demo* /test/fbsstr/

驗證分布式卷存盤情況

檔案1-4存盤在了node1上,5存盤在了node2上

[root@node1 ~]# ll -h /data/sdb1
總用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
[root@node2 yum.repos.d]#  ll -h /data/sdb1
總用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

驗證條帶卷存盤情況

所有檔案都分成了兩半各自存盤在node1和node2上

[root@node1 ~]# ll -h /data/sdc1
總用量 101M
-rw-r--r-- 2 root root 20M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log
[root@node2 yum.repos.d]#  ll -h /data/sdc1
總用量 101M
-rw-r--r-- 2 root root 20M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log

驗證復制卷

每個檔案都存在node3上一份,node4上一份

[root@node3 ~]# ll -h /data/sdb1
總用量 201M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sdb1
總用量 201M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

驗證分布式條帶卷

檔案1-4各分成一半存在了node1和node2上,檔案5分成兩半存在node3和node4上

[root@node1 ~]# ll -h /data/sdd1
總用量 81M
-rw-r--r-- 2 root root 20M 9  14 01:13 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo4.log
[root@node2 ~]#  ll -h /data/sdd1
總用量 81M
-rw-r--r-- 2 root root 20M 9  14 01:13 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo4.log
[root@node3 ~]# ll -h /data/sdd1
總用量 21M
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sdd1
總用量 21M
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log

驗證分布式復制卷
檔案1-4存在node1上一份,node2上一份,而檔案5寸在node3一份,node4一份

[root@node1 ~]# ll -h /data/sde1
總用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo4.log
[root@node2 ~]#  ll -h /data/sde1
總用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo4.log
[root@node3 ~]# ll -h /data/sde1
總用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sde1
總用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

8、破壞測驗

現在宕機node2觀察資料是否還完整

可以看到除了復制卷和分布式復制卷,其他的資料都不再完整

[root@client test]# ls /test
fbs  fbsrep  fbsstr  fuzhi  tiaodai

[root@client test]# ls /test/fbs
demo1.log  demo2.log  demo3.log  demo4.log 
 
[root@client test]# ls /test/tiaodai/

[root@client test]# ls /test/fuzhi/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  

[root@client test]# ls /test/fbsstr/
demo5.log 

[root@client test]# ls /test/fbsrep/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  

如果有服務器宕機的話想要洗掉卷是無法洗掉的,必須都在線才可以
洗掉之前需要停止

[root@node1 ~]# gluster volume stop fuzhi-vol 
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: fuzhi-vol: success

[root@node1 ~]# gluster volume delete fuzhi-vol 
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: fuzhi-vol: failed: Some of the peers are down

創建卷時,存盤服務器的數量如果等于條帶或復制數,那么創建的是條帶卷或者復制卷;如果存盤服務器的數量是條帶或復制數的 2 倍甚至更多,那么將創建的是分布式條帶卷或分布式復制卷,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/104519.html

標籤:其他

上一篇:Docker 資料卷管理 +容器互聯+埠映射

下一篇:linux系統下串口設備和串口號系結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more