跳到主要内容
版本:v1.3

Linux操作指南

Linux服务器信息获取

获取操作系统版本

输入命令:

cat /etc/redhat-release

得到返回结果:

CentOS Linux release 7.9.2009

从上面结果得知:操作系统版本为centos7.9

获取本机内网IP

输入命令:

ip r get 1 | awk 'NR==1 {print $NF}'

得到返回结果:

172.17.228.252

从上面结果得知:172.17.228.252 为内网IP地址

获取操作系统内核

输入命令:

uname -r

得到返回结果:

3.10.0-1160.el7.x86_64

从上面结果得知: 系统内核版本为3.10.0-1160、CPU架构为X86

获取cpu核数

输入命令:

grep processor /proc/cpuinfo|wc -l

得到返回结果:

16

从上面结果得知:cpu核数为16核

获取cpu指令集

输入命令:

lscpu|grep -E 'avx2|avx|fma'

得到返回结果:

Flags:  fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 hle **avx2** smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni

获取内存大小

输入命令:

free -h|awk '{if (NR==2) print $2}'

得到返回结果:

30G

从上面结果得知:内存大小为30G

检查磁盘开机挂载

输入命令:

cat /etc/fstab

得到返回结果:

UUID=9f2d3e15-a78a-4f3d-8385-0165b4b67864 /  ext4 defaults 1 1
/dev/sdb1 /home ext4 defaults 1 1

从上面可以知道,/dev/sdb1这块设备以ext4的格式挂载到了/home目录,并且设置开机自动加载

检查firewall是否开机自启

输入命令:

systemctl is-enabled firewalld

得到返回结果:

disabled

从上面结果得知:已禁用防火墙开机自启

检查用户是否拥有sudo权限

输入命令:

Input: sudo -l -U laiye

得到返回结果:

    (ALL) ALL

从上面结果得知:用户laiye拥有sudo权限

检查显卡驱动

输入命令:

nvidia-smi

得到返回结果:

-bash: nvidia-smi: Not found

从上面结果得知:未找到nvidia-smi命令。表示并未安装显卡驱动或驱动异常

检查磁盘性能

# 获取写入速度
time dd if=/dev/zero of=/tmp/test.disk bs=8k count=300000
# 获取读取速度
time dd if=/tmp/test.disk of=/dev/null bs=8k

Linux安装与维护

安装显卡驱动

  • 获取显卡型号

输入命令:

lspci|grep -i nvidia

得到返回结果:

    0000:3f:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:40:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:43:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)

从上面结果得知:显卡型号十六进制为1eb8。点击这里 搜索1eb8,得知显卡型号为Tesla T4

  • 获取显卡驱动
  1. 显卡型号确认

    首先,需要确认显卡的型号,以确定应该下载哪个驱动程序。可以使用以下命令查看显卡型号:

[root@master-03 ~]# lspci |grep -i nvidia
0000:3f:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:40:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:43:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:47:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:8e:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
0000:92:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
`
从上面得知,显卡型号十六进制为1eb8,查询显卡型号搜索1eb8的显卡型号对应为TU104GL [Tesla T4]
`
  1. 获取显卡驱动

在确认了显卡型号后,需要下载对应的驱动程序。可以在NVIDIA官方网站下载Linux版的驱动程序。下载完成后,将驱动程序上传到CentOS系统中。 从官方驱动下载搜索指定显卡驱动,获取二进制驱动文件

  1. 安装必要的依赖

在安装驱动程序之前,需要先安装一些必要的依赖,以确保驱动程序可以正常运行。可以使用以下命令安装依赖:

sudo yum install -y gcc kernel-devel kernel-headers dkms 
make
  1. 禁用nouveau

安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。

sudo echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
sudo echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf
sudo update-initramfs -u
sudo reboot
  1. 停止图形化界面

在安装驱动程序期间,需要停止图形化界面。可以使用以下命令停止图形化界面:

sudo systemctl stop gdm
  1. 安装驱动程序

安装驱动程序需要使用root权限执行以下命令:

sudo sh /path/to/NVIDIA-Linux-x86_64-xxx.xx.run

注意:将/path/to/替换为下载驱动程序的路径和文件名。 在安装过程中,会提示您接受许可协议并询问是否需要编译内核模块。如果您选择编译内核模块,则可能需要一些时间。完成后,驱动程序将被安装到系统中。

  1. 重新启动系统

安装完成后,需要重新启动系统,以确保驱动程序可以正常加载。

sudo reboot
  1. 验证驱动程序是否安装成功 重新启动系统后,可以使用以下命令来验证是否已成功安装驱动程序:
sudo nvidis-smi
  • 安装nvidia-docker

如果容器想要使用gpu资源的话,依赖nvidia-docker。需要安装docker后,才可以安装nvidia-docker。切记备份/etc/docker/daemon.json文件,因为安装这个会替换这个文件所有内容

输入命令:

wget -c https://private-deploy.oss-cn-beijing.aliyuncs.com/pengyongshi/nvidia/nvidia-docker2.tar.gz

tar -zxvf nvidia-docker2.tar.gz

cd nvidia-docker2

rpm -ivUh *.rpm --force --nodeps

以上步骤安装完后,会默认替换掉/etc/docker/daemon.json文件,将之前备份的daemon.json中的内容追加到文件里

/etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"insecure-registries":[
"10.116.28.239:8888"
]
}

重启docker

systemctl start docker

  • 安装k8s nvidia插件

要在 Kubernetes 中使用 GPU,需要NVIDIA设备插件。NVIDIA Device Plugin 是一个 daemonset,它会自动枚举集群每个节点上的 GPU 数量,并允许 pod 在 GPU 上运行。这个只需要在master1上安装即可

输入命令:

wget -c https://private-deploy.oss-cn-beijing.aliyuncs.com/pengyongshi/nvidia/k8s-device-plugin.tar

docker load -i k8s-device-plugin.tar

将以下内容写入nvidia-device-plugin.yaml文件,并导入/var/lib/kubelet/plugins/

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nvidia-device-plugin-daemonset
namespace: kube-system
spec:
selector:
matchLabels:
name: nvidia-device-plugin-ds
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
name: nvidia-device-plugin-ds
spec:
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
priorityClassName: "system-node-critical"
containers:
- image: nvidia/k8s-device-plugin:1.0.0-beta6
name: nvidia-device-plugin-ctr
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
volumeMounts:
- name: device-plugin
mountPath: /var/lib/kubelet/device-plugins
volumes:
- name: device-plugin
hostPath:
path: /var/lib/kubelet/device-plugins

输入命令:

kubectl apply -f /var/lib/kubelet/plugins/nvidia-device-plugin.yaml
  • 安装cudnn

输入命令:

wget -c https://private-deploy.oss-cn-beijing.aliyuncs.com/pengyongshi/nvidia/cudnn-10.2-linux-x64-v7.6.5.32.tgzInput: tar xvf cudnn-10.2-linux-x64-v7.6.5.32.tgz

cp cuda/include/cudnn.h /usr/local/cuda/include/

cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

chmod -R a+r /usr/local/cuda

export PATH=$PATH:/usr/local/cuda/bin

添加sudo账号

默认情况下,wheel这个组里的用户具有sudo权限,所以我们仅需要将普通用户附加到wheel这个组即可

输入命令:

usermod -G wheel laiye

返回为空,表示laiye这个普通用户已经加入到wheel这个组了

关闭并禁用防火墙

输入命令:

setenforce 0
sed -i 's/\(SELINUX=\)[a-z].*/\1disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld