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
- 获取显卡驱动
显卡型号确认
首先,需要确认显卡的型号,以确定应该下载哪个驱动程序。可以使用以下命令查看显卡型号:
[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]
`
- 获取显卡驱动
在确认了显卡型号后,需要下载对应的驱动程序。可以在NVIDIA官方网站下载Linux版的驱动程序。下载完成后,将驱动程序上传到CentOS系统中。 从官方驱动下载搜索指定显卡驱动,获取二进制驱动文件
- 安装必要的依赖
在安装驱动程序之前,需要先安装一些必要的依赖,以确保驱动程序可以正常运行。可以使用以下命令安装依赖:
sudo yum install -y gcc kernel-devel kernel-headers dkms
make
- 禁用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
- 停止图形化界面
在安装驱动程序期间,需要停止图形化界面。可以使用以下命令停止图形化界面:
sudo systemctl stop gdm
- 安装驱动程序
安装驱动程序需要使用root权限执行以下命令:
sudo sh /path/to/NVIDIA-Linux-x86_64-xxx.xx.run
注意:将/path/to/替换为下载驱动程序的路径和文件名。 在安装过程中,会提示您接受许可协议并询问是否需要编译内核模块。如果您选择编译内核模块,则可能需要一些时间。完成后,驱动程序将被安装到系统中。
- 重新启动系统
安装完成后,需要重新启动系统,以确保驱动程序可以正常加载。
sudo reboot
- 验证驱动程序是否安装成功 重新启动系统后,可以使用以下命令来验证是否已成功安装驱动程序:
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中的内容追加到文件里
{
"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