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
评论区