4、操作系统与基础环境准备:推荐Linux发行版(Ubuntu、CentOS)的安装与配置

大模型训练与推理任务对操作系统的稳定性、内核版本、文件系统性能以及远程管理能力都有极高要求。Windows 或 macOS 在驱动兼容性、批量部署和无人值守场景下往往不是最优选择,而 Linux 凭借其开源生态、高效的进程调度和灵活的存储管理,成为深度学习环境的事实标准。本章将围绕 Ubuntu 与 CentOS 两大主流发行版,系统讲解从安装规划、用户权限、网络配置、SSH 远程访问到磁盘分区与文件系统优化的完整链路,帮助读者建立一套可复用、可审计、可扩展的基础环境准备方法论。

Linux 基础环境准备链路图 发行版选择 Ubuntu 22.04 LTS / CentOS 7.9 安装与磁盘分区 /boot 1G | / 200G | /data 剩余 系统基础配置 用户权限 | 网络 | SSH 文件系统优化 XFS/Ext4 | noatime | I/O调度 关键配置项 用户权限 · 创建专用用户 ai-user · sudo 权限最小化 · 禁止 root 远程登录 网络设置 · 静态 IP / 主机名 · DNS 与代理配置 · 防火墙开放端口 SSH 远程访问 · 密钥认证 · 修改默认端口 · 会话保活 验证与监控 安装验证 · uname -a 内核版本 · df -h 分区挂载 · nvidia-smi GPU 识别 性能监控 · iostat 磁盘 I/O · top / htop CPU 内存 · journalctl 系统日志 安全加固 · fail2ban 防暴力破解 · 定期安全更新 · 审计日志 auditd 核心原则:最小化安装 → 按需配置 → 验证闭环 → 安全加固 → 性能监控 Ubuntu 适合快速迭代与社区支持,CentOS 适合长期稳定与安全合规

上图展示了从发行版选择到最终验证监控的完整链路。在实际部署中,我们通常遵循“最小化安装、按需配置、验证闭环”的原则,避免在基础阶段引入不必要的图形界面或服务,从而降低攻击面并提升系统资源利用率。下面将按照操作顺序逐一展开。

4.1 发行版选型与安装规划

核心原理:Ubuntu 与 CentOS 分别代表 Debian 系与 RHEL 系两大生态。Ubuntu 的 apt 包管理器软件源更新频繁,对 CUDA、PyTorch 等深度学习框架的兼容性验证最快,适合开发与迭代环境;CentOS 的 yum/dnf 包管理器则更强调稳定性,内核版本相对保守,适合生产环境与长期运维。对于大模型部署,我们更关注内核版本对 NVIDIA 驱动的支持、文件系统对高并发小文件读写的表现,以及系统更新策略对训练任务连续性的影响。

判断方法:选择发行版时,可依据以下维度进行决策:

对比维度Ubuntu 22.04 LTSCentOS 7.9 / Stream 9
内核版本5.15+(支持新硬件)3.10 / 5.14(保守稳定)
软件源更新频率每 6 个月发布新版本滚动更新(Stream)或长期维护
深度学习框架兼容性官方优先支持需额外配置 EPEL 源
适合场景开发、测试、原型验证生产环境、合规要求高的场景
系统管理工具apt + systemdyum/dnf + systemd

操作流程:以 Ubuntu Server 22.04 为例,安装时选择“最小安装”选项,不勾选“安装第三方软件”和“下载更新”以加快部署速度。磁盘分区建议采用 LVM 逻辑卷管理,便于后续扩容。具体分区方案如下:

# 分区规划(以 2TB NVMe SSD 为例)
/boot      1GB    ext4    # 内核与引导文件
/          200GB  ext4    # 系统根目录
/data      剩余空间 xfs   # 大模型权重、数据集、日志存放
swap       32GB   swap    # 与物理内存大小一致或按需调整

常见误区:很多初学者将全部空间分配给根分区,导致后续训练数据无处存放。实际上,将 /data 独立分区不仅便于数据管理,还能在系统重装时保留模型权重。另外,swap 分区在大模型训练中并非越大越好,当物理内存充足(如 512GB)时,swap 反而会拖慢 I/O 性能,建议设置为 0 或仅保留 8GB 用于内核转储。

4.2 用户权限与安全基线

核心原理:大模型训练通常需要以非 root 用户运行,以降低误操作或安全漏洞带来的风险。Linux 的权限模型基于 UID/GID 和 sudo 提权机制,合理的用户规划应遵循“最小权限原则”——每个服务或任务使用独立用户,避免共享账号。

