跳到主要内容

NVMe

本节介绍在树莓派上如何使用 NVMe 硬盘功能,为后续项目开发奠定基础。

注意:在使用此功能前需先启用 PCIe 接口

启用 PCIe 接口

  • 启用 PCIe 接口(PCIe gen2 默认为启用状态)
    • 进入 config.txt 文件

      sudo nano /boot/firmware/config.txt
    • PCIe 默认是 gen2,如果尚未启用 PCIe,则在 config.txt 中添加

      dtparam=pciex1
    • 修改之后重启树莓派,就可以识别到设备了

      sudo reboot
    • 重启后查看 PCIe 识别情况(不同的模组输出的结果不同)

      lspci

      查询连接的 PCIe 设备

NVMe 硬盘操作

格式化硬盘

  • 如果尚未启用 PCIe 接口,先启用 PCIe 接口

  • 查看支持的文件系统类型,输入 sudo mkfs. 后按 Tab 键,可以看到可用的文件系统后缀。

    sudo mkfs.

    查询支持的格式

  • 列出所有硬盘

    lsblk

    列出所有硬盘

    确认目标分区

    格式化会清除目标分区中的数据。此步骤适用于已存在的目标分区;如果尚未创建分区,请先完成“硬盘分区”。确认 /dev/nvme0n1p1 是需要格式化的分区,并在执行前完成数据备份。

  • 假设要将 /dev/nvme0n1p1 格式化为 ext4 文件格式,执行以下命令:

    sudo mkfs.ext4 /dev/nvme0n1p1

    格式化硬盘


硬盘分区

  • 如果尚未启用 PCIe 接口,先启用 PCIe 接口

  • 列出所有硬盘(如果需要查看详细信息,执行 sudo fdisk -l

    lsblk

    列出所有硬盘

  • 假设要将 /dev/nvme0n1 重新分区,执行以下命令(注意:设备号是总设备号,不要添加 p1p1 表示分区):

    sudo fdisk /dev/nvme0n1
  • 添加分区后执行 n,最后执行 w 保存并退出。

  • fdisk 功能说明:

    • n 新建分区
    • q 不保存退出
    • p 打印分区表
    • m 打印选择菜单
    • d 删除分区
    • w 保存退出
    • t 修改 ID 号

手动挂载

  • 如果尚未启用 PCIe 接口,先启用 PCIe 接口

  • 确认需要挂载的目录。如果当前目录中没有 toshiba 文件夹,使用以下命令创建:

    sudo mkdir toshiba
  • 列出所有硬盘(如果需要查看详细信息,执行 sudo fdisk -l

    lsblk

    列出所有硬盘

  • 假设要将 /dev/nvme0n1 挂载到当前目录下的 toshiba 文件夹

    sudo mount /dev/nvme0n1p1 ./toshiba
  • 查看文件系统磁盘空间使用情况。

    df -h

开机自动挂载

  • 注意:自动挂载只有在不作为系统盘时使用,仅作为扩展磁盘时进行此类配置

  • 如果尚未启用 PCIe 接口,先启用 PCIe 接口

  • 修改 fstab 文件

    sudo nano /etc/fstab
  • 在文件最下方添加以下内容(/dev/nvme0n1p1 为设备名,/home/pi/toshiba 为挂载目录,ext4 为文件系统类型,defaults 为默认挂载选项):

    /dev/nvme0n1p1 /home/pi/toshiba ext4 defaults 0 0
  • 先执行以下命令检查挂载配置。确认无误后再重启,否则挂载失败可能导致系统无法启动。

    sudo mount -a
  • 确认挂载正常后,重启树莓派。

    sudo reboot
  • 重启后查看挂载情况

    lsblk

读写测试

  • 如果尚未启用 PCIe 接口,先启用 PCIe 接口

  • 查看挂载情况

    lsblk
  • 确认挂载正常后,进入挂载目录(这里使用 /home/pi/toshiba)。

    cd /home/pi/toshiba
  • 拷贝树莓派内存内容到硬盘(写)

    # 释放内存再进行写测试
    sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    sudo dd if=/dev/zero of=./test_write count=2000 bs=1024k

    写测试结果

  • 拷贝硬盘内容到树莓派内存(读)

    # 释放内存再进行读测试
    sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    sudo dd if=./test_write of=/dev/null count=2000 bs=1024k

    读测试结果

  • 注意:不同的卡以及环境在树莓派上测试效果不同,部分硬盘速率受限,如果想要测试准确的性能使用 PC 电脑测试