实战指南: 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 02. 配置互信与 Hosts 确保 /etc/hosts 包含所有节点解析,并配置 root 免密登录。
bash
# 分发公钥
ssh-copy-id gpfs01; ssh-copy-id gpfs02; ssh-copy-id gpfs03; ssh-copy-id gpfs043. 优化系统参数
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-snmp2. 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 reset2. 安装 OFED 驱动
bash
./mlnxofedinstall --force
/etc/init.d/openibd restart
ibstat # 确保状态为 LinkUp3. Spectrum Scale 软件安装
使用 Ansible Toolkit 进行自动化部署。
1. 初始化集群
bash
cd /usr/lpp/mmfs/5.1.5.1/ansible-toolkit
# 设置主安装节点
./spectrumscale setup -s 10.252.0.21 -st ece2. 添加节点
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 gpfs043. 执行安装
bash
./spectrumscale install --skip no-ece-check
./spectrumscale deploy --skip no-ece-check4. ECE 存储核心配置
这是最关键的步骤,定义磁盘如何被切分和保护。
4.1 指定 RDMA 网络
bash
# 强制使用 IB 端口进行通信
mmchconfig verbsPorts="mlx5_0" -N ece_cluster
mmshutdown -a && mmstartup -a4.2 磁盘映射 (Drive Mapping)
ECE 需要精确知道物理槽位。
bash
# 自动扫描 NVMe
ecedrivemapping --mode nvme
# 或者手动指定 HDD Slot
ecedrivemapping --mode lmr --slot-range 0-234.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-format4.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 -a5. 客户端挂载与测试
5.1 客户端安装
客户端不需要 ECE License,只需要 Client License。
bash
# 安装包
dpkg -i gpfs.base*.deb gpfs.gpl*.deb gpfs.msg.en*.deb ...
# 编译内核模块
mmbuildgpl5.2 加入集群
在管理节点执行:
bash
mmaddnode -N client01
mmchlicense client --accept -N client015.3 性能测试 (IOR)
bash
# 顺序写测试 (16GB 文件,4MB 块大小)
mpirun -np 16 --hostfile hosts ior -w -t 4m -b 16g -F -o /gpfs01/test6. 常用维护命令
- 查看健康状态:
mmgetstate -a - 查看物理盘状态:
mmvdisk pdisk list --recovery-group rg_1 - 查看 NSD 分布:
mmlsnsd -M
