前言
在前面的文章中,我们介绍了 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
$ vim /etc/systemd/system/elasticsearch-for-lsf.service
- 修改环境变量
找到 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
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 集群的得力助手。
相关资源
感谢您的阅读!