806 GPU 服务器又寄了,只能再次重装系统,记录一下这次重装系统后的各项基础运维配置。

这台服务器的硬件配置为:500G 固态硬盘(SSD)3 块 8T 机械硬盘(HDD) 以及 4 张 RTX 3090 显卡
如果将 /home 目录保留在默认的固态盘中,空间很快就会耗尽。因此需要对磁盘进行重新规划:挂载一块 8T 机械盘作为新的 /home 目录,一块作为公用数据盘存放模型、公共数据集等(挂载为 /data1),最后一块最为备用存储(挂载为 /data2)。


1. 磁盘初始化与自动挂载

在修改挂载配置前,首先需要备份原有用户数据。

1.1 数据检查与迁移

先将目标硬盘挂载到临时目录,以确认盘内是否存在历史数据,并进行数据迁移:

# 挂载到临时目录进行检查
sudo mkdir -p /mnt/sdc
sudo mount /dev/sdc1 /mnt/sdc
ls -lah /mnt/sdc

# 备份当前系统的 /home 目录(非常重要)
sudo cp -a /home /home.bak

# 如果新盘是空的,将当前 /home 的全部内容同步到新盘
sudo rsync -aXS /home/ /mnt/sdc/

# 迁移完成,卸载临时挂载
sudo umount /mnt/sdc

1.2 配置 fstab 自动挂载

为了确保系统每次重启后磁盘都能自动挂载,需要获取硬盘分区 UUID 并写入相关配置文件。

# 查询 sdc 的分区的 UUID (sdb, sdd 同理)
sudo blkid /dev/sdc1

编辑自动挂载配置文件:

sudo vim /etc/fstab

在文件末尾添加以下内容(注意:如果 blkid 显示文件系统类型并非 ext4,比如是 xfs,请将下面配置中的 ext4 替换为实际类型):

UUID=<sdc1的UUID>  /home   ext4  defaults  0  2
UUID=<sdb1的UUID>  /data1  ext4  defaults  0  2
UUID=<sdd1的UUID>  /data2  ext4  defaults  0  2

1.3 生效与挂载验证

在应用新的挂载点前,先改名旧的 /home 目录并为各个新磁盘创建好挂载点:

# 重命名旧的 /home 备用
sudo mv /home /home_old

# 创建需要的挂载点
sudo mkdir -p /home /data1 /data2

# 加载并挂载 fstab 中配置的所有内容
sudo mount -a

# 检查磁盘和挂载状态
df -h | grep -E '/home|/data'
ls -ld /home

2. 系统网络与安全配置

2.1 开启 UFW 防火墙

防止服务器再被挖矿,这次开防火墙。
非常重要:在开启防火墙前,要首先放行 SSH 的 22 端口,以免因连接中断导致自己被拦截在服务器外!

# 优先开放 22 端口保证 SSH 正常登录
sudo ufw allow 22/tcp

# 开启防火墙,并设置开机自启
sudo ufw enable
sudo systemctl enable ufw
sudo systemctl start ufw

# 检查防火墙详细运行状态
sudo ufw status verbose

2.2 禁用图形化界面 (GUI) 及远程桌面服务

为了防止再发生某些人用 VNC 连接服务器,并且产生了很多僵尸进程,这次禁用 GUI。

首先,检查机器上目前安装了哪些常见的远程桌面服务:

systemctl list-unit-files | grep -Ei 'vnc|xrdp|vino|wayvnc|tigervnc|tightvnc|realvnc|nomachine'

如果找到了此类服务,可以依次停止并禁用:

# 停止并禁用 VNC / XRDP 常见服务
sudo systemctl disable --now xrdp
sudo systemctl disable --now xrdp-sesman
sudo systemctl disable --now vncserver
sudo systemctl disable --now tigervncserver
sudo systemctl disable --now tightvncserver
sudo systemctl disable --now vino-server
sudo systemctl disable --now wayvnc

如果想更彻底,可以直接卸载:

sudo apt remove --purge -y xrdp tigervnc-standalone-server tigervnc-common tightvncserver vino
sudo apt autoremove -y

将本机启动改为纯命令行模式:

sudo systemctl set-default multi-user.target

(注:如果需恢复启动桌面环境,可重新执行 sudo systemctl set-default graphical.target)


3. 共享数据盘权限管理

/data1 划分为所有开发者的公共数据盘。为了避免大家不小心在根目录下乱写乱删,需要通过合理的权限设置对数据盘进行规范。

总体策略:限制 /data1 根目录仅 root 用户可写,而在根目录下建立不同的公用子目录,并授予特别权限(Sticky Bit),让所有人在特定目录下能够自由写入,但互相不能跨用户随意删除彼此的文件。

# 限定根目录 /data1 属主为 root,他人仅能读和执行
sudo chown root:root /data1
sudo chmod 755 /data1

# 假设我们需要创建这些公共资源主目录
sudo mkdir -p /data1/datasets /data1/models /data1/projects /data1/public /data1/scratch

# 设定属主,并赋予 1777 特殊权限(rwxrwxrwt)
# 1777 中的 1 为 Sticky Bit,使得用户能在目录中建文件,但无权删除他人文件
sudo chown root:root /data1/datasets /data1/models /data1/projects /data1/public /data1/scratch
sudo chmod 1777 /data1/datasets /data1/models /data1/projects /data1/public /data1/scratch

验证操作结果:

ls -ld /data1 /data1/*

如果配置无误,终端中将类似输出如下带有前缀 drwxrwxrwt 的信息:

drwxr-xr-x  root root /data1
drwxrwxrwt  root root /data1/datasets
drwxrwxrwt  root root /data1/models
drwxrwxrwt  root root /data1/projects
drwxrwxrwt  root root /data1/public
drwxrwxrwt  root root /data1/scratch