A. 在 Air-Gapped NVIDIA DGX 系统上安装软件

在 DGX 系统上安装红帽企业 Linux 时,DGX 系统所需的许多软件包都是通过互联网从红帽和 NVIDIA 服务器下载的。这不适用于必须“Air-Gapped”(与互联网或外部网络隔离)的严密安全系统。

对于 air-gapped 系统,红帽提供了工具(createrepo 和 reposync)来制作互联网可用仓库的本地镜像。然后可以将这些仓库镜像复制到 air-gapped 环境中,并在 DGX 系统上激活以进行安装。

本文档假定您已创建了红帽仓库的镜像。对于 NVIDIA 仓库,它提供了在具有公共互联网访问权限的“低端”系统上镜像 NVIDIA 仓库的步骤,然后将仓库复制并激活到 air-gapped DGX 系统。它还包括安装 Docker 容器的流程。

A.2. 在低端红帽系统上创建镜像

在具有网络访问权限的系统(低端红帽系统)上执行这些任务,其中
low-side-user
表示低端系统上的用户名。
my-mirror
表示创建或存储镜像文件的文件夹。
  1. 设置一个目录以创建镜像。
    mkdir /home/<low-side-user>/<my-mirror>
  2. 镜像 nvidia-dgx-7 仓库。
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid nvidia-dgx-7 --download_path=/home/<low-side-user>/<my-mirror> --downloadcomps --download-metadata

    3. cd nvidia-dgx-7/

    4. sudo createrepo -v /home/<low-side-user>/<my-mirror>/nvidia-dgx-7 -g comps.xml

    5. cp /etc/yum.repos.d/nvidia-dgx-7.repo /home/<low-side-user>/<my-mirror>/nvidia-dgx-7/

    6. cp /etc/pki/rpm-gpg/RPM-GPG-KEY-dgx-cosmos-support /home/<low-side-user>/<my-mirror>/nvidia-dgx-7/

  3. 镜像 nvidia-dgx-7-updates 仓库
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid nvidia-dgx-7-updates --download_path=path/to/mirrored/files --downloadcomps --download-metadata

    3. sudo createrepo -v /home/<low-side-user>/<my-mirror>/nvidia-dgx-7-updates

  4. 镜像 rhel-7-server-extras-rpms 仓库。
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid rhel-7-server-extras-rpms --download_path=/home/<low-side-user>/<my-mirror> --downloadcomps --download-metadata

    3. cd rhel-7-server-extras-rpms/

    4. sudo createrepo -v /home/<low-side-user>/<my-mirror>/rhel-7-server-extras-rpms -g comps.xml

    5. sudo cp /etc/yum.repos.d/redhat_repo /home/<low-side-user>/<my-mirror>/rhel-7-server-extras-rpms/

    6. sudo cp /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /home/<low-side-user>/<my-mirror>/rhel-7-server-extras-rpms

  5. 镜像 rhel-7-server-optional-rpms 仓库
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid rhel-7-server-optional-rpms --download_path=/home/<low-side-user>/<my-mirror> --downloadcomps --download-metadata

    3. cd rhel-7-server-optional-rpms/

    4. sudo createrepo -v /home/<low-side-user>/<my-mirror>/rhel-7-server-optional-rpms -g comps.xml

  6. 镜像 rhel-7-server-rpms 仓库
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid rhel-7-server-rpms --download_path=/home/<low-side-user>/<my-mirror> --downloadcomps --download-metadata

    3. cd rhel-7-server-rpms/

    4. sudo createrepo -v /home/<low-side-user>/<my-mirror>/rhel-7-server-rpms -g comps.xml

  7. 镜像 rhel-server-rhscl-7-rpms 仓库。
    1. cd /home/<low-side-user>/<my-mirror>

    2. sudo reposync --newest-only --gpgcheck -l --repoid rhel-server-rhscl-7-rpms --download_path=/home/<low-side-user>/<my-mirror> --downloadcomps --download-metadata

    3. cd rhel-server-rhscl-7-rpms/

    4. sudo createrepo -v /home/<low-side-user>/<my-mirror>/rhel-server-rhscl-7-rpms -g comps.xml

  8. 创建镜像仓库的存档。
    tar cf <mirror-archive-name>.tar <username>

