acch.spectrum_scale
重要:不幸的是,这个项目不再由其原始创建者积极维护。代码已合并到“官方”的 IBM/ibm-spectrum-scale-install-infra 项目——未来的所有开发将在这里进行。虽然这个(原始)项目可能不再接收更新或支持,但代码库仍然对任何有兴趣继续开发的人开放和可用。
IBM Spectrum Scale(GPFS)Ansible 角色
高度可定制的 Ansible 角色,用于安装和配置 IBM Spectrum Scale(GPFS)
功能
- 在 Linux 节点上安装 Spectrum Scale 软件包
- 可选择通过比较校验和验证软件包完整性
- 如果守护进程已停止,则执行(离线)升级
- 编译或安装预编译的 Linux 内核扩展
- 配置 SSH 公钥认证
- 创建新集群或扩展现有集群
- 配置网络共享磁盘(NSDs)
- 创建新文件系统或扩展现有文件系统
- 配置节点类
- 根据节点类定义配置参数
可用的安装方法:
- 从(现有的)YUM 仓库安装
- 从远程安装包安装(在 Ansible 管理节点上可访问)
- 从本地安装包安装(在 Ansible 控制机器上可访问)
未来计划:
- 安装 CES 软件包
- 安装 GUI 和 zimon 软件包
安装
$ ansible-galaxy install acch.spectrum_scale
要求
因为没有公共仓库可用,您需要从 IBM 网站下载 Spectrum Scale(GPFS)软件包。访问 https://www.ibm.com/support/fixcentral 并搜索“IBM Spectrum Scale(软件定义存储)”。
IBM Spectrum Scale 开发者版
如果您没有订阅,现在可以下载 IBM Spectrum Scale 开发者版:
- 提供 IBM Spectrum Scale 数据管理版的所有功能,但限制每个集群 12 TB。
- IBM 对 Spectrum Scale 开发者版没有支持。此外,禁止在生产环境中使用。
- 开发者版可通过 https://www.ibm.com/us-en/marketplace/scale-out-file-and-object-storage 访问。
本地仓库
要在 Web 服务器上创建本地 Spectrum Scale 仓库:
cd /your/webserver/folder
# 下载安装包。获取直接链接或手动复制...
wget <Spectrum Scale 安装包>
sh ./Spectrum_Scale_Data_Management-5.0.X.X-x86_64-Linux-install --dir ./SpectrumScaleRpms/5.0.X.X/ --silent
cd SpectrumScaleRpms/5.0.X.X/
yum -y install createrepo
createrepo .
角色变量
默认变量定义在 defaults/main.yml
中。您还可以在该文件中找到详细文档。在您的清单中定义自己的主机变量以覆盖默认值。
定义变量 scale_version
是强制性的。此外,您需要通过定义以下变量中的 一个 来配置安装方法:
scale_install_repository_url
scale_install_remotepkg_path
(在 Ansible 管理节点上可访问)scale_install_localpkg_path
(在 Ansible 控制机器上可访问)
集群成员
播放中的所有主机将被配置为同一集群中的节点。如果您想向现有集群添加主机,请至少添加一个来自该现有集群的节点到播放中。
您可以通过运行多个播放来创建多个集群。
示例剧本
在一个节点上安装 Spectrum Scale 的最简单剧本:
---
- hosts: scale01.example.com
vars:
- scale_version: 4.2.3.4
- scale_install_localpkg_path: /path/to/Spectrum_Scale_Standard-4.2.3.4-x86_64-Linux-install
roles:
- acch.spectrum_scale
这将安装所有必需的软件包,并创建一个单节点的 Spectrum Scale 集群。
实际上,您可能希望在多个节点上安装 Spectrum Scale,并考虑节点角色以实现高可用性。集群将根据当前播放中的所有主机配置:
# hosts:
[cluster01]
scale01 scale_cluster_quorum=true scale_cluster_manager=true
scale02 scale_cluster_quorum=true scale_cluster_manager=true
scale03 scale_cluster_quorum=true scale_cluster_manager=false
scale04 scale_cluster_quorum=false scale_cluster_manager=false
scale05 scale_cluster_quorum=false scale_cluster_manager=false
# playbook.yml:
---
- hosts: cluster01
vars:
- scale_version: 4.2.3.4
- scale_install_repository_url: http://infraserv/gpfs_rpms/
- scale_cluster_clustername: cluster01.example.com
roles:
- acch.spectrum_scale
有关可能的变量和配置选项的详细解释,请参见 defaults/main.yml
。
定义节点角色如 scale_cluster_quorum
和 scale_cluster_manager
是可选的。如果您未指定任何法定节点,则清单中的前七个主机将自动分配法定角色。
上述示例将安装所需的软件包并创建一个功能完整的 Spectrum Scale 集群,可以用于例如挂载现有的远程文件系统。要在新集群中创建本地文件系统,您需要提供额外的信息。建议为此使用 host_vars
清单文件:
# host_vars/scale01:
---
scale_storage:
- filesystem: gpfs01
blockSize: 4M
defaultMetadataReplicas: 2
defaultDataReplicas: 2
numNodes: 16
automaticMountOption: true
defaultMountPoint: /mnt/gpfs01
disks:
- device: /dev/sdb
nsd: nsd_1
servers: scale01
failureGroup: 10
usage: metadataOnly
pool: system
- device: /dev/sdc
nsd: nsd_2
servers: scale01
failureGroup: 10
usage: dataOnly
pool: data
# host_vars/scale02:
---
scale_storage:
- filesystem: gpfs01
disks:
- device: /dev/sdb
nsd: nsd_3
servers: scale02
failureGroup: 20
usage: metadataOnly
pool: system
- device: /dev/sdc
nsd: nsd_4
servers: scale02
failureGroup: 20
usage: dataOnly
pool: data
有关上述存储参数的描述,请参见 man mmchfs
和 man mmchnsd
。
filesystem
名称是强制性的,并且每个文件系统的 disks
的 device
变量也是强制性的。所有其他文件系统和磁盘参数都是可选的。因此,最小的文件系统配置将如下所示:
# host_vars/scale01:
---
scale_storage:
- filesystem: gpfs01
disks:
- device: /dev/sdb
- device: /dev/sdc
# host_vars/scale02:
---
scale_storage:
- filesystem: gpfs01
disks:
- device: /dev/sdb
- device: /dev/sdc
请注意,文件系统参数可以作为 任何 主机的变量定义——您定义文件系统参数的主机并不重要。对于磁盘参数,只有在省略 servers
变量时,主机才是相关的。当省略 servers
变量时,您定义磁盘的主机将自动被视为该特定磁盘的(唯一)NSD 服务器。
重要:
scale_storage
必须 通过host_vars
清单文件为单独主机定义。不要通过group_vars
清单文件或在剧本中的内联vars:
定义磁盘参数。这样将会将它们应用于该组/播放中的所有主机,从而多次定义相同的磁盘...
此外,Spectrum Scale 节点类可以通过定义 scale_nodeclass
变量在每个节点基础上定义:
# host_vars/scale01:
---
scale_nodeclass:
- classA
- classB
# host_vars/scale02:
---
scale_nodeclass:
- classA
- classC
这些节点类可以选择性地用于定义 Spectrum Scale 配置参数。建议为此使用 group_vars
清单文件:
# group_vars/all:
---
scale_config:
- nodeclass: classA
params:
- pagepool: 16G
- autoload: no
- ignorePrefetchLUNCount: yes
有关可用配置参数的列表,请参见 man mmchconfig
。
请注意,配置参数可以作为 任何 主机的变量定义——您定义配置参数的主机并不重要。
限制
目前,这个角色可以用于创建新集群或扩展现有集群。同样,可以创建或扩展新文件系统。但是,此角色将 不 删除现有节点、磁盘、文件系统或节点类——故意的!这也是为什么它不能用于例如更改磁盘的文件系统池。更改池需要先从文件系统中删除磁盘,然后再重新添加,这目前不在此角色的范围内。
此外,在线升级目前不在此角色的范围内。Spectrum Scale 支持滚动在线升级(每次下线一个节点),但这需要仔细规划和监控,并可能在遇到意外问题时需要手动干预。
故障排除
该角色在播放中的第一个主机的 /var/tmp
中存储配置文件。这些配置文件用于确定自上次运行以来定义是否已更改,并决定是否有必要重复运行某些 Spectrum Scale 命令。当出现问题时,可以简单地删除 /var/tmp
中的这些配置文件以清除缓存——这将迫使在下一次运行时重新应用所有定义。缺点是,下一次运行可能比预期的时间更长,因为它可能会重新运行不必要的 Spectrum Scale 命令。这样做将自动重新生成缓存。
请使用 问题追踪器 提出问题、报告错误和请求功能。
版权和许可
版权 2017 Achim Christ,按照 MIT 许可证 发布