GFS分散式檔案系統、結合實驗分析各種儲存卷的特點。深入刨析分散式儲存的方式。
GFS分散式檔案系統
一、GFS(GlusterFS)概述
1、GFS簡介
- 開源的分散式檔案系統
- 由儲存伺服器、客戶端、NFS或Samba儲存閘道器組成
- 無後設資料伺服器(管理的節點伺服器被隱藏)
2、GFS的特點 - 擴充套件性和高效能
- 高可用性
- 全域性統一名稱空間
- 彈性卷管理
- 基於標準協議(RDMA:(特點去中心化)或TCP/IP)
- 模組化、堆疊式的架構
- 通過對模組的組合,實現複雜的功能
3、GFS術語
- Brick:儲存節點、儲存塊
- Volume:儲存卷
- FUSE:使用者空間檔案系統
- VFS:虛擬的檔案系統
- Glusterd:叢集
4、GFS用到的演算法
彈性HASH演算法
- 通過HASH演算法得到一個32位的整數
- 劃分為N個連續的子空間,每個空間對應一個Brick彈性
HASH演算法的優點
- 保證資料平均分佈在每一個Brick中
- 解決了對後設資料伺服器的依賴,進而解決了單點故障以及訪問瓶頸
二、GlusterFS的卷型別分
1、布式卷
分散式卷
- 沒有對檔案進行分塊處理
- 通過擴充套件檔案屬性儲存HASH值
- 支援的底層檔案系統有EXT3、EXT4、ZFS、XFS等
分散式卷的特點
- 檔案分佈在不同的伺服器,不具備冗餘性
- 更容易、廉價地、擴充套件卷的大小
- 單點故障會造成資料丟失
- 依賴底層的資料保護
2、條帶卷
條帶卷
- 根據偏移量將檔案分成N塊(N個條帶節點),輪詢的儲存在每個Brick Server節點
- 儲存大檔案時,效能尤為突出
- 不具備冗餘性,類似Raid0
條帶卷特點
- 資料被分割成更小塊分佈到塊伺服器群中的不同條帶區
- 分佈減少了負載且更小的檔案加速了存取的速度
- 沒有資料冗餘
3、複製卷
複製卷
- 同一檔案儲存一份或多分副本
- 因為要儲存副本,所以磁碟利用率較低
- 若多個節點上的儲存空間不一致,將按照木桶效應取最低節點的容量作為該卷的總容量
複製卷特點
- 卷中所有的伺服器均儲存一個完整的副本
- 卷的副本數量可由客戶建立的時候決定
- 至少有兩個塊伺服器或更多伺服器
- 具備冗餘性
4、分散式條帶卷
- 兼顧分散式卷和條帶卷的功能
- 主要用於大檔案訪問處理
- 至少最少需要4臺伺服器
5、分散式複製卷
- 兼顧分散式卷和複製卷的功能
- 用於需要冗餘的情況
三、例項搭建GFS實驗
搭建GFS分散式檔案系統,掌握建立各種儲存卷的方法,建立完成後通過寫入和破壞檔案測試各種卷的儲存方式。
1、實驗規劃圖
2、實驗詳細配置過程
1)同步所有儲存伺服器的時間、關閉selinux、關閉防火牆
[root@localhost ~]# ntpdate ntp1.aliyum.com //同步阿里雲的時鐘伺服器
[root@localhost ~]# systemctl stop firewalld //關閉防火牆
[root@localhost ~]# systemctl disabled firewalld //開機不自動啟動
[root@localhost ~]# vi /etc/selinux/config //編輯核心防護的配置檔案
......
SELINUX=disabled //改為disabled,開機不自啟
......
[root@localhost ~]# setenforce 0 //關閉核心防護
2) 配置所有儲存伺服器的主機名和/etc/hosts檔案
[root@wu ~]# hostnamectl set-hostname nodo1、nodo2、nodo3、nodo4
[root@nodo1 ~]# vim /etc/hosts
192.168.10.6 nodo1
192.168.10.7 nodo2
192.168.10.8 nodo3
192.168.10.9 nodo4
3)建立、格式化、掛載所有儲存伺服器新增的4塊磁碟
這裡使用指令碼建立:點選前往指令碼
[root@localhost ~]# df -Th
檔案系統 型別 容量 已用 可用 已用% 掛載點
/dev/sdb1 xfs 20G 33M 20G 1% /data/sdb1
/dev/sdc1 xfs 20G 33M 20G 1% /data/sdc1
/dev/sdd1 xfs 20G 33M 20G 1% /data/sdd1
/dev/sde1 xfs 20G 33M 20G 1% /data/sde1
4)所有伺服器安裝GFS中glusterfs管理工具的yum安裝包源(乾貨)
虛擬機器自帶的線網源安裝的包不能使用,所以得自己配置yum源。
下載連結:https://pan.baidu.com/s/1S8QfAmaJhil0ZWAMek0lUA 提取碼:tiqu
方法一
直接將下載包上傳到伺服器中
方法二
使用共享目錄的方式掛載到服務其中
掛載方式:點選前往
可能會遇到的報錯:點選前往
配置glusterfs工具的yum安裝源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir wu
[root@localhost yum.repos.d]# mv C* wu
[root@localhost yum.repos.d]# vim gfs.repo
[GFS]
name=gfs
baseurl=file:///abc/gfsrepo
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum list
[root@localhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@localhost ~]# systemctl start glusterd.service
[root@localhost ~]# systemctl enable glusterd.service
5)新增儲存信任池
- 新增入儲存信任池只要在一臺主機上新增其他節點即可
[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.
[root@node1 ~]# gluster peer status
Number of Peers: 3
Hostname: node2
Uuid: e1b534f2-90e7-413c-8d20-d24e1b8d81a2
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: e156ca03-c0cb-495b-84d9-bbaa8366433a
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: b59b9d13-27fe-443c-ad04-4cbee1b4114e
State: Peer in Cluster (Connected)
6)建立各種卷組
建立分佈卷
[root@node1 ~]# gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force //建立分散式卷
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume start dis-volume //啟動分散式卷
volume start: dis-volume: success
[root@node1 ~]# gluster volume info dis-volume //檢視分散式卷的資訊
Volume Name: dis-volume
Type: Distribute
Volume ID: 2c319349-6f00-42b0-b1a3-df0ce39b274e
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
建立條帶卷
[root@node1 data]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
[root@node1 data]# gluster volume start stripe-volume
volume start: stripe-volume: success
建立複製卷
[root@node1 data]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
[root@node1 data]# gluster volume start rep-volume
volume start: rep-volume: success
建立分散式條帶卷
[root@node1 data]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd3 node4:/data/node4 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 data]# gluster volume start dis-stripe
volume start: dis-stripe: success
建立分散式複製卷
[root@node1 data]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 data]# gluster volume start dis-rep
volume start: dis-rep: success
常用的管理檢視分散式卷組的命令
gluster volume list //檢視建立了那些卷組
gluster volume info [卷組名] //檢視所有卷組或固定的卷組資訊
gluster volume stauts|start|stop 卷組名 //調整卷組的狀態
gluster volume delete 卷組名 //刪除某一個卷組
gluster volume vreate 卷組型別-卷組名 新增的磁碟掛載點 force //建立一個卷組
3、GFS管理節點配置
[root@localhost ~]# systemctl stop firewalld //關閉防火牆
[root@localhost ~]# systemctl disabled firewalld //開機不自動啟動
[root@localhost ~]# vi /etc/selinux/config //編輯核心防護的配置檔案
......
SELINUX=disabled //改為disabled,開機不自啟
......
[root@localhost ~]# setenforce 0 //關閉核心防護
//配置所有儲存伺服器的主機名和/etc/hosts檔案
[root@nodo1 ~]# vim /etc/hosts
192.168.10.6 nodo1
192.168.10.7 nodo2
192.168.10.8 nodo3
192.168.10.9 nodo4
//和上面一樣配置glusterfs工具的yum源,並安裝啟動
[root@localhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@localhost ~]# systemctl start glusterd.service
[root@localhost ~]# systemctl enable glusterd.service
//將儲存伺服器中建立的各種卷組存掛載到本地使用mount.glusterfs掛載
//建立掛載點並掛載
[root@localhost ~]# mkdir -p /test/dis-volume/ /test/dis-stripe/ /test/dis-rep/ /test/stripe-volume/ /test/rep-volume/
[root@localhost ~]# mount.glusterfs node1:dis-volume /test/dis-volume/
[root@localhost ~]# mount.glusterfs node2:rep-volume /test/rep-volume/
[root@localhost ~]# mount.glusterfs node3:stripe-volume /test/stripe-volume/
[root@localhost ~]# mount.glusterfs node4:dis-stripe /test/dis-stripe/
[root@localhost ~]# mount.glusterfs node1:dis-rep /test/dis-rep/
[root@localhost ~]# df -Th
檔案系統 型別 容量 已用 可用 已用% 掛載點
node1:dis-volume fuse.glusterfs 40G 65M 40G 1% /test/dis-volume
node1:dis-rep fuse.glusterfs 40G 65M 40G 1% /test/dis-rep
node1:dis-stripe fuse.glusterfs 80G 130M 80G 1% /test/dis-stripe
node1:stripe-volume fuse.glusterfs 40G 65M 40G 1% /test/stripe-volume
node1:rep-volume fuse.glusterfs 20G 33M 20G 1% /test/rep-volume
四、在掛載點中模擬寫入資料分析分散式儲存各種卷的儲存方式
1、資料寫入
//模擬寫入資料
dd if=/dev/zero of=/txt1 bs=1M count=40
dd if=/dev/zero of=/txt2 bs=1M count=40
dd if=/dev/zero of=/txt3 bs=1M count=40
dd if=/dev/zero of=/txt4 bs=1M count=40
dd if=/dev/zero of=/txt5 bs=1M count=40
//資料複製到指定的掛載目錄下
[root@localhost /]# cp txt* /test/dis-volume/
[root@localhost /]# cp txt* /test/dis-rep/
[root@localhost /]# cp txt* /test/dis-stripe/
[root@localhost /]# cp txt* /test/stripe-volume/
[root@localhost /]# cp txt* /test/rep-volume/
2、在儲存節點檢視各種卷存放資料的方式
儲存方式剛好與上面圖對應
1、分散式卷存放資料的方式
[root@node1 data]# ll -h sdb1 [root@node2 data]# ll -h sdb1
總用量 120M 總用量 80M
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt1 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt4 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt3
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt5
2、條帶卷存放資料的方式
[root@node1 data]# ll -h sdc1 [root@node2 data]# ll -h sdc1
總用量 100M 總用量 100M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt1 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt2 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt3 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt3
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt4 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt5 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt5
3、複製式卷存放資料的方式
[root@node3 data]# ll -h sdb1 [root@node4 data]# ll -h sdb1
總用量 200M 總用量 200M
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt1 -rw-r--r-- 2 root root 40M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt2 -rw-r--r-- 2 root root 40M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt3 -rw-r--r-- 2 root root 40M 10月 30 22:45 txt3
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt4 -rw-r--r-- 2 root root 40M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt5 -rw-r--r-- 2 root root 40M 10月 30 22:45 txt5
4、分散式條帶卷存放資料的方式
[root@node1 data]# ll -h sdd1 [root@node2 data]# ll -h sdd1
總用量 60M 總用量 60M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt1 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt4 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt5 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt5
[root@node3 data]# ll -h sdd1 [root@node4 data]# ll -h sdd1
總用量 40M 總用量 40M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt2 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt3 -rw-r--r-- 2 root root 20M 10月 30 22:45 txt3
5、分散式複製卷存放資料的方式
[root@node1 data]# ll -h sde1 [root@node2 data]# ll -h sde1
總用量 120M 總用量 120M
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt1 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt1
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt4 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt4
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt5 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt5
[root@node3 data]# ll -h sde1 [root@node4 data]# ll -h sde1
總用量 80M 總用量 80M
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt2 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt3 -rw-r--r-- 2 root root 40M 10月 30 22:44 txt3
相關文章
- 必須掌握的分散式檔案儲存系統—HDFS分散式
- python如何分散式儲存檔案?Python分散式
- 分散式檔案儲存系統 fastdfs 的 Composer 包釋出!分散式AST
- 分散式儲存技術解讀系列之GFS分散式
- CEPH分散式儲存搭建(物件、塊、檔案三大儲存)分散式物件
- 分散式檔案系統HDFS,大資料儲存實戰(一)分散式大資料
- HDFS分散式儲存分散式
- Redis 分散式儲存Redis分散式
- Bayou複製分散式儲存系統分散式
- Hadoop 三劍客之 —— 分散式檔案儲存系統 HDFSHadoop分散式
- 分散式儲存 vs 傳統SAN、NAS 的優缺點分析分散式
- 分散式系統中的資料儲存方案實踐分散式
- 分散式儲存的六大優點分散式
- 分散式檔案儲存庫MinIO可還行?分散式
- GFS分散式檔案系統部署解析分散式
- 分散式系統中資料儲存方案實踐分散式
- 分散式 - 分散式系統的特點分散式
- 360自研分散式海量小檔案儲存系統的設計與實現分散式
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- 分散式儲存系統的最佳實踐:系統發展路徑分散式
- 分散式儲存系統可靠性如何估算?分散式
- 分散式kv儲存系統之Etcd叢集分散式
- 分散式檔案儲存FastDFS(七)FastDFS配置檔案詳解分散式AST
- [技術思考]分散式儲存系統的雪崩效應分散式
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 分散式儲存轉崗記分散式
- Gartner:浪潮儲存進入分散式儲存前三分散式
- 分散式儲存系統可靠性:系統量化估算分散式
- 也淺談下分散式儲存要點分散式
- 哪些企業需要分散式式儲存?分散式
- 分散式檔案系統和物件儲存魔力象限,右上角都有誰?分散式物件
- juicefs:一個基於Redis和雲物件儲存的分散式POSIX檔案系統UIRedis物件分散式
- 杉巖PACS影像系統分散式儲存架構分散式架構
- 分散式系統技術:儲存之資料庫分散式資料庫
- 基於Raft的分散式MySQL Binlog儲存系統開源Raft分散式MySql
- 分散式儲存glusterfs詳解【轉】分散式
- GlusterFS企業分散式儲存【轉】分散式