A.3. 在 Air-Gapped DGX-2/DGX A100 上安装红帽企业 Linux

  1. 通过 BMC 或 USB 驱动器启动 ISO 镜像后,选择 安装 Red Hat Enterprise Linux,然后按 Enter 键开始安装。

  2. 有关使用安装程序的指南,请参阅 Red Hat Enterprise Linux 快速安装指南

    安装摘要 屏幕配置您可能需要的语言、区域、日期、时间、键盘和其他配置选项。

  3. 设置系统驱动器。
    1. 删除所有分区。

      在“安装目标位置”屏幕上,选择 M.2 (DGX-2 上为 894.25 GB 或 DGX A100 上为 1788 GB) 磁盘,"自动配置分区" 单选按钮和 "我希望提供额外的可用空间" 复选框,然后单击 完成

    2. 回收磁盘空间 屏幕上,单击 回收空间
  4. 创建 EFI 分区。
    1. 从“安装摘要”屏幕中,单击 安装目标位置 以创建新分区。

    2. 在“安装目标位置”屏幕上,选择 M.2 (DGX-2 上为 894.25 GB 或 DGX A100 上为 1788 GB) 磁盘和 "我要配置分区" 单选按钮,然后单击 完成

      手动分区 窗口出现。

    3. 创建新分区。

      在“手动分区”屏幕上,使用 标准分区,然后单击“+”。

    4. 为第一个 EFI 分区添加挂载点。

      将挂载点设置为 /boot/efi,并将所需容量设置为 512 MB,然后单击 添加挂载点

    5. 验证安装程序是否选择驱动器 nvme0n1p1 (DGX-2) 或 nvme3n1p1 (DGX A100)。

      如果未指定正确的驱动器,则单击 修改,然后从 配置挂载点 对话框中选择正确的驱动器,然后单击 选择

    6. 单击“+”以创建备用 EFI 启动分区。
    7. 为备用 EFI 分区添加挂载点。

      将挂载点设置为 /boot/efi2,并将所需容量设置为 512 MB,然后单击 添加挂载点

  5. 创建 RAID 1 分区。
    1. 单击“+”以添加新分区。
    2. 为 RAID 分区添加挂载点。

      将挂载点设置为 /,并将所需容量留空,然后单击 添加挂载点

    3. 选择新的系统分区并设置以下内容。
      设备类型
      RAID
      RAID 级别
      RAID1
      名称
      md0/
  6. 验证以下分配:
    • DGX-2:/boot/efi 分配给驱动器 nvme0n1p1,/boot/efi2 分配给驱动器 nvme1n1p1
    • DGX A100:/boot/efi 分配给驱动器 nvme3n1p1,/boot/efi2 分配给驱动器 nvme2n1p1

    有时,分区名称会更改。如果发生这种情况,请选择所需的驱动器,然后单击 修改->更新设置 以进行更正。

  7. 单击 完成 以退出并提交新的分区方案,然后单击 接受更改
  8. 继续执行从以下步骤开始的步骤 -

在 Air-Gapped DGX-2/DGX A100 上安装 DGX 软件

