您好,登錄后才能下訂單哦!
開(kāi)源的分布式文件系統(tǒng)
由存儲(chǔ)服務(wù)器,客戶(hù)端以及NFS/Samba存儲(chǔ)網(wǎng)關(guān)組成
無(wú)元數(shù)據(jù)服務(wù)器
GlusterFS特點(diǎn)
擴(kuò)展性和共性能
高可用
全局統(tǒng)一命名空間
彈性卷管理
基于標(biāo)準(zhǔn)協(xié)議
Brick存儲(chǔ)節(jié)點(diǎn)
Volume卷
fuse內(nèi)核模塊,用戶(hù)端的交互性模塊
vfs虛擬
Glusterd服務(wù)
上面一層虛擬化管理層,想當(dāng)于一個(gè)應(yīng)用。緩存,讀寫(xiě)頭,條帶卷,代理想當(dāng)于API接口
中間rdma傳輸 相當(dāng)于一個(gè)驅(qū)動(dòng)
下面一層真實(shí)的設(shè)備 相 當(dāng)于一個(gè)硬件
彈性HASH算法
通過(guò)HASH算法的到一個(gè)32位的整數(shù)
劃分位N個(gè)連續(xù)的子空間,每個(gè)空間對(duì)應(yīng)一個(gè)Brick
彈性HASH算法的優(yōu)點(diǎn)
保證 數(shù)據(jù)平均分布在每一個(gè)Brick中
解決了對(duì)元數(shù)據(jù)服務(wù)器的依賴(lài),進(jìn)而解決了單點(diǎn)故障以及訪問(wèn)瓶頸
通過(guò)HASH算法的到一個(gè)32位算法,去算去選擇,因?yàn)槟愕拿恳粋€(gè)節(jié)點(diǎn)都存儲(chǔ)一部分?jǐn)?shù)據(jù),你怎么去識(shí)別排序,通過(guò)算法。
通過(guò)hash算法去找到對(duì)應(yīng)的brick節(jié)點(diǎn)的存儲(chǔ)空間,去分配數(shù)據(jù)存儲(chǔ),去調(diào)用每一個(gè)節(jié)點(diǎn)數(shù)據(jù)
分布式卷
復(fù)制卷
分布式條帶卷
分布式復(fù)制卷
條帶復(fù)制卷
分布式條帶復(fù)制卷
沒(méi)有對(duì)文件進(jìn)行分塊處理
通過(guò)擴(kuò)展文件屬性保存HASH值
支持的底層文件系統(tǒng)有ext3,ext4,ZFS,XFS等
**分布式卷具有如下特點(diǎn)**
文件分布在不同的服務(wù)器,不具備冗余性
更容易和廉價(jià)地?cái)U(kuò)展卷的大小
單點(diǎn)故障會(huì)造成數(shù)據(jù)丟失
依賴(lài)底層的數(shù)據(jù)保護(hù)
我們有辦法解決,因?yàn)樗娴奈募际峭暾?,我們可以做個(gè)鏡像卷,做個(gè)備份
根據(jù)偏移量將文件分成N塊(N個(gè)條帶節(jié)點(diǎn)),輪詢(xún)的存儲(chǔ)在每個(gè)Brickserver節(jié)點(diǎn)
存儲(chǔ)大文件時(shí),性能尤為突出,不具備冗余性,類(lèi)似Raid0
**特點(diǎn)**
數(shù)據(jù)被分割成更小塊分布到塊服務(wù)器群中的不同條帶區(qū)
分布減少負(fù)載且更小的文件加速了存取的速度
沒(méi)有數(shù)據(jù)冗余
同一個(gè)文件保存一份或多分副本
復(fù)制模式因?yàn)楸4娓北?,所以磁盤(pán)利用率較低
多個(gè)節(jié)點(diǎn)的存儲(chǔ)空間不一致,那么將按照木桶效應(yīng)取最低節(jié)點(diǎn)的容量作為該卷的總?cè)萘?**特點(diǎn)**
卷中所有的服務(wù)器均保存一個(gè)完整的副本
卷的副本數(shù)量可以有客戶(hù)創(chuàng)建的時(shí)候決定
至少由兩個(gè)塊服務(wù)器或更多服務(wù)器
具備冗余性
兼顧分布式卷和條帶卷的功能
主要用于大文件訪問(wèn)處理
至少最少需要4臺(tái)服務(wù)器
兼顧分布式卷和復(fù)制卷的共呢
用于需要冗余的情況下
···
## GFS分布式文件系統(tǒng)集群項(xiàng)目
## 群集環(huán)境
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20191218153045975.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BhcmhvaWE=,size_16,color_FFFFFF,t_70)
## 卷類(lèi)型
| 卷名稱(chēng) | 卷類(lèi)型 | 空間大小 | Brick|
|--|--|--|--|
|dis-volume | 分布式卷 |40G | node1(/b1)、node2(/b1) |
|stripe-volume | 條帶卷 | 40G|node1(/c1)、node2(/c1) |
| rep-volume | 復(fù)制卷 |20G |node3(/b1)、node4(/b1) |
| dis-stripe | 分布式條帶卷 | 40G| node1(/d1)、node2(/d1)、node3(/d1)、node4(/d1) |
| dis-rep | 分布式復(fù)制卷 | 20G| node1(/e1)、node2(/e1)、node3(/e1)、node4(/e1) |
## 實(shí)驗(yàn)準(zhǔn)備
#### 1、為四臺(tái)服務(wù)器服務(wù)器每臺(tái)添加4個(gè)磁盤(pán)
![在這里插入圖片描述](https://img-blog.csdnimg.cn/2019121816001274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BhcmhvaWE=,size_16,color_FFFFFF,t_70)
#### 2、修改服務(wù)器的名稱(chēng)
分別修改為node1、node2、node3、node4
```sql
[root@localhost ~]#hostnamectl set-hostname node1
[root@localhost ~]# su
在這里我們使用腳本執(zhí)行掛載
#進(jìn)入opt目錄
[root@node1 ~]# cd /opt
#磁盤(pán)格式化、掛載腳本
[root@node1 opt]# vim a.sh
#! /bin/bash
echo "the disks exist list:"
fdisk -l |grep '磁盤(pán) /dev/sd[a-z]'
echo "=================================================="
PS3="chose which disk you want to create:"
select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit
do
case $VAR in
sda)
fdisk -l /dev/sda
break ;;
sd[b-z])
#create partitions
echo "n
p
w" | fdisk /dev/$VAR
#make filesystem
mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null
#mount the system
mkdir -p /data/${VAR}"1" &> /dev/null
echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
mount -a &> /dev/null
break ;;
quit)
break;;
*)
echo "wrong disk,please check again";;
esac
done
#給于腳本執(zhí)行權(quán)限
[root@node1 opt]# chmod +x a.sh
將腳本通過(guò)scp推送到其他三臺(tái)服務(wù)器上
scp a.sh root@192.168.45.134:/opt
scp a.sh root@192.168.45.130:/opt
scp a.sh root@192.168.45.136:/opt
這個(gè)只是樣本
[root@node1 opt]# ./a.sh
the disks exist list:
==================================================
1) sdb
2) sdc
3) sdd
4) sde
5) quit
chose which disk you want to create:1 //選擇要格式化的盤(pán)
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x37029e96.
Command (m for help): Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
在第一臺(tái)node1上修改
#在文件末尾添加
vim /etc/hosts
192.168.45.133 node1
192.168.45.130 node2
192.168.45.134 node3
192.168.45.136 node4
通過(guò)scp將hosts文件推送給其他服務(wù)器和客戶(hù)端
#將/etc/hosts文件推送給其他主機(jī)
[root@node1 opt]# scp /etc/hosts root@192.168.45.130:/etc/hosts
root@192.168.45.130's password:
hosts 100% 242 23.6KB/s 00:00
[root@node1 opt]# scp /etc/hosts root@192.168.45.134:/etc/hosts
root@192.168.45.134's password:
hosts 100% 242 146.0KB/s 00:00
[root@node1 opt]# scp /etc/hosts root@192.168.45.136:/etc/hosts
root@192.168.45.136's password:
hosts
在其他服務(wù)器上查看推送情況
[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# setenforce 0
#進(jìn)入yum文件路徑
[root@node1 ~]# cd /etc/yum.repos.d/
#創(chuàng)建一個(gè)空文件夾
[root@node1 yum.repos.d]# mkdir abc
#將CentOS-文件全部移到到abc下
[root@node1 yum.repos.d]# mv CentOS-* abc
#創(chuàng)建私有yum源
[root@node1 yum.repos.d]# vim GLFS.repo
[demo]
name=demo
baseurl=http://123.56.134.27/demo
gpgcheck=0
enable=1
[gfsrepo]
name=gfsrepo
baseurl=http://123.56.134.27/gfsrepo
gpgcheck=0
enable=1
#重新加載yum源
[root@node1 yum.repos.d]# yum list
[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
在其他三臺(tái)上進(jìn)行同樣的操作
[root@node1 yum.repos.d]# systemctl start glusterd.service
[root@node1 yum.repos.d]# systemctl enable glusterd.service
[root@node1 yum.repos.d]# gluster peer probe node2
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node3
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node4
peer probe: success.
在其他服務(wù)器上查看節(jié)點(diǎn)信息
[root@node1 yum.repos.d]# gluster peer status
#創(chuàng)建分布式卷
[root@node1 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
#檢查信息
[root@node1 yum.repos.d]# gluster volume info dis-vol
#查看分布式現(xiàn)有卷
[root@node1 yum.repos.d]# gluster volume list
#啟動(dòng)卷
[root@node1 yum.repos.d]# gluster volume start dis-vol
#遞歸創(chuàng)建掛載點(diǎn)
[root@manager yum.repos.d]# mkdir -p /text/dis
#將剛才創(chuàng)建的卷掛載到剛才創(chuàng)建的掛載點(diǎn)下
[root@manager yum.repos.d]# mount.glusterfs node1:dis-vol /text/dis
#創(chuàng)建卷
[root@node1 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
#查看現(xiàn)有卷
[root@node1 yum.repos.d]# gluster volume list
dis-vol
stripe-vol
#啟動(dòng)條帶卷
[root@node1 yum.repos.d]# gluster volume start stripe-vol
volume start: stripe-vol: success
#創(chuàng)建掛載點(diǎn)
[root@manager yum.repos.d]# mkdir /text/strip
#掛載條帶卷
[root@manager yum.repos.d]# mount.glusterfs node1:/stripe-vol /text/strip/
查看掛載情況
#創(chuàng)建復(fù)制卷
[root@node1 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-vol: success: please start the volume to access data
#開(kāi)啟復(fù)制卷
[root@node1 yum.repos.d]# gluster volume start rep-vol
volume start: rep-vol: success
在客戶(hù)機(jī)掛礙復(fù)制卷
[root@manager yum.repos.d]# mkdir /text/rep
[root@manager yum.repos.d]# mount.glusterfs node3:rep-vol /text/rep
查看掛載
#創(chuàng)建分布式條帶卷
[root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
#啟動(dòng)分布式條帶卷
[root@node1 yum.repos.d]# gluster volume start dis-stripe
volume start: dis-stripe: success
在客戶(hù)機(jī)上掛載
[root@manager yum.repos.d]# mkdir /text/dis-strip
[root@manager yum.repos.d]# mount.glusterfs node4:dis-stripe /text/dis-strip/
#創(chuàng)建分布式復(fù)制卷
[root@node2 yum.repos.d]# 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
#開(kāi)啟復(fù)制卷
[root@node2 yum.repos.d]# gluster volume start dis-rep
volume start: dis-rep: success
# 查看現(xiàn)有卷
[root@node2 yum.repos.d]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol
[root@manager yum.repos.d]# mkdir /text/dis-rep
[root@manager yum.repos.d]# mount.glusterfs node3:dis-rep /text/dis-rep/
查看掛載
------------------------上邊我們完成了卷的創(chuàng)建和掛載-------------
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=40
40+0 records in
40+0 records out
41943040 bytes (42 MB) copied, 0.0175819 s, 2.4 GB/s
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=40
40+0 records in
40+0 records out
41943040 bytes (42 MB) copied, 0.269746 s, 155 MB/s
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=40
40+0 records in
40+0 records out
41943040 bytes (42 MB) copied, 0.34134 s, 123 MB/s
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=40
40+0 records in
40+0 records out
41943040 bytes (42 MB) copied, 1.55335 s, 27.0 MB/s
[root@manager yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=40
40+0 records in
40+0 records out
41943040 bytes (42 MB) copied, 1.47974 s, 28.3 MB/s
[root@manager yum.repos.d]# cp /demo* /text/dis
[root@manager yum.repos.d]# cp /demo* /text/strip
[root@manager yum.repos.d]# cp /demo* /text/rep
[root@manager yum.repos.d]# cp /demo* /text/dis-strip
[root@manager yum.repos.d]# cp /demo* /text/dis-rep
[root@manager yum.repos.d]# ls /text/
dis dis-rep dis-strip rep strip
[root@manager yum.repos.d]# ls /text/dis
demo1.log demo2.log demo3.log demo4.log
[root@manager yum.repos.d]# ls /text/dis-rep
demo1.log demo2.log demo3.log demo4.log demo5.log
[root@manager yum.repos.d]# ls /text/dis-strip/
demo5.log
[root@manager yum.repos.d]# ls /text/rep/
demo1.log demo2.log demo3.log demo4.log demo5.log
[root@manager yum.repos.d]# ls /text/strip/
[root@manager yum.repos.d]#
結(jié)果表示:
要?jiǎng)h除卷需要先停止卷,在刪除卷的時(shí)候,卷組必須處于開(kāi)啟狀態(tài)
#停止卷
[root@manager yum.repos.d]# gluster volume delete dis-vol
#刪除卷
[root@manager yum.repos.d]# gluster volume delete dis-vol
#僅拒絕
[root@manager yum.repos.d]# gluster volume set dis-vol auth.reject 192.168.45.133
#僅允許
[root@manager yum.repos.d]# gluster volume set dis-vol auth.allow 192.168.45.133
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。