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
-
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重新分区,执行以下命令(注意:设备号是总设备号,不要添加p1,p1表示分区):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 电脑测试