前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GFS分布式文件存储系统

GFS分布式文件存储系统

作者头像
全栈程序员站长
发布2022-08-23 21:34:10
1.9K0
发布2022-08-23 21:34:10
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一 GlusterFS概述

GlusterFS是开源的分布式文件系统,由存储服务器、客户端以及NFS/Samba存储网关组成的无元数据服务器

二 GlusterFS工作原理

  • 扩展性和高性能
  • 高可用性
  • 全局统─命名空间
  • 弹性卷管理
  • 基于标准协议RDMA or TCP/IP

弹性HASH算法 通过HASH算法得到一个32位的整数 划分为N个连续的子空间,每个空间对应一个Brick弹性

HASH算法的优点

  • 保证数据平均分布在每一个Brick中
  • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

三 GlusterFS卷类型

3.1 分布式卷

没有对文件进行分块处理 通过扩展文件属性保存HASH值 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等

分布式卷的特点

  • 文件分布在不同的服务器,不具备冗余性更容易和廉价地扩展卷的大小
  • 单点故障会造成数据丢失
  • 依赖底层的数据保护

创建分布式卷 gluster volume create dis-volume server1:/dir1 server2:/dir2server3:/dir3

3.2 条带卷

  • 根据偏移量将文件分成N块 (N个条带节点),轮询的存储在每个Brick Server节点
  • 存储大文件时,性能尤为突出
  • 不具备冗余性,类似Raid0

条带卷的特点

  • 数据被分割成更小块分布到块服务器群中的不同条带区
  • 分布减少了负载且更小的文件加速了存取的速度
  • 没有数据冗余

创建条带卷 创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中

gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

3.3 复制卷

同一文件保存一份或多份副本 因为要保存副本,所以磁盘利用率较低 若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量

复制卷的特点

  • 卷中所有的服务器均保存一个完整的副本
  • 卷的副本数量可由客户创建的时候决定
  • 至少有两个块服务器或更多服务器
  • 具备冗余性

创建复制卷: 创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中 gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

3.4 分布式条带卷

兼顾分布式卷和条带卷的功能 主要用于大文件访问处理 至少最少需要4台服务器

创建分布式条带卷: 创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)

gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1server2:/dir2 server3:/dir3 server4:)dir4

3.5 分布式复制卷

兼顾分布式卷和复制卷的功能 用于需要冗余的情况

创建分布式复制卷 创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍) gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

四 GlusterFS案例部署

4.1 实验环境

操作系统

IP

主机名

硬盘数量

centos 7.4

20.0.0.100

node1

sdb:20G sdc:20G sdd:20G sde:20G

centos 7.4

20.0.0.12

node2

sdb:20G sdc:20G sdd:20G sde:20G

centos 7.4

20.0.0.27

node3

sdb:20G sdc:20G sdd:20G sde:20G

centos 7.4

20.0.0.30

node4

sdb:20G sdc:20G sdd:20G sde:20G

centos 7.4

20.0.0.10

node5-client

sdb:20G sdc:20G sdd:20G sde:20G

4.2 关闭防火墙与selinux

各节点关闭防火墙与核心防护

代码语言:javascript
复制
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld

[root@node1 ~]# setenforce 0

4.3 配置hosts文件

4台节点分别修改主机名

代码语言:javascript
复制
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname node4

4台节点分别做地址映射

代码语言:javascript
复制
vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
20.0.0.100  node1
20.0.0.12   node2
20.0.0.27   node3
20.0.0.30   node4

4.4 磁盘格式化与挂载

磁盘格式化与挂载脚本 vim disk.sh

代码语言:javascript
复制
#! /bin/bash
echo "查找到的可创建磁盘列表"
fdisk -l | grep 'Disk /dev/sd[b-z]'
echo "=============================="
PS3="chose which disk you want to create:"
select W in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit
do
        case $W in
        sda)
            fdisk -l /dev/sda
            break;;
        sd[b-z])
             echo "n p w" | fdisk /dev/$W
        mkfs.xfs -i size=512 /dev/${W}"1" &>/dev/null
        mkdir -p /data/${W}"1" &>/dev/null
        echo -e "/dev/${W}"1" /data/${W}"1" xfs defaults 0 0\n" >> /etc/fstab
        mount -a &>/dev/null
        break;;
        quit)
        break;;
        *)
        echo "wrong disk,plwase chesk again";;
        esac
done

复制脚本到其他节点

代码语言:javascript
复制
[root@node1 ~]# scp disk.sh root@20.0.0.12:/root
[root@node1 ~]# scp disk.sh root@20.0.0.27:/root
[root@node1 ~]# scp disk.sh root@20.0.0.30:/root

4.5 安装软件

4.5.1 共享Windows系统文件夹gfsrepo

1.文件共享添加everyone用户指定读取权限

2.设置本地策略secpol.msc

3:网络和共享中心—–>共享选项—–>把所有共享选项设置为允许

4. 控制面板—->程序—-> 开启SMB支持

4.5.2 查看共享文件夹

smbclient -L //192.168.100.2/

4.5.3 挂载共享文件夹

代码语言:javascript
复制
mkdir /abc
mount.cifs //192.168.100.2/gfsrepo /abc
回车

4.5.4 设置本地源仓库

代码语言:javascript
复制
vi /etc/yum.repos.d/GLFS.repo
[GLFS]
name=glfs
baseurl=file:///abc
gpgcheck=0
enabled=1
代码语言:javascript
复制
cd /etc/yum.repo.d/
mkdir bak
mv C* bak

4.5.5 安装软件

代码语言:javascript
复制
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

启动软件
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service

4.5.6 时间同步

代码语言:javascript
复制
ntpdate ntp1.aliyun.com

4.6 添加节点

添加存储信任池,只需要在一个节点上添加即可

代码语言:javascript
复制
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

4.7 查看集群状态

代码语言:javascript
复制
gluster peer status

4.8 卷的创建

创建分布式卷

代码语言:javascript
复制
gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force 

查看分布式卷

代码语言:javascript
复制
gluster volume info dis-vol

创建条带卷

代码语言:javascript
复制
[root@node1 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force

查看条带卷

代码语言:javascript
复制
gluster volume info stripe-vol

查看卷列表

代码语言:javascript
复制
gluster volume list

创建复制卷

代码语言:javascript
复制
[root@node1 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force

开启复制卷

代码语言:javascript
复制
gluster volumn start rep-vol

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139833.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 GlusterFS概述
  • 二 GlusterFS工作原理
  • 三 GlusterFS卷类型
    • 3.1 分布式卷
      • 3.2 条带卷
        • 3.3 复制卷
          • 3.4 分布式条带卷
            • 3.5 分布式复制卷
            • 四 GlusterFS案例部署
              • 4.1 实验环境
                • 4.2 关闭防火墙与selinux
                  • 4.3 配置hosts文件
                    • 4.4 磁盘格式化与挂载
                      • 4.5 安装软件
                        • 4.5.1 共享Windows系统文件夹gfsrepo
                        • 4.5.2 查看共享文件夹
                        • 4.5.3 挂载共享文件夹
                        • 4.5.4 设置本地源仓库
                        • 4.5.5 安装软件
                        • 4.5.6 时间同步
                      • 4.6 添加节点
                        • 4.7 查看集群状态
                          • 4.8 卷的创建
                          相关产品与服务
                          云服务器
                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档