文章目录
- centos 7.9 离线环境安装GPU服务环境
- 系统配置
- 更新 gcc
- 更新内核
- 安装显卡驱动
- 安装cuda
- 安装docker 和 nvidia-container-runtime
- 验证
centos 7.9 离线环境安装GPU服务环境
基于centos 7.9 离线安装gpu 服务基础环境,用于在docker 中运行算法服务
系统配置
limits.conf 配置
$ vim /etc/security/limits.conf
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 1024000
* hard nproc 1024000
sysctl.conf 配置
$ vim /etc/sysctl.conf
#内核默认参数
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.sem=500 64000 64 256
##打开文件数参数(20*1024*1024)
fs.file-max= 20971520
##WEB Server参数
net.ipv4.tcp_tw_reuse=1
#net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1200
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_rmem=4096 87380 8388608
net.ipv4.tcp_wmem=4096 87380 8388608
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 5000
##TCP补充参数
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 65535
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
##禁用ipv6
net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1
##swap使用率优化
vm.swappiness=0
fs.inotify.max_user_watches = 1048576
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
更新 gcc
[gcc 环境下载地址](Index of /gnu/gcc)
各种gnu环境相关依赖地址
我这里使用的 gcc9 的包,里面是携带好了依赖包的,可以通过解压后直接执行(上面的地址需要自己处理依赖包,缺啥下啥就行)
$ yum localinstall ./*.rpm
直接 执行 localinstall 命令,可能会出现依赖问题报错,可以在本地搭建yum 仓库,把rpm 包都扔到仓库里面再执行 yum install 命令(缺基础环境时,可以吧centos 的iso 镜像挂载到服务器上作为yum仓库)
第一步:挂载安装光盘
$ mount /dev/*.iso /mnt/os
第二步:编辑repo yum源文件
$ cd /etc/yum.repos.d/
$ mkdir backup
$ mv *.repo backup/ #备份原repo文件
$ vim local.repo
[local]
name=local
baseurl=file:///mnt/os # 目录
gpgcheck=0 # 跳过检查
enabled=1 # 启用
第三步:检查yum makecache
$ yum makecache
出现这个就代表搭建成功了
可以把 你要用到的 rpm 包直接放到 /mnt/os/Package 目录下,就可以直接下载了,但是不太建议这么干。可以重新再弄一个本地repo
1. 创建一个目录
$ mkdir /mnt/local-repo
2. 创建 repodata
$ cd /mnt/local-repo
$ createrepo . # 创建repo的配置包 repodata 目录
3. 安装上述编辑 repo yum 配置文件即可
配置好yum repo 后 执行
$ yum install gcc -y # 即可
更新内核
更新内核需要先卸载内核,但是卸载完内核后,若未安装新的内核,重启服务器,那么就重装系统吧
-
卸载内核
rpm -e kernel-headers --nodeps rpm -e kernel-devel --nodeps rpm -e kernel-tools-libs --nodeps rpm -e kernel --nodeps rpm -e kernel-tools --nodeps
-
安装新内核
-
提前准备好 rpm 包
# 解压后进入目录 $ yum localinstall ./*.rpm
-
rpm 包放入本地yum 仓库中
$yum install kernel-lt-devel
-
查看内核启动顺序、设置内核启动
$ awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg $ grub2-set-default 0
-
reboot(如果是包含GPU的新环境,最好更改完GPU的相关配置再重启机器)
-
uname -a 查看
-
安装显卡驱动
官网显卡驱动下载地址
红框部分根据需要选择,然后点击search,点击下载即可
验证检查命令: rpm -qa | grep kernel
chmod +x NVIDIA-Linux-x86_64-515.105.01.run
#按需卸载原有驱动(强烈建议使用该方法卸载,卸载的最干净)
./NVIDIA-Linux-x86_64-515.105.01.run --uninstall
#禁用Nouveau驱动(Root权限)
vi /lib/modprobe.d/dist-blacklist.conf
#添加下列两行
blacklist nouveau
options nouveau modeset=0
# 注释掉
# blacklist nvidiafb
#备份原来的 initramfs-nouveau-image镜像并重新建立initramfs-image文件
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
dracut /boot/initramfs-$(uname -r).img $(uname -r) # 可能没有源来的镜像,报错无所谓
systemctl set-default multi-user.target
init 3
reboot
#查看是否禁用nouveau成功
lsmod | grep nouveau
#没有信息输出则成功,反之重新操作禁用nouveau操作
#安装驱动
./NVIDIA-Linux-x86_64-515.105.01.run
#####如果出现安装不上可以使用如下方案
cat > /etc/modprobe.d/nvidia.conf << EOF
options nvidia NVreg_EnablePCIeGen3=1
options nvidia NVreg_EnableGpuFirmware=0
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
EOF
nvidia-uninstall 后再重新安装
# 然后一直enter,注意弹窗提示,没有error则安装成功,如果出现error,截图反馈到运维
#验证
nvidia-smi
出现这个就成功了
安装cuda
cuda 下载官网
根据图中红框部分根据具体情况选择(如选择centos版本或ubuntu版本),因为前面安装好了驱动,所以这里只单独安装cuda
sh cuda_11.4.1_470.57.02_linux.run
#只选择安装CUDA ToolKit 11.4 具体安装如下图,其他不要安装 切记!!!开始会解压一小会儿,弹窗让你选择安装哪些东西,我们只需要cuda_toolkit,上下方向键和enter键控制勾掉不需要的安装,cuda里面也有驱动,一定要取消掉,不然会有冲突,大约几分钟后就安装好,安装目录一般为/usr/local/cuda-11.4
#等待安装完成
#添加环境变量
vi /etc/profile
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source /etc/profile
#验证: nvcc --version,如下图所示
安装docker 和 nvidia-container-runtime
-
离线下载docker.tgz 文件
我的包里面是包括 systemctl 管理的配置和 docker-compose
cp ./docker/* /usr/bin/ rm -rf ./docker # 上面是安装docker的 mkdir -p /etc/systemd/system cp docker.service /etc/systemd/system/docker.service chmod +x /etc/systemd/system/docker.service mkdir -p /etc/docker/ cp daemon.json /etc/docker/daemon.json cp docker-compose /usr/local/bin/ chmod +x /usr/local/bin/docker-compose systemctl daemon-reload systemctl start docker systemctl enable docker.service
-
安装 nvidia-container-runtime
在官网或者github 上下载好对应的 nvidia-container-runtime 包,里面是有部分依赖的rpm 包
可以直接 yum localinstall ./*.rpm 如果报错就直接把rpm 包放到本地repo里面 yum install nvidia-container-runtime
-
修改 daemon.json
{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }, # 上面的配置是配置 runtimes 的 "registry-mirrors": ["https://4p5gxeik.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "storage-driver": "overlay2", "storage-opts":["overlay2.override_kernel_check=true"], "log-driver": "json-file", "log-opts": { "max-size": "500m", "max-file": "3" }, "oom-score-adjust": -1000, "bip": "172.20.0.1/16", "fixed-cidr": "172.20.0.0/16", "metrics-addr" : "0.0.0.0:9323", "experimental" : true, "default-address-pools": [ {"base": "10.252.0.0/16", "size": 16}, {"base": "10.253.0.0/16", "size": 16}, {"base": "10.254.0.0/16", "size": 16}] }
配置完重启docker即可
验证
安装完后,找一个gpu镜像,执行
docker run -it image nvidia-smi
有正常结果就表示ok,也可以通过python 调用测试下 cuda