BASELINE — lustre_ins 稳定层¶
承载不随每次交接受化的内容:环境事实、机制性陷阱、命令速查、文档地图。 2026-10-06 由
docs/HANDOFF.md拆分而来——HANDOFF 只描述「现在」(状态 / 待办 / 红线), 本文件描述「长期成立」。修改方式:定点修订,只改受影响行。 红线(不可逆操作 / 不可删数据)仍留在 HANDOFF 第 4 节,此处不重复。
1. 环境事实¶
| 项 | 值 |
|---|---|
| 版本 / 设备 | Lustre 2.17.0(el9.7 仓库段);MDT/OST 均 /dev/vdb(virtio 整盘)【已确认】 |
| 拓扑 | MGS+MDT combined 192.168.31.21;OSS .22;客户端 .21(管理/验证)+ .18/.19/.20(2026-09-24)+ .25~.28(2026-09-29 新增)【已确认】;HA 未启用 |
| 客户端环境 | .18~.20、.25~.28:Rocky 9.8、内核 5.14.0-611.13.1_lustre.el9、网卡 ens2、NID <ip>@tcp、挂 /mnt/lustre【已确认】 |
| 端口 / 服务 / 挂载点 | 988/tcp;服务 lnet(/etc/lnet.conf 须 tcp-only YAML;含 net type: lo 会让 import 失败、重启即瘫痪);/mnt/{mdt0,ost0,lustre} |
| 客户端 fstab 口径 | 192.168.31.21@tcp:/edafs /mnt/lustre lustre defaults,noatime,nofail 0 0(与 slurm_ins storage_layout.tier0_mount_options 对齐,2026-10-07 起);同机兼服务端的 .21 额外带 x-systemd.requires-mounts-for=/mnt/mdt0;必须带 nofail;挂载/恢复一律用 systemctl start mnt-lustre.mount(手工 mount -t lustre 会因 nofail 报 rc=-22)【已确认 2026-10-07】 |
| 调优持久化 | /etc/systemd/system/lustre-tune.service(oneshot,已 enabled);服务端 mdt.*=32、客户端 mdc.*=31【已确认】 |
| 容量与条带 | 单 MDT 11.1 G / 单 OST 294.4 G(各 1 个);/mnt/lustre/scratch 默认 stripe_count=1, stripe_size=4M——无第二个 OST 可条带,EDA 常见 -c 3 现架构下无法实现;MDS/OSS 均无 HA(enable-ha 为 stub)【已确认 2026-10-07】 |
| 用户身份源 | 客户端用户来自 SSSD + LDAP(域 rainchen,ldap://192.168.31.10:389,dc=rainchen,dc=com,schema=rfc2307,ldap_id_mapping=false);UID 示例 rain01=2001、组 design=2000。服务端原未接入,2026-10-06 起在 .21/.22 补本地同名同 UID/GID 条目【已确认】 |
| 远程备份落点 | /var/backups/lustre-ins/<原路径>.bak.<时间戳> |
| 工程根 / 入口 | /home/rain/Documents/lustre_ins;入口 main.py(子命令以 --help 为准) |
| 版本管理 | 已入 Git【已确认】,分支 main,远程 git@github.com:raincheny/lustre_ins.git;不入库 config/deploy.yaml、logs/、reports/*.md、skill-*/、.trae/、backup/ 内备份 |
| 实现体 / 配置 | deployer.py + modules/*.py + utils/*.py;配置真源 config/deploy.yaml(样例 .example),直接改远程文件会被覆盖 |
| 共享库 / 日志 | /home/rain/py_public_modules(.pth 挂载);日志 logs/lustre_deploy.log |
| 凭据 | 仅 root 免密 SSH(密钥在操作机 ~/.ssh/);Lustre 无独立口令,靠 UID/GID 与 POSIX ACL |
2. 常用命令¶
.venv/bin/python3 main.py precheck ... # 变更类子命令执行前自动跑配置校验 + precheck
.venv/bin/python3 main.py <子命令> --dry-run # 变更先预演;dry-run 下 BLOCK 降级为告警
.venv/bin/python3 main.py inspect # 巡检,报告落 reports/inspect-*.md
systemctl restart lustre-tune.service # 重放调优(oneshot+RemainAfterExit,须 restart)
lctl ping <NID> # 验 LNet 连通,不通记 WARN
3. 门禁阈值¶
非 root → BLOCK;SELinux Enforcing → WARN;系统盘可用 < precheck.min_disk_free_gb(10 G)→ BLOCK;
LNet 不通 → WARN。阈值与 skip_checks 在 config/deploy.yaml 的 precheck 段。
4. 文档地图¶
| 文档 / 目录 | 管什么 |
|---|---|
docs/SOP.md |
变更实施手册(八章,累积):首次部署与全部增量扩展(5.1~5.9 步骤) |
docs/RUNBOOK.md |
值班运行手册(11 章):速查、日常操作、配置、备份恢复、监控、故障处置 |
docs/troubleshoot.md |
排障手册:12 个场景,各按「症状 → 诊断 → 处置 → 验证」 |
reports/ |
inspect-*.md 巡检、precheck-*.md 预检查报告 |
backup/README.md |
备份台账(文件 / 原路径 / 时间 / 回滚对象 / 可删时点) |
fix-lustre-write-perm/ |
服务端身份解析(LDAP/UID)修复档案:SOP.md、backup/README.md |
add-clients-25-28/、add-clients-18-20/ |
近期两轮客户端扩展档案:SOP.md、backup/README.md |
probe_batch_20261008/ |
只读探测批量化档案:SOP.md、selftest.py、compare_onhost.sh、onhost/(原始对照数据)、backup/README.md |
tuning-fix-and-rollout-plan/、precheck-hardening/、py-skill-hardening/、git-init/ |
历史变更档案:SOP.md / batch-rollout-plan.md / backup/README.md |
5. 架构边界与不做清单(学习环境)¶
本环境为学习环境,以下架构性限制有意不实施,不再列为待办(2026-10-09 由 HANDOFF 移入)。 相关环境事实另见 §1「拓扑」「容量与条带」。
| 边界 | 现状 | 为何不做 |
|---|---|---|
| 服务端 HA | enable-ha 为 stub(仅装 pacemaker/corosync 并初始化集群,cib XML 需人工写);MDS/OSS 均无 HA |
学习环境单机即可,双机 HA 无收益 |
| 条带 | 单 MDT 11.1 G + 单 OST 294.4 G,无第二个 OST 可条带,EDA 常见 -c 3 无法实现 |
需增物理 OST,学习环境不扩硬件 |
| 数据面变更分批 | deployer.py:_run_steps 未按主机分批;mkfs 不可逆 |
学习环境单机变更,分批无必要 |
| 变更计划模型 | 无 plan.yaml,模块不覆盖 sync_status(),backup() 只能全量 |
同上 |
| 漂移检测入口 | 漂移比对内嵌 inspect,无独立只读子命令与三态退出码 |
学习环境用 inspect 足够 |
来源:
/home/rain/Documents/lustre_ins/docs/BASELINE.md| 最后更新:2026-10-09 03:09(由build/sync.py同步,请勿在站点侧修改)