GFS-Google 文件系统

GFS分布式文件系统

  1. 简介

GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。

GFS由三个组件组成
①存储服务器(Brick Server)
② 客户端(不在本地)(且,有客户端,也会有服务端,这点类似于 NFS,但是更为复杂)
③ 存储网关(NFS/Samaba)

无元数据服务器:
元数据是核心,描述对象的信息,影响其属性;
例如NFS,存放数据本身,是一个典型的元数据服务器可能存在单点故障,故要求服务器性能较高,服务器一旦出现故障就会导致数据丢失;
反过来看,所以无元数据服务不会有单点故障。
那么数据存放在哪里呢?会借用分布式的原则,分散存储,不会有一个统一的数据服务器

1.1 特点

  • 扩展性和高性能:可扩展性,扩展节点,通过多节点提高性能 Scale-Out架构允许通过简单地增加存储节点的方式来提高存储容量和性能(磁盘、计算和I/0资源都可以独立增加),支持10GbE和InfiniBand 等高速网络互联。
    Gluster弹性哈希(ElasticHash) 解决了GlusterFS对元数据服务器的依赖,改善了单点故障和性能瓶颈,真正实现了并行化数据访问。GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。
  • 高可用性:不存在单点故障,有备份机制,类似Raid的容灾机制 GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问当数据出现不一致时,自我修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行,几乎不会产生性能负载。 GlusterFS可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统( 如EXT3、XFS等)来存储文件,因此数据可以使用传统访问磁盘的方式被访问。
  • 全局统一命名空间:类比 API 的性质/概念,系统里根据他命名所定义的隔离区域,是一个独立空间;统一的名称空间,与客户端交互,把请求存放至后端的块数据服务器
  • 弹性卷管理:方便扩容及对后端存储集群的管理与维护,较为复杂。 GlusterFS通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分而得到。
    逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。
    文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。
  • 基于标准协议:基于标准化的文件使用协议,让 CentOS 兼容 GFS。 GlusterFS通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分而得到。
    逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。
    文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。

1.2 术语

  • Brick 存储服务器:实际存储用户数据的服务器
  • Volume:本地文件系统的”分区”
  • FUSE:用户 空间的文件系统(类比EXT4),”这是一个伪文件系统”;以本地文件系统为例,用户想要读写一个文件,会借助于EXT4文件系统,然后把数据写在磁盘上;而如果是远端的GFS,客户端的请求则应该交给FUSE(为文件系统),就可以实现跨界点存储在GFS上
  • VFS(虚拟端口) :内核态的虚拟文件系统,用户是先提交请求交给VFS然后VFS交给FUSE,再交给GFS客户端,最后由客户端交给远端的存储
  • Glusterd(服务):是允许在存储节点的进程

1.3 工作流程

  • 客户端或应用程序通过GlusterFS的挂载点访问数据。
  • linux系统内核通过VFS API收到请求并处理。
  • VES将数据递交给FUSE 内核文件系统,并向系统注册一个实际的文件系统FUSE, 而FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了GlusterFS client端。可以将FUSE 文件系统理解为一个代理。
  • GlusterFS client 收到数据后,client 根据配置文件的配置对数据进行处理。
  • 经过GlusterFS client处理后,通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上。

1.4 七种类型的 GlusterFS 卷

GlusterFs支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷。

1.4.1 分布式卷

1)分布式卷的介绍

  • 文件通过HASH算法分布到所有Brick Server. 上,这种卷是GlusterFS 的默认卷;以文件为单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的RAIDO,不具有容错能力。
  • 在该模式下,并没有对文件进行分块处理,文件直接存储在某个Server节点上。
  • 由于直接使用本地文件系统进行文件存储,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低。

示例:
File1 和File2存放在Server1, 而File3存放在Server2,文件都是随机存储,一个文件(如File1)要么在Server1上,要么在Server2. 上,不能分块同时存放在Server1和Server2上。

