AI服务器存储配置:训练数据盘与系统盘的规划要点
AI服务器的存储配置不是简单加一块大硬盘,而是先分清系统盘、训练数据盘和缓存盘各自负责什么。
系统盘放操作系统和基础软件,容量不用太大;
训练数据集、模型权重和检查点放在独立的NVMe数据盘上,避免写满根分区导致训练中断。
下面按准备、分区挂载、目录规划和验证四步展开,环境以常见Linux发行版和一块未使用的NVMe盘为例。
先确认盘的角色和当前挂载情况
登录服务器后先看清现有磁盘。
执行 lsblk 查看块设备树,执行 df -h 查看已挂载分区的使用率。
重点确认两点:系统盘对应的设备名(通常是 /dev/sda 或 /dev/nvme0n1),以及新增数据盘的设备名(例如 /dev/nvme1n1)。
如果数据盘已经有分区和文件系统,不要直接格式化,先挂载到临时目录查看内容。
只有确认盘是空的或数据可丢弃,才继续下一步。
涉及分区和格式化操作会影响盘上原有数据,操作前应确认设备名没有看错。
分区、格式化并挂载数据盘
假设新增盘为 /dev/nvme1n1,计划整盘使用,不划多个分区。
用 parted 创建GPT分区表和一个主分区:
sudo parted /dev/nvme1n1 --script mklabel gpt
sudo parted /dev/nvme1n1 --script mkpart primary xfs 0% 100%
分区完成后设备名通常是 /dev/nvme1n1p1。
用XFS格式化,XFS对大容量和高并发写入比较友好:
sudo mkfs.xfs /dev/nvme1n1p1
创建挂载点并挂载:
sudo mkdir -p /data
sudo mount /dev/nvme1n1p1 /data
为了让重启后自动挂载,把分区信息写入 /etc/fstab。
推荐用UUID而不是设备名,先执行 blkid /dev/nvme1n1p1 拿到UUID,再在 /etc/fstab 末尾加一行:
UUID=你的UUID /data xfs defaults,noatime 0 2
noatime 可以减少记录文件访问时间的写入,对训练场景有一定帮助。
改完后执行 sudo mount -a 测试,没有报错说明配置可用。
规划训练数据目录和空间预留
挂载好之后不要把所有东西都堆在 /data 根下。
建议按用途分目录,例如 /data/datasets 放原始数据集,/data/checkpoints 放训练检查点,/data/models 放模型权重。
这样后续做备份、清理和磁盘配额都更清楚。
训练任务容易写满磁盘,建议给数据盘留出至少10%到15%的余量,不要等到100%再处理。
如果使用Docker,把数据目录通过 -v /data/datasets:/workspace/datasets 挂载进容器,避免数据写进容器层。
验证挂载结果和实际读写
挂载完成后用 df -h /data 确认容量和挂载点正确,用 findmnt /data 确认挂载参数生效。
接着做一次简单写入测试:
dd if=/dev/zero of=/data/testfile bs=1M count=1024 oflag=direct
rm -f /data/testfile
观察写入速度是否明显低于盘的标称值。
如果速度异常低,检查是否误把数据盘挂到了系统盘分区,或者盘本身存在硬件告警。
更完整的压测可以用 fio,但日常配置验证用上面的命令已经够用。
常见坑位
第一,设备名看错导致格式化系统盘。
执行分区和格式化前,务必用 lsblk 和 blkid 交叉确认。
第二,只执行了 mount 没写 /etc/fstab,重启后数据盘消失,训练任务找不到数据。
第三,把数据集放在系统盘根分区,训练中途根分区写满,系统命令都可能无法执行。
第四,多人共用服务器时没有约定目录,互相覆盖检查点。
建议在 /data 下按用户或项目建子目录,并约定清理规则。
存储配置完成后,建议再检查一次开机自动挂载和目录权限,确认训练账号对数据目录有读写权限,再开始正式任务。