服务器相关常用操作手册

搞机相关的攻略收藏夹: ゚ Weidows 的个人空间-゚ Weidows 个人主页-哔哩哔哩视频

分割线

硬件-device

内存条-DRAM

选配-for-GPU-servers

经常能看到听到网上的论调是 显存:内存 = 1:2

实际我体验下来, 1:1 完全足够, 训练需要足够大的显存, 但内存一般不会占太高

而且与 Gaming PC 不太一样, 内存的频率和时序对服务器没任何影响, DDR4+ECC 是标准答案

黄灯常亮

主板 DRAM 黄灯常亮, 无法过自检启动

  1. 尝试单条测试
  2. 尝试换插槽 (13 -> 24, 我就遇到了这个问题, 13 不通过)
  3. 等待长一些, 初次加载或者内存超频后内存会自训练半分钟, 自检时间会在半分钟以上, 这段时间也会持续黄灯, 之后就会白灯 -> 绿灯 -> 进系统

开游戏直接断电重启

找了贴吧/B 站上很多帖子, 总结一下

  • 断电后自动重启 -> 内存/CPU/主板有问题

  • 断电后不重启, 需要手动开机 -> 大概率电源坏了

我遇到的是自动重启的 (情况是开 VRchat 时必断电, 开浏览器或者 tm5 时小概率, 甚至有一次开机进桌面直接断电)

我的配置是 14600KF + 5070ti + 750W 鑫谷金牌, 按道理讲完全满载也能冗余出接近 300W, 不应该是电源先炸

最先怀疑的是内存 XMP, 调了半天 XMP 和手动调电压, 无效

然后怀疑电源, AIDA64+furmark2 双烤也没啥问题, 单测各跑分完全正常

能顶得住双烤那说明主板硬件也没毛病, 那就得怀疑是设置或者兼容问题了

重刷了 bios, 恢复默认设置, 无效

最后把主机全拆了, 检查所有供电线和配件没问题, 拔出来用小刷子扫扫灰, CPU 上了新硅脂, 重新理线和排机箱尾部风扇安上

就好了, 问题居然解决了 (怀疑不知道是哪个线虚接了或者接口有灰尘)

分割线

系统-system

install-debian

debian 安装时无法连接 WiFi, 显示 秘钥减缓与协商失败, 试试刷新 WiFi 列表时, 拉到最下面, 手动输入 WiFi 名称/密码

用户

# 添加用户
sudo adduser weidows

# 添加权限
usermod -aG docker weidows
# 或者
/usr/sbin/usermod -aG sudo weidows
/usr/sbin/usermod -aG docker weidows
sudo systemctl restart docker
# 重新连接 ssh 生效

# 修改用户组/权限
chown -R weidows:weidows ./data
chmod 755 ./data

# 移除用户
sudo pkill -u username
sudo userdel username

# 删除用户目录
sudo userdel -r username

sudo-免密码

sudo visudo
# 在末尾加上
userxxx ALL=(ALL) NOPASSWD: ALL

ssh

# 秘钥生成
ssh-keygen -t ed25519 -C "your_email@example.com"

关闭自动锁屏

隐私 -> 屏幕 -> 自动锁屏

重启桌面系统

linux 在插拔显示器后, 桌面系统还是很容易崩的, 虽然等一段时间它自己会恢复吧…

sudo systemctl restart gdm3

hostname

sudo hostnamectl set-hostname ds-xxx

PVE

虚拟机系统盘扩容

先去 pve 扩容虚拟盘: 对应虚拟机 -> Hardware -> Hard Disk -> Disk Action -> Resize

并不需要重启

lsblk 可以看到有未使用空间 (300-150=150, sda 有 150G 未使用空间)

