Skip to content

PODsys 2204 用户手册

简介

PODsys 是一个基于 Ubuntu Server 22.04.5 LTS 的 GPU 集群部署软件栈,实现快速大规模集群部署。 podsys-2204 支持 x86_64 加 NVIDIA 数据中心 GPU (低于 B200)。

Hugging Face下载链接

Component & Version
ComponentVersionCommand
OSUbuntu Server 22.04.5 LTSlsb_release -ds
Linux kernel5.15.0-119-genericuname -r
NVIDIA GPU Driver570.211.01nvidia-smi
NVIDIA Fabric Manager570.211.01nv-fabricmanager -v
CUDA Toolkit12.8nvcc --version
NCCL2.26.2ncclras --version
cuDNN9.11.1
DCGM4.5.2dcgmi -v
Docker Engine29.3.0docker version
NVIDIA Container Toolkit1.19.0nvidia-container-toolkit -version
InfiniBand DriverMLNX_OFED_LINUX-24.10-3.2.5.0ofed_info -s
ipmitool1.8.18ipmitool -V
PDSH2.31 (+debug)pdsh -V
ansible2.16.11ansible --version

1. 管理节点要求

提示

集群中选一个节点作为管理节点,其余为计算节点,所有 PODsys 部署操作均在管理节点执行。

1.1 使用现有的管理节点

如果使用现有管理节点,请进行如下操作:

  • 创建 nexus 用户。
shell
sudo adduser nexus
sudo usermod -aG sudo nexus
sudo -su nexus
  • 安装 Docker 环境。
参考命令
shell
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

sudo groupadd docker
sudo usermod -aG docker nexus
newgrp docker
  • 安装 PDSH 环境。

1.2 使用全新安装的管理节点

  • 通过 BMC 或 USB 手动为管理节点安装 Ubuntu Server,设置:
yaml
version : 22.04.5
hostname : mu01
username : nexus

警告

  • 用户名和 ubuntu 版本必须与建议保持一致。
  • 在安装过程中不要连接外网,以避免自动更新内核。可以 disable 连接外网的网卡。
BMC 安装
  1. 登录 BMC,具体方式参考服务器厂商手册。
  2. 点击 [Remote Control] -> [Launch KVM]。
  3. 将 ubuntu-22.04.5-live-server-amd64.iso 映像挂载为虚拟介质。
  4. 重启系统并从虚拟介质启动。
USB 安装
  1. 创建包含 ubuntu-22.04.5-live-server-amd64.iso 的可引导安装介质(如USB Flash),参考 https://rufus.ie/zh/
  2. 重启系统并从 USB 启动。

1.3 下载 podsys 软件包

  • 下载所需软件
shell
# 验证MD5值
echo "9001aee290cb4bb6de6fb66d31408e75 podsys-2204.tgz" | md5sum  --check
sudo tar -xzvf podsys-2204.tgz -C /home/nexus/

# 下载 iso 到 podsys-2204/workspace/
cd podsys-2204/workspace/
wget https://releases.ubuntu.com/jammy/ubuntu-22.04.5-live-server-amd64.iso

# 下载 cuda 到 podsys-2204/workspace/drivers/
cd podsys-2204/workspace/drivers
wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run
  • 运行 install_manager.sh (如果使用全新安装的管理节点)
shell
cd podsys-2204/
sudo ./install_manager.sh
  • 重启后健康检查
shell
sudo ./scripts/health-checks.sh

2. 计算节点安装步骤

计算节点的安装步骤需要在管理节点上执行。

2.1 修改 iplist.txt

shell
sudo vim workspace/iplist.txt

iplist.txt的一个示例如下:

Serial NumberhostnameIP addressgatewayDNSIPoIBDocker IP
24X01node01192.168.0.1/24192.168.0.18.8.8.8192.168.1.1/24172.17.0.1/16
24X02node02192.168.0.2/24nonenone192.168.1.2/24172.17.0.1/16
24X03node03192.168.0.3/24nonenone192.168.1.3/24none
技巧

首先可以在excel表格中按照相同格式编写好,然后直接复制到 vim 打开的空白 iplist.txt 中使用。

cat -A iplist.txt

查看格式,正确输出:

24X01^Inode01^I192.168.0.1/24^Inone^Inone^I192.168.1.1/24^Inone$  
24X02^Inode02^I192.168.0.2/24^Inone^Inone^I192.168.1.2/24^Inone$

这里,^I代表一个制表符,用于分隔每一行中的不同字段,而$则表示一行的结束。

警告

IP不要忘记子网掩码。

提示

  • PODsys 部署需要在管理节点开启 DHCP 服务,请确保部署网络中没有其它 DHCP 源。
  • 如果网络中已经存在 DHCP 服务,且无法隔离或关闭,请在/workspace/下 创建 mac_ip.txt 文件。
  • 每一行前面是待部署计算节点的网卡 MAC 地址,部署服务器仅对这些 MAC 的 DHCP 请求响应,分配的 IP 为后面的 IP 地址。
  • MAC 地址和 IP 用英文逗号区分。
  • 如果不存在头节点不便开启 DHCP 的情况不要创建此文件。

