GFS分布式文件系统

1.GFS分布式文件系统

gfd glusterFS 开源的分布式的文件系统

存储服务器 客户端 以及网络(NFS/samba)网关

传统式老的分布式元服务器,元服务器保存存储节点的目录树信息。

一旦元服务器故障,所有的存储节点全部失效

现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强,存储效率也更高了

2.GFS的特点

1.扩展性更强,高性能

2.高可用、可以自动对文件进行复制,多次复制,确保数据总是可以访问,哪怕硬件故障也能正常访问

3.全局统一的命名空间,所有节点都在一个分支的管理之下,客户端访问分支节点即可。

4.弹性卷,类似于lvm,不同硬盘上的不同分区组成一个逻辑上的硬盘。GFS提出不同服务器上的不同的硬盘分区,组成一个卷。可以动态的扩容。

5.基于标准协议,GFS存储服务支持,NFS FTP HTTP以及GFS协议,应用程序可以直接使用数据,不需要做任何修改。

3.GFS的组件和术语

1、BRICK(存储块) 存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元,也是对外提供的存储目录,由服务和目录的绝对路径组成

server.dir

192.168.233.10:/opt/gfs

node1:/opt/gfs

2.volume 逻辑卷 一个逻辑卷就是一组brick的集合。类似于lvm,我们管理GFS就是管理这些卷。

3.FUSE:GFS的内核模块,允许用户创建自己的文件系统

4.VFS:内核空间对用户提供的访问磁盘的接口。虚拟端口

5.服务端在每个存储节点上都要运行,glusterd(后台管理进程)

4.工作流程

(1)客户端或应用程序通过 GFS 的挂载点访问数据。

(2)linux系统内核通过 VFS 收到请求并处理。

(3)VFS 将数据递交给 FUSE 内核处理,而 FUSE 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GFS客户端。

(4)GFS客户端 收到数据后,客户端根据配置文件的配置对数据进行处理。

(5)经过 GFS客户端 处理后,通过网络将数据传递至远端的 GFS服务端,并且将数据写入到服务器存储设备上。

GFS分布式文件系统_第1张图片

5.gfs的卷有哪些类型

分布式卷,也是GFS的默认卷类型

条带卷(没了)

复制卷(镜像化)

分布式复制卷

6.分布式 复制卷 分布式复制卷的特点

分布式卷的特点:文件数据通过HASH算法分布到设置的所有BRICK SERVER上。GFS的默认卷,属于raid 0 没有容错机制。在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上。存取效率也没有提供,直接使用本地文件系统进行存储。

复制卷:类似于raid1 ,文件会同步在多个brick server上,读性能上升,写性能稍差

复制卷具备冗余,坏一个节点不影响数据,但是要保存副本,磁盘利用率50%

分布式复制卷:两两复制,文件会在组内同步,不同的组直接未必同步

7.实验

环境:

四台服务器

node1 node:192.168.233.10 磁盘 。dev/sdb1 /data/sdb1

dev/sdc1 /data/sdc1

dev/sdd1 /data/sdd1

node2 node:192.168.233.20 磁盘 。dev/sdb1 /data/sdb1

dev/sdc1 /data/sdc1

dev/sdd1 /data/sdd1

node3:192.168.233.30 磁盘 。dev/sdb1 /data/sdb1

dev/sdc1 /data/sdc1

dev/sdd1 /data/sdd1

node4:192.168.233.40 磁盘 。dev/sdb1 /data/sdb1

dev/sdc1 /data/sdc1

dev/sdd1 /data/sdd1

客户端:任选 192.168.223.61

所有:systemctl stop firewalld

setenforce 0

cd /opt

vim fdisk.sh

#!/bin/bash

NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`

for VAR in $NEWDEV

do

echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null

mkfs.xfs /dev/${VAR}"1" &> /dev/null

mkdir -p /data/${VAR}"1" &> /dev/null

echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab

done

mount -a &> /dev/null

sz fdisk.sh

拖到其他三个

alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'

scan

到虚拟机添加硬盘

添加3个盘

scan

lsblk

sh fdisk.sh

df -h

分别去里面看一下

cat /etc/fstab

hostnamectl set-hostname node1

su

hostnamectl set-hostname node2

su

hostnamectl set-hostname node3

su

hostnamectl set-hostname node4

su

vim /etc/hosts #每个linux

192.168.233.10 node1

192.168.233.20 node2

192.168.233.30 node3

192.168.233.40 node4

192.168.66.15 node1

192.168.66.19 node2

192.168.66.17 node3

192.168.66.18 node4

所有:

yum -y install epel-release.noarch

yum -y install centos-release-gluster

GFS分布式文件系统_第2张图片

yum clean all && yum makecache

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

systemctl restart glusterd

如果安装失败:

检查版本

glusterd -V

test1:

gluster peer probe node1

gluster peer probe node2

gluster peer probe node3

gluster peer probe node4

所有:

gluster peer status

分布式卷:

test1:cd /opt

gluster volume create fenbushi node1:/data/sdb1 node2:/data/sdb1 force

gluster volume create:创建新卷。默认就是分布式卷

fenbushi:卷名 唯一不可重复

node1:/data/sdb1 node2:/data/sdb1挂载点

force 强制创建

gluster volume start fenbushi

gluster volume info fenbushi ##查看分布式信息

客户端

systemctl stop firewalld

setenforce 0

yum -y install epel-release.noarch

yum -y install glusterfs glusterfs-fuse

vim /etc/hosts

192.168.233.10 node1

192.168.233.20 node2

192.168.233.30 node3

192.168.233.40 node4

mkdir -p /test/fenbushi

mount.glusterfs node1:fenbushi /test/fenbushi/

df -h

umount node1:fenbushi

vim /etc/fstab #永久

node1:fenbushi /test/fenbushi glusterfs defaults,_netdev 0 0

mount -a

df -h

cd /test/fenbushi/

ls

touch {1..5}.txt

test1:

cd /data/

ls

cd sdb1/

ls

test2:

cd /data/

ls

cd sdb1/

ls

停止了节点,关闭服务之后,不删除限于卷的情况下,能否继续恢复正常读写功能。如果不能如何恢复。

复制卷:

test1:

cd /opt

gluster volume create fuzhijuan replica 2 node2:/data/sdc1 node3:/data/sdc1 force

y

gluster volume start fuzhijuan

gluster volume info fuzhijuan

客户端:

mkdir /test/fuzhijuan

mount.glusterfs node1:fuzhijuan /test/fuzhijuan/

df -h

cd fuzhijuan/

touch {1..6}.txt

test3:

cd /data/sdc1

ls

分布式复制卷

node 1 /data/sdd1 node2 /data/dd1 node3 /data/sdd1 node4 /data/sdd1

test1:gluster volume create fenbufuzhi replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force

gluster volume start fenbufuzhi

gluster volume info fenbufuzhi

客户端 cd..

mkdir fenbufuzhi

mount.glusterfs node1:fenbufuzhi /test/fenbufuzhi

df -h

touch {1..6}.txt

cd /data

cd sdd1/

ls

test1,2,3,4

cd /data

cd sdd1/

ls

删除卷

test1

gluster volume status

gluster volume stop fenbushi

gluster volume delete fenbushi

客户端

vim /etc/fstab

删除fenbushi

mount -a

访问控制:

test1

gluster volume set fenbushi auth.deny 192.168.233.61

gluster volume set fenbushi auth.reject 192.168.233.61

mkdir /test

mount.glusterfs node1:fenbufuzhi /test

故障恢复:

关闭node1

systemctl stop glusterd.service

在node2

gluster volume info fenbufuzhi

客户端:

cd fenbufuzhi/

rm -rf *

ls

node2

node3

node4

客户端

touch {1..6}.txt

node2

node3

node4

客户端:

rm -rf *

node2,node3,node4

node1:

客户端:

GFS分布式文件系统_第3张图片

node1:

node2:

node3:

node4:

结论:停掉一台以后,剩下三台node不受影响,有一台没有复制备份

当打开关掉的一台,重新恢复以后,四台全都正常运行,复制备份

你可能感兴趣的:(服务器,数据库,大数据)