跳过正文
高性能集群装机与基础运维笔记

高性能集群装机与基础运维笔记

Ridiculous
作者
Ridiculous
Love is the greatest magic in the world.

这篇笔记整理自之前的装机流程、NFS 恢复和常用命令记录,主要面向一台或一批 GPU/HPC 服务器从裸机到基础可用状态的部署过程。示例硬件以 H3C UniServer R4900 G6 Ultra 为主,具体步骤仍需以厂商白皮书和现场硬件配置为准。

制作启动盘
#

准备可引导 ISO、烧录软件和一个 USB 3.0 U 盘。服务器系统可选择 Ubuntu Server LTS,例如 Ubuntu Server 22.04.5 LTS。

常用烧录工具:

  • Rufus
  • UltraISO

烧录时注意:

  • UltraISO 写入方式选择 USB-HDD+
  • Rufus 目标系统类型选择 BIOS 或 UEFI
  • 分区类型可用 MBR。
  • 文件系统按实际启动兼容性选择。

安装系统
#

系统安装阶段通常不需要复杂配置,重点是:

  • 创建一个非 root 用户,避免初始 root 密码不可用。
  • 建议直接安装 openssh-server
  • 网络可以先不细配,系统安装完成后再统一调整。

硬件安装注意事项
#

安装 GPU、IB 卡、内存或拆装 CPU 前,必须先看机器厂商白皮书。

需要特别注意:

  • GPU 供电线可能有 A/B 线区分。
  • 插拔电源线时不要拉扯线缆,应握住塑料接头。
  • CPU 散热器拆装通常有规定的拧螺丝顺序。
  • 运输前可能需要处理主板纽扣电池,避免 BIOS 配置异常。
  • 内存条尽量插满;如果不能插满,应围绕每个 CPU 对称分布。

电源和 BIOS
#

连接电源后先确认所有 PDU 指示灯正常。现代服务器一般有两个 PDU,互为冗余。

进入 BIOS 后可根据计算场景调整:

  • 关闭超线程。
  • 设置 NUMA Per Socket。
  • 设置启动盘。
  • 如果硬盘不识别,检查硬盘槽位、RAID/HBA 卡、IPMI 硬件状态和硬盘背板供电。

IPMI 检查
#

IPMI 用于检查硬件状态,H3C 服务器上通常叫 HDM。

常见流程:

  1. 网线直连 IPMI/HDM 管理口。
  2. 根据机箱标签获取默认 IP 和掩码。
  3. 将本机设置到同一网段。
  4. 浏览器打开管理地址。
  5. 检查硬盘、电源、风扇、温度、告警灯和 PCIe 设备状态。

交换机和 VLAN
#

通过 Console 线连接交换机。Windows 下可用设备管理器查看串口号,然后用 PuTTY 选择 Serial 连接。

H3C 交换机配置示例:

system-view

vlan 3
vlan 4

display interface GigabitEthernet 1/0/23

interface GigabitEthernet 1/0/23
port link-type trunk
port trunk permit vlan all
quit

interface range GigabitEthernet 1/0/1 to GigabitEthernet 1/0/22
port access vlan 3
quit

display vlan 3

interface GigabitEthernet 1/0/24
port access vlan 4
quit

配置后建议保存,并设置开机自动加载配置:

save
startup saved-configuration <config-file>

交换机默认密码需要及时修改。

网络配置
#

系统安装后通过 ip link show 查看网口名。Ubuntu Server 可编辑 Netplan:

sudo vim /etc/netplan/50-cloud-init.yaml

示例:

network:
  ethernets:
    ens16f0:
      addresses:
        - <A.B.C.D>/24
      nameservers:
        addresses: []
        search: []
      routes:
        - to: default
          via: <A.B.C.D>
  version: 2

应用配置:

sudo netplan apply

基础系统准备
#

设置 root 密码:

su root
passwd root

禁用自动更新:

sudo vim /etc/apt/apt.conf.d/10periodic
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
sudo vim /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

常用初始化:

echo "\$nrconf{kernelhints} = 0;" >> /etc/needrestart/needrestart.conf
echo "\$nrconf{restart} = 'l';" >> /etc/needrestart/needrestart.conf

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

apt update
apt upgrade
apt install git wget vim curl htop net-tools pciutils build-essential

分盘和挂载
#

如果安装阶段报 block probing did not discover any disks,优先检查硬盘、RAID/HBA 卡和硬盘灯。

LVM 示例:

lsblk

sudo pvcreate /dev/sdb /dev/sdc /dev/sdd
sudo vgcreate vg_home /dev/sdb /dev/sdc /dev/sdd
vgdisplay

