驱动在链路中的位置
NVIDIA 驱动是 GPU 与上层 CUDA 运行时之间的桥:它加载内核模块、创建设备节点,并向容器提供可见的 GPU。驱动只有一套,装着它的是宿主机内核;容器里看到的驱动其实来自宿主机。因此驱动版本决定了整机能力上限,升级时会中断所有在用 GPU 的任务,必须排维护窗口。
基本信息
| 安装位置 | 宿主机内核模块与用户态库,全局唯一 |
|---|---|
| 推荐方式 | 发行版仓库包配合 DKMS,内核升级后自动重建模块 |
| 备用方式 | 官方 .run 文件,适合需要指定历史版本的场景 |
| 配套组件 | 容器场景还需要容器工具链才能把设备映射进容器 |
| 重启要求 | 内核模块更新通常需要重启机器 |
查看当前版本
查看当前版本
nvidia-smi # 顶部显示驱动版本与支持的 CUDA 上限
cat /proc/driver/nvidia/version # 更细的模块版本信息
lsmod | grep nvidia # 内核模块是否已加载
# 多机批量核对:把驱动版本与卡型汇总成一行,便于比对
dpkg -l | grep -i nvidia-driver发行版仓库安装
发行版仓库安装
# Ubuntu 为例:先看仓库里有哪些版本
apt-cache search nvidia-driver | head
sudo apt update
sudo apt install nvidia-driver-<主版本号> # 按官方兼容表选择
sudo reboot # 内核模块更新后重启
nvidia-smi # 重启后验证版本与卡型三种安装方式对照
| 方式 | 优点 | 代价 |
|---|---|---|
| 发行版仓库包 | 与内核升级联动,可自动重建模块 | 版本选择受仓库限制 |
| 官方 run 文件 | 可精确指定版本 | 内核升级后可能失配,需要手工重建 |
| 容器内不动宿主驱动 | 升级框架不影响整机 | 受宿主驱动上限约束 |
典型使用场景
- 新机器初始化:按卡型与框架要求选定驱动版本并完成验证
- 框架升级前核对:确认驱动上限满足目标 CUDA 运行时要求
- 内核升级后检查:确认模块已重建,否则 GPU 不可见
- 容器排障:先确认宿主驱动正常,再排查透传与工具链
- 故障回退:升级出问题后换回上一版驱动并重新验证服务
升级驱动会中断所有在用 GPU 的任务并需要重启:执行前先摘流量、记录当前版本与内核版本,并准备好回退用的安装包。
用 run 文件安装容易在内核升级后失配:要么改用仓库包配合 DKMS,要么在每次内核升级后手工重建模块并验证。