新品 NVIDIA B300 · 288 GB HBM3e 服务器 — 起价 $4,019/月 每块 GPU

查看 B300

文档 · 存储

本地 NVMe、RAID 0 与数据迁移

服务器中的 NVMe 驱动器是速度很快的本地存储,适合存放数据集、检查点和模型缓存。只需设置一次,并把任何不能丢失的数据额外保存一份。

更新于 4 分钟阅读

识别磁盘

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
findmnt /                  # 承载操作系统的设备
sudo apt install -y nvme-cli
sudo nvme list             # 每个 NVMe 驱动器的型号、序列号和容量

NVMe 驱动器会显示为 nvme0n1、nvme1n1 等,它们的分区则显示为 nvme0n1p1、nvme0n1p2。一个没有分区、没有文件系统(FSTYPE)、也没有挂载点的驱动器就是未使用的。findmnt / 显示的那个设备、分区或 RAID 设备承载着系统:不要动它,也不要动它背后的任何 RAID 成员。

格式化会清空驱动器上的数据。运行 mkfs、wipefs 或 mdadm --create 之前,请务必再三核对设备名称,并且绝不要把它们指向系统盘。

对数据磁盘进行分区并格式化

DISK=/dev/nvme1n1                                  # 您刚刚识别出的那个未使用的驱动器
sudo parted -s $DISK mklabel gpt mkpart data 0% 100%
sudo udevadm settle
sudo mkfs.ext4 -L data ${DISK}p1
# 或者使用 XFS:sudo apt install -y xfsprogs && sudo mkfs.xfs -L data ${DISK}p1

ext4 是 Ubuntu 的默认选择,也是稳妥的选择。XFS 在处理超大文件和并行写入方面表现出色,常用于数据集和检查点。两者都可以,选一个继续往下走就好。

在 /etc/fstab 中按 UUID 挂载

sudo mkdir -p /data
UUID=$(sudo blkid -s UUID -o value ${DISK}p1)
echo "UUID=$UUID  /data  ext4  defaults,noatime,nofail  0  2" | sudo tee -a /etc/fstab
sudo findmnt --verify
sudo systemctl daemon-reload
sudo mount -a
findmnt /data
sudo chown $USER:$USER /data
  • 如果用 XFS,请写 xfs 和 0 0,而不是 ext4 和 0 2。
  • 像 nvme1n1 这样的设备名称在每次重启后可能发生变化;UUID 则不会。
  • nofail 能让服务器在驱动器缺失的情况下也顺利完成启动,这一点对于只能通过 SSH 访问的机器尤为重要。
  • noatime 可以在每次读取文件时跳过一次元数据写入。
  • 每次编辑 /etc/fstab 之后,都运行一次 sudo findmnt --verify。

可选:跨 NVMe 驱动器组建 RAID 0

如果您的服务器有多块未使用的 NVMe 驱动器,RAID 0 可以把它们条带化组合成一个更大、更快的卷。

RAID 0 没有冗余:只要有一块驱动器出现故障,整个阵列的数据就会丢失。请只用它存放可以重新下载或重新生成的数据,例如数据集、缓存和临时空间,并把检查点和结果另外备份一份。

sudo apt install -y mdadm xfsprogs
sudo wipefs -a /dev/nvme1n1 /dev/nvme2n1            # 会清空这两块驱动器
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1
sudo mkfs.xfs -L scratch /dev/md0
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
sudo mkdir -p /scratch
echo "UUID=$(sudo blkid -s UUID -o value /dev/md0)  /scratch  xfs  defaults,noatime,nofail  0  0" | sudo tee -a /etc/fstab
sudo systemctl daemon-reload && sudo mount -a
cat /proc/mdstat

根据驱动器数量调整 --raid-devices 参数和设备列表。单块 NVMe 驱动器本身已经很快;条带化最能带来提升的场景是大块的顺序读写,比如流式读取一个大型数据集。

数据的迁入与迁出

# 从您的电脑或另一台服务器
rsync -avhP ./dataset/ gpu1:/data/dataset/

# 服务器到服务器:在新服务器上运行,需要一个旧服务器已经信任的 SSH 密钥
rsync -avhP alice@203.0.113.10:/data/ /data/

# 从 Hugging Face 下载模型,直接存到 NVMe 上
curl -LsSf https://hf.co/cli/install.sh | bash      # 安装 hf 命令
export HF_HOME=/data/hf
hf download Qwen/Qwen3-4B

# 大量小文件:先打包,再整体传输一个归档文件
sudo apt install -y zstd
tar -I 'zstd -T0' -cf dataset.tar.zst dataset/
tar -I zstd -xf dataset.tar.zst

通过 SSH 的传输是端到端加密的,rsync -P 会从上次中断的地方继续。对于数以百万计的小文件,打包成一个归档文件传输,速度会比逐个传输文件快得多。hf CLI 也可以通过 hf auth login 处理需要授权的模型;更多关于 SSH 传输的内容见 SSH 访问。

用 rclone 搭配 S3 兼容存储

对于需要重复使用的备份和数据集,S3 兼容的对象存储配合 rclone 效果很好。各 Linux 发行版软件源中的 rclone 版本往往比较旧,建议使用官方安装脚本:

sudo -v ; curl https://rclone.org/install.sh | sudo bash
rclone config        # n = 新建远程存储,命名为 s3remote,存储类型选 s3,然后依次填写服务商、密钥和端点
rclone lsd s3remote:                                   # 列出所有存储桶

rclone copy /data/checkpoints s3remote:my-bucket/checkpoints --progress --transfers 16
rclone check /data/checkpoints s3remote:my-bucket/checkpoints   # 比较两侧的内容是否一致
rclone copy s3remote:my-bucket/datasets/web /data/datasets/web --progress

rclone copy 不会删除任何内容。rclone sync 会让目标和源保持完全一致,并删除目标中源里没有的内容,所以第一次运行时最好加上 --dry-run。对于敏感数据,rclone 的 crypt remote 会在文件离开服务器之前先对它们加密。

在租期结束前完成备份

如果租期没有续费,服务器会在付费月份结束时停止运行,磁盘也会被清空。制定计划时,请假定那个日期之后服务器上不会留下任何东西。

  1. 列出必须保留的内容:检查点、微调后的权重、您生成的数据集、配置文件、notebook、日志、脚本以及 Docker 数据卷(docker volume ls)。
  2. 在结束日期前几天,就把它们复制到对象存储或另一台机器上,不要拖到最后一小时才做。
  3. 用 rclone check,或者用下面的校验和方式来验证复制结果。
  4. 如果您仍然需要这台服务器,请在租期结束前完成续费(参见账单与付款)。
cd /data
find checkpoints -type f -print0 | xargs -0 sha256sum > checkpoints.sha256
rclone copy checkpoints.sha256 s3remote:my-bucket/
# 在其他地方恢复之后:
sha256sum -c checkpoints.sha256

如果要更换 GPU 型号或配置规模,您需要下单新的配置,并自己迁移数据。只要两台服务器同时在运行,用同样的工具就可以把数据复制过去。

对这篇指南有疑问?

请通过联系表单告诉我们您使用的 GPU、运行的命令以及得到的输出结果。

客户中心

登录 CryptGPU

您的订单、账单和服务器,一站式管理。

还没有 CryptGPU 账户?

账户是在结账时创建的:先选择您的服务器和软件,然后在首次下单的账户步骤中创建账户。

部署服务器