BeeGFS

出自 ArchWiki

此文章或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 以供参考。

原因: 一些通用风格违规,章节标题未使用句首字母大写,内容重复(在 Talk:BeeGFS 中讨论)

BeeGFS 是一个可扩展的网络存储平台,专注于分布式、弹性、高度可配置,并具有良好的性能和高可靠性。BeeGFS 非常可配置,管理员几乎可以控制系统的所有方面。命令行界面用于监控和控制集群。

来自 维基百科

BeeGFS(原名 FhGFS)是一个并行文件系统,为高性能计算开发和优化。BeeGFS 包含一个分布式元数据架构,以实现可扩展性和灵活性。其最重要的方面是数据吞吐量。BeeGFS 最初由德国 弗劳恩霍夫高性能计算中心 的 Sven Breuner 团队开发,他后来成为 ThinkParQ 的 CEO,这是一家成立于 2014 年的衍生公司,旨在维护 BeeGFS 并提供专业服务。

来自 BeeGFS.io

BeeGFS 是领先的并行集群文件系统,专注于性能开发,并为非常简单的安装和管理而设计。如果 I/O 密集型工作负载是您的问题,BeeGFS 就是解决方案。

术语

提示: 完整的术语表可在 官方文档 中找到。
节点类型和描述 软件包
管理服务器(一个节点)
  • 管理配置和组成员关系
  • 主机名或 IP 地址必须在服务启动时被其他节点知晓
beegfs-mgmtdAUR
元数据服务器(至少一个节点)
  • 存储目录信息并在存储服务器上分配文件空间
beegfs-metaAUR
存储服务器(至少一个节点)
  • 存储原始文件内容
beegfs-storageAUR
基于 InfluxDB / Grafana 的监控服务器(可选)
  • 持续监控服务器
  • 实时统计
  • beegfs-admon(基于 Java 的管理和监控 GUI),不得安装在同一服务器上
beegfs-monAUR
管理员的 BeeGFS 实用程序
  • beegfs-ctl 命令行管理工具
  • beegfs-fsck 文件系统检查工具
  • 一些小型辅助脚本,例如日志记录和 DNS 查找功能
beegfs-utilsAUR
BeeGFS Common beegfs-commonAUR
客户端
  • 用于挂载文件系统的内核模块
  • 需要用户空间助手守护程序来进行日志记录和 主机名 解析
beegfs-clientAUR

除了此处描述的免费和开源软件包外,BeeGFS 还提供许多 企业功能和专业支持,其中包括

  • 高可用性
  • 配额强制执行
  • 访问控制列表 (ACL)
  • 存储池
  • 带有 BeeOND 的突发缓冲区功能
警告: 虽然 BeeGFS 服务器组件是用户空间守护程序,但客户端是原生内核模块。最新版本的 BeeGFS v7.1.3 支持高达 4.19.x 的内核。因此,beegfs-clientAUR PKGBUILD 中包含许多针对客户端源代码构建文件的临时补丁。这反过来可能会导致客户端内核模块不稳定。

安装

示例集群部署

以下硬件配置将在此示例中使用

主机名 IP 地址 描述
node01 192.168.0.1 管理服务器和监控(可选)服务器
node02 192.168.0.2 元数据服务器
node03 192.168.0.3 存储服务器
node04 192.168.0.4 客户端
提示: 可以自由选择为所有 BeeGFS 服务使用专用主机。BeeGFS 允许在同一台机器上运行任何服务组合(包括客户端和服务/元数据服务)。特别是管理和监控守护程序对性能要求不高,因此通常不在专用机器上运行。

NTP 客户端

安装 并在所有节点上运行时间同步客户端。有关详细信息,请参阅 时间同步

