Skip to content

实战指南: IBM Spectrum Scale (GPFS) ECE 集群部署

摘要: 本文档基于生产环境实施记录整理,详细介绍了如何在 x86 服务器上通过 Erasure Code Edition (ECE) 构建高可靠、高性能的并行文件系统。

1. 架构规划与环境准备

ECE (Erasure Code Edition) 允许在通用服务器上利用分布式纠删码技术实现数据保护,无需昂贵的专有存储阵列。

1.1 硬件配置示例

  • 存储节点: 4台 高性能服务器 (每节点配置 NVMe SSD 用于数据层,HDD 用于容量层或纯 NVMe 配置)。
  • 网络: InfiniBand (IB) HDR/NDR 用于数据平面,千兆以太网用于管理平面。
  • OS: CentOS 8.x / RHEL 8.x

1.2 基础环境初始化 (所有节点)

1. 关闭防火墙与 SELinux

bash
systemctl stop firewalld && systemctl disable firewalld
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/sysconfig/selinux
setenforce 0

2. 配置互信与 Hosts 确保 /etc/hosts 包含所有节点解析,并配置 root 免密登录。

bash
# 分发公钥
ssh-copy-id gpfs01; ssh-copy-id gpfs02; ssh-copy-id gpfs03; ssh-copy-id gpfs04

3. 优化系统参数

bash
echo "ulimit -n 65536" >> /etc/profile
# 必须安装的依赖包
yum -y install gcc-c++ kernel-devel cpp binutils compat-libstdc++-33
yum -y install python3 python3-distro ansible nvme-cli sg3_utils net-snmp

2. InfiniBand 网络配置

高性能存储的核心在于低延迟网络。

1. 升级固件 (MFT 工具)

bash
# 启动 MFT 服务
mst start
# 烧录固件
flint -d /dev/mst/mt4123_pciconf0 -i fw-ConnectX6-rel.bin burn
# 重置设备
mlxfwreset --device /dev/mst/mt4123_pciconf0 reset

2. 安装 OFED 驱动

bash
./mlnxofedinstall --force
/etc/init.d/openibd restart
ibstat # 确保状态为 LinkUp

3. Spectrum Scale 软件安装

使用 Ansible Toolkit 进行自动化部署。

1. 初始化集群

bash
cd /usr/lpp/mmfs/5.1.5.1/ansible-toolkit
# 设置主安装节点
./spectrumscale setup -s 10.252.0.21 -st ece

2. 添加节点

bash
# 添加4个存储节点 (Quorum + Manager)
./spectrumscale node add -a -q -m -so gpfs01
./spectrumscale node add -a -q -m -so gpfs02
./spectrumscale node add -a -q -m -so gpfs03
./spectrumscale node add -a -q -m -so gpfs04

3. 执行安装

bash
./spectrumscale install --skip no-ece-check
./spectrumscale deploy --skip no-ece-check

4. ECE 存储核心配置

这是最关键的步骤,定义磁盘如何被切分和保护。

4.1 指定 RDMA 网络

bash
# 强制使用 IB 端口进行通信
mmchconfig verbsPorts="mlx5_0" -N ece_cluster
mmshutdown -a && mmstartup -a

4.2 磁盘映射 (Drive Mapping)

ECE 需要精确知道物理槽位。

bash
# 自动扫描 NVMe
ecedrivemapping --mode nvme
# 或者手动指定 HDD Slot
ecedrivemapping --mode lmr --slot-range 0-23

4.3 创建恢复组 (Recovery Group)

bash
# 创建节点类
mmvdisk nodeclass create --node-class nc_1 -N gpfs01,gpfs02,gpfs03,gpfs04
# 配置服务器
mmvdisk server configure --node-class nc_1 --recycle-one
# 创建 RG
mmvdisk recoverygroup create --recovery-group rg_1 --node-class nc_1 --complete-log-format

4.4 定义 VDisk Set (虚拟磁盘集)

本例使用 4+2P (4数据+2校验) 的纠删码策略。

bash
# 1. 元数据层 (3副本)
mmvdisk vdiskset define --vdisk-set vs-meta   --recovery-group rg_1 --code 3Way --block-size 1m   --nsd-usage metadataonly --storage-pool system --set-size 2%

# 2. 数据层 (4+2P)
mmvdisk vdiskset define --vdisk-set vs-data   --recovery-group rg_1 --code 4+2p --block-size 8m   --nsd-usage dataonly --storage-pool data-pool --set-size 90%

# 3. 创建
mmvdisk vdiskset create --vdisk-set vs-meta
mmvdisk vdiskset create --vdisk-set vs-data

[Image of Erasure Code 4+2p data striping]

4.5 创建文件系统

bash
mmvdisk filesystem create --file-system gpfs01 --vdisk-set vs-meta
mmvdisk filesystem add --file-system gpfs01 --vdisk-set vs-data
mmchfs gpfs01 -T /gpfs01
mmmount gpfs01 -a

5. 客户端挂载与测试

5.1 客户端安装

客户端不需要 ECE License,只需要 Client License。

bash
# 安装包
dpkg -i gpfs.base*.deb gpfs.gpl*.deb gpfs.msg.en*.deb ...
# 编译内核模块
mmbuildgpl

5.2 加入集群

管理节点执行:

bash
mmaddnode -N client01
mmchlicense client --accept -N client01

5.3 性能测试 (IOR)

bash
# 顺序写测试 (16GB 文件,4MB 块大小)
mpirun -np 16 --hostfile hosts ior -w -t 4m -b 16g -F -o /gpfs01/test

6. 常用维护命令

  • 查看健康状态: mmgetstate -a
  • 查看物理盘状态: mmvdisk pdisk list --recovery-group rg_1
  • 查看 NSD 分布: mmlsnsd -M

AI-HPC Organization