文件样式如下

txt
24:01:00:00:00:01,192.168.0.1
24:01:00:00:00:02,192.168.0.2

2.2 修改 config.yaml

shell
cd podsys-2204/
sudo vim workspace/config.yaml

config.yaml 中需要修改的内容:

yaml
manager_ip: 192.168.0.1
manager_nic: ens6f0
dhcp_s: 192.168.0.1
dhcp_e: 192.168.0.200
compute_passwd: your_passwd
compute_storage: sda
  • manager_ip: 管理节点的 IP 地址。
  • manager_nic: 管理节点的网卡名称。
  • dhcp_s & dhcp_e: 计算节点安装过程中临时分配 IP 的范围。

警告

dhcp_s 和 dhcp_e 之间包含的IP地址数量必须大于计算节点的数量,否则会造成部分安装节点安装失败。

例子

  • 管理节点的 IP:192.168.0.201/16
  • 计算节点(200台)在 iplist.txt 中设置为 192.168.0.1/24-192.168.0.200/24。
  • 可以将 dhcp_s 设置为 192.168.1.1,dhcp_e 设置为 192.168.3.254。
  • 这样dhcp的范围和计算节点在 iplist.txt 中分配的静态 IP 不冲突,同时保证了范围内IP和管理节点的连通性,范围内也有足够的IP地址。
  • 安装结束后可以将 192.168.0.201/16 修改为 192.168.0.201/24
  • compute_passwd: 计算节点的用户密码。

  • compute_storage: 计算节点的系统存储设备名称(sda、nvme0n1等),
    也可以用 MIN_SATA MAX_SATA MIN_NVME or MAX_NVME

  • compute_storage(Beta):目前仅支持使用恰好两块磁盘的 RAID1 配置。若要启用 RAID1,请在您的 config.yaml 文件中使用以下 YAML 块格式:

yaml
...
compute_passwd: your_passwd
compute_storage:
  type: raid1
  devices: [sda, sdb]

要求: devices 中必须恰好列出两块磁盘; 这两块磁盘必须已连接、未挂载,且容量足够; 支持的磁盘名称包括:sda、sdb、nvme0n1 等。

警告

系统安装将会覆盖整个硬盘的数据!

2.3 运行 install_compute.sh

警告

运行以下脚本后,会根据之前填写的配置信息,开启一些服务。
如果对于 config.yaml 和 iplist.txt 有所修改,需要退出脚本,重新执行。
运行之前可以参考6. 个性化配置,进行个性化配置。

shell
sudo ./install_compute.sh

你会访问到在运行中的Docker容器内部的交互式命令行界面:

界面如下
**
 Welcome to the cluster deployment software
Configuring, please wait...
  ____     ___    ____    ____   __   __  ____
 |  _ \   / _ \  |  _ \  / ___|  \ \ / / / ___|
 | |_) | | | | | | | | | \___ \   \ V /  \___ \
 |  __/  | |_| | | |_| |  ___) |   | |    ___) |
 |_|      \___/  |____/  |____/    |_|   |____/

dhcp-config : /etc/dnsmasq.conf
user-data   : /user-data/user-data

starting services:
 * Starting DNS forwarder and DHCP server dnsmasq   [ OK ]
 * Starting nginx nginx                             [ OK ]

Running Monitor on following URLs:
 * http://192.168.0.201:5000

root@podsys:/ $

前置准备完成,待安装计算节点开机。

提示

  • 裸金属节点开机自动进入 PXE(Preboot Execution Environment) 模式,等待自动安装。
  • 如果计算节点已经存在操作系统,它们需要手动进入 PXE 模式。
  • 如果计算节点无法进入 PXE 安装,检查管理节点的防火墙是否关闭。

2.4 监控安装进度

你可以在浏览器输入 http://manager_ip:5000 查看监控界面。

界面如图

example

DANGER

  • 对于每个项目出现 表示检测正常,表示硬件不在位。
  • 当日志出现具体日志名字的时候可以点击查看日志。
  • 当 disk 栏出现 !表示 config.yaml 中的磁盘在节点不存在。

计算节点安装完成后会自动重启。
在docker容器交互式命令行输入 exit 退出安装。

2.5 运行 install_progress.sh

待所有计算节点重启完成后,运行:

shell
sudo ./install_progress.sh

执行过程中可能存在部分节点 SSH 失败,可能原因是重启后服务尚未加载。因此需要等待足够时间。 这条命令可以执行多次,直到所有的计算节点被成功 SSH 进入后,执行:

shell
sudo ./config_server.sh -pre

