IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> GlusterFS分布式文件系统 -> 正文阅读

[系统运维]GlusterFS分布式文件系统

一、GlusterFS概述

1.1 GlusterFS简介

  • 开源的分布式文件系统

  • 由存储服务器、客户端以及NFS/Samba 存储网关组成

  • 无元数据服务器

1.2 GlusterFS特点

  • 扩展性和高性能

  • 高可用性

  • 全局统一命名空间

  • 弹性卷管理

  • 基于标准协议

  • 无元数据服务器

1.3 GlusterFS术语

  • Brick( 存储块): 指可信主机池中由主机提供的用于物理存储的专用分区, 是 GlusterFS 中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。存储目录的格式由服务器和目录的绝对路径构成,表示方法为 SERVER:EXPORT, 如 192.168.1.4:/ data/mydir/。

  • Volume(逻辑卷):一个逻辑卷是一组 Brick 的集合。卷是数据存储的逻辑设备,类似于 LVM 中的逻辑卷。大部分 Gluster 管理操作是在卷上进行的。

  • FUSE(Filesystem inUserspace):是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。

  • VFS:内核空间对用户空间提供的访问磁盘的接口。

  • Glusterd(后台管理进程):在存储群集中的每个节点上都要运行。

1.4 GlusterFS模块化堆栈式结构

GlusterFS 是模块化、堆栈式的架构设计模块称为 Translator,是 GlusterFS 提供的一种强大机制,借助这种良好定义的接口可以高效简便地扩展文件系统的功能和实现复杂的功能

  • 服务端与客户端的设计高度模块化的同时模块接口是兼容的,同一个 translator 可同时在客户端和服务器加载。

  • GlusterFS 中所有的功能都是通过 translator 实现的,其中客户端要比服务端更复杂, 所以功能的重点主要集中在客户端上。

?

1.5 GlusterFS 的工作流程如下:

?工作流程:

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

  2. Linux 系统内核通过 VFS API 收到请求并处理

  3. VFS 将数据递交给FUSE 内核文件系统,并向系统注册一个实际的文件系统 FUSE, 而 FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了 GlusterFS client 端。可以将 FUSE 文件系统理解为一个代理。

  4. GlusterFS client 收到数据后,client 根据配置文件对数据进行处理。

  5. 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入服务器存储设备

1.6 弹性hash算法

  • 通过HASH算法得到一个32位的整数

  • 划分为N个连续的子空间,每个空间对应一个Brick

  • 弹性HASH算法的优点

    1. 保证数据平均分布在每一个Brick中

    2. 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

二 、GlusterFS的卷的类型

2.1 分类

  • 分布式卷

  • 条带卷

  • 复制卷

  • 分布式条带卷

  • 分布式复制卷

  • 条带复制卷

  • 分布式条带分支卷

2.2 常用的卷详解

2.2.1 分布式卷

  • 没有对文件进行分块处理

  • 通过扩展文件属性保存HASH值

  • 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等

分布式卷的特点:

  • 文件分布在不同的服务器,不具备冗余性

  • 更容易和廉价地扩展卷的大小

  • 单点故障会造成数据丢失

  • 依赖底层的数据保护

2.2.2 条带卷

  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点

  • 存储大文件时,性能尤为突出

  • 不具备冗余性,类似raid0

条带卷的特点:

  • 数据被分割成更小块分布到块服务器群中的不同条带区

  • 分布减少了负载且更小的文件加速了存取的速度

  • 没有数据冗余

2.2.3 复制卷

  • 同一文件保存一份或多份副本

  • 因为要保存副本,所以磁盘利用率较低

  • 若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为改卷的总容量

复制卷的特点

  • 卷中所有的服务器均保存一个完整的副本

  • 卷的副本数量可由客户创建的时候决定

  • 至少有两块服务器或更多服务器

  • 具备冗余

2.2.4 分布式条带卷

  • 兼顾分布式卷和条带卷的功能

  • 主用于大文件访问处理

  • 至少最少需要4台服务器

2.2.4 分布式复制卷

  • 兼顾分布式卷和复制卷的功能

  • 主要用于需要数据冗余的情况

  • 服务器必须要条带卷的倍数(>=2倍)

三、部署GFS集群

资源列表

主机名IP磁盘挂载点
node1172.16.10.11/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/b3 /c4 /d5 /e6
node2172.16.10.12/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/b3 /c4 /d5 /e6
node3172.16.10.13/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/b3 /c4 /d5 /e6
node4172.16.10.14/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/b3 /c4 /d5 /e6
client172.16.10.10

基础环境

  • 关闭防火墙

?systemctl stop firewalld
?systemctl disable firewalld
  • 关闭selinux

?setenforce 0 
?sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名

?hostnamectl set-hostname node1
?hostnamectl set-hostname node2
?hostnamectl set-hostname node3
?hostnamectl set-hostname node4
?hostnamectl set-hostname client
  • 添加host映射

