服务器设置

在 Ubuntu 上挂载 NVMe 硬盘

8 卡服务器配有多块 3.84 TB NVMe 数据盘,交付时可能尚未挂载。找到它们,逐块挂载或组成 RAID 0 阵列,并保护好您的数据。

本页内容
  1. 找到您的 NVMe 硬盘
  2. 格式化并挂载单块硬盘
  3. 用 mdadm 将数据盘组成 RAID 0
  4. 检查硬盘健康状况
  5. 备份重要数据
  6. 故障排查

本指南介绍如何在 Ubuntu 上挂载 NVMe 硬盘:找到硬盘,格式化并挂载单块硬盘,或用 mdadm 将它们组成 NVMe RAID 0 阵列,然后检查硬盘健康状况并设置备份。我们的 8 卡服务器配有 8 块 3.84 TB NVMe 数据盘,RTX PRO 6000 服务器则为 4 块。视订单而定,这些数据盘交付时可能尚未挂载。在单卡套餐上,请执行同样的检查:您的 NVMe 存储可能本身就是系统盘。

找到您的 NVMe 硬盘

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
sudo apt install -y nvme-cli
sudo nvme list

系统盘是分区挂载在 /(通常还有 /boot/efi)上的那块硬盘:切勿格式化它。未使用的数据盘没有分区、没有 FSTYPE,也没有挂载点。lsblk 以二进制单位计算容量,因此 3.84 TB 的硬盘会显示为约 3.5T。如果硬盘已经显示 FSTYPE,例如 linux_raid_member 或 ext4,说明它们已经配置过:在做任何改动之前,请先检查 cat /proc/mdstat 和 findmnt。

本页中的 /dev/nvme1n1 等名称只是示例。它们在您的服务器上可能有所不同,甚至每次启动后都可能变化,因此在运行任何会写入磁盘的命令之前,请先对照 lsblk 核对每个名称。

格式化并挂载单块硬盘

  1. 创建文件系统。ext4 是 Ubuntu 的默认文件系统,-m 0 会跳过为 root 预留的 5% 空间,数据卷不需要这部分预留。XFS(sudo mkfs.xfs -L data1 /dev/nvme1n1,来自 xfsprogs 软件包)是存放大文件时常用的替代方案。
    sudo mkfs.ext4 -m 0 -L data1 /dev/nvme1n1
  2. 挂载它:
    sudo mkdir -p /data
    sudo mount /dev/nvme1n1 /data
  3. 设置为永久挂载。UUID 不会随重启而改变,nofail 则能让服务器在硬盘缺失时照常启动:
    uuid=$(sudo blkid -s UUID -o value /dev/nvme1n1)
    echo "UUID=$uuid /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
    sudo findmnt --verify
    sudo systemctl daemon-reload
    如果使用 XFS,请在该行中写 xfs,而不是 ext4。
  4. 无需重启即可测试该条目:
    sudo umount /data
    sudo mount -a
    df -h /data
    您应该会看到 /data,容量约为 3.5T。

如果要分别使用更多硬盘,请以 /data2、/data3 等挂载点重复上述步骤。如果您以非 root 用户身份工作,请用 sudo chown $USER: /data 取得挂载点的所有权。

用 mdadm 将数据盘组成 RAID 0

除了逐块挂载,您也可以把这些硬盘组合起来。RAID 0 会把数据条带化分布到所有硬盘上:得到一个大容量卷(8 块硬盘约 28 TiB),并获得它们的合计吞吐量。但代价很大:只要任何一块硬盘出现故障,整个阵列就会丢失。因此,请只用它存放可以重新下载或重新生成的数据,任何有价值的数据都要在别处保留副本。如果需要承受单块硬盘故障,RAID 10(--level=10)会镜像每个数据块,但可用容量减半。

  1. 安装 mdadm,并只用数据盘创建阵列。本例使用 8 块硬盘;在 RTX PRO 6000 服务器上,请使用 --raid-devices=4 并列出 4 个设备名称:
    sudo apt install -y mdadm
    sudo mdadm --create /dev/md0 --level=0 --raid-devices=8 \
      /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 \
      /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1
    如果 mdadm 警告某块硬盘似乎包含数据,请先停下来,再次检查 lsblk 后再作答。
  2. 检查阵列:cat /proc/mdstat 应显示 md0 : active raid0 并列出所有硬盘,sudo mdadm --detail /dev/md0 应显示 clean 状态。
  3. 保存阵列定义,使其在开机时组装为 /dev/md0:
    sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
    sudo update-initramfs -u
  4. 按照单块硬盘的方法创建文件系统并挂载,只是改用 /dev/md0。mkfs 会从阵列读取条带布局,因此无需额外调优:
    sudo mkfs.ext4 -m 0 -L data /dev/md0
    sudo mkdir -p /data
    uuid=$(sudo blkid -s UUID -o value /dev/md0)
    echo "UUID=$uuid /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
    sudo findmnt --verify && sudo systemctl daemon-reload && sudo mount -a
    df -h /data
    对于 8 块硬盘,您应该会看到约 28T 的容量。

检查硬盘健康状况

sudo apt install -y smartmontools
sudo smartctl -a /dev/nvme1n1
sudo nvme smart-log /dev/nvme1n1

在 smart-log 的输出中,critical_warning 和 media_errors 应为 0,available_spare 应始终高于 available_spare_threshold,percentage_used 则是制造商估算的磨损程度。smartctl 显示相同的数据,并给出 PASSED 或 FAILED 的总体结论。在单卡套餐的虚拟机中,可能无法读取这些数据。如果某块硬盘报告错误,请在控制台提交工单:故障部件会被优先更换。

备份重要数据

我们不备份本地存储;服务结束时,磁盘会被安全擦除,详见数据删除。备份由您自行负责:请把检查点、无法重建的数据集和配置复制到您自己掌控的存储中。数据的传入和传出请参阅 rsync 与 scp。

通过 SSH 运行 rsync,可以把文件夹镜像到您的另一台机器上:

rsync -a --info=progress2 /data/checkpoints/ \
  backup@203.0.113.20:/backups/gpu1/checkpoints/

restic 会保存加密且去重的快照,本例中存放在您自己运行的 SFTP 服务器上:

sudo apt install -y restic
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 init
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 backup /data/checkpoints
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 snapshots
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 \
  restore latest --target /tmp/restore-test

restic 会要求设置仓库密码;请妥善保管,因为没有它就无法读取备份。请用 cron 或 systemd 定时器安排备份,并在真正需要之前,像最后一条命令那样测试一次恢复。

故障排查

  • mkfs 或 mdadm 报“Device or resource busy”错误。该硬盘已被挂载,或已属于某个阵列。请检查 lsblk 和 cat /proc/mdstat。
  • 重启后阵列变成了 /dev/md127。这是因为阵列没有保存到 mdadm.conf 中;请重复 RAID 一节的第 3 步。fstab 条目仍然有效,因为它使用的是文件系统 UUID。
  • 开机时挂载失败。由于设置了 nofail,服务器仍能正常启动。请登录后检查 sudo findmnt --verify 和 sudo journalctl -b | grep -i mount。

问题仍未解决?

请在控制台提交工单,写明服务器、您运行了什么以及错误输出(如有)。工程师 7×24 小时答复。

提交工单

登录 FullGPU

管理您的 GPU 服务器、余额和账单。

首次使用 FullGPU? 创建账户