前言

在前面的文章中,我们介绍了 LSF Suite 强大的报表和可视化功能(LSF Explorer)。这些精美的图表背后,依赖的是 Elasticsearch (ES) 强大的数据索引能力。

然而,随着集群运行时间的推移,ES 中存储的数据量会不断增长。如果管理员不加以干预,文件系统最终会耗尽空间,这不仅会导致无法写入新数据,更严重的是会导致索引损坏 (Corrupted Indexes)

作为本系列的终篇,我们将分享如何优雅地管理 Elasticsearch 数据,包括自动清理陈旧数据和在磁盘爆满前迁移数据。

一、防患于未然:自动清理陈旧数据

最简单的维护策略是”断舍离”——只保留最近一段时间的数据。LSF Suite 预置了相关脚本,但需要管理员手动配置生效。

1. 配置保留策略

配置文件位于:

1
/opt/ibm/lsfsuite/ext/explorer/server/config/indexpurge.conf

编辑此文件,设置希望保留数据的天数:

1
2
3
4
# 保留最近 30 天的报表数据
JOB_INDEX_RETENTION_DAYS=30
HOST_INDEX_RETENTION_DAYS=30
QUEUE_INDEX_RETENTION_DAYS=30
参数 说明 建议值
JOB_INDEX_RETENTION_DAYS 作业数据保留天数 30-90 天
HOST_INDEX_RETENTION_DAYS 主机数据保留天数 30-90 天
QUEUE_INDEX_RETENTION_DAYS 队列数据保留天数 30-90 天

2. 启用自动清理

LSF Suite 提供了一个清理脚本:

1
/opt/ibm/lsfsuite/ext/explorer/server/config/drop_es_indices.cron

建议将此脚本加入到系统的 Cron Job 中,设置为每天运行一次:

1
2
3
4
5
# 编辑 crontab
$ crontab -e

# 添加每日凌晨 2 点执行清理
0 2 * * * /opt/ibm/lsfsuite/ext/explorer/server/config/drop_es_indices.cron

这样,系统就会根据配置文件自动删除过期的索引,确保存储空间始终处于健康状态。

3. 手动清理

如果需要立即释放空间,可以手动执行清理脚本:

1
$ /opt/ibm/lsfsuite/ext/explorer/server/config/drop_es_indices.cron

或者通过 Elasticsearch API 直接删除特定索引:

1
2
3
4
5
# 列出所有索引
$ curl -X GET "localhost:9200/_cat/indices?v"

# 删除指定日期的索引
$ curl -X DELETE "localhost:9200/lsf-jobs-2025.01.*"

二、亡羊补牢:数据迁移与扩容

如果业务需求要求保留长期数据,或者当初规划的磁盘空间太小,您就需要进行数据迁移或扩容。

注意:Elasticsearch 对磁盘性能非常敏感,条件允许的情况下,请务必迁移到 SSD 或高性能磁盘上。

场景 A:修改数据存储路径(推荐用于新安装)

如果您希望将数据存储在非默认的目录中,可以通过修改 systemd 服务配置来实现。

步骤

  1. 编辑服务文件
1
$ vim /etc/systemd/system/elasticsearch-for-lsf.service
  1. 修改环境变量

找到 DATA_DIR 这一行,修改为目标路径:

1
2
3
4
5
# 默认路径
Environment=DATA_DIR=/opt/ibm/elastic/elasticsearch/data

# 修改为新路径
Environment=DATA_DIR=/data/elasticsearch

警告:如果您有多个 GUI Host,请不要让它们使用同一个共享目录作为 DATA_DIR,每个节点应使用独立的存储。

  1. 重启服务
1
2
$ systemctl daemon-reload
$ systemctl restart elasticsearch-for-lsf.service

场景 B:挂载大磁盘(推荐用于已有数据)

如果生产环境已经运行了一段时间,积累了大量数据,建议采用”挂载新磁盘到原路径”的方式。

