服务器设置
在 Ubuntu 上挂载 NVMe 硬盘
8 卡服务器配有多块 3.84 TB NVMe 数据盘,交付时可能尚未挂载。找到它们,逐块挂载或组成 RAID 0 阵列,并保护好您的数据。
本指南介绍如何在 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 核对每个名称。
格式化并挂载单块硬盘
- 创建文件系统。ext4 是 Ubuntu 的默认文件系统,
会跳过为 root 预留的 5% 空间,数据卷不需要这部分预留。XFS(-m 0 sudo mkfs.xfs,来自 xfsprogs 软件包)是存放大文件时常用的替代方案。-L data1 /dev/nvme1n1sudo mkfs.ext4 -m 0 -L data1 /dev/nvme1n1 - 挂载它:
sudo mkdir -p /data sudo mount /dev/nvme1n1 /data - 设置为永久挂载。UUID 不会随重启而改变,
nofail则能让服务器在硬盘缺失时照常启动:
如果使用 XFS,请在该行中写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-reloadxfs,而不是ext4。 - 无需重启即可测试该条目:
您应该会看到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()会镜像每个数据块,但可用容量减半。
- 安装 mdadm,并只用数据盘创建阵列。本例使用 8 块硬盘;在 RTX PRO 6000 服务器上,请使用
并列出 4 个设备名称:--raid-devices=4
如果 mdadm 警告某块硬盘似乎包含数据,请先停下来,再次检查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/nvme8n1lsblk后再作答。 - 检查阵列:
cat /proc/mdstat应显示md0 : active raid0并列出所有硬盘,sudo mdadm应显示 clean 状态。--detail /dev/md0 - 保存阵列定义,使其在开机时组装为
/dev/md0:sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf sudo update-initramfs -u - 按照单块硬盘的方法创建文件系统并挂载,只是改用
/dev/md0。mkfs 会从阵列读取条带布局,因此无需额外调优:
对于 8 块硬盘,您应该会看到约 28T 的容量。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
检查硬盘健康状况
sudo apt install -y smartmontools
sudo smartctl -a /dev/nvme1n1
sudo nvme smart-log /dev/nvme1n1
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 小时答复。