操作流程:创建专用用户并配置 sudo 权限:

# 创建用户 ai-user,并指定 home 目录和 shell
sudo useradd -m -d /home/ai-user -s /bin/bash ai-user

# 设置密码
sudo passwd ai-user

# 将用户加入 sudo 组(Ubuntu)或 wheel 组(CentOS)
sudo usermod -aG sudo ai-user   # Ubuntu
sudo usermod -aG wheel ai-user  # CentOS

# 验证 sudo 权限
su - ai-user
sudo whoami  # 应输出 root

安全加固要点:编辑 /etc/ssh/sshd_config,禁止 root 直接登录,并限制 SSH 登录用户:

PermitRootLogin no
AllowUsers ai-user
PasswordAuthentication no   # 启用密钥认证后关闭密码登录

案例拆解:某 AI 实验室部署 8 卡 A100 服务器时,因未限制 root 登录且使用弱密码,被暴力破解后植入了挖矿程序,导致训练任务中断。事后排查发现攻击者通过 SSH 默认端口 22 进入系统。修复措施包括:更换 SSH 端口至 2222、启用密钥认证、配置 fail2ban 自动封禁异常 IP。整个过程耗时 2 小时,但避免了更大的算力损失。复盘经验:基础环境的安全配置必须在联网前完成,且每次系统更新后需重新审计 SSH 配置。

4.3 网络设置与远程访问优化

核心原理:大模型训练服务器通常位于数据中心或实验室内部网络,需要配置静态 IP 以保证服务可发现性。同时,SSH 是远程管理的主要通道,其性能与稳定性直接影响开发效率。

操作流程:在 Ubuntu 中使用 netplan 配置静态 IP:

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

# 应用配置
sudo netplan apply

CentOS 则通过 /etc/sysconfig/network-scripts/ifcfg-eth0 配置,或使用 NetworkManager 的 nmcli 工具。配置完成后,务必测试网络连通性:

ping -c 4 8.8.8.8
curl -I http://mirrors.ubuntu.com  # 测试软件源连通性

SSH 性能调优:对于跨地域远程访问,可在 sshd_config 中增加以下参数:

# 保持会话活跃,防止断连
ClientAliveInterval 60
ClientAliveCountMax 3

# 启用压缩(对低带宽场景有效)
Compression yes

常见误区:部分用户直接复制虚拟机配置到物理机,导致网卡名称不匹配(如 eth0 变为 ens33)。建议使用 ip link 查看实际网卡名称,并在配置文件中使用匹配的接口名。另外,防火墙(ufw 或 firewalld)需显式放行 SSH 端口,否则即使 SSH 服务正常也无法连接。

4.4 磁盘分区与文件系统优化

核心原理:大模型训练涉及海量小文件(如 JSON 数据集、tokenizer 词表)和超大文件(如模型 checkpoint),文件系统的选择直接影响数据加载速度。Ext4 兼容性最好,XFS 在并发写入和删除大文件时表现更优,而 ZFS/Btrfs 虽支持压缩与快照,但 CPU 开销较高,不适合训练节点。

优化策略:

  • 挂载参数:在 /etc/fstab 中为 /data 分区添加 noatime,nodiratime,减少元数据写入。
  • I/O 调度器:NVMe SSD 建议使用 none(即 noop),机械硬盘使用 deadline。
  • 预读优化:使用 blockdev --setra 8192 /dev/nvme0n1 增加预读缓存。
# /etc/fstab 示例
/dev/vg_data/lv_data  /data  xfs  defaults,noatime,nodiratime  0 0

# 查看当前 I/O 调度器
cat /sys/block/nvme0n1/queue/scheduler

案例拆解:某团队在加载 200GB 的 Llama-2-7B 数据集时,初始使用 Ext4 默认挂载参数,数据加载耗时 45 分钟。通过将分区切换为 XFS 并启用 noatime,加载时间缩短至 28 分钟,提升约 38%。进一步使用 iostat -x 1 监控发现,瓶颈在于随机读 IOPS,通过调整预读值后,最终稳定在 22 分钟。该优化无需额外硬件成本,仅通过文件系统参数调整即可实现。

经验提醒:在格式化分区前,务必确认数据已备份。XFS 分区不支持缩小,只能扩大,因此初始分区时建议预留 20% 的余量。对于多块数据盘,可使用 LVM 或 RAID 0 提升吞吐,但需评估数据冗余需求。
风险提示:不要在生产环境直接使用 mkfs.xfs -f 强制格式化,该操作会清除所有数据。执行前应使用 lsblk 和 blkid 确认设备路径,避免误操作系统盘。