注意: 强烈建议同步所有集群节点上的时钟,以防止时钟漂移(有关详细信息,请参阅 系统时间#时间偏差),这可能会降低集群的性能或使其完全停止运行。官方文档 建议节点运行某种形式的时钟同步。

管理服务器

在管理节点 192.168.0.1 上使用软件包 beegfs-mgmtdAUR 安装 它。

管理服务需要知道它可以将其数据存储在哪里。它只会存储一些节点信息,例如连接数据,因此它不需要太多存储空间,并且其数据访问对性能要求不高。因此,此服务通常不在专用机器上运行。

/etc/beegfs/beegfs-mgmtd
storeMgmtdDirectory = /mnt/beegfs/beegfs-mgmtd

启动/启用 管理节点上的 beegfs-mgmtd@node01.service

监控服务器

在管理/监控节点 192.168.0.1安装 软件包 beegfs-monAUR,该软件包从系统收集统计信息,并使用时间序列数据库 InfluxDB 将其提供给用户。为了可视化数据,beegfs-mon 提供了预定义的 Grafana 面板,可以开箱即用。

在运行 beegfs-mon 之前,您需要编辑配置文件 /etc/beegfs/beegfs-mon.conf。如果所有内容都安装在同一主机上,您只需要指定管理主机

/etc/beegfs/beegfs-mon.conf
sysMgmtHost = localhost
提示: 如果您的 InfluxDB 安装在另一台主机上,例如 client,或者您需要使用不同的数据库端口或名称,您还需要修改相应的条目
/etc/beegfs/beegfs-mon.conf
dbHostName = node04
dbHostPort = 9096
dbHostName = beegfs_mon_client

启动/启用 管理/监控节点上的 beegfs-mon@node01.service

默认 Grafana 面板的配置

您可以对同一主机上的默认 InfluxDBGrafana 部署使用提供的安装脚本。

# cd /etc/beegfs/grafana
# ./import-dashboards default

访问 Grafana 面板

在本地主机上访问应用程序,例如:http://127.0.0.1:3000 。有关非默认安装和 自定义 Grafana 面板配置以及 所有监控指标的参考,请参阅。

注意: 同一台机器上的不同服务不能共享相同的存储目录,因此必须使用不同的目录,例如管理服务器使用 /mnt/beegfs/beegfs-mgmtd,监控服务器使用 /mnt/beegfs/beegfs-mon

元数据服务器

在元数据服务器(即 192.168.0.2)上 安装 软件包 beegfs-metaAUR

元数据服务需要知道它可以将其数据存储在哪里以及管理服务在哪里运行。通常,将在不同的机器上运行多个元数据服务。

/etc/beegfs/beegfs-meta.conf
sysMgmtdHost = node01
storeMetaDirectory = /mnt/beegfs/beegfs-meta

启动/启用 元数据节点上的 beegfs-meta@node02.service

存储服务器

在存储服务器(即 192.168.0.3)上 安装 软件包 beegfs-storageAUR

存储服务需要知道它可以将其数据存储在哪里以及如何连接到管理服务器。通常,每个存储服务将在不同的机器上运行多个存储服务和/或多个存储目标(例如,每个存储服务多个 RAID 卷)。

/etc/beegfs/beegfs-storage.conf
sysMgmtdHost = node01
storeStorageDirectory = /mnt/beegfs/beegfs-storage

启动/启用 存储节点上的 beegfs-storage@node03.service

客户端

在客户端节点上 安装 软件包 beegfs-clientAUR,它将构建客户端 内核模块

客户端服务需要知道它可以连接到哪个管理服务器。

/etc/beegfs/beegfs-client.conf
sysMgmtdHost = node01

客户端服务需要知道它可以将集群存储挂载在哪里,以及客户端配置文件的位置。

/etc/beegfs/beegfs-mount.conf
/mnt/beegfs/beegfs-mount /etc/beegfs/beegfs-client.conf

加载 内核模块及其依赖项。

# modprobe beegfs

启动/启用 客户端节点上的 beegfs-helperd@node04.service

启动/启用 客户端节点上的 beegfs-client.service

实用程序

安装 软件包 beegfs-utilsAUR

提示: 最好安装在管理服务器或客户端节点上,或两者都安装。就本示例而言,使用客户端节点。

检查连接性

使用以下命令从客户端节点检查检测到的网络接口和传输协议

# beegfs-ctl --listnodes --nodetype=mgmt --nicdetails 
  node01 [ID: 1]
    Ports: UDP: 8008; TCP: 8008
    Interfaces: 
    + enp0s31f6[ip addr: 192.168.0.1; type: TCP]
# beegfs-ctl --listnodes --nodetype=meta --nicdetails 
  node02 [ID: 2]
    Ports: UDP: 8005; TCP: 8005
    Interfaces: 
    + eno1[ip addr: 192.168.0.2; type: TCP]
# beegfs-ctl --listnodes --nodetype=storage --nicdetails 
  node03 [ID: 3]
    Ports: UDP: 8003; TCP: 8003
    Interfaces: 
    + eno1[ip addr: 192.168.0.3; type: TCP]
# beegfs-ctl --listnodes --nodetype=client --nicdetails 
  4E451-5DAEDCBF-node04 [ID: 4]
    Ports: UDP: 8004; TCP: 0
    Interfaces: 
    + wlo1[ip addr: 192.168.0.4; type: TCP]

服务器调优和高级功能

此文章或章节需要扩展。

原因: 空章节(在 Talk:BeeGFS 中讨论)

InfiniBand 支持

ACL

存储池

配额强制执行

高可用性

参见