# 在 Ubuntu 上挂载 NVMe 硬盘

> 如何在 Ubuntu 上挂载 NVMe 硬盘：用 lsblk 找到这些硬盘，格式化后按 UUID 写入 fstab，或用 mdadm 组建 NVMe RAID 0，另附硬盘健康检查与数据备份方法。

来源：https://fullgpu.com/zh/docs/storage-nvme  
更新日期：2026-10-22  
发布方：FullGPU (https://fullgpu.com/)

本指南介绍如何在 Ubuntu 上挂载 NVMe 硬盘：找到硬盘，格式化并挂载单块硬盘，或用 mdadm 将它们组成 NVMe RAID 0 阵列，然后检查硬盘健康状况并设置备份。我们的 [8 卡服务器](https://fullgpu.com/zh/products/8-gpu-servers)配有 8 块 3.84 TB NVMe 数据盘，[RTX PRO 6000](https://fullgpu.com/zh/gpus/nvidia-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 的总体结论。在单卡套餐的虚拟机中，可能无法读取这些数据。如果某块硬盘报告错误，请在控制台[提交工单](https://fullgpu.com/zh/help/getting-support)：故障部件会被优先更换。

## 备份重要数据

我们不备份本地存储；服务结束时，磁盘会被安全擦除，详见[数据删除](https://fullgpu.com/zh/help/data-deletion)。备份由您自行负责：请把检查点、无法重建的数据集和配置复制到您自己掌控的存储中。数据的传入和传出请参阅 [rsync 与 scp](https://fullgpu.com/zh/docs/remote-development)。

通过 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`。

## 相关页面

- [8 卡 GPU 服务器租用：裸金属 NVIDIA HGX 与 AMD Instinct](https://fullgpu.com/zh/products/8-gpu-servers): 裸金属 8 卡 GPU 服务器租用：可选 NVIDIA HGX B300、B200、H200、H100，AMD MI355X 或 8× RTX PRO 6000。每月含 50 TB 流量，按月租用，付款后 10 分钟内交付。
- [在 GPU 服务器上使用 VS Code Remote SSH 和 Jupyter](https://fullgpu.com/zh/docs/remote-development): 在您的 GPU 服务器上使用 VS Code Remote SSH，通过 SSH 隧道在远程 GPU 上运行 Jupyter，并用 rsync 和 scp 传输数据。采用安全的默认设置，分步讲解。
- [取消租用后，我的数据会怎样？](https://fullgpu.com/zh/help/data-deletion): 取消租用后，我的数据会怎样？您的 GPU 服务器会一直运行到已付费月份结束，随后停用，其磁盘将被安全擦除。请务必提前备份数据，本文逐步介绍具体方法。
- [GPU 服务器快速入门](https://fullgpu.com/zh/docs/quickstart): GPU 服务器快速入门，适用于新交付的 FullGPU 服务器：通过 SSH 登录、检查各张 GPU、更新 Ubuntu 系统，再运行第一个 GPU 容器，每一步都附有检查方法。