操作流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌─────────────────────────────────────────────────────────────┐
│              Elasticsearch 数据迁移流程                      │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. 准备新磁盘并挂载到临时目录                               │
│                     ↓                                        │
│  2. 停止 Elasticsearch 服务                                  │
│                     ↓                                        │
│  3. 复制数据到新磁盘                                         │
│                     ↓                                        │
│  4. 备份旧数据目录                                           │
│                     ↓                                        │
│  5. 将新磁盘挂载到原数据路径                                 │
│                     ↓                                        │
│  6. 恢复服务                                                 │
│                                                              │
└─────────────────────────────────────────────────────────────┘

详细步骤

1. 准备新磁盘

1
2
3
# 假设新磁盘设备为 /dev/sdb
$ mkdir /root/tmpmnt
$ mount /dev/sdb /root/tmpmnt

2. 停止服务

为了数据安全,必须停止 ES 及相关依赖服务:

1
2
$ systemctl stop elasticsearch-for-lsf.service
$ systemctl stop logstash-for-lsf.service  # 可选

3. 数据迁移

将现有数据完整复制到新磁盘:

1
$ cp -r /opt/ibm/elastic/elasticsearch/data/* /root/tmpmnt/

4. 备份与清理

重命名旧的数据目录作为备份:

1
2
$ mv /opt/ibm/elastic/elasticsearch/data /opt/ibm/elastic/elasticsearch/data.OLD
$ mkdir /opt/ibm/elastic/elasticsearch/data

5. 正式挂载

卸载临时挂载点,配置持久化挂载:

1
2
3
4
5
6
7
8
# 卸载临时挂载
$ umount /root/tmpmnt

# 添加到 /etc/fstab 确保开机自动挂载
$ echo "/dev/sdb /opt/ibm/elastic/elasticsearch/data ext4 defaults 0 0" >> /etc/fstab

# 正式挂载
$ mount /opt/ibm/elastic/elasticsearch/data

6. 恢复服务

1
2
$ systemctl start elasticsearch-for-lsf.service
$ systemctl start logstash-for-lsf.service  # 如果之前停止了

注意:此操作需要在所有 GUI Host 上尽快完成。

维护检查清单

检查项 频率 命令/操作
磁盘空间监控 每日 df -h /opt/ibm/elastic/elasticsearch/data
索引数量检查 每周 curl localhost:9200/_cat/indices?v | wc -l
过期数据清理 每日(自动) Cron Job
ES 健康状态 每日 curl localhost:9200/_cluster/health?pretty
备份验证 每月 检查备份完整性

ES 健康状态检查

1
2
3
4
5
6
7
8
9
10
11
12
13
$ curl -X GET "localhost:9200/_cluster/health?pretty"
{
  "cluster_name" : "lsf-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 50,
  "active_shards" : 50,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}
状态 含义 操作
green ✅ 健康 无需操作
yellow ⚠️ 副本不足 检查节点状态
red ❌ 数据丢失风险 立即排查

系列结语

至此,“IBM Spectrum LSF Suite 最佳实践指南” 系列博客圆满结束。

在过去的七篇文章中,我们从架构全景出发,经历了高可用部署的实战,完成了细致的健康检查与硬核的性能跑分,体验了 AI 与 HPC 应用的丝滑集成,探索了 Kubernetes 的融合边界,最后落实到了数据的长效维护。

系列文章回顾

篇目 主题 要点
第 1 篇 架构全景与核心功能 GPU 调度、容器支持、混合云
第 2 篇 高可用数据库与网络规划 MariaDB Galera、多网络配置
第 3 篇 健康检查清单 服务状态、GPU 检测、容器验证
第 4 篇 HPC 性能调优 HPL、OSU、STREAM 基准测试
第 5 篇 应用集成实战 TensorFlow、OpenFOAM、ParaView
第 6 篇 LSF 与 Kubernetes 融合 统一调度、并行作业
第 7 篇 数据维护与 ES 管理 自动清理、数据迁移

IBM Spectrum LSF Suite 不仅仅是一个调度器,它是一套现代化的计算管理平台。希望这套指南能成为您构建高效、稳定、易用的 HPC/AI 集群的得力助手。

相关资源

感谢您的阅读!

参考资料

  1. IBM Spectrum LSF Suite - Installation Best Practices Guide (Redbooks)
  2. Elasticsearch Documentation - Index Lifecycle Management
  3. IBM Spectrum LSF Documentation - Explorer administration