GlusterFS

GlusterFS,是一个分布式文件系统,它通过 TCP/IP 或 IB(InfiniBand RDMA)网络将多个存储资源整合在一起,提供存储服务,具有很强的可扩展能力。
 

GlusterFS 工作原理

 
如上图所示。GlusterFS 的 server 端共享存储资源,client 端通过 TCP 或 IB 连接到 server,然后将 server 端的存储资源挂载到本地目录。应用(Application) 对本地目录文件的读写请求会转交给内核的 VFS,然后到 FUSE 文件系统,FUSE 将此请求转交给设备 /dev/fuse,设备 /dev/fuse 再递交给 GlusterFS 的 client 端,client 通过比对 GlusterFS client 端的配置文件,根据配置文件的定义做一些处理,最后去 server 上读取存储资源的数据,实现应用读写文件的操作。
 
从上图也可以看出,不管是 GlusterFS 和 Application 都需要经过 VFS,它是至关重要的存在。 VFS(Virtual File System,虚拟文件系统)是管理整个 Liunx 文件系统的文件系统,用户再访问文件目录的时候,不需要管这个目录用的是什么文件系统,是 ext4 还是 GlusterFS 等等,这些都是 VFS 来判断处理的,因为它不像 ext4 / GlusterFS 这种文件系统是实际存在的,所以叫虚拟文件系统。
VFS 示意图如下:
 

GlsterFS 部署

GlusterFS 部署流程:
1. GlusterFS 环境准备;
2. GlsuterFS 软件包安装,启动 GlusterFS 服务;
3. server 端创建文件系统;
4. 创建 GlusterFS volume;
5. client 端挂载 volume;
 
1. GlusterFS 环境准备
主机名
ip
硬盘
NFS
server1.local
192.168.4.141
/dev/vdb
LV:5000M lianhua, 1000M huasheng
server2.local
192.168.4.59
/dev/vdb
LV:5000M lianhua, 1000M huasheng
server3.local
192.168.4.105
/dev/vdb
LV:5000M lianhua, 1000M huasheng
client1.local
192.168.4.144
/dev/vdb
 
 
配置 hosts 文件,将主机信息写到 /etc/hosts 中,每台机器都要写:
[root@server1:/root]
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.4.141 server1.local
192.168.4.59 server2.local
192.168.4.105 server3.local
关闭 iptables 和 SELiunx,确保 server 之间能相互访问,并且 client 能访问到 server。
 
 
2. GlusterFS 软件包安装
[root@server1:/root] wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@server1:/root] yum -y install centos-release-gluster312.noarch
[root@server1:/root] yum -y --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
[root@server1:/root] yum -y --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
[root@server1:/root] systemctl start glusterd.service
[root@server1:/root] systemctl enable glusterd.service
[root@server1:/root] systemctl status glusterd.service
# systemctl status glusterd.service
● glusterd.service - GlusterFS, a clustered file-system server
Loaded: loaded (/etc/systemd/system/glusterd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2020-03-28 14:27:24 CST; 6h ago
Main PID: 4519 (glusterd)
Tasks: 188 (limit: 4915)
Memory: 324.8M [root@server1:/root] glusterfs -V
glusterfs 3.12.15
Repository revision: git://git.gluster.org/glusterfs.git
Copyright (c) 2006-2016 Red Hat, Inc. <https://www.gluster.org/>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3
or later), or the GNU General Public License, version 2 (GPLv2),
in all cases as published by the Free Software Foundation.
 
3. server 端创建文件系统
这里硬盘只有一块 vdb ,所以用 LVM 的方式创建两个 LV lianhua 和 huasheng 作为 GlusterFS 的磁盘。
<LVM 的介绍可看这里>
 
在每台 server 上,将 lianhua 和 huasheng 格式化为 ext4 文件系统,然后分别挂载到 /mnt/bricks/lianhua 和 /mnt/bricks/huasheng 目录。直接 show 结果:
[root@server1:/root]
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 4.7G 33G 13% /
tmpfs tmpfs 8.9G 3.9M 8.9G 1% /tmp
/dev/mapper/server1--vol-lianhua ext4 4.6G 23M 4.3G 1% /mnt/bricks/lianhua
/dev/mapper/server1--vol-huasheng ext4 4.6G 20M 4.3G 1% /mnt/bricks/huasheng
 
