上海网站制作设计公司青海建设厅职称网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:22
当前位置: 首页 > news >正文
上海网站制作设计公司,青海建设厅职称网站,网站模块介绍,nas做流媒体网站前言 存储可分为文件存储和对象存储#xff0c;常见的文件存储相关技术有#xff1a;nfs、lvm、raid#xff1b;常见的对象存储相关技术有#xff1a;gfs、ceph、fdfs、nas、oss、s3、switch。GlusterFS 归类为文件存储系统#xff0c;它提供了一种强大的方式来管理和存储…前言 存储可分为文件存储和对象存储常见的文件存储相关技术有nfs、lvm、raid常见的对象存储相关技术有gfs、ceph、fdfs、nas、oss、s3、switch。GlusterFS 归类为文件存储系统它提供了一种强大的方式来管理和存储海量数据提供构建高效、可靠的存储解决方案。本文将通过 GlusterFS 分布式文件系统的特点、工作原理以及实际应用展开介绍。 目录 一、GFS 介绍
概述
特点
GFS 专业术语 3.1 Brick存储块 3.2 Volume逻辑卷 3.3 FUSE本地文件系统 3.4 VFS虚拟接口 3.5 Glusterd后台管理进程
GFS 架构
工作原理流程
弹性 hash 算法
卷的类型 7.1 分布式卷 7.2 条带卷 7.3 复制卷 7.4 分布式条带卷 7.5 分布式复制卷 7.6 条带复制卷 7.7 分布式条带复制卷 二、本地源部署 GlusterFS
添加磁盘、分区并挂载 2. 安装、启动 GlusterFS 3. 添加节点到存储信任池中 4. 创建卷 4.1 创建分布式卷 4.2 创建条带卷 4.3 创建复制卷 4.4 创建分布式条带卷 4.5 创建分布式复制卷 4.6 查看当前所有卷的列表 5. 部署 Gluster 客户端 5.1 安装客户端软件 5.2 创建挂载目录 5.3 配置 /etc/hosts 文件 5.4 挂载 Gluster 文件系统
客户端测试 Gluster 文件系统 7. 查看文件分布 7.1 查看分布式文件分布 7.2 查看条带卷文件分布 7.3 查看复制卷分布 7.4 查看分布式条带卷分布 7.5 查看分布式复制卷分布 8. 破坏性测试 8.1 模拟 node2 节点故障
小结 三、网络源部署 GlusterFS 四、一般故障问题 一、GFS 介绍
概述 GlusterFS 是一个开源的分布式文件系统是一个扩展存储容器提高性能并且可以通过多个互联网络的存储节点进行数据冗余以确保数据的可用性和一致性。由存储服务器、客户端以及NFS/Samba 存储网关可选根据需要选择使用组成是无元数服务器是一种存储系统保存数据的地方通过分布式存储元数据信息提高了系统的可靠性、性能和扩展性适用于需要高度并行和可靠性的存储环境。
特点 ① 扩展性和高性能分布式的特性 ② 高可用冗余、有容灾能力相当于备份 ③ 全局统一命名空间单独的空间 ④ 弹性卷管理raid或lvm逻辑卷 ⑤ 基于标准协议支持一些协议如http、ftp、nfs等
GFS 专业术语 3.1 Brick存储块 每个 Brick 相当于单独的服务器是 GFS 中的基本存储单元、存储池中服务器上对外提供的存储目录。存储目录的格式由服务器和目录的绝对路径构成如192.168.190.100:/directory。客户端可以通过挂载该目录达到访问数据的目的。 3.2 Volume逻辑卷 一个逻辑卷是一组 Brick 的集合卷是数据存储的逻辑设备类似于 LVM 中的逻辑卷。 3.3 FUSE本地文件系统 通过 GFS 转换是一个内核模块允许用户创建自己的文件系统是一个伪文件系统。在 GFS 中FUSE 用于将 GFS 卷挂载到用户空间使其在用户空间可访问。 3.4 VFS虚拟接口 内核空间对用户空间提供的访问磁盘的接口。在 GFS 中VFS 提供了一个统一的接口使应用程序可以访问和操作 GlusterFS 文件系统。 3.5 Glusterd后台管理进程 Glusterd 是 GlusterFS 的管理守护进程负责管理 GlusterFS 集群的配置、卷的创建和维护等任务。Glusterd 通过与其他 GlusterFS 节点通信来确保集群的正常运行。
GFS 架构 模块化、堆栈式的架构通过对模块的组合实现复杂的功能 5. 工作原理流程 ① 客户端或应用程序通过 Glusterfs 的挂载点访问数据Linux 系统内核通过 VFS API虚拟接口收到请求并处理 ② VFS 将数据翻译传递给 FUSE内核文件系统伪文件系统FUSE 文件系统将数据通过内存缓冲区 /dev/fuse 传递给 GlusterFS 客户端。注意FUSE 无法直接传输需要通过设备文件进行传输 ③ 当数据存在内存中可以通过指针系统调用 poll 指向客户端地址 ④ GlusterFS 客户端收到数据后根据配置文件的配置对数据进行处理 ⑤ 然后通过网络协议如tcp传给远端 GlusterFS 服务端并且将数据写入到存储设备上 ⑥ GlusterFS 服务端同样通过 VFS API 将数据翻译成 EXT3 标准文件系统格式最后存储到相应的目录
弹性 hash 算法 弹性 HASH 算法是 Davies-Meyer 算法的具体实现通过 HASH 算法可以得到一个 32 位的整数范围的 hash 值。将逻辑卷划分成 N 个连续的空间例如一根绳子切割成 N 段每个空间对应一个 Brick存储块。当用户或应用程序访问某一个命名空间时根据对该命名空间计算 HASH 值所对应的 32 位整数空间定位数据所在的 Brick。 弹性 HASH 算法的优点 保证数据平均分布在每一个 Brick 中解决了对元数据服务器的依赖进而解决了单点故障以及访问瓶颈 例如将四个 Brick 节点的 GlusterFS 卷平均分配 2^32 的区间的范围空间 访问文件时通过计算该文件的 HASH 值从而对应到 Brick 存储空间 7. 卷的类型 7.1 分布式卷 文件通过 HASH 算法分布到所有 Brick Server 上这种卷是 GlusterFS 的默认卷。 没有对文件进行分块处理通过扩展文件属性保存HASH值支持的底层文件系统有EXT3、EXT4、ZFS、XFS等 特点 文件分布在不同的服务器不具备冗余性 更容易和廉价地扩展卷的大小单点故障会造成数据丢失依赖底层的数据保护 file1 和 file2 存放在 brick1而 file3 存放在 brick2文件根据 hash 算法散列存储。 并没有对文件进行分块处理文件直接存储在某个 Server 节点上其实只是扩大了磁盘空间如果有一块磁盘损坏数据也将不全而丢失。属于文件级的 RAID 0不具有容错能力。 创建一个名为dis-volume的分布式卷 文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中 gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3 7.2 条带卷 类似 RAID 0根据偏移量将文件分成N块N个条带节点轮询的存储在每个Brick Server节点文件存储以数据块为单位支持大文件存储 文件越大读取效率越高但是不具备冗余性。 特点 数据被分割成更小块分布到块服务器群中的不同条带区分布减少了负载且更小的文件加速了存取的速度没有数据冗余 如 file1、file2、file3 分别被分割为两段第一段放在 brick1第二段放在 brick2。 创建了一个名为stripe-volume的条带卷 文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中 gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2 7.3 复制卷 将文件同步到多个 Brick 上使其具备多个文件副本属于文件级 RAID 1具有容错能力。因为数据分散在多个 Brick 中所以读性能得到很大提升但写性能下降。复制卷具备冗余性即使一个节点损坏也不影响数据的正常使用。但因为要保存副本所以磁盘利用率较低。 特点 卷中所有的服务器均保存一个完整的副本卷的副本数量可由客户创建的时候决定但复制数必须等于卷中 Brick 所包含的存储服务器数至少由两个块服务器或更多服务器具备冗余性 file1、file2、file3同时存在 brick1 和 brick2相当于 brick2 中的文件是 brick1 中文件的副本。 创建名为rep-volume的复制卷 文件将同时存储两个副本分别在Server1:/dir1和Server2:/dir2两个Brick中 gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 7.4 分布式条带卷 Brick Server 数量是条带数数据块分布的 Brick 数量的倍数兼具分布式卷和条带卷的特点。主要用于大文件访问处理创建一个分布式条带卷最少需要 4 台服务器。 以条带两段为例file1、file2、file3 通过 hash 算法分布到 Brick Server 上。如 file1、file2 第一段存放在 brick1 中第二段存放在 brick2 中。同样 file3 第一段存放在 brick3 中第一段存放在 brick4 中。每段平均分片但是存储位置需要根据分布式算法分配存储。 创建一个名为dis-stripe的分布式条带卷: 配置分布式的条带卷时卷中Brick所包含的存储服务器数必须是条带数的倍数2倍。Brick 的数量是 4:Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4条带数为 2stripe 2 gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
创建卷时存储服务器的数量如果等于条带或复制数那么创建的是条带卷或者复制卷
如果存储服务器的数量是条带或复制数的 2 倍甚至更多那么将创建的是分布式条带卷或分布式复制卷
7.5 分布式复制卷 Brick Server 数量是镜像数数据副本数量的倍数兼具分布式卷和复制卷的特点。主要用于需要冗余的情况下。 以复制两个不同节点为例。file1、file2、file3 通过 hash 算法分布到 Brick Server 上。如在存放 file1、file2 时根据复制卷的特性将存在两个相同的副本分别是 Vomule0 中的 brick1 和 brick2。在存放 file3 时根据复制卷的特性也将存在两个相同的副本分别是 Vomule1 中的 brick3 和 brick4。 创建一个名为dis-rep的分布式复制卷 配置分布式的复制卷时卷中Brick所包含的存储服务器数必须是复制数的倍数2倍。Brick 的数量是 4Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4复制数为 2replica 2 gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4 7.6 条带复制卷 类似 RAID 10同时具有条带卷和复制卷的特点。 7.7 分布式条带复制卷 三种基本卷的复合卷通常用于类 Map Reduce 应用。 二、本地源部署 GlusterFS 环境准备关闭防火墙、核心防护 节点信息磁盘挂载点node1节点node1/192.168.190.101 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /data/sdb1 /data/sdc1 /data/sdd1 /data/sde1 node2节点node2/192.168.190.102node3节点node3/192.168.190.103node4节点node4/192.168.190.104客户端节点clinet/192.168.190.100
添加磁盘、分区并挂载 ① 每个 node 节点分别添加 4 块磁盘 ② 重新扫描已存在但尚未被识别的设备 [rootnode1 ~]# echo - - - /sys/class/scsi_host/host0/scan # 触发 host0 上的 SCSI 总线扫描 [rootnode1 ~]# echo - - - /sys/class/scsi_host/host1/scan # 触发 host1 上的 SCSI 总线扫描 [rootnode1 ~]# echo - - - /sys/class/scsi_host/host2/scan # 触发 host2 上的 SCSI 总线扫描
在运行时向系统通知有新的 SCSI 设备被添加或者用于重新扫描已存在但尚未被识别的设备
③ 编写脚本进行磁盘分区并挂载 [rootnode1 ~]# vim /opt/fdisk.sh #!/bin/bash NEWDEVls /dev/sd* | grep -o sd[b-z] | uniq
列出所有的 /dev/sd* 设备并使用 grep 过滤出字母为 b 到 z 的设备然后使用 uniq 命令去重将结果保存在 NEWDEV 变量中
for VAR in \(NEWDEV doecho -e n\np\n\n\n\nw\n | fdisk /dev/\)VAR /dev/null
使用 fdisk 命令对设备进行分区这里通过输入 n 创建新分区p 选择主分区多次回车确认默认选项最后输入 w 保存并退出mkfs.xfs /dev/${VAR}1 /dev/null
使用 mkfs.xfs 命令对新创建的分区进行 XFS 文件系统格式化mkdir -p /data/${VAR}1 /dev/null
创建挂载点 /data/\({VAR}1echo /dev/\){VAR}1 /data/${VAR}1 xfs defaults 0 0 /etc/fstab
将新分区信息追加到 /etc/fstab 文件中实现开机自动挂载
done [rootnode1 ~]# chmod x /opt/fdisk.sh [rootnode1 ~]# /opt/fdisk.sh [rootnode1 ~]# lsblk # 列出块设备的信息 sdb 8:16 0 1G 0 disk └─sdb1 8:17 0 1023M 0 part sdc 8:32 0 1G 0 disk └─sdc1 8:33 0 1023M 0 part sdd 8:48 0 1G 0 disk └─sdd1 8:49 0 1023M 0 part sde 8:64 0 1G 0 disk └─sde1 8:65 0 1023M 0 part [rootnode1 ~]# mount -a /dev/null # 挂载所有在 /etc/fstab 中定义的文件系统 [rootnode1 ~]# df -Th # 显示文件系统的磁盘使用情况 /dev/sdb1 xfs 1020M 33M 988M 4% /data/sdb1 /dev/sdc1 xfs 1020M 33M 988M 4% /data/sdc1 /dev/sdd1 xfs 1020M 33M 988M 4% /data/sdd1 /dev/sde1 xfs 1020M 33M 988M 4% /data/sde1④ 将脚本传输到其他三台 node 节点执行相同的操作 [rootnode1 ~]# echo 192.168.190.101 node1 /etc/hosts [rootnode1 ~]# echo 192.168.190.102 node2 /etc/hosts [rootnode1 ~]# echo 192.168.190.103 node3 /etc/hosts [rootnode1 ~]# echo 192.168.190.104 node4 /etc/hosts
分别给每台 node 节点添加域名解析加快传输速度[rootnode1 ~]# scp /opt/fdisk.sh node2:/opt/
[rootnode1 ~]# scp /opt/fdisk.sh node3:/opt/ [rootnode1 ~]# scp /opt/fdisk.sh node4:/opt/
分别执行 scan 命令、脚本 /opt/fdisk.sh并挂载 mount -a /dev/null
2. 安装、启动 GlusterFS ① 将 gfsrepo 软件上传到 /opt 目录下 并解压在所有 node 节点上操作 [rootnode1 opt]# ls fdisk.sh gfsrepo gfsrepo.zip [rootnode1 opt]# unzip gfsrepo.zip [rootnode1 opt]# scp gfsrepo.zip node2:/opt/ [rootnode1 opt]# scp gfsrepo.zip node3:/opt/ [rootnode1 opt]# scp gfsrepo.zip node4:/opt/ ② 配置本地 yum 源 [rootnode1 ~]# cd /etc/yum.repos.d/ [rootnode1 yum.repos.d]# mkdir repo.bak [rootnode1 yum.repos.d]# mv *.repo repo.bak [rootnode1 yum.repos.d]# tee glfs.repo eof # 多行重定向[glfs]nameglfsbaseurlfile:///opt/gfsrepogpgcheck0enabled1eof [rootnode1 yum.repos.d]# yum clean all # 清理所有仓库的缓存数据包括软件包和元数据 [rootnode1 yum.repos.d]# yum makecache # 重新生成所有已启用仓库的元数据 ③ 卸载旧版本 [rootnode1 yum.repos.d]# yum remove glusterfs-api.x86_64 glusterfs-cli.x86_64 glusterfs.x86_64 glusterfs-libs.x86_64 glusterfs-client-xlators.x86_64 glusterfs-fuse.x86_64 -y
移除 GlusterFS 相关的软件包
glusterfs-api.x86_64
包含 GlusterFS API 的库和头文件用于开发 GlusterFS 客户端和服务器的应用程序。
glusterfs-cli.x86_64
包含 GlusterFS 命令行管理工具。
glusterfs.x86_64: GlusterFS
分布式文件系统的主要软件包。
glusterfs-libs.x86_64
包含 GlusterFS 共享库。
glusterfs-client-xlators.x86_64
包含 GlusterFS 客户端翻译器。
glusterfs-fuse.x86_64
提供了 GlusterFS 的 FUSE 插件允许将 GlusterFS 挂载为本地文件系统。 ④ 安装 GlusterFS 及其相关组件
[rootnode1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs: GlusterFS
是一个开源、分布式的文件系统它可以将多台服务器上的存储资源汇聚起来提供统一的命名空间和数据复制
glusterfs-server
这是 GlusterFS 的服务器端软件包用于配置和管理 GlusterFS 存储卷。
glusterfs-fuse
该软件包提供了 GlusterFS 的 FUSEFilesystem in Userspace插件允许将 GlusterFS 挂载为本地文件系统。
glusterfs-rdma
这是 GlusterFS 的 RDMA 支持组件可用于提高网络性能。
⑤ 立刻启动并设置开机启动 [rootnode1 yum.repos.d]# systemctl start –now enable glusterd.service [rootnode1 yum.repos.d]# systemctl status glusterd.service ● glusterd.service - GlusterFS, a clustered file-system serverLoaded: loaded (/usr/lib/systemd/system/glusterd.service; disabled; vendor preset: disabled)Active: active (running) since 二 2024-04-09 15:19:18 CST; 12s ago其他节点均重复以上操作。 3. 添加节点到存储信任池中 将节点添加到 GlusterFS 存储信任池中是为了确保数据的一致性和可靠性。在 GlusterFS 中存储池是由多个存储节点组成的集合。这里只需在 node1 节点上操作即可。 [rootnode1 ~]# gluster peer probe node2
尝试与 node2 建立连接如果成功node2 将会被添加为 GlusterFS 可信存储池中的一个对等节点
在 GlusterFS 中添加一个对等节点允许各个节点相互通信共享存储资源并参与数据的复制和分发
[rootnode1 ~]# gluster peer probe node3 [rootnode1 ~]# gluster peer probe node4在每个 node 节点上查看群集状态 [rootnode1 ~]# gluster peer status Number of Peers: 3Hostname: node2 Uuid: 6a9c4a75-d4b0-4479-8f80-4d92282b299a State: Accepted peer request (Connected)Hostname: node3 Uuid: 137314e7-543d-41f8-8336-bada63538a25 State: Accepted peer request (Connected)Hostname: node4 Uuid: 0d2962cb-906c-46f0-b3e7-993c376cbbaf State: Accepted peer request (Connected)
当前节点 node1 的对等节点状态它有三个对等节点分别是 node2、node3 和 node4。每个对等节点都有一个唯一的 UUID 用于标识
4. 创建卷 根据规划创建如下卷 卷名称卷类型Brickfenbushi分布式卷node1(/data/sdb1)、node2(/data/sdb1)tiaodai条带卷node1(/data/sdc1)、node2(/data/sdc1)fuzhi复制卷node3(/data/sdb1)、node4(/data/sdb1)fbs-td分布式条带卷node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)fbs-fz分布式复制卷node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1) 4.1 创建分布式卷 创建分布式卷没有指定类型默认创建的是分布式卷。 [rootnode1 ~]# gluster volume create fenbushi node1:/data/sdb1 node2:/data/sdb1 force
在 GlusterFS 中创建一个名为 fenbushi 的卷并将其设置为包含两个节点node1 和 node2上的 /data/sdb1 路径force 会强制创建卷查看卷列表
[rootnode1 ~]# gluster volume list fenbushi启动新建分布式卷 [rootnode1 ~]# gluster volume start fenbushi查看创建分布式卷信息 [rootnode1 ~]# gluster volume info fenbushiVolume Name: fenbushi Type: Distribute Volume ID: 324b8a6f-985e-4add-8e16-cc880d6ff53d Status: Started Snapshot Count: 0 Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: node1:/data/sdb1 Brick2: node2:/data/sdb1 Options Reconfigured: transport.address-family: inet nfs.disable: on
创建了一个名为 fenbushi 的分布式 GlusterFS 卷
该卷包含两个节点node1 和 node2上的 /data/sdb1 路径并且当前状态为 Started。使用 TCP 作为传输类型
4.2 创建条带卷 指定类型为 stripe数值为 2且后面跟了 2 个 Brick Server所以创建的是条带卷。 [rootnode1 ~]# gluster volume create tiaodai stripe 2 node1:/data/sdc1 node2:/data/sdc1 force[rootnode1 ~]# gluster volume start tiaodai[rootnode1 ~]# gluster volume info tiaodaiVolume Name: tiaodai Type: Stripe Volume ID: 83325709-8fc5-423b-9614-0b231bb8348c Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 2 # 表示 volume 由两个存储单元 brick 组成 Transport-type: tcp Bricks: Brick1: node1:/data/sdc1 Brick2: node2:/data/sdc1 Options Reconfigured: transport.address-family: inet nfs.disable: on
创建了一个名为 tiaodai 的条带化StripeGlusterFS卷
该卷包含两个节点node1 和 node2上的 /data/sdc1 路径并且当前状态为 Started。它使用 TCP 作为传输类型
4.3 创建复制卷 指定类型为 replica数值为 2且后面跟了 2 个 Brick Server所以创建的是复制卷。 [rootnode1 ~]# gluster volume create fuzhi replica 2 node3:/data/sdb1 node4:/data/sdb1 force[rootnode1 ~]# gluster volume start fuzhi[rootnode1 ~]# gluster volume info fuzhiVolume Name: fuzhi Type: Replicate Volume ID: 3bac2a29-5f10-498f-9bd7-4cc196f7cdb6 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 2 # 表示该复制卷由两个存储单元 brick 组成 Transport-type: tcp Bricks: Brick1: node3:/data/sdb1 Brick2: node4:/data/sdb1 Options Reconfigured: transport.address-family: inet nfs.disable: on
创建了一个名为 fuzhi 的复制ReplicateGlusterFS卷
该卷包含两个节点node3 和 node4上的 /data/sdb1 路径并且当前状态为 Started。它使用 TCP 作为传输类型
4.4 创建分布式条带卷 指定类型为 stripe数值为 2而且后面跟了 4 个 Brick Server是 2 的两倍所以创建的是分布式条带卷。 [rootnode1 ~]# gluster volume create fbs-td stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
stripe 2 意味着数据将会被分割成两份并分布到四个节点的 /data/sdd1 目录上
[rootnode1 ~]# gluster volume start fbs-td[rootnode1 ~]# gluster volume info fbs-tdVolume Name: fbs-td Type: Distributed-Stripe Volume ID: d9eda1ca-a48c-4bfe-9ef8-55d0c409cd8f Status: Started Snapshot Count: 0 Number of Bricks: 2 x 2 4 # 表示会被分割成条带并且交替的存储在四个 brick 中 Transport-type: tcp Bricks: Brick1: node1:/data/sdd1 Brick2: node2:/data/sdd1 Brick3: node3:/data/sdd1 Brick4: node4:/data/sdd1 Options Reconfigured: transport.address-family: inet nfs.disable: on
创建了一个名为 fbs-td 的分布式条带化Distributed-StripeGlusterFS卷
该卷包含四个节点node1、node2、node3 和 node4上的 /data/sdd1 路径并且当前状态为 Started。它使用 TCP 作为传输类型
4.5 创建分布式复制卷 指定类型为 replica数值为 2而且后面跟了 4 个 Brick Server是 2 的两倍所以创建的是分布式复制卷。 [rootnode1 ~]# gluster volume create fbs-fz replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
replica 2 表示每个数据块都会被复制到两个不同的节点上
[rootnode1 ~]# gluster volume start fbs-fz[rootnode1 ~]# gluster volume info fbs-fzVolume Name: fbs-fz Type: Distributed-Replicate Volume ID: 7829df2c-8644-467f-a59a-f1e19ce24b05 Status: Started Snapshot Count: 0 Number of Bricks: 2 x 2 4 # 表示每个数据块都会复制到两个存储单元中有两个这样的组合 Transport-type: tcp Bricks: Brick1: node1:/data/sde1 Brick2: node2:/data/sde1 Brick3: node3:/data/sde1 Brick4: node4:/data/sde1 Options Reconfigured: transport.address-family: inet nfs.disable: on
创建了一个名为 fbs-fz 的分布式复制Distributed-ReplicateGlusterFS卷
该卷包含四个节点node1、node2、node3 和 node4上的 /data/sde1 路径并且当前状态为 Started。它使用 TCP 作为传输类型
4.6 查看当前所有卷的列表 [rootnode1 ~]# gluster volume list fbs-fz fbs-td fenbushi fuzhi tiaodai5. 部署 Gluster 客户端 5.1 安装客户端软件 ① 将 gfsrepo 软件上传到 /opt 目下并解压 [rootclient opt]# ls gfsrepo.zip rh [rootclient opt]# unzip gfsrepo.zip ② 配置本地 yum 源 [rootclient opt]# cd /etc/yum.repos.d/ [rootclient yum.repos.d]# mkdir repo.bak [rootclient yum.repos.d]# mv *.repo repo.bak [rootclient yum.repos.d]# tee glfs.repo eof[glfs]nameglfsbaseurlfile:///opt/gfsrepogpgcheck0enabled1eof [rootclient yum.repos.d]# yum clean all yum makecache ③ 安装 GlusterFS 及其 FUSE 用户空间工具 [rootclient yum.repos.d]# yum install -y glusterfs glusterfs-fuse 5.2 创建挂载目录 [rootclient ~]# mkdir -p /test/{fenbushi,tiaodai,fuzhi,fbs-td,fbs-fz} [rootclient ~]# ls /test/ fbs-fz fbs-td fenbushi fuzhi tiaodai5.3 配置 /etc/hosts 文件 [rootclient ~]# echo 192.168.190.101 node1 /etc/hosts [rootclient ~]# echo 192.168.190.102 node2 /etc/hosts [rootclient ~]# echo 192.168.190.103 node3 /etc/hosts [rootclient ~]# echo 192.168.190.104 node4 /etc/hosts 5.4 挂载 Gluster 文件系统 在 GlusterFS 中当挂载一个分布式卷时只需要在其中一个节点上进行挂载。这是因 GlusterFS 是一个分布式文件系统数据会自动在各个节点之间复制和分布。因此一旦在任何一个节点上挂载了该卷就能够访问整个 GlusterFS 文件系统的数据无论数据实际存储在哪个节点上。 临时挂载 [rootclient ~]# mount.glusterfs node1:fenbushi /test/fenbushi/ [rootclient ~]# mount.glusterfs node1:tiaodai /test/tiaodai/ [rootclient ~]# mount.glusterfs node1:fuzhi /test/fuzhi/ [rootclient ~]# mount.glusterfs node1:fbs-td /test/fbs-td/ [rootclient ~]# mount.glusterfs node1:fbs-fz /test/fbs-fz/ [rootclient ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 node1:fenbushi fuse.glusterfs 2.0G 65M 2.0G 4% /test/fenbushi node1:tiaodai fuse.glusterfs 2.0G 65M 2.0G 4% /test/tiaodai node1:fuzhi fuse.glusterfs 1020M 33M 988M 4% /test/fuzhi node1:fbs-td fuse.glusterfs 4.0G 130M 3.9G 4% /test/fbs-td node1:fbs-fz fuse.glusterfs 2.0G 65M 2.0G 4% /test/fbs-fz#永久挂载 vim /etc/fstab node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0 node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0 node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0 node1:dis-stripe /test/dis_stripe glusterfs defaults,_netdev 0 0 node1:dis-rep /test/dis_rep glusterfs defaults,_netdev 0 0
当在 /etc/fstab 中指定 _netdev 时它告诉系统这是一个网络文件系统并且应该在网络连接可用时进行挂载。这样可以确保系统在启动时不会因为尝试挂载网络文件系统而出现延迟。
mount -a
客户端测试 Gluster 文件系统 [rootclient ~]# cd /opt 生成文件 [rootclient opt]# dd if/dev/zero of/opt/demo1.log bs1M count4 [rootclient opt]# dd if/dev/zero of/opt/demo2.log bs1M count4 [rootclient opt]# dd if/dev/zero of/opt/demo3.log bs1M count4 [rootclient opt]# dd if/dev/zero of/opt/demo4.log bs1M count4 [rootclient opt]# dd if/dev/zero of/opt/demo5.log bs1M count4
使用 dd 工具从 /dev/zero 设备创建了一个名为 demo1.log 的文件文件大小为 4MB
bs1M 指定每次读写的块大小为 1MBcount4 指定要复制的块数[rootclient opt]# ll -h /opt
-rw-r–r–. 1 root root 4.0M 4月 9 17:13 demo1.log -rw-r–r–. 1 root root 4.0M 4月 9 17:13 demo2.log -rw-r–r–. 1 root root 4.0M 4月 9 17:13 demo3.log -rw-r–r–. 1 root root 4.0M 4月 9 17:13 demo4.log -rw-r–r–. 1 root root 4.0M 4月 9 17:13 demo5.log复制文件至挂载点 [rootclient opt]# cp /opt/demo* /test/fenbushi/ [rootclient opt]# cp /opt/demo* /test/tiaodai/ [rootclient opt]# cp /opt/demo* /test/fuzhi/ [rootclient opt]# cp /opt/demo* /test/fbs-td/ [rootclient opt]# cp /opt/demo* /test/fbs-fz/7. 查看文件分布 7.1 查看分布式文件分布 [rootnode1 ~]# ll -h /data/sdb1 总用量 16M -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo4.log [rootnode2 ~]# ll -h /data/sdb1 总用量 4.0M -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo5.log
数据没有被分片根据 hash 存放
7.2 查看条带卷文件分布 [rootnode1 ~]# ll -h /data/sdc1 总用量 10M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo4.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo5.log
数据被分片 50% 没副本 没冗余
[rootnode2 ~]# ll -h /data/sdc1 总用量 10M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo4.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo5.log
数据被分片 50% 没副本 没冗余
7.3 查看复制卷分布 [rootnode3 ~]# ll -h /data/sdb1 总用量 20M -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo4.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo5.log
数据没有被分片 有副本 有冗余
[rootnode4 ~]# ll -h /data/sdb1 总用量 20M -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo4.log -rw-r–r–. 2 root root 4.0M 4月 9 17:24 demo5.log
数据没有被分片 有副本 有冗余
7.4 查看分布式条带卷分布 [rootnode1 ~]# ll -h /data/sdd1 总用量 8.0M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo4.log [rootnode2 ~]# ll -h /data/sdd1 总用量 8.0M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo1.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo2.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo3.log -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo4.log [rootnode3 ~]# ll -h /data/sdd1 总用量 2.0M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo5.log [rootnode4 ~]# ll -h /data/sdd1 总用量 2.0M -rw-r–r–. 2 root root 2.0M 4月 9 17:24 demo5.log
数据被分片 50% 没副本 没冗余根据 hash 存放
7.5 查看分布式复制卷分布 [rootnode1 ~]# ll -h /data/sde1 总用量 16M -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo1.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo2.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo3.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo4.log [rootnode2 ~]# ll -h /data/sde1 总用量 16M -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo1.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo2.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo3.log -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo4.log [rootnode3 ~]# ll -h /data/sde1 总用量 4.0M -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo5.log [rootnode4 ~]# ll -h /data/sde1 总用量 4.0M -rw-r–r–. 2 root root 4.0M 4月 9 17:25 demo5.log
数据没有被分片 有副本 有冗余根据 hash 存放
8. 破坏性测试 8.1 模拟 node2 节点故障 挂起 node2 节点来模拟故障在客户端上查看文件是否正常 注意即使关闭了 GlusterFS 服务器上的 glusterd 服务客户端仍然可以访问文件这是因为 GlusterFS 是一个分布式文件系统。一旦文件被存储在 GlusterFS 卷中它们就会被复制到多个节点上。因此即使其中一个节点上的服务停止运行其他节点上的服务仍然可以提供文件访问和读取功能。 ① 分布式卷数据查看 [rootclient ~]# ll /test/fenbushi/ 总用量 16384 -rw-r–r–. 1 root root 4194304 4月 9 17:24 demo1.log -rw-r–r–. 1 root root 4194304 4月 9 17:24 demo2.log -rw-r–r–. 1 root root 4194304 4月 9 17:24 demo3.log -rw-r–r–. 1 root root 4194304 4月 9 17:24 demo4.log
少了demo5.log文件这个是在 node2 上的
② 条带卷数据查看 [rootclient ~]# ll /test/tiaodai/ 总用量 0
无法访问条带卷不具备冗余性
③ 分布式复制卷数据查看 [rootclient ~]# ll /test/fbs-fz/ 总用量 20480 -rw-r–r–. 1 root root 4194304 4月 9 17:25 demo1.log -rw-r–r–. 1 root root 4194304 4月 9 17:25 demo2.log -rw-r–r–. 1 root root 4194304 4月 9 17:25 demo3.log -rw-r–r–. 1 root root 4194304 4月 9 17:25 demo4.log -rw-r–r–. 1 root root 4194304 4月 9 17:25 demo5.log
可以访问分布式复制卷具备冗余性
④ 分布式条带卷数据查看 [rootclient ~]# ll /test/fbs-td/ 总用量 4096 -rw-r–r–. 1 root root 4194304 4月 9 17:24 demo5.log
无法访问分布条带卷不具备冗余性
挂起 node2 和 node4 节点在客户端上查看文件是否正常 ① 复制卷数据查看 [rootclient ~]# ll -h /test/fuzhi/ 总用量 20M -rw-r–r–. 1 root root 4.0M 4月 9 17:24 demo1.log -rw-r–r–. 1 root root 4.0M 4月 9 17:24 demo2.log -rw-r–r–. 1 root root 4.0M 4月 9 17:24 demo3.log -rw-r–r–. 1 root root 4.0M 4月 9 17:24 demo4.log -rw-r–r–. 1 root root 4.0M 4月 9 17:24 demo5.log
在客户机上测试正常 数据有
② 分布式条带卷数据查看 [rootclient ~]# ll -h /test/fbs-td/ 总用量 0
在客户机上测试没有数据
③ 分布式复制卷 [rootclient ~]# ll -h /test/fbs-fz/ 总用量 20M -rw-r–r–. 1 root root 4.0M 4月 9 17:25 demo1.log -rw-r–r–. 1 root root 4.0M 4月 9 17:25 demo2.log -rw-r–r–. 1 root root 4.0M 4月 9 17:25 demo3.log -rw-r–r–. 1 root root 4.0M 4月 9 17:25 demo4.log -rw-r–r–. 1 root root 4.0M 4月 9 17:25 demo5.log
在客户机上测试正常 有数据
小结 综上凡是带复制数据相比而言数据比较安全。 其他的维护命令 gluster volume list # 查看GlusterFS卷 gluster volume info # 查看所有卷的信息 gluster volume status # 查看所有卷的状态 gluster volume stop dis-stripe # 停止一个卷 gluster volume delete dis-stripe # 删除一个卷注意删除卷时需要先停止卷且信任池中不能有主机处于宕机状态否则删除不成功设置卷的访问控制 gluster volume set dis-rep auth.deny 192.168.190.100 #仅拒绝 gluster volume set dis-rep auth.allow 192.168.190.* #仅允许设置192.168.190.0网段的所有IP地址都能访问dis-rep卷分布式复制卷 三、网络源部署 GlusterFS GlusterFS 9.6 版本相对于之前的版本存在些许差异 6.0版本后已取消条带卷分布式条带卷也被取消不需要分区 网络源部署除了安装步骤与本地源存在区别其他步骤大致一致 在node01、node02、node03、node04分别安装gfs server端用yum安装即可 安装官网源yum -y install centos-release-gluster 安装服务yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma 如果有报错可能是低版本不能兼容高版本 yum -y remove glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma 四、一般故障问题 主机映射 时间不同步 内网ntp 外网ntpdate 防火墙/增强功能 /etc/hosts 没有同时配置
- 上一篇: 上海网站制作哪家好seo导航
- 下一篇: 上海网站制作怎么选福州有网站建设的公司排名
相关文章
-
上海网站制作哪家好seo导航
上海网站制作哪家好seo导航
- 技术栈
- 2026年03月21日
-
上海网站制作的win7做网站服务器卡
上海网站制作的win7做网站服务器卡
- 技术栈
- 2026年03月21日
-
上海网站制作比较好的公司上海猎头公司招聘信息
上海网站制作比较好的公司上海猎头公司招聘信息
- 技术栈
- 2026年03月21日
-
上海网站制作怎么选福州有网站建设的公司排名
上海网站制作怎么选福州有网站建设的公司排名
- 技术栈
- 2026年03月21日
-
上海行业网站建设网站制作怎么学
上海行业网站建设网站制作怎么学
- 技术栈
- 2026年03月21日
-
上海翼成信息科技有限公司做的什么网站网站服务器放置地查询
上海翼成信息科技有限公司做的什么网站网站服务器放置地查询
- 技术栈
- 2026年03月21日



