Debian 12 部署 Slurm 集群:高可用、GPU 与多租户实战

当团队需要把分散的计算资源统一管理,无论是要管科研课题组的 GPU 服务器、跑生物信息的批量分析,还是给 AI 训练集群做算力调度,Slurm 都是常见选择。它在资源分配、公平调度和记账审计上已经过大规模验证。

Slurm 的文档很多,但从零搭一套生产可用的集群,还是要自己在官方手册、邮件列表和各种博客之间拼。这篇把单节点验证到多节点部署的过程串起来,重点补官方文档里讲得少的运维部分:cgroup v2 资源隔离的实际行为、slurmctld 主备切换怎么测试、节点健康检查脚本、多租户 QoS,以及学校场景里的 Lmod 和 LDAP/SSSD。

本文在以下环境做过实际验证:

  • 操作系统:Debian 12 (Bookworm),内核 6.1.x,cgroup v2(unified hierarchy)
  • Slurm 版本:Debian 官方仓库 22.05.8-4+deb12u3,安装命令见下文
  • 2026-11 实测规模:2 台 controller(primary/backup)+ 2 台计算节点,NFS 共享 StateSaveLocation,多节点调度、cgroup、记账、QoS、主备切换、Lmod、LDAP/SSSD 登录、CephFS 共享目录、pam_slurm_adopt 都实际跑过,结果见文末“实测环境与结果”
  • 文中 4 计算节点/32 节点属于扩展内容;GPU/GRES 用 PVE Intel GVT-g 实测,Slurm-web、Open OnDemand(Authentik OIDC)、Teleport(本地用户 + MFA)和 Prometheus/Grafana 告警链也都实际跑过。CephFS 一节用示例名 slurmfs,实际部署时把它换成你的文件系统名,cephx cap 也要跟着改

如使用 SchedMD 官方源安装 23.02+ 或 24.05+ 版本,部分参数名称可能有差异;25.05 起 select/cons_res 插件已移除,要改用 select/cons_tres。请对照对应版本的官方文档。

文章按部署、使用、多租户、运维、实测的顺序展开,篇幅较长;只看结果的读者可以直接跳到文末“实测环境与结果”。

在 Debian 12 上部署 SPDK:编译、验证与 NVMe-oF 实测

这篇记录了我在 Debian 12 上从源码编译 SPDK v24.09、把它跑起来、再用 fio 压一遍的过程。内容从 I/O 路径和 Reactor 模型讲起,然后是部署、验证、监控和上线前的注意事项。

malloc bdev、NBD、NVMe-oF/TCP 这几条路径都实际跑过,4.5 节有测试环境和原始数字。NVMe 直连需要把盘绑到 VFIO,我的测试环境没有可直通的盘,这部分只给步骤;生产调优和监控接入也按“建议”标注,上生产前要在自己的环境验证。

Gentoo Binpkg 二进制包完全指南

Gentoo 一直以来以"从源码编译"著称,但这并不意味着所有包都必须从源码编译。从 2023 年底开始,Gentoo 官方正式提供了 Binary Package Host(Binhost)服务,用户可以直接使用预编译的二进制包来加速安装和更新。

最近给 homelab 同步了一下 Gentoo 的镜像站,其中包含了 Gentoo 的 binpkg,这篇文章记录一下如何使用 binpkg 来加速安装、如何自己创建 binpkg,以及如何搭建私有的 Binhost 服务器。

Volatoo:Gentoo 上的不可变根和 generation 更新

Volatoo 是我(bushi,其实是 AI)今年在写的一个发行版,名字来自 volatile 和 Gentoo。它基于 Gentoo,系统按 generation 组织。仓库在 github.com/Volatoo/Volatoo,现在的 v0.1-dev 预览版能启动 OpenRC 和 systemd 两个目标。

Volatoo 是一个不可变系统:根文件系统来自只读的 SquashFS 镜像,运行时的写操作进 tmpfs,重启就丢掉。

启动时 SquashFS 当 OverlayFS 的 lower,tmpfs 当 upper,叠成 /。你看到的是一个能正常读写的 Gentoo,写到 /usr 的改动只活在内存里。重启时 upper 丢掉,系统回到镜像。

需要留下的路径(/home、/etc、/var/log 等)在启动时从持久分区接回来;持久分区是可选的。

generation 是这套东西的版本。更新就是生成一份新的只读镜像和它的挂载记录,等对象和 manifest 都写完,再原子地把 current 指过去;回滚就是把 previous 指回来。

这篇主要讲它的启动流程、持久化和更新,最后列一下现在还没做好的地方。

怎么让 Claude 账号不容易被 ban:固定出口 IP、隔离登录环境

这篇文章记录我怎么尽量让 Claude 账号不容易被 ban。

Claude 的风控会看登录和请求从哪来。如果同一个账号今天从 A 国登录,明天从 B 国请求;或者 IP 今天在家里,明天在酒店,后天又换成某个代理,就容易触发风控,严重的会被 ban。账号注册在别的国家/地区、人却在另一个地方用,或者经常换网络,都会碰到这个问题。

我的做法是:把 Claude 的登录和模型请求都交给同一台 qube,出口固定走 Mullvad 的 WireGuard。 Claude 看到的地址始终是这一个,不跟着你本机的网络变。写代码、跑命令还在你自己的电脑上,那边怎么换网络都不会影响 Claude。

先说清楚边界
这只能降低因为登录环境变化被风控、被 ban 的概率,不能保证一定不封。它主要管 IP 和登录环境这一块;支付、KYC、使用行为是另外几条线。账号本身的支付、行为、内容违规,该封还是会封。账号已经被停掉的话,换地址也救不回来。