root@1Panel:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 300G 0 disk
|-sda1 8:1 0 512M 0 part /boot/efi
`-sda2 8:2 0 149.5G 0 part /
sdb 8:16 0 10T 0 disk
sr0 11:0 1 670M 0 rom
# 安全扩容分区
sudo apt update
sudo apt install cloud-guest-utils -y

# 分到 sda2
sudo growpart /dev/sda 2
sudo resize2fs /dev/sda2

df -h

重连生效

分割线

网络-net

查看网卡型号

lspci | grep -i net

配置静态-IP

iface enp6s18 inet static
address 10.0.10.1
netmask 255.255.0.0
gateway 10.0.0.1
dns-nameservers 10.0.0.1 8.8.8.8

速度不达标

  1. 重新拔插网线
  2. 检查水晶头是否接好 (其中接错线或者虚接, 能联网但网速会降级)

光口与电口

SFP+ / RJ45

光口需要接光模块, 光模块对不用品牌和速率有很多适配问题, 光模块物理接口分为单纤/双纤/光转电不同类型

同一机房内 (距离 10m 以内推荐用电口), 购置方便, 稍便宜一点 (电口交换机稍贵, 总体便宜)

远距离传输推荐使用光口, 只是需要成套配光网卡 + 光模块 + 光交换机 + 光纤, 麻烦也有兼容问题

分割线

存储-storage

查看硬盘和分区

df -h
sudo fdisk -l
sudo nano /etc/fstab

网络存储协议

协议吞吐量(顺序读写)延迟(随机 IO)CPU 占用共享形式数据同步/一致性权限控制特点与适用场景
iSCSI⭐⭐⭐⭐ 接近裸盘(~90-95% 直通性能)⭐⭐ 较低延迟块级,单机挂载不支持多主并发写,需要集群文件系统依赖 OS/文件系统自身VM 磁盘存储最佳选择(块存储,PVE/ESXi 当本地盘用)
NFS⭐⭐⭐ 中高(~70-80% 裸盘性能)⭐⭐ 一般中低文件级,多机共享服务器端保证一致性(锁机制/缓存同步)Unix 权限(UID/GID)、ACLVM 一般存储、文件共享;支持快照/备份友好
SMB⭐⭐ 偏低(~50-70% 裸盘性能)⭐ 较高延迟中高文件级,多机共享客户端缓存较重,可能出现同步延迟Windows ACL(细粒度)、域集成Windows/Linux 文件共享友好,跨平台访问方便,VM 磁盘不推荐

ISCSI

sudo apt install open-iscsi -y
sudo systemctl enable open-iscsi
sudo systemctl start open-iscsi

# 查看可连接目标
sudo iscsiadm -m discovery -t sendtargets -p 10.0.14.1
# 登录
sudo iscsiadm -m node -T truenas:pve -p 10.0.14.1 --login
# 自动挂载
sudo iscsiadm -m node -T truenas:pve -p 10.0.14.1 --op update -n node.startup -v automatic

# 查看连接
iscsiadm -m session
# 退出登录
sudo iscsiadm -m node -T truenas:pve -p 10.0.14.1 --logout

# 查看块设备
lsblk
# 查看分区UUID
sudo blkid

# 开机自动挂载, 编辑 /etc/fstab
sudo nano /etc/fstab
# /dev/disk/by-uuid/8c28b3a9-fcbc-4ea3-895f-57aca986b243 /mnt/dataset auto nosuid,nodev,nofail,x-gvfs-show 0 0

# 不重启刷新挂载
sudo mkdir -p /mnt/dataset
sudo systemctl daemon-reload && sudo mount -a

NFS

大文件读写速度一般可以跑慢, 小文件会很慢

场景直连 HDDNFS + HDDNFS + TrueNAS 缓存
大文件顺序读写~150MB/s~100-120MB/s~100-120MB/s(无明显差别)
小文件随机读~100 IOPS~10-30 IOPS几百到几千 IOPS(取决于 ARC/L2ARC 大小)
小文件同步写~100 IOPS~5-20 IOPS几百 IOPS 甚至上千(取决于 SLOG SSD)
sudo apt install nfs-common -y
sudo nano /etc/fstab
# 10.0.14.1:/mnt/data/data /mnt/data nfs defaults 0 0

# 检测更改并应用挂载
sudo mount -a
# 卸载某个目录挂载
sudo umount /mnt/data
传输优化

遇到海量小文件时很头疼, 传输速度非常慢

mount -t nfs -o vers=3,tcp,rsize=1048576,wsize=1048576,noatime,nodiratime  server:/export /mnt/nfs
  • rsize/wsize=1048576:增大读写块,提高吞吐。
  • tcp:用 TCP 而不是 UDP。
  • noatime,nodiratime:减少时间戳更新。
root-权限

使连接的服务器 root 权限可用 (默认下 root 无法起效)

sudo nano /etc/exports

# 加上 no_root_squash
# /mnt/data 10.0.0.0/24(rw,sync,no_subtree_check,no_root_squash)

sudo exportfs -r

rsync

sudo apt install rsync -y
sudo rsync -avzP --no-owner --no-group --info=progress2 data/ /mnt/data/

  • -a

    归档模式,等价于 -rlptgoD,意思是:

    -r 递归进入子目录

    -l 保留符号链接

    -p 保留权限

    -t 保留时间戳

    -g 保留组信息

    -o 保留属主

    -D 保留设备文件和特殊文件

  • -v

    verbose,显示详细输出。

  • -P

    等价于 --partial --progress:

    –partial 保留部分传输的文件,以便断点续传

    –progress 显示传输进度

    适合大文件传输,尤其是可能中断时。

  • -z

    压缩传输,在网络上传输前压缩文件内容,节省带宽。适合网络慢的场景,但 CPU 会增加负担。


rclone

如果需要复制的文件比较多, rsync 单进程会非常慢, rclone 会强很多

sudo apt install rclone -y

rclone copy /home/xxx/.cache/huggingface \
/mnt/data/data/byuser/xxx/.cache \
--progress \
--transfers=16 \
--checkers=32 \
--fast-list \
--copy-links \
--ignore-existing \
--bwlimit=100M
  • rclone copy

    把源目录复制到目标目录。只会新增/覆盖目标文件,不会删除目标中多余的文件(与 sync 不同)。

  • –progress

    显示实时进度条,包括文件数、传输速度、已完成大小等。

  • –transfers=16

    设置同时传输文件的并发数,默认是 4。

    这里设置为 16,意味着最多同时传输 16 个文件,可以加快整体速度。

  • –checkers=32

    设置用于检查/扫描源和目标目录的并发数(比如比较文件是否存在、文件大小/校验和等),默认是 8。

    提高这个数值可以更快列出和比对大目录下的文件。

  • –fast-list

    使用更高效的方式一次性获取源/目标目录的完整文件列表(减少 API 调用次数或目录遍历开销)。

    缺点:需要一次性加载全部文件列表到内存,如果文件数特别多,会占用较大内存。

  • –copy-links

    如果源目录中有符号链接(symlinks),会复制符号链接指向的实际文件内容,而不是复制符号链接本身。

  • –ignore-existing

    已存在于目标目录的文件将会被跳过,不会覆盖。

    只复制目标中没有的文件 → 适合增量拷贝。

rclone-s3-migrate

nano /root/.config/rclone/rclone.conf

[old-s3]
type = s3
provider = Other
env_auth = false
access_key_id = admin
secret_access_key = admin123
endpoint = http://10.0.13.1:17030
region = us-east-1
no_check_certificate = true
force_path_style = true

[new-s3]
type = s3
provider = Other
env_auth = false
access_key_id = xxx
secret_access_key = xxx
endpoint = https://fs.infra.dolphin-ai.cn
region = us-east-1
no_check_certificate = true
force_path_style = true
rclone copy old-s3:harbor new-s3:harbor \
--progress \
--transfers=32 \
--checkers=16 \
--s3-chunk-size=64M \
--s3-upload-concurrency=4 \
--size-only \
--log-file=rclone-harbor-migrate.log \
--log-level=INFO

tar-压缩解压

sudo tar -zcvf data.tar.gz data/
sudo tar -zxvf data.tar.gz -C /path/to/target/directory/

truenas-zvol-mount

sudo mkdir /mnt/zvolmnt

sudo mount -t ext4 /dev/zvol/data/dataset /mnt/zvolmnt

/dev/zvol/ 后面跟的是 zvol 路径, 前面需要指定其内部硬盘格式 (如 ext4)

硬盘空间

# 查看目录大小
sudo du -sh .
# 查看目录内文件数
sudo find . -type f | wc -l

# 占用分析
sudo apt install ncdu
ncdu /path/to/directory

分割线

显卡-nvidia

型号分类-diff

型号架构显存类型显存容量带宽(约)Transformer Engine用途定位是否限速 / 特供备注
H200HopperHBM3e141 GB~4.8 TB/s超大模型训练 / 推理Hopper 最强训练卡
H100HopperHBM380 GB~3.35 TB/s高端训练 / HPC主流大模型训练卡
H800HopperHBM380 GB~1.6 TB/s 限速中国市场训练 / 推理限制互联带宽
H20HopperHBM396 GB更低(大幅限速)轻量推理核心/带宽精简,入门型
A100 80GBAmpereHBM2e80 GB~2.0 TB/s高端训练 / HPC老牌训练卡
A800 80GBAmpereHBM2e80 GB~1.0 TB/s 限速中国市场训练卡限速版
L40SLovelaceGDDR648 GB~864 GB/s推理 / 渲染 / 中型训练性价比高,支持 Transformer Engine
L40LovelaceGDDR648 GB~864 GB/s渲染 / 图形 / 基础推理无 TE,偏图形工作站
L20LovelaceGDDR624 GB~400 GB/s入门推理卡功耗低、低成本部署
RTX 6000 AdaLovelaceGDDR648 GB~960 GB/s高端工作站 / 推理桌面工作站卡,带显示输出
RTX A6000AmpereGDDR648 GB~768 GB/s渲染 / 工作站 / 中型推理无 TE,适合图形与轻量训练
RTX A5000AmpereGDDR624 GB~576 GB/s渲染 / 推理 / 开发中端工作站卡
RTX 4090AdaGDDR6X24 GB~1.0 TB/sAI 训练 / 消费级极限性价比桌面旗舰,性价比极高
RTX 3090AmpereGDDR612 GB~600 GB/sAI 训练 / 消费级极限性价比轻量级工作站卡

驱动-driver

驱动版本选择

版本类型特点优点缺点适用场景
开源版 (nvidia-driver-550-open)内核模块开源(GPL/MIT),用户态库依旧闭源;自 515 起支持内核升级兼容性好;数据中心 GPU 支持更佳;安全审计和长期维护方便桌面卡功能缺失(功耗管理、视频编解码、Ray Tracing 等);消费级显卡不推荐数据中心 GPU(A100/H100/A40 等),服务器环境
闭源版 (nvidia-driver-550)传统专有驱动;功能完整功能最全,性能最优;完全兼容 CUDA/OptiX/TensorRT内核更新后可能需要等 DKMS 更新或手动补丁桌面显卡、游戏、CUDA 开发、AI 训练
Server 版 (nvidia-driver-550-server)面向数据中心/工作站/云计算;长期支持(LTSB);稳定优先更新节奏慢但稳定性高;专注计算型 GPU功能更新不及时;版本号常低于桌面版科研、生产环境,对稳定性要求高

卸载降级重装驱动

dpkg -l | grep nvidia-driver
sudo apt remove --purge nvidia-driver-550
sudo apt autoremove
sudo apt install nvidia-driver-535-server

显卡压测

sudo snap install gpu-burn
gpu-burn 600

显卡掉卡

https://blog.csdn.net/qq_44850917/article/details/135431204

症状与文中描述一模一样

找出故障显卡

weidows@ds-8x3090:~$ lspci | grep 3090
01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
21:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
22:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev ff)
41:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
42:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
61:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
a1:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
a2:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
weidows@ds-8x3090:~$ sudo dmesg -l err
[57393.518301] nvidia-modeset: ERROR: GPU:5: Failed detecting connected display devices
[57393.659658] nvidia-modeset: ERROR: GPU:5: Failed detecting connected display devices
[57393.659752] nvidia-modeset: ERROR: GPU:5: Failed detecting connected display devices
[57400.600835] nvidia-modeset: ERROR: GPU:5: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040
[57405.600800] nvidia-modeset: ERROR: GPU:5: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040
[57410.600741] nvidia-modeset: ERROR: GPU:5: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040
[57415.600674] nvidia-modeset: ERROR: GPU:5: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040

暂时禁用故障显卡

sudo nvidia-smi drain -p 0000:22:00.0 -m 1

查看和限制功率

https://zhuanlan.zhihu.com/p/1929467664155276914

nvidia-smi -q | grep 'Power Limit'
sudo nvidia-smi -pl 200
sudo nvidia-bug-report.sh

查日志 (直接搜关键词 fallen) 可以找到对应的显卡 ID

Sep  2 16:08:15 ds-8x3090 kernel: [599570.050167] NVRM: GPU at PCI:0000:22:00: GPU-3c3982ab-b512-daf2-dada-f26162ce7987
Sep 2 16:08:15 ds-8x3090 kernel: [599570.050196] NVRM: Xid (PCI:0000:22:00): 79, pid='<unknown>', name=<unknown>, GPU has fallen off the bus.
Sep 2 16:08:15 ds-8x3090 kernel: [599570.050208] NVRM: GPU 0000:22:00.0: GPU has fallen off the bus.
Sep 2 16:08:15 ds-8x3090 kernel: [599570.050230] NVRM:
|   2  NVIDIA GeForce RTX 3090        Off | 00000000:22:00.0 Off |                  N/A |
| 30% 30C P8 36W / 350W | 10MiB / 24576MiB | 0% Default |
| | | N/A |

可以看看对应显卡的供电线路是否虚接或者损坏, 没有的话就得怀疑是温度过高了

我是把侧板拿掉后就一直没有掉卡, 可以 99%确认是温度问题

跟踪显卡温度日志

nohup nvidia-smi -q -l 2 -d TEMPERATURE -f nvidiatemp.log > /dev/null 2>&1 &
tail -f nvidiatemp.log

查看-PCIE

# 查看PCIE设备
lspci | grep -i nvidia

# 查看 PCIe 链接速率和宽度
sudo lspci -s 01:00.0 -vv | grep -i 'LnkSta'

# 查看支持的最大带宽
sudo lspci -s 01:00.0 -vv | grep -i 'LnkCap'
  • 2.5GT/s → PCIe 1.0
  • 5.0GT/s → PCIe 2.0
  • 8.0GT/s → PCIe 3.0
  • 16.0GT/s → PCIe 4.0
  • 32.0GT/s → PCIe 5.0

有时会看到显卡降级到了 PCIE1, 有可能是因为物理层面线路问题 (一般这样会直接死机了), 更可能的是省电策略导致的

Device 0 [NVIDIA RTX A6000] PCIe GEN 3@16x RX: 771.8 MiB/s TX: 4.150 MiB/s
GPU 1905MHz MEM 7600MHz TEMP 54°C FAN 79% POW 134 / 300 W
GPU[|||||||||||||||||||||||||||| 86%] MEM[|||||||||||| 18.252Gi/47.988Gi]

Device 1 [NVIDIA RTX A6000] PCIe GEN 3@16x RX: 34.67 MiB/s TX: 815.5 MiB/s
GPU 1740MHz MEM 7600MHz TEMP 76°C FAN 78% POW 187 / 300 W
GPU[||||||||||||||||||||||||||||100%] MEM[||||||||||||||25.149Gi/47.988Gi]

Device 2 [NVIDIA RTX A6000] PCIe GEN 1@16x RX: 2.393 MiB/s TX: 50.00 KiB/s
GPU 0MHz MEM 405MHz TEMP 37°C FAN 78% POW 16 / 300 W
GPU[ 0%] MEM[ 0.474Gi/47.988Gi]

Device 3 [NVIDIA RTX A6000] PCIe GEN 1@16x RX: 50.00 KiB/s TX: 50.00 KiB/s
GPU 0MHz MEM 405MHz TEMP 33°C FAN 78% POW 24 / 300 W
GPU[ 0%] MEM[||||| 7.291Gi/47.988Gi]

分割线

terminal

tmux

Tmux 使用教程 - 阮一峰的网络日志

可以保持程序运行(即使断了 ssh), 也可以多人共享终端

# 创建一个新的会话,命名为 monitor
tmux new -s monitor

# 横向拆分
tmux split-window -h
# 纵向
tmux split-window

# 切换 pane (ctrl+b o)

# list sessions
tmux ls
# 连接 session
tmux attach -t monitor
# 断开 (ctrl+b d)
tmux detach

btop

locale

root@ds-8x3090:~# btop
ERROR: No UTF-8 locale detected!
Use --utf-force argument to force start if you're sure your terminal can handle it.



# 1. 看看系统支持哪些 locale
locale -a

# 2. 如果你看不到 UTF-8 生成一个最通用的
locale-gen en_US.UTF-8

# 3. 设置系统默认
update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

但问题一般不会出现在上面几条, 直接去查这里

nano /etc/ssh/sshd_config

改为 UsePAM yes

systemctl restart ssh

分割线

其他

pwm-风扇调控

https://docs.coolercontrol.org/installation/debian.html

英伟达的显卡温度控制比较极限, 默认 target temperature 到 80 度时风扇还在悠哉, 大概到 85 度就会开始大幅下压功率, 少见会到 90 度

然而即使到 90 度, 风扇也就 90%尔尔, 压功率 > 提转速为原则避免硬件损坏, 坏得很

用软件调控显卡风扇, 调高转速, 装好 coolercontrol

  1. 新建传感器, 勾上所有显卡 (选项选最高值)
  2. 新建配置, 温度源选上面的传感器
  3. 把所有显卡的 fan 切换 profile 为上面的配置

实测虽然还是会破 80, 但基本不怎么会撞墙了, 降个 5 度左右

借物表

[1]: ChatGPT