2)分布式卷特点

  • 文件分布在不同的服务器,不具备冗余性。
  • 更容易和廉价地扩”展卷的大小。
  • 单点故障会造成数据丢失。
  • 依赖底层的数据保护。
#创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1 : /dir1、server2:/dir2 和server3:/dir3中.

gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3

1.4.2 条带卷

1)条带卷的介绍

  • 类似RAID0,文件被分成数据块并以轮询的方式分布到多个BrickServer上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高,但是不具备冗余性。

File 被分割为6段,1、3、5放在Server1, 2、4、6放在Server2。

2)条带卷特点

  • 数据被分割成更小块分布到块服务器群中的不同条带区。
  • 分布减少了负载且更小的文件加速了存取的速度。
  • 没有数据冗余。
#创建了一个名为stripe-volume的条带卷,文件将被分块轮询的存储在Server1 :/dir1和Server2:/dir2两个Brick中
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

1.4.3 复制卷

1)复制卷的介绍

  • 将文件同步到多个Brick 上,使其具备多个文件副本,属于文件级RAID 1,具有容错能力。因为数据分散在多个Brick 中,所以读性能得到很大提升,但写性能下降。
  • 复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低。
#创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

1.4.4 分布式条带卷

1)分布式条带卷的介绍

  • BrickServer数量是条带数(数据块分布的Brick数量)的倍数,兼具分布式卷和条带卷的特点。
  • 主要用于大文件访问处理,创建一个分布式条带卷最少需要4台服务器。
#创建一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)。
Brick的数量是4 ( Server1:/dir1、 Server2: /dir2、 Server3:/dir3 和Server4:/dir4),条带数为2 (stripe 2 )

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

创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;如果存储服务器的数量是条带或复制数的2倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。

1.4.5 分布式复制卷

1)分布式复制卷的介绍

  • Brick Server数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。主要用于需要冗余的情况下。

示例原理:

File1和File2 通过分布式卷的功能分别定位到Server1 和Server2。
在存放File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是Server1 中的exp1 目录和Server2 中的exp2目录。
在存放File2时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是Server3 中的exp3 目录和Server4 中的exp4 目录。

1.4.6 条带复制卷

1)条带复制卷的介绍

  • 类似RAID10,同时具有条带卷和复制卷的特点。

1.4.7 分布式条带复制卷

1)分布式条带复制卷的介绍

  • 三种基本卷的复合卷,通常用于类Map Reduce 应用。

  • 部署实践

环境准备

服务器类型 系统和IP地址 需要安装的组件 node1服务器 CentOS7.6(64 位) 192.168.80.20 添加4块20G硬盘 node2服务器 CentOS7.6(64 位) 192.168.80.25 添加4块20G硬盘 node3服务器 CentOS7.6(64 位) 192.168.80.30 添加4块20G硬盘 node4服务器 CentOS7.4(64 位) 192.168.80.35 添加4块20G硬盘

GFS-Google 文件系统

1.关闭所有节点的防火墙与selinux / 修改主机名

systemctl disable --now firewalld
setenforce 0

hostnamectl set-hostname node1/2/3/4
su

2.挂载硬盘/安装GFS(以node1节点为例)

(1)脚本准备:

[root@node1 ~] # vim /opt/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

GFS-Google 文件系统

(2)执行脚本,挂载硬盘