在 air-gapped DGX-2 或 DGX A100 系统上执行这些任务,其中
dgx-user
表示 DGX 用户
my-mirror
表示创建或存储镜像文件的文件夹
  1. 系统重启后,登录并验证分区方案和正确的 EFI 挂载点;

    NVSM 要求 RAID-1 卷命名为 md0,并且 EFI 启动分区顺序正确。

    1. 验证分区方案是否与以下命令显示的输出匹配
      $ ls -ldh /dev/md*
      
      drwxr-xr-x. 2 root root 80 Aug 9 17:26 /dev/md
      brw-rw----. 1 root disk 9, 0 Aug 9 17:26 /dev/md0
      brw-rw----. 1 root disk 9, 127 Aug 9 17:26 /dev/md127
      
      $ sudo mdadm --detail /dev/md0 | grep nvme
      
      0 259 3 0 active sync /dev/nvme0n1p2
      1 259 5 1 active sync /dev/nvme1n1p2 
      $ sudo lsblk -f | grep efi 
      
      ├─nvme0n1p1 vfat /boot/efi
      ├─nvme1n1p1 vfat /boot/efi2 
      如果 RAID-1 卷未命名为 md0,请参阅 附录:重命名 RAID 卷,以获取有关如何重命名 RAID 卷的说明。
    2. 编辑 /etc/fstab 并删除挂载 /boot/efi2 的行。
  2. 复制并启用 DGX-2 系统上的仓库镜像。
    1. 切换到放置镜像仓库的目录。
      cd /home/<dgx-user>
    2. 从低端系统安全复制镜像存档。
      scp <dgx-user>@<low-side-ip-address>:home/<dgx-user>/<mirror-archive-name>.tar . 
    3. 提取镜像存档。
      sudo tar xf <mirror-archive-name>.tar
    4. rhel-7-server-extras nvidia-dgx-7 仓库复制到 yum.repos.d。
      sudo cp ./<my-mirror>/rhel-7-server-extras-rpms/redhat.repo /etc/yum.repos.d/redhat-mirror.repo 
      sudo cp ./<my-mirror>/nvidia-dgx-7/nvidia-dgx-7.repo /etc/yum.repos.d/
    5. 编辑 /etc/yum.repos.d/nvidia-dgx-7.repo

      更改 nvidia-dgx-7 仓库

       baseurl=https://international.download.nvidia.com/dgx/repos/rhel7/
       baseurl=file:///home/<dgx-user>/<my-mirror>/nvidia-dgx-7

      更改 nvidia-dgx-7-updates 仓库

       baseurl=https://international.download.nvidia.com/dgx/repos/rhel7-updates/
      baseurl=file:///home/<dgx-user>/<my-mirror>/nvidia-dgx-7-updates 
      enabled=0 更改为 enabled=1
    6. 对于以下每个仓库 ($reponame):
      • rhel-7-server-extras-rpms
      • rhel-7-server-optional-rpms
      • rhel-7-server-rpms
      • rhel-server-rhscl-7-rpms

      编辑 /etc/yum.repos.d/redhat-mirror.repo,找到 $reponame 部分(在方括号中列出),并更改该部分中的文本

      baseurl=https://cdn.redhat.com/content/dist/rhel/server/7/... 
      baseurl=file:///home/<dgs-user>/<my-mirror>/$reponame
      设置 enabled = 1
    7. 将 GPG 密钥文件复制到您的系统。
      sudo cp <my-mirror>/nvidia-dgx-7/RPM-GPG-KEY-dgx-cosmos-support /etc/pki/rpm-gpg 
    8. 列出仓库并验证所有 11 个仓库都已启用。
      sudo yum repolist 
      输出应如下所示
      Loaded plugins: product-id, search-disabled-repos, subscription-manager
      This system is not registered with an entitlement server. You can use subscription-manager to register.
      Repo rhel-7-server-extras-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754.pem
      Repo rhel-7-server-extras-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754-key.pem
      Repo rhel-7-server-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754.pem
      Repo rhel-7-server-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754-key.pem
      Repo rhel-7-server-optional-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754.pem
      Repo rhel-7-server-optional-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/9124846071548788754-key.pem
      Repo rhel-server-rhscl-7-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/3657713380925279193.pem
      Repo rhel-server-rhscl-7-rpms forced skip_if_unavailable=True due to:
      /etc/pki/entitlement/3657713380925279193-key.pem
      nvidia-dgx-7                                    | 3.6 kB 00:00
      nvidia-dgx-7-updates                            | 2.9 kB 00:00
      rhel-7-server-extras-rpms                       | 3.6 kB 00:00
      rhel-7-server-optional-rpms                     | 3.6 kB 00:00
      rhel-7-server-rpms                              | 3.6 kB 00:00
      rhel-server-rhscl-7-rpms                        | 3.6 kB 00:00
      (1/11): nvidia-dgx-7/group_gz                   | 644 B 00:00
      (2/11): rhel-7-server-optional-rpms/group_gz    | 6.4 kB 00:00
      (3/11): nvidia-dgx-7/primary_db                 | 70 kB 00:00
      (4/11): rhel-7-server-optional-rpms/primary_db  | 2.1 MB 00:00
      (5/11): rhel-7-server-rpms/group_gz             | 150 kB 00:00
      (6/11): nvidia-dgx-7-updates/primary_db         | 56 kB 00:00
      (7/11): rhel-7-server-rpms/primary_db           | 4.4 MB 00:00
      (8/11): rhel-7-server-extras-rpms/group_gz      | 133 B 00:00
      (9/11): rhel-7-server-extras-rpms/primary_db    | 85 kB 00:00
      (10/11): rhel-server-rhscl-7-rpms/group_gz      | 133 B 00:00
      (11/11): rhel-server-rhscl-7-rpms/primary_db    | 3.0 MB 00:00
      repo id                     repo name                                    status
      nvidia-dgx-7                NVIDIA DGX EL7                                  146
      nvidia-dgx-7-updates        NVIDIA DGX EL7 Updates                          101
      rhel-7-server-extras-rpms   Red Hat Enterprise Linux 7 Server - Extras (R   151
      rhel-7-server-optional-rpms Red Hat Enterprise Linux 7 Server - Optional  5,190
      rhel-7-server-rpms          Red Hat Enterprise Linux 7 Server (RPMs)      5,457
      rhel-server-rhscl-7-rpms    Red Hat Software Collections RPMs for Red Hat 7,123
      repolist: 18,168 
  3. 继续执行从 安装必需组件 开始的安装步骤。

A.5. 重命名 RAID 卷

RAID 卷应为 /dev/md0。如果在安装过程中卷被错误地命名为 /dev/md/root,则按如下方式重命名卷。

  1. /dev/md/root 转换为 /dev/md0
    1. 编辑 /dev/mdadm.conf

      示例:sudo vi /dev/mdadm.conf

    2. /dev/md/root 替换为 /dev/md0
  2. 保存文件,然后重启。

A.6. 安装 Docker 容器

此方法适用于 NGC 容器注册表上托管的 Docker 容器。大多数容器镜像都是免费提供的,但有些是锁定的,需要您拥有 NGC 帐户才能访问。有关访问锁定的容器镜像的说明,请参阅 NGC Registry for DGX 用户指南
  1. 输入 docker pull 命令,指定镜像注册表、镜像仓库和标签。
    docker pull nvcr.io/nvidia/repository:tag
  2. 使用 docker images 验证镜像是否在您的系统上。
    docker images
  3. 将 Docker 镜像另存为存档。
    docker save nvcr.io/nvidia/repository:tag > framework.tar
  4. 使用可移动介质(如 USB 闪存驱动器)将镜像传输到 air-gapped 系统。
  5. 加载 NVIDIA Docker 镜像。
    docker load -i framework.tar
  6. 验证镜像是否在您的系统上。
    docker images