?vim /etc/hosts
?172.16.10.10 client
?172.16.10.11 node1
?172.16.10.12 node2
?172.16.10.13 node3
?172.16.10.14 node4

3.1 安装GFS

3.1.1 安装软件

  • 所有node节点上操作

?# 安装yum源
?[root@node1 ~]# yum -y install centos-release-gluster 
?# 安装gluster相关软件
?[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

3.1.2 启动GlusterFS

  • 所有node节点上操作

?[root@node1 ~]# systemctl start glusterd
?[root@node1 ~]# systemctl enable glusterd
??
?# 出现以下错误可以尝试升级systemd和openssl 
?[root@node1 ~]# yum -y install systemd openssl 
?# 报错信息:
?[root@node1 ~]# systemctl status glusterd -l 
?● glusterd.service - GlusterFS, a clustered file-system server 
? ?  Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: disabled) 
? ?  Active: failed (Result: exit-code) since 六 2021-07-24 15:02:18 CST; 26s ago Docs: man:glusterd(8) 
?7月 24 15:02:18 node3 systemd[1]: Starting GlusterFS, a clustered file-system server... 
?7月 24 15:02:18 node3 systemd[1]: glusterd.service: control process exited, code=exited status=1 
?7月 24 15:02:18 node3 systemd[1]: Failed to start GlusterFS, a clustered file- system server. 
?7月 24 15:02:18 node3 systemd[1]: Unit glusterd.service entered failed state. 
?7月 24 15:02:18 node3 systemd[1]: glusterd.service failed. 
?7月 24 15:02:20 node3 systemd[1]: [/usr/lib/systemd/system/glusterd.service:4] Unknown lvalue 'StartLimitBurst' in section 'Unit' 
?7月 24 15:02:20 node3 systemd[1]: [/usr/lib/systemd/system/glusterd.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit

3.1.3 添加节点

  • 仅在node1上执行以下操作,添加node1~node4节点。

?[root@node1 ~]# gluster peer probe node1 # node1 也可以不执行 
?[root@node1 ~]# gluster peer probe node2 
?[root@node1 ~]# gluster peer probe node3 
?[root@node1 ~]# gluster peer probe node4

3.1.4 查看群集状态

  • 通过以下命令在每个节点上查看群集状态,正常情况下每个节点的输出结果均为“State: Peer in Cluster(Connected)”。如果显示 Disconnected,请检查 hosts 文件配置

?[root@node1 ~]# gluster peer status

3.2 创建卷

3.2.1 创建分布式卷

  • 以下命令中,没有指定类型,默认创建的是分布式卷

# 创建分布式卷
[root@node1 ~]# gluster volume create dis-volume node1:/e6 node2:/e6 force
# 查看卷的详细信息
[root@node1 ~]# gluster volume info dis-volume
# 启用GlusterFS逻辑卷
[root@node1 ~]# gluster volume start dis-volume
# 查看卷列表,显示所有的卷
[root@node1 ~]# gluster volume list

3.2.2 创建条带卷,新版本已经启用

  • 以下命令中,指定类型为 stripe,数值为 2,而且后面跟了 2 个 Brick Server,所以创建的是条带卷

# 创建条带卷
[root@node1 ~]# gluster volume create str-volume  stripe 2  node3:/e6 node4:/e6 force
# 查看卷的详细信息
[root@node1 ~]# gluster volume info str-volume
# 启用GlusterFS逻辑卷
[root@node1 ~]# gluster volume start str-volume
# 查看卷列表,显示所有的卷
[root@node1 ~]# gluster volume list

3.2.3 创建复制卷

  • 以下命令中,指定类型为 replica,数值为 2,而且后面跟了 2 个 Brick Server,所以创建的是复制 卷

# 创建复制卷
[root@node1 ~]# gluster volume create  rep-volume replica 2  node1:/d5 node2:/d5 force
# 查看卷的详细信息
[root@node1 ~]# gluster volume info rep-volume
# 启用GlusterFS逻辑卷
[root@node1 ~]# gluster volume start rep-volume
# 查看卷列表,显示所有的卷
[root@node1 ~]# gluster volume list

3.2.4 创建分布式条带卷,新版本已经启用

  • 以下命令中,指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的 2 倍,所以 创建的是分布式条带卷

# 创建分布式条带卷
[root@node1 ~]# gluster volume create  dis-str  stripe 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
# 查看卷的详细信息
[root@node1 ~]# gluster volume info dis-str
# 启用GlusterFS逻辑卷
[root@node1 ~]# gluster volume start dis-str
# 查看卷列表,显示所有的卷
[root@node1 ~]# gluster volume list

3.2.5 创建分布式复制卷

  • 以下命令中,指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的 两倍,所 以创建的是分布式复制卷

# 创建分布式复制卷
[root@node1 ~]# gluster volume create  dis-rep replica 2  node1:/b3 node2:/b3 node3:/b3 node4:/b3 force
# 查看卷的详细信息
[root@node1 ~]# gluster volume info dis-rep
# 启用GlusterFS逻辑卷
[root@node1 ~]# gluster volume start dis-rep
# 查看卷列表,显示所有的卷
[root@node1 ~]# gluster volume list

3.3 部署Gluster客户端

  • 在部署完分布式文件系统后,需要对挂载的服务器安装客户端软件,并创建挂载目录, 将分布式文 件系统挂载到刚创建目录即可。最后将挂载命令添加自启 fstab 文件中,当服务 器重启时,不需要 手动挂载

3.3.1 安装客户端软件

# 安装yum源
[root@client ~]# yum -y install centos-release-gluster 
# 安装gluster相关软件
[root@client ~]# yum -y install glusterfs glusterfs-fuse

3.3.2 创建挂载点

[root@client ~]# mkdir /{dis,rep,dis-rep}

3.3.3 挂载Gluster文件系统

# 手动挂载
[root@client ~]# mount -t glusterfs node1:dis-volume /dis 
[root@client ~]# mount -t glusterfs node1:rep-volume /rep 
[root@client ~]# mount -t glusterfs node1:dis-rep /dis_and_rep
# 自动挂载
[root@client ~]# vim /etc/fstab
node1:dis-volume  /dis  glusterfs  defaults,_netdev  0  0
node1:rep-volume  /rep  glusterfs  defaults,_netdev  0  0
node1:dis-rep  /dis_and_rep  glusterfs  defaults,_netdev  0  0
[root@client ~]# mount -a

3.3.4 测试

# 在客户机挂载点分别创建文件
[root@client ~]# cp /etc/passwd /dis/ 
[root@client ~]# cp /etc/passwd /dis-rep/ 
[root@client ~]# cp /etc/passwd /rep/ 

# 分别查看相应挂载的数据 
[root@client ~]# head -1 /dis/passwd 
root:x0:0:root:/root:/bin/bash 
[root@client ~]# head -1 /dis/passwd 
root:x0:0:root:/root:/bin/bash 
[root@client ~]# head -1 /dis/passwd 
root:x0:0:root:/root:/bin/bash 

# 模仿单点故障再查看 
[root@node1 ~]# init 0 ##关掉node1 

# 再次查看 
[root@client ~]# head -1 /dis/passwd 
head: 无法打开"/dis-rep/passwd" 读取数据: 没有那个文件或目录    ##分布式卷没有冗余,若数据正好存储在node1节点,则会会出现数据丢失,若存储在node2节点,则数据可以正常读取 
[root@client ~]# head -1 /dis/passwd 
root:x:0:0:root:/root:/bin/bash    ##复制卷有一份备份在其他服务节点,关闭一个节点,还是能够正常访问数据 
[root@client ~]# head -1 /dis/passwd 
root:x:0:0:root:/root:/bin/bash    ##同复制卷,但若写入数据的两个服务都出现故障,则数据丢失 

3.4 维护命令

# 加入可信任存储池
gluster peer probe [IP或者主机名] 

# 查看状态 
gluster peer status 

# 移除节点 
gluster peer detach [IP或者主机名] 

# 启用GlusterFS逻辑卷 
gluster volume start [卷名] 

# 查看逻辑卷状态 
gluster volume info 

# 停止卷 
gluster volume stop [卷名] 

# 删除卷 
gluster volume delete [卷名] 

# 卷扩容 
gluster volume add-brick [卷名] [IP]:[目录] 
# 扩容后重新计算分配资源文件 
gluster volume rebalance [卷名] start 

# 收缩卷(收缩卷前gluster需要先移动数据到其他位置) 
gluster volume remove-brick [卷名] [迁移前IP]:[迁移前目录] [迁移后IP]:[迁移后目录] start   ## 开始迁移 
gluster volume remove-brick [卷名] [迁移前IP]:[迁移前目录] [迁移后IP]:[迁移后目录] status  ## 查看迁移状态 
gluster volume remove-brick [卷名] [迁移前IP]:[迁移前目录] [迁移后IP]:[迁移后目录] commit  ## 迁移完成后提交 

# 迁移卷
# 将10.0.21.246数据迁移到10.0.21.245先将10.0.21.245加入集群 
gluster peer probe 10.0.21.245 gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs start  ## 开始迁移 
gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs status  ## 查看迁移状态 
gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs commit  ## 数据迁移完毕后提交 
gluster volume replace-brick gv0 10.0.21.246:/data/glusterfs 10.0.21.245:/data/glusterfs commit -force ## 如果机器10.0.21.246出现故障已经不能运行,执行强制提交 
gluster volume heal gv0 full ## 同步整个卷 

# 设置卷的访问控制 
## 下面设置只允许 192.168.1.0 和 10.1.1.0 网段的客户端访问 dis-rep 卷 
gluster volume set dis-rep auth.allow 192.168.1.*,10.1.1.*
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:57:18  更:2021-08-24 16:02:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:44:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码