sudo lvcreate -l 100%FREE -n lv_home vg_home
sudo mkfs.ext4 /dev/vg_home/lv_home
sudo mount /dev/vg_home/lv_home /home

开机自动挂载:

sudo blkid /dev/vg_home/lv_home
sudo vim /etc/fstab
UUID=<UUID> /home ext4 defaults 0 2

验证:

sudo mount -a
df -h

NFS 共享 home
#

所有节点安装:

sudo apt install nfs-kernel-server nfs-common rdma-core

服务端:

sudo mkdir -p /home
sudo chmod 777 /home
sudo vim /etc/exports
/home *(rw,sync,no_root_squash)

启用 RDMA:

sudo vim /etc/nfs.conf
[nfsd]
rdma=y

重启服务:

sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server

客户端挂载:

sudo mount -o rdma,vers=4.2 <server_ip>:/home /home
df -h | grep /home

开机挂载:

<server_ip>:/home /home nfs4 rdma,vers=4.2 0 0

验证 RDMA:

mount | grep /home
cat /proc/fs/nfsfs/servers

NFS 崩溃恢复记录
#

如果 /home 是通过 NFS 挂载,恢复时先确认服务端磁盘是否正确挂载。

ssh gpu02
fdisk -l

如果存在类似 /dev/mapper/vg_home-home 的逻辑卷,需要先挂载到 /home

mount /dev/mapper/vg_home-home /home
systemctl restart nfs-kernel-server

其他节点恢复挂载:

sudo mount gpu02:/home /home

InfiniBand 驱动和测试
#

查看 IB 设备:

lspci | grep -i mell

安装基础工具:

sudo apt update
sudo apt install opensm infiniband-diags ibutils perftest -y
sudo systemctl start opensm
sudo systemctl enable opensm

检查设备:

ibv_devinfo
ibstat

带宽测试:

ibv_devices
ib_read_bw -a -d <device_name> --report_gbits
ib_read_bw -a -F <server_ip> -d <device_name> --report_gbits

简单连通性测试:

ibping <ip_addr>

CUDA 和 GPU 驱动
#

查看 GPU:

lspci | grep -i nvidia

卸载 NVIDIA 驱动:

sudo /usr/bin/nvidia-uninstall

安装前应确认 GPU 型号、驱动版本和 CUDA Toolkit 版本兼容性。

Benchmark
#

常用测试方向:

  • MLC:内存带宽和延迟。
  • STREAM:内存带宽。
  • OSU Micro-Benchmarks:MPI/IB 通信性能。
  • HPL/HPCG:CPU/GPU 集群算力测试。

OSU 也可以通过 Spack 安装:

spack install osu-micro-benchmarks ^openmpi/<hash>

运行:

$(which mpirun) -host i1:1,i2:1 $(which osu_bw)

常用系统命令
#

关闭或开启超线程:

echo off > /sys/devices/system/cpu/smt/control
echo on > /sys/devices/system/cpu/smt/control

CPU performance mode:

#!/bin/bash

cpu_count=$(lscpu | grep "^CPU(s):" | awk '{print $2}')

for i in $(seq 0 $((cpu_count - 1))); do
  echo "Setting cpu$i scaling governor to performance"
  echo performance | sudo tee /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor
done

echo "All CPU governors set to performance."

监控 CPU 频率:

watch -n 1 "cat /proc/cpuinfo | grep 'cpu MHz'"

监控温度:

watch -n 1 'echo "Zone 0: $(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))°C"; echo "Zone 1: $(($(cat /sys/class/thermal/thermal_zone1/temp)/1000))°C"'

Git 代理:

git config --global http.proxy "http://127.0.0.1:10002"
git config --global https.proxy "http://127.0.0.1:10002"

git config --global --unset http.proxy
git config --global --unset https.proxy

SSH 反向转发示例:

Host qhujumper
  HostName 111.115.201.221
  Port 22
  User wukuangzheng
  RemoteForward 10002 127.0.0.1:10002

APT 代理:

apt -o Acquire::http::proxy="http://192.168.0.100:3128/" update

GPU 功耗控制
#

NVIDIA GPU 功耗限制:

sudo nvidia-smi -pl <power_limit>

AMD 平台示例:

sudo modprobe amd_hsmp
e_smi_tool --setpowerlimit 0 <power_limit_in_milliwatt> | grep -i "socket"
e_smi_tool --setpowerlimit 1 <power_limit_in_milliwatt> | grep -i "socket"

可以包装成脚本统一设置风扇、GPU 功耗、CPU 频率和 CPU 功耗,但具体命令依赖厂商工具和本地脚本路径。