服务器配置:从装机到维护
实验室新到了一台 A100 四卡机,记录一下装机和运维过程。
好像成了实验室的网管(
配置:
CPU : Intel Xeon Gold 6248R 3GHz 96核
内存 1T
8T HDD
预装 ubuntu 18.04
10.20
在 tuna 下载 debian 11.5 netinst 镜像
https://mirrors.tuna.tsinghua.edu.cn/debian-cd/11.5.0/amd64/iso-cd/
用 balenaEtcher 烧到 u盘
折腾了大半天,主要问题来源于校园网
实验室里有线网只有校园网,但 debian netinst 版本没有 GUI,没法搞校园网验证
命令行版本的校园网验证一直有问题
无线网卡没有,即使有也需要装驱动之类的
所以尝试搞 debian 的离线版,带有 GUI
但推测是由于没有显卡驱动的原因,GNOME 桌面环境起不来,表现是 系统初始化之后完全黑屏, ctrl+alt+F1 也切不到命令行
rescue 模式可以切进命令行,但没啥卵用
grub 看不懂也不会写
总之卡住了
cinnamon 救我狗命
抛弃 GNOME 装了 cinnamon ,终于有了 GUI,搞校园网登录
有了网问题基本就解决了
总之还是要思考一下怎么路由校园网
10.21
今日新坑: apt-get
和 apt
并不完全一样
请使用 apt-get purge
而非 apt purge
新建账号:sudo useradd -m [username]
安装 nvidia driver :
在 nvidia 官网 https://www.nvidia.com/en-us/drivers/unix/
下载了 515.76 版本 production branch 的 driver
禁用原来的开源驱动 nouveau:
编辑 /etc/modprobe.d/blacklist-nouveau.conf
写入如下内容
blacklist nouveau
options nouveau modeset=0
运行 update-initramfs -u
为了防止 GUI 占用显卡驱动,将登录方式换为命令行 systemctl set-default multi-user.target
然后 reboot
之前装过 debian 官方的 apt 驱动,但版本太低
使用 sudo apt-get purge nvidia.
卸载所有 nvidia 相关组件
运行安装下载的 nvidia 驱动
使用 nvidia-smi
测试驱动安装情况
安装 spack:
首先创建一个 spack 账户:sudo useradd -m spack
把默认 shell 修改为 bash : chsh -s /bin/bash
clone spack 的 github 仓库,并 checkout 到一个 release
然后用 root 把整个 spack 拷到 /opt
下
debian 执行 /etc/update-motd.d
目录下所有可执行文件更新 /var/run/motd.dynamic
https://wiki.debian.org/motd
sudo usermod -a -G [group] [user]
用户加入组
ssh
ssh 配置文件位于 /etc/ssh/ssd_config
公钥登录需要保证用户 .ssh
目录权限 700
.ssh
目录下:
authorized_keys
,config
, id_rsa
权限 600
学校 DNS :
166.111.8.8
2024.10
配置新机房的整套集群
将 apt 换成 tuna源
修改 fstab,开机 mount 存储
# /etc/fstab
UUID=[uuid] /home ext4 defaults 0 2
配网络
配置登录节点网络:
网口1 eno1 接入校园网
sudo nmcli con add type ethernet ifname eno1 con-name eno1-dhcp
sudo nmcli con up eno1-dhcp
网口2
sudo nmcli con add type ethernet ifname eno2 con-name eno2-static ip4 192.168.0.1/16
sudo nmcli con up eno2-static
设置 active on boot :
sudo nmcli con mod eno1-dhcp connection.autoconnect yes
sudo nmcli con mod eno2-static connection.autoconnect yes
配置其他节点局域网网络:
sudo nmcli con add type ethernet ifname eno1 con-name eno1-static ip4 192.168.0.21/16
sudo nmcli con mod eno1-static ipv4.dns 192.168.0.1
sudo nmcli con mod eno1-static ipv4.gateway 192.168.0.1
sudo nmcli con up eno1-static
systemctl start ssh
systemctl enable ssh
dns 配得不太对,应该配成公网 dns
sudo nmcli connection modify eno1-static ipv4.dns "101.6.6.6 166.111.8.28 166.111.8.29"
sudo nmcli connection down eno1-static
sudo nmcli connection up eno1-static
登录节点配置网络转发:
在 /etc/sysctl.conf
中添加 net.ipv4.ip_forward=1
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
sudo iptables -A FORWARD -i eno2 -o eno1 -j ACCEPT
sudo iptables -A FORWARD -i eno1 -o eno2 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo apt install iptables-persistent
sudo netfilter-persistent save
update: 登录节点配固定 ip
sudo nmcli con add type ethernet ifname eno1 con-name eno1-static ip4 166.111.236.24/16
sudo nmcli con up eno1-static
配置 IB
#安装 IB 相关包
sudo apt install rdma-core infiniband-diags ibverbs-utils perftest
#查看 IB 设备
sudo ibv_devices
sudo ibstat
# 安装 subnet manager
sudo apt install opensm
sudo systemctl start opensm
sudo systemctl enable opensm
sudo modprobe mlx5_ib
sudo modprobe ib_umad
sudo modprobe ib_uverbs
sudo echo -e "mlx5_ib\nib_umad\nib_uverbs" | sudo tee -a /etc/modules
配置 IP over IB :
sudo modprobe ib_ipoib
sudo echo -e "ib_ipoib" | sudo tee -a /etc/modules
sudo nmcli con add type infiniband ifname ibp134s0 con-name ib-static
sudo nmcli connection modify ib-static ipv4.addresses 10.0.0.21/16
sudo nmcli connection modify ib-static ipv4.method manual
sudo nmcli con up ib-static
sudo nmcli con mod ib-static connection.autoconnect yes
配 nfs
nfs server:
sudo apt update
sudo apt install nfs-kernel-server
修改 /etc/exports
192.168.0.1(rw,sync,no_root_squash)
sudo systemctl restart nfs-kernel-server
配 nfs client :
sudo apt update
sudo apt install nfs-common
sudo mount -t nfs 192.168.0.21:/home /home
修改 fstab
配 LDAP
/etc/pam.d/common-auth
/etc/pam.d/common-account
/etc/ldap/ldap.conf
/etc/ssh/sshd_config
/etc/nsswitch.conf
sudo systemctl restart nscd
sudo systemctl restart sshd
配 LDAP server :
sudo apt update
sudo apt install slapd ldap-utils
sudo dpkg-reconfigure slapd
配 LDAP client :
sudo apt update
sudo apt install libnss-ldap libpam-ldap ldap-utils nscd
sudo pam-auth-update
# edit /etc/nsswitch.conf
sudo systemctl restart nscd
在 /etc/pam.d/common-session
中增加 session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
同时作为 client 和 server 的服务器需要将 /etc/nslcd.conf
中 uri 设为 ldapi:///
ldap 操作:
ldapsearch -x -LLL -H ldap://192.168.0.21 -b "dc=hpcas" "uid=fujy"
ldapsearch -x -LLL -H ldap://192.168.0.21 -D "cn=admin,dc=hpcas" -W -b "dc=hpcas" "(uid=fujy1)"
ldapdelete -x -H ldap://192.168.0.21 -D "cn=admin,dc=hpcas" -W "uid=fujy2,ou=lab,dc=hpcas"
ldapdelete -x -D "cn=admin,dc=hpcas" -W "uid=jdoe,ou=People,dc=hpcas"
ldapadd -x -D "cn=admin,dc=hpcas" -W -f users.ldif
sudo slappasswd # 生成密码 hash
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" -LLL dn # query 所有 database
ldapmodify -x -D "cn=admin,dc=hpcas" -y [passwdfile] -f modify_password.ldif
change root passwd : 修改 /etc/ldap/slapd.d/cn\=config/'olcDatabase={1}mdb.ldif'
中 olcRootPW 项
安装spack
安装 mpi :
spack install openmpi fabrics=ucx ^ucx+cma+dc+dm+ib_hw_tm+mlx5_dv+rc+rdmacm+ud+verbs
spack env 配置文件位置:/home/spack/spack/var/spack/environments/umi/spack.yaml
安装 slurm
sudo useradd -r -s /bin/false slurm
sudo mkdir -p /home/slurm
sudo chown -R slurm:slurm /home/slurm
../configure --prefix=/home/slurm --with-pmix=[pmix dir] --with-ucx=[ucx dir]
修改 /etc/pam.d/sshd
限制只有有 active job 的 user 才能 ssh,从而避免用户直接 ssh 节点:
account [default=ignore success=1] pam_succeed_if.so user ingroup sudo
account required pam_slurm.so
创建分组
sudo groupadd lab
sudo getent group lab
sudo groupdel [group]
同时配置多台服务器:
cssh ares1 ares2 ares3 ares4 ares5 ares6 ares7 ares8