`bahs
chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh
mount -a
df -h

Original: https://www.cnblogs.com/Canyun-blogs/p/16444042.html
Author: 残-云
Title: GFS-Google 文件系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606584/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 实验一 密码引擎-3-电子钥匙功能测试

    任务详情 1 解压”龙脉密码钥匙驱动实例工具等”压缩包2 在Ubuntu中运行 “龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf…

    Linux 2023年6月8日
    093
  • Linux内核模块管理(命令)

    1.什么是 Linux 内核模块? 内核模块是可以根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似lsmod这样的命令来查询模…

    Linux 2023年6月8日
    082
  • 一个轻量级的C++ log日志库

    一、简介 为了自己使用写的一个简单日志库,使用仅需包含一个头文件,支持Windows和Linux平台,支持多线程控制台输出以及写日志文件。 二、调用方式 #include &quo…

    Linux 2023年6月7日
    078
  • 计算机系统领域学术会议论文评审流程

    今天看到海波老师的一张图,进行转载一下,下图记录了SOSP, OSDI, Eurosys 等计算机系统顶会的评审流程: 保持更新;cnblogs.com/xuyaowen。 Ori…

    Linux 2023年6月14日
    079
  • Centos8 设置中文

    1、一般情况 1.1 进入设置选择 Region&Language 1.2 点击 加号 1.3 点击 汉语(中国) 1.4 选择 汉语(智能拼音) 2、特殊情况 有些虚拟机…

    Linux 2023年5月27日
    0107
  • 编程入门之字符编码与乱码

    ——”为什么服务器收到的请求或者打开的文本文件有时会乱码?” ——”因为编码不对。” ——”编码的本质是什么?为什么编码…

    Linux 2023年6月13日
    083
  • CentOS7 源码安装Nginx及Nginx基本管理设置

    CentOS7 安装 参考文档 CentOS7最小安装后初始化安装工具 1:yum install net-tools 参考文档 2:源码安装wget 参考文档 或者执行 yum …

    Linux 2023年5月27日
    0110
  • Linux-系统启动与MBR扇区修复

    1.系统启动过程 1.1 MBR扇区 1.2 MBR扇区的备份与还原 1.3 修复MBR 1.3.1 dd备份MBR信息 1.3.2 光驱启动修复 1.4 grub故障修复 1.系…

    Linux 2023年5月27日
    0116
  • CodeSmith无法获取MySQL表及列Description说明处理

    实体类生成模板下载: 链接:https://pan.baidu.com/s/1tLxW5m5ECwVV2feWSVtQIA提取码:qezw 反编译工具下载: 链接:https://…

    Linux 2023年6月13日
    0107
  • 搭建zabbix 4.0

    安装zabbix的依赖包 下载zabbix源码包 数据库导入数据的命令格式:mysql ­u用户名 ­p密码 数据库名称 < 要导入的数据 此时的路径是在databases/…

    Linux 2023年6月8日
    0103
  • 分布式数据库

    目录: 1.分布式数据库的核心功能 2.分布式数据库的优点 3.分布式数据库的缺点 4.市面上分布式数据库的产品分类 5.分布式数据库的搭建 随着互联网的发展,人类社会的数据量迅速…

    Linux 2023年6月6日
    060
  • linux命令之wget下载

    wget wget 是一个下载文件的工具。 格式 wget [&#x53C2;&#x6570;] [URL&#x5730;&#x5740;] 常用参…

    Linux 2023年5月27日
    079
  • Scrapy关键词 爬虫的简单实现(以新华网和人民网为例)

    新华网爬虫(2022年6月) 1 分析网站结构 新华网网址:新华网_让新闻离你更近 (news.cn) 新华网的首页是带有关键词搜索功能的,我们尝试在搜索栏随意搜索一个关键词 可以…

    Linux 2023年6月7日
    0101
  • 线程池如何保证核心线程一直存活

    转载请注明出处: 查看 ThreadPoolExecutor 类中的 getTask 方法,这个方法可以保持核心线程在没有任务的时候也可以一直处于存活状态 核心在于 workQue…

    Linux 2023年6月14日
    0151
  • docker 安装mysql5.7

    docker 安装mysql5.7 前言 MySQL 是目前最流行的关系型数据库管理系统,开发者是瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网…

    Linux 2023年6月6日
    090
  • FusionAccess模板制作并发放

    FusionAccess安装并对接 具体安装步骤欢迎参照我的博客:https://www.cnblogs.com/kongshuo/p/16333561.html 在FC上创建wi…

    Linux 2023年6月8日
    0132
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球