HPC
DCV 应用教程
DCV | Nice DCV 安装手册
DCV | RLM 提取 HOSTID
EF Portal and DCV HA Solution
Enginframe 应用教程
Enginframe | 技术参数说明
毅硕HPC教程
毅硕HPC | HPC环境下的LDAP配置
毅硕HPC | Rocky Linux 9 SLURM软件编译安装
毅硕HPC | RHEL 8 上的NVIDIA驱动安装
毅硕HPC | 配置SLURM作业队列优先级
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
毅硕HPC | 在HPC集群上优雅地使用 Conda
毅硕HPC | 一文详解HPC环境中的MPI并行计算
毅硕HPC | NVIDIA DGX Spark 万字硬核评测:将AI超级工厂带上桌面
毅硕HPC | Lustre文件系统在HPC集群中的部署实战
毅硕HPC | InfiniBand网络在HPC集群中的核心应用
毅硕HPC | OpenPBS构建高效稳定的HPC作业调度环境
毅硕HPC | HPC集群LSF调度系统部署指南
毅硕HPC | 轻量高效的XFCE桌面环境
毅硕HPC | Ubuntu 24 SLURM 编译安装
-
+
首页
毅硕HPC | Ubuntu 24 SLURM 编译安装
随着 Ubuntu 24.04 LTS 的发布,许多工程师在享受新内核带来的性能红利时,也面临着依赖库更新、GCC 版本变动以及系统级服务管理的兼容性挑战。 对于追求极致性能和功能定制的工程师来说,包管理器提供的版本往往过于陈旧。本文将带你从零开始,在 Ubuntu 24.04 环境下深度编译 Slurm。我们不只是在敲命令,而是在构建一个稳定、可扩展且符合 2026 年技术标准的科研底座。无论你是初入 HPC 的新手,还是寻找 Ubuntu 环境适配方案的高级工程师,这篇指南都将是你案头必备的“避坑手册”。 *** # 一、环境准备 在高性能计算领域,CentOS 的隐退使得 Ubuntu 24.04 LTS 成为了许多超算中心和 AI 算力集群的新宠。 * 现代内核支持: Ubuntu 24.04 搭载的 Linux 6.8+ 内核对最新的硬件(如英伟达 H/B 系列 GPU、英特尔至强处理器)有更好的原生支持。 * GCC 13/14 编译器: 默认自带的高版本编译器能够更好地优化 Slurm 源码,提升调度守护进程的执行效率。 * 全栈 Cgroup v2: Ubuntu 24.04 彻底告别了 Cgroup v1。这意味着在配置 Slurm 的资源限制(内存、CPU 隔离)时,我们必须采用全新的思路。 ## 1. 网络与主机名解析 Slurm 对主机名极其敏感。必须确保所有节点能够通过主机名互访。 * 编辑 `/etc/hosts`: 确保所有节点都包含全集群的 IP 映射,避免依赖外部 DNS 导致的抖动。 * 配置静态 IP (Netplan): Ubuntu 24.04 使用 Netplan。请确保渲染器为 networkd,并关闭 DHCP,防止租约变化导致调度中断。 ## 2. 关键系统服务设置 时钟同步 (Chrony): Slurm 内部通信有严格的时间戳校验。 ``` sudo apt install chrony -y # 管理节点作为时间源 sudo nano /etc/chrony/chrony.conf # 添加/修改以下行 # 外部时间源 pool ntp.aliyun.com iburst pool time.apple.com iburst # 允许计算节点所在网段访问(假设网段为 192.168.1.0/24) allow 192.168.1.0/24 # 即使失去外部同步,也以本地硬件时钟为准提供时间服务 local stratum 10 # 重启服务 sudo systemctl restart chrony chronyc sources -v # 计算节点同步管理节点 sudo nano /etc/chrony/chrony.conf # 删除默认 server/pool 行,只指向管理节点 server 192.168.1.100 iburst # 此处填管理节点 IP sudo systemctl restart chrony ``` * 关闭 Swap (可选但推荐): 为了保证计算性能的确定性,通常在计算节点禁用 swap。 ``` sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab ``` * 无密码 SSH: 为了后期实施(如使用 Ansible 批量分发配置),建立管理节点到计算节点的 SSH 信任是必经之路。 ## 3. 用户环境和初始化 Slurm 需要统一的用户 ID (UID) 和组 ID (GID) 全集群同步。 * 创建 Slurm 用户: ``` # 确保全集群 UID/GID 一致(例如:1100) sudo groupadd -g 1100 slurm sudo useradd -m -c "Slurm Manager" -d /var/lib/slurm -u 1100 -g slurm -s /bin/bash slurm ``` *** # 二、编译和安装 ## 1. 依赖安装 ``` sudo apt-get install libmunge-dev libmunge2 munge \ libpmix-dev libpmix2t64 libssl-dev libsystemd-dev \ libpam0g-dev libnuma-dev libhwloc-dev hwloc \ libreadline-dev libhdf5-dev libyaml-dev libjson-c-dev \ libcurl4-openssl-dev liblz4-dev libjwt-dev libbpf-dev \ libsqlite3-dev libgtk2.0-dev liblua5.3-dev lua5.3 python3-dev \ pkg-config libmysqlclient-dev librrd-dev mariadb-server \ libfreeipmi-dev libjwt-dev libhttp-parser-dev \ build-essential gcc g++ make cmake autoconf automake libtool ``` ## 2. 下载并解压 tar.bz2 包 ``` sudo apt-get install tar bzip2 tar -xvjf slurm-25.05.0.tar.bz2 ```  ## 3. 配置并安装 ``` ./configure --prefix=/opt/slurm/25.05 --sysconfdir=/etc/slurm \ --with-munge=/usr --with-hwloc=/usr --enable-multiple-slurmd \ --enable-pam --enable-cgroupv2 --enable-slurmrestd --enable-shared \ --with-json=/usr --with-hdf5=/usr/lib/x86_64-linux-gnu/hdf5 --with-lz4=/usr \ --with-systemdsystemunitdir=/etc/systemd/system --with-pmix=/usr/lib/x86_64-linux-gnu/pmix2 ``` 没有报错就执行编译安装: ``` make -j$(nproc) && make install ``` ## 4. 配置Munge * 管理节点 munge 生成key ``` sudo -u munge /etc/munge/munge.key ``` * 分发到各节点并赋权 ``` scp -p /etc/munge/munge.key root@login01:/etc/munge/ scp -p /etc/munge/munge.key root@compute01:/etc/munge/ chown munge: /etc/munge/munge.key chmod 400 /etc/munge/munge.key ``` * 所有节点启动 munge ``` systemctl start munge systemctl enable munge ``` ## 5. 编辑 conf 文件 * slurm.conf ``` ClusterName=cluster SlurmctldHost=master ProctrackType=proctrack/cgroup ReturnToService=1 SlurmctldPidFile=/var/run/slurm/slurmctld.pid SlurmctldPort=6817 SlurmdPidFile=/var/run/slurm/slurmd.pid SlurmdPort=6818 SlurmdSpoolDir=/var/spool/slurmd SlurmUser=slurm StateSaveLocation=/var/spool/slurmctld SwitchType=switch/none TaskPlugin=task/affinity InactiveLimit=0 KillWait=30 MinJobAge=300 SlurmctldTimeout=120 SlurmdTimeout=300 Waittime=0 SchedulerType=sched/backfill SelectType=select/cons_tres SelectTypeParameters=CR_Core AccountingStorageEnforce=associations,limits,qos AccountingStorageHost=master AccountingStoragePass=/var/run/munge/munge.socket.2 AccountingStoragePort=6819 AccountingStorageType=accounting_storage/slurmdbd JobCompHost=localhost JobCompLoc=slurm_hpc_db JobCompPass=admin@1234 JobCompPort=3306 JobCompType=jobcomp/mysql JobCompUser=slurm JobAcctGatherFrequency=30 JobAcctGatherType=jobacct_gather/linux SlurmctldDebug=info SlurmctldLogFile=/var/log/slurm/slurmctld.log SlurmdDebug=info SlurmdLogFile=/var/log/slurm/slurmd.log # HPC NODES NodeName=master NodeAddr=127.0.0.1 CPUs=4 CoresPerSocket=2 ThreadsPerCore=2 RealMemory=500 Procs=1 State=UNKNOWN NodeName=compute01 NodeAddr=172.16.56.33 CPUs=4 CoresPerSocket=4 ThreadsPerCore=2 RealMemory=20000 Procs=1 State=UNKNOWN # PARTITIONS PartitionName=Compute Nodes=compute01 Default=YES MaxTime=INFINITE State=UP ``` * cgroup.conf ``` CgroupMountpoint=/sys/fs/cgroup ConstrainCores=yes ConstrainRAMSpace=yes ConstrainSwapSpace=yes ConstrainDevices=yes ``` * slurmdbd.conf ``` # Authentication info AuthType=auth/munge AuthInfo=/var/run/munge/munge.socket.2 # slurmDBD info DbdAddr=localhost DbdHost=localhost SlurmUser=slurm DebugLevel=verbose #DefaultQOS=normal,standby LogFile=/var/log/slurm/slurmdbd.log PidFile=/var/run/slurm/slurmdbd.pid #PluginDir=/usr/lib/slurm #PrivateData=accounts,users,usage,jobs # Database info StorageType=accounting_storage/mysql StoragePass=admin@1234 StorageUser=slurm StorageLoc=slurm_hpc_db ``` ## 6. 创建目录并设置权限 ``` sudo mkdir -p /var/run/slurm/ sudo mkdir -p /var/spool/slurmd sudo mkdir -p /var/spool/slurmctld sudo mkdir -p /var/log/slurm/ sudo chown slurm:slurm /var/run/slurm/ /var/spool/slurmd /var/spool/slurmctld /var/log/slurm/ chmod 400 /etc/slurm/slurmdbd.conf chown slurm:slurm /etc/slurm/slurmdbd.conf ``` ## 7. 启动slurm服务 ``` # 管理节点 systemctl start slurmdbd systemctl enable slurmdbd systemctl start slurmctld systemctl enable slurmctld # 所有节点 systemctl start slurmd systemctl enable slurmd ``` *** # 三、结语 选择 Ubuntu 24.04 运行 Slurm 并非仅仅是随波逐流,而是站在了算力管理的技术前沿。得益于 Ubuntu 对 Cgroup v2 的原生深层集成,Slurm 现在可以更精准、更高效地实现多租户资源的严格隔离,彻底解决了复杂作业下 CPU 与内存争抢的顽疾。同时,借助 Ubuntu 24.04 搭载的 Linux 6.8+ 内核,调度系统在处理高并发、大规模 MPI 任务通信时表现出更低的延迟与更强的稳定性。
chsnp
2026年2月27日 11:45
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期