4. 创建 GlusterFS volume
创建 GlusterFS volume 之前,在任意一台主机中将其它 server 主机加入到 glusterFS 主机池中:
[root@server1:/root]
# gluster peer probe server2
[root@server1:/root]
# gluster peer probe server3 [root@server1:/root]
# gluster peer status
Number of Peers: 2 Hostname: server2.local
Uuid: 72a5f725-1436-46e9-8ae3-404e30fc5eac
State: Peer in Cluster (Connected) Hostname: server3.local
Uuid: 4b2472bc-44a6-4e92-b3fa-6746c599c5d0
State: Peer in Cluster (Connected)
在任意一台主机上创建 GlusterFS volume,volume 的类型是复制式(Replicated)卷:
[root@server1:/root]
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 4.7G 33G 13% /
tmpfs tmpfs 8.9G 3.9M 8.9G 1% /tmp
/dev/mapper/server1--vol-lianhua ext4 4.6G 23M 4.3G 1% /mnt/bricks/lianhua
/dev/mapper/server1--vol-huasheng ext4 4.6G 20M 4.3G 1% /mnt/bricks/huasheng [root@server1:/root]
# gluster volume create lianhuasheng replica 3 server1:/mnt/bricks/lianhua server2:/mnt/bricks/lianhua server3:/mnt/bricks/lianhua force
volume create: lianhuasheng: success: please start the volume to access data
[root@server1:/root]
# gluster volume start lianhuasheng
[root@server1:/root]
# gluster volume info lianhuasheng Volume Name: lianhuasheng
Type: Replicate
Volume ID: 895f24cb-cf45-4cba-b50d-55422aff0909
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: server1.local:/mnt/bricks/lianhua/brick
Brick2: server2.local:/mnt/bricks/lianhua/brick
Brick3: server3.local:/mnt/bricks/lianhua/brick
Options Reconfigured:
performance.client-io-threads: off
nfs.disable: on
transport.address-family: inet
cluster.server-quorum-type: none
cluster.quorum-type: auto
cluster.quorum-reads: true
cluster.consistent-metadata: on
server.allow-insecure: on
network.ping-timeout: 42
cluster.favorite-child-policy: mtime
cluster.heal-timeout: 60
cluster.server-quorum-ratio: 51% [root@server1:/root]
# mount -t glusterfs server1:/lianhuasheng /mnt/lianhuasheng [root@server1:/root]
# df -hT
/dev/vda1 ext4 40G 4.7G 33G 13% /
tmpfs tmpfs 8.9G 3.9M 8.9G 1% /tmp
/dev/mapper/server1--vol-lianhua ext4 4.6G 23M 4.3G 1% /mnt/bricks/lianhua
/dev/mapper/server1--vol-huasheng ext4 4.6G 20M 4.3G 1% /mnt/bricks/huasheng
server1.local:/lianhuasheng fuse.glusterfs 4.6G 24M 4.2G 1% /mnt/lianhuasheng
可以发现,复制式 volume 的大小等于每个文件系统的大小,即,都是 4.6G。
 

GlusterFS volume 类型

上面创建的卷类型是复制式 Replicated 的,它的示意图如下:
存储文件到 volume 中,文件会同时放到每个 Brick 中,Brick 即是主机池中每个 server 的磁盘分区。所以,volume 的容量等于每个 server 的磁盘分区容量。
 
除了 Replicated 模式外,还有 Distributed 分布式卷,Striped 条带式卷,Distributed Striped 分布式条带卷和 Distributed Replicated 分布式复制卷模式。
 

Distributed 分布式卷

存储文件到 volume 中,文件会随机存放到一台 server 中的 Brick 中。所以,volume 的容量式每个 Brick 的容量之和。
 

Striped 条带式卷

存储文件到 volume 中,文件被分成数块,存放到主机池中每台 server 的 Brick 中。
 

Distributed Striped 分布式条带卷

自己看吧,不解释了,前面几种模式的排列组合。
 

Distributed Replicated 分布式复制卷

自己看吧,不解释了,前面几种模式的排列组合。
 
5. client 端挂载 volume
使用 mount 命令将 volume 挂载到 client 的 mount point:
[root@client1:/root]
# mount -t glusterfs -o acl -o rw,backupvolfile-server=server1.local server1.local:/lianhuasheng /mnt/lianhuasheng [root@client1:/root]
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 4.7G 33G 13% /
tmpfs tmpfs 8.9G 3.9M 8.9G 1% /tmp
server1.local:/lianhuasheng fuse.glusterfs 4.6G 20M 4.2G 8% /mnt/lianhuasheng
 
