跳到主要内容

NVMe

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

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

启用 PCIe 接口

  • 启用 PCIe gen3 接口(PCIe gen2 默认为启用状态)
    • 进入 config.txt 文件(根据你的系统版本选择对应路径)
      sudo nano /boot/config.txt            # 部分旧版本系统在这个路径
      sudo nano /boot/firmware/config.txt   # 新版系统基本都在这个路径
    • PCIE 默认是 gen2,如果需要启用 PCIE gen3, 则在 config.txt 中添加
      dtparam=pciex1_gen=3
    • 修改之后重启树莓派,就可以识别到设备了
      sudo reboot
    • 重启后查看 PCIe 识别情况
      lspci
      查询连接的 PCIe 设备

NVMe 硬盘操作

格式化硬盘

  • 若没有启用 PCIe 接口的话,先启用 PCIe 接口
  • 查看支持的格式,输入 sudo mkfs. 后,按 tab 按键 可以看到很多种不同的后缀名,不同的后缀名对应允许格式化的格式
    sudo mkfs.
    查询支持的格式
  • 列出所有硬盘
    lsblk
    列出所有硬盘
  • 假设要将 /dev/nvme0n1p1 格式化为 ext4 文件格式,就是执行
    sudo mkfs.ext4 /dev/nvme0n1p1
    列出所有硬盘

硬盘分区

  • 若没有启用 PCIe 接口的话,先启用 PCIe 接口
  • 列出所有硬盘(如果想看到详细信息执行sudo fdisk -l
    lsblk
    列出所有硬盘
  • 假设要将 /dev/nvme0n1 重新分区,就是执行以下指令(注意:设备号是总设备号,不要添加 p1,那只是一个分区而已)
    sudo fdisk /dev/nvme0n1
  • 添加分区执行 n 即可,最后 w 保存退出
  • fdisk 功能说明:
    • n 新建分区
    • q 不保存退出
    • p 打印分区表
    • m 打印选择菜单
    • d 删除分区
    • w 保存退出
    • t 修改 ID 号

手动挂载

  • 若没有启用 PCIe 接口的话,先启用 PCIe 接口
  • 确认好需要挂载的目录,若路径不存在先创建路径中缺少的文件夹(例如要挂载到当前文件夹的toshiba文件夹下,当前目录若没有 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 电脑测试