stackhpc.beegfs
stackhpc.beegfs
这个 Ansible 角色可以用于创建和销毁 BeegFS 集群。简单来说,BeegFS 是一种并行文件系统,可以将用户数据分散存储在多个服务器上。它在性能和容量方面都具有可扩展性。想了解更多关于 BeeFS 的信息,请访问 这里。
该角色最后测试使用的 Ansible 版本为 2.5.0。
示例
假设我们有如下的清单文件(inventory-beegfs
):
[leader]
bgfs1 ansible_host=172.16.1.1 ansible_user=centos
[follower]
bgfs2 ansible_host=172.16.1.2 ansible_user=centos
[cluster:children]
leader
follower
[cluster_beegfs_mgmt:children]
leader
[cluster_beegfs_mds:children]
leader
[cluster_beegfs_oss:children]
leader
follower
[cluster_beegfs_client:children]
leader
follower
以及相应的剧本(beegfs.yml
):
---
- hosts:
- cluster_beegfs_mgmt
- cluster_beegfs_mds
- cluster_beegfs_oss
- cluster_beegfs_client
roles:
- role: stackhpc.beegfs
beegfs_enable:
admon: false
mgmt: "{{ inventory_hostname in groups['cluster_beegfs_mgmt'] }}"
meta: "{{ inventory_hostname in groups['cluster_beegfs_mds'] }}"
oss: "{{ inventory_hostname in groups['cluster_beegfs_oss'] }}"
tuning: "{{ inventory_hostname in groups['cluster_beegfs_oss'] }}"
client: "{{ inventory_hostname in groups['cluster_beegfs_client'] }}"
beegfs_oss:
- dev: "/dev/sdb"
port: 8003
- dev: "/dev/sdc"
port: 8103
- dev: "/dev/sdd"
port: 8203
beegfs_mgmt_host: "{{ groups['cluster_beegfs_mgmt'] | first }}"
beegfs_client:
- path: "/mnt/beegfs"
port: 8004
beegfs_fstype: "xfs"
beegfs_force_format: false
beegfs_interfaces: ["ib0"]
beegfs_rdma: true
beegfs_state: present
...
创建集群的命令:
# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=present
销毁集群的命令:
# ansible-playbook beegfs.yml -i inventory-beegfs -e beegfs_state=absent
注意事项
启用各种 BeegFS 服务只需将 beegfs_enable
下的开关设置为 true
或 false
:
mgmt
:管理服务器 - 至少需要一个主机mds
:元数据存储服务器节点oss
:对象存储服务器节点client
:BeeGFS 存储集群的客户端admon
:未实现
该角色依赖于每个节点的主机名解析到用于访问管理主机的 IP 地址,如 beegfs_host_mgmt
所配置。在这种情况下,bgfs1
和 bgfs2
必须分别解析为 172.16.1.1
和 172.16.1.2
。这可以通过 DNS 或 /etc/hosts
实现。
重要的是要注意,当配置集群时,如果指定的块设备已有文件系统,或者磁盘不为空,则需要强制格式化磁盘。可以通过将 beegfs_force_format
设置为 true
来实现。这样会删除磁盘上的所有内容。如果您在意磁盘内容,请确保事先做好备份。
支持分区,但必须通过其他方式先创建。此外,您还需要重载变量 beegfs_oss_tunable
,并提供一个父块设备的列表,因为分区不在 /sys/block/
下。例如,使用一个名为 parted
的 Ansible 模块创建分区(在 Ansible 版本 2.5 及以上可以使用),可以运行以下剧本:
---
- hosts:
- cluster_beegfs_oss
vars:
partitions:
- dev: /dev/sdb
start: 0%
end: 50%
number: 1
- dev: /dev/sdb
start: 50%
end: 100%
number: 2
tasks:
- name: 创建分区
parted:
label: gpt
state: present
part_type: primary
device: "{{ item.dev }}"
part_start: "{{ item.start }}"
part_end: "{{ item.end }}"
number: "{{ item.number }}"
with_items: "{{ partitions }}"
become: true
...
测试
在 molecule 文件夹 中提供了一些测试。要在本地运行它们,您需要:
安装所有依赖项后,您可以从角色的根文件夹运行测试:
$> molecule lint
$> molecule test
$> molecule test -s vagrant-ubuntu-16.04
$> molecule test -s vagrant-ubuntu-18.04
- 默认的 Molecule 场景将在 Centos 7.5 机器上测试该角色。
- 所有测试将在一台机器上部署所有服务。
- 测试 yaml lint 和 ansible lint。
- 检查幂等性。
- 执行完成后,将运行一些 testinfra 测试。所有场景使用位于 molecule/tests 中的相同测试。
关于项目
This role provisions an exisiting cluster to support Beegfs management, metadata, object storage server and client roles.
安装
ansible-galaxy install stackhpc.beegfs
许可证
Unknown
下载
1.1k
拥有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.