在 client 写个文件测试下:
[root@client1:/root]
# cd /mnt/lianhuasheng/
[root@client1:/mnt/lianhuasheng]
# ls
[root@client1:/mnt/lianhuasheng]
# touch GlusterFS.log
[root@client1:/mnt/lianhuasheng]
# ll -h
total 0K
-rw-r--r-- 1 root root 0 Mar 28 22:38 GlusterFS.log
[root@client1:/mnt/lianhuasheng]
# ssh server1.local
[root@server1:/root]
# cd /mnt/lianhuasheng/
[root@server1:/mnt/lianhuasheng]
# ll -h
-rw-r--r-- 1 root root 0 Mar 28 22:38 GlusterFS.log
 

GlusterFS 常用命令

# 查看 GlusterFS 所有 volume
gluster volume list # 删除 GlusterFS volume
gluster volume stop <volume_name>
gluster volume delete <volume_name> # 卸载主机池中的主机
gluster peer detach <node_name> # 添加主机到主机池
gluster peer probe <node_name> # 创建 volume
gluster volume create <volume_name> replica <number of replica> <server_name>:<brick_name>
 
GlusterFS 官方文档: https://docs.gluster.org/en/latest/
 
 
 
(完)

每天学五分钟 Liunx 0000 | 存储篇:GlusterFS的更多相关文章

  1. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  2. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  3. 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画

    原文:零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形 ...

  4. 《sed的流艺术之一》-linux命令五分钟系列之二十一

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  5. GC算法精解(五分钟让你彻底明白标记/清除算法)

    GC算法精解(五分钟让你彻底明白标记/清除算法) 相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底 ...

  6. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  7. 「每日五分钟,玩转JVM」:线程共享区

    前言 上一篇中,我们了解了JVM中的线程独占区,这节课我们就来了解一下JVM中的线程共享区,JVM中的线程共享区是跟随JVM启动时一起创建的,包括堆(Heap)和方法区()两部分,而线程独占区的程序计 ...

  8. 五分钟搭建一个基于BERT的NER模型

    BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...

  9. Python专题——五分钟带你了解map、reduce和filter

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第6篇文章,给大家介绍的是Python当中三个非常神奇的方法:map.reduce和filter. 不知道大家看到ma ...

  10. 一门能让你五分钟学会的语言-Brainfuck

    看到标题,不出意外的话,你肯定开始骂我了:**标题党,什么编程语言五分钟就能学会? 其实我本来也是不相信的,但是学过了才知道这是真的. 1.Brainfuck 看到这个小标题,不要误会,我没有骂人. ...

随机推荐

  1. Java8新特性Optional

    Optional类的方法 1.empty private static void createNullOptional() { // 创建一个空的Optional实例 // 方式一 Optional& ...

  2. Java项目整合短信验证码

    一.开通短信服务 本来想整合阿里云短信服务的,可是签名一直审核不过,所以在阿里云的云市场找到了一个替代产品(sddx) 接下来小伙伴们按照自己的经济实力购买或者用免费的5条(我就是用免费的5条了) 购 ...

  3. ​3D 高斯点染简介

    3D 高斯点染技术由 3D Gaussian Splatting for Real-Time Radiance Field Rendering 一文首次提出.作为一种栅格化技术,3D 高斯点染可用于实 ...

  4. 聊聊流式数据湖Paimon(五)

    从Demo入手,了解Paimon/Flink项目搭建的全过程.记录下采坑之旅. 创建Flink项目 在IDEA中创建Flink项目,由于没有Flink的archetype,因此需要手动创建一下. 参考 ...

  5. 查看电脑、手机中已保存的wifi密码

    电脑: 以管理员身份运行CMD,执行 netsh wlan show profile netsh wlan export profile folder=C:\ key=clear 此时,用记事本打开对 ...

  6. @Conditional+@Configuration有没有搞头?

    日拱一卒,功不唐捐. 在了解 @Conditional 之前先花 10 秒钟复习一下 @Configuration 这个注解. @Configuration 是干什么? 是配合 @Bean 注解来配置 ...

  7. IO流小结图片

  8. bucket表:数仓存算分离中CU与DN解绑的关键

    摘要:Bucket存储是数据共享中重要的一环,当前阶段,bucket存储可以将列存中的CU数据和DN节点解绑. 本文分享自华为云社区<存算分离之bucket表--[玩转PB级数仓GaussDB( ...

  9. 云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: GaussDB( ...

  10. 10年经验总结,华为fellow教你如何成为一名优秀的架构师?

    摘要:华为云首席架构师分享成为架构师必备的一些特质和能力. 本文分享自华为云社区<10年经验总结,华为fellow教你如何成为一名优秀的架构师?>,作者: 技术火炬手 . 在<云享人 ...