脚本功能

  • 在 podsys-2204 文件夹下,生成 host.txt 文件。该文件记录了所有可以 SSH 成功的节点的 IP 地址。对于后续并行环境配置比较重要。
  • 实现在所有节点上的 nexus 用户之间实现免密的 SSH 登录。

2.6 安装结果检测

运行以下命令检测安装结果:

shell
sudo ./config_client.sh -health-check
shell
172.16.0.1: PODsys deployment successful
172.16.0.2: PODsys deployment successful
172.16.0.3: PODsys deployment successful
...

3. 配置并行环境

提示

所有的操作都在管理节点上执行,在配置并行服务之前,请先运行:

shell
sudo ./config_server.sh -pre
  • 该命令会在 podsys 文件夹下,生成 host.txt 文件。该文件记录了所有可以 SSH 成功的节点的 IP 地址。对于后续并行环境配置比较重要。
  • 该命令会实现在所有节点上的 nexus 用户之间实现免密的 SSH 登录。

3.1 配置 NFS

NFS介绍

网络文件系统(NFS)是一种分布式文件系统协议,它允许客户端计算机上的用户像访问本地硬盘上的文件一样,去访问网络上服务器中的文件和目录。它实现了跨多个系统的文件无缝共享,使得不同节点之间可以统一查看文件系统。NFS通过从服务器导出特定的目录,并让远程客户端进行挂载和访问来实现这一目标。该协议在数据中心等大型环境中广泛使用,因其高效性和可扩展性而备受青睐。

  • 配置命令
shell
# 管理节点执行
sudo ./config_server.sh -nfs [share directory]
# [share directory] 表示管理节点需要共享的文件夹
shell
# 管理节点执行
sudo ./config_client.sh -nfs [serverIP] [share directory] [local directory]
# [serverIP] 表示管理节点的IP地址。
# [share directory] 表示管理节点共享的文件夹。
# [local directory] 表示计算节点挂载 nfs 的文件夹。

3.2 配置 NFSoRDMA

警告

NFSoRDMA 需要 IB 网络。

NFSoRDMA介绍

NFS over RDMA(NFSoRDMA)是网络文件系统协议的一种扩展,它利用远程直接内存访问技术来显著提升性能。通过直接访问远程系统的内存且无需操作系统介入,NFSoRDMA降低了延迟并提高了数据密集型应用的吞吐量,使其特别适用于高速计算环境,在这类环境中速度和效率至关重要。

  • 配置命令
shell
# 管理节点执行
sudo ./config_server.sh -nfsordma [share directory]
# [share directory] 表示管理节点需要共享的文件夹
shell
# 管理节点执行
sudo ./config_client.sh -IPoIB
sudo ./config_client.sh -nfsordma [serverIP] [share directory] [local directory]
# [serverIP] 表示管理节点的 IB IP 地址。
# [share directory] 表示管理节点共享的文件夹。
# [local directory] 表示计算节点挂载 nfs 的文件夹。

3.3 配置 NIS

提示

NIS and OpenLDAP都可以用于集群用户管理,实际使用中二选一即可。

NIS介绍

NIS,即网络信息服务。它允许系统管理员在局域网(LAN)中的多台计算机之间管理和分发关键的系统信息,如用户名、密码(以加密形式)、主机名、IP地址、网络配置、打印队列,以及其他相关数据。NIS使得网络系统更易于保持其配置和设置的一致性。它广泛应用于Unix及类Unix操作系统中。

  • 配置命令
shell
# 管理节点执行
sudo ./config_server.sh -nis [serverIP]
sudo /usr/lib/yp/ypinit –m
sudo make -C /var/yp
shell
# 管理节点执行
sudo ./config_client.sh -nis [serverIP]
sudo yptest
验证
shell
# 管理节点新建用户
sudo adduser test
# 按照提示输入密码等
sudo make -C /var/yp
ll /home
su test

# 计算节点切换用户
su test
ll /home # 查看是否创建用户目录

3.4 配置 OpenLDAP

提示

NIS and OpenLDAP都可以用于集群用户管理,实际使用中二选一即可。

OpenLDAP介绍

OpenLDAP 是一种开源的轻量级目录访问协议(LDAP)实现,它提供了一种用于存储和检索有关网络实体信息的目录服务。由OpenLDAP项目开发,它允许管理员创建集中式数据库,用以存储诸如用户账户、组成员资格、网络资源、电子邮件地址等关键数据。

OpenLDAP支持广泛的平台,包括类Unix系统、Windows以及各种网络环境。它是高度可定制化的,并且可以通过插件进行扩展以实现更多功能。由于其灵活性和稳健性,OpenLDAP在企业环境中被广泛用于管理用户认证、授权及访问控制。

  • 配置命令
shell
# 管理节点执行
sudo ./config_server.sh -ldap [serverIP] [ldap—password]
shell
# 管理节点执行
sudo ./config_client.sh -ldap [serverIP] [ldap—password]

Copyright © 2025 The PODsys Project. All rights reserved.