CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
在去年十月闯祸(这又是一个故事)之后,我们把自己的几台机器从超算搬到了校园网环境下,用 JumpServer 配了跳板机,并重新配置了集群的系统环境。然而一年过去,大家关于集群搭建有了新的想法和技巧。正好招了新队员进队,接下来记录一些和新队员一起重新配集群环境的过程。
系统选择:Debian11
长期以来,超算队都使用 CentOS7 作为主要的技术栈,可以和超算中心的大部分集群共享类似的使用环境。作为 RHEL 的马甲,CentOS 有相近的稳定性,并且可以白嫖来自 Red Hat 的补丁。然而长期使用 CentOS 后也积累了很多不便:
- CentOS 7(发布于 2009 年)自带源的软件包过少。
- 引入了三方源之后的 CentOS 还能被称作稳定吗?
- CentOS 7 自带源中的很多软件版本过低。
- 例如,默认的 gcc@4.8.5 已经不能满足 cuda@11: 对 gcc@6: 的要求了。
- 作为 CentOS 7 的继任者,CentOS 8 将在 2021-12-31 之后停止维护
- CentOS 7 反而会支持到 2024-06-30。
- 作为代替的 CentOS Stream 8 也只支持到 2024-05-31,并且从 RHEL 的下游转移到了 RHEL 的上游。
- 一个不再那么稳定的 CentOS,还会有我们之前选择它的优势吗?
这使得我们将目光投向其它系统。最终选择 Debian11 作为接下来几年大家公用的系统环境,因为如下的优点:
- 足够新。
- 发布在本文时间线的不到一个月之前(2021-08-14),并将持续支持至 2026 年。
- 使用 Linux 5.10 LTS 作为内核。
- Debian11 是第一个提供支持 exFAT 文件系统的 Linux 内核的发行版本,且它默认使用该实现挂载 exFAT 文件系统。
- 足够强。
- Debian 使用 apt 包管理器,软件足够多,支持多版本安装,并且可以用于安装驱动。
- CentOS 的 rpm 安装包可以转换为 deb 安装包。
- 足够快。
- 最小化安装的 Debian 系统占用小,优于常见 Linux 发行版。
- Debian 是为数不多的能在轻量应用服务器上流畅运行的系统。
- 足够轻。
- Debian11 的联网安装包仅有约 377MB,优于常见 Linux 发行版。
- 足够稳。
- Debian stable 同样具有高稳定性,Google、Bytedance 等企业内部均使用 Debian。
环境配置
这个 Dockerfile 给出了在全新 debian:11 上配置一个可用的 spack 的过程。
当前计划是,除驱动和 spack 的依赖均使用系统自带的包管理器 apt 安装,所有的软件使用非管理员账户 scc 通过 spack 源码安装,从而保证整个系统环境的整洁。
给包管理器加上 non-free 软件源(为了 nvidia-driver)。
另一台机器
挂载数据盘并设置开机启动
mkdir -p /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
echo '/dev/sdb1 /mnt/sdb1 ext4 defaults 0 2' | sudo tee -a /etc/fstab
新用户加组
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=docker' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf # for rocm
echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf # for rocm
创建特权账户
adduser
创建一个账户,用于创建各自的账号。
adduser adduser
# 把下面内容加到最后
# adduser ALL=(ALL) /usr/sbin/adduser
visudo
yum
创建一个账号用于 yum。
adduser yum
# 把下面内容加到最后
# yum ALL=(ALL) /usr/bin/yum
visudo
安装必要软件
amdgpu 驱动
yum install kernel-headers-`uname -r` kernel-devel-`uname -r`
yum install wget
yum install epel-release
yum install centos-release-scl #Only for CentOS 7.9
yum install devtoolset-7
source scl_source enable devtoolset-7
echo '[amdgpu]
name=amdgpu
baseurl=https://repo.radeon.com/amdgpu/latest/rhel/7.9/main/x86_64
enabled=1
gpgcheck=1
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key' | sudo tee /etc/yum.repos.d/amdgpu.repo
yum clean all
yum install amdgpu-dkms
reboot
docker
yum -y install docker-io
spack 依赖
yum install \
gcc gcc-c++ python3 \
make patch patchelf bash \
tar gzip unzip bzip2 xz \
file gnupg2 git