拿到Jetson TX2 NX开发板的第一时间,很多开发者都会面临一个关键选择:继续使用板载的eMMC存储,还是将系统迁移到更强大的固态硬盘?对于需要处理大量数据、运行复杂模型的AI开发者来说,这个决定可能直接影响项目的成败。本文将带你完整走过从eMMC到SSD的系统迁移全过程,不仅提升I/O性能,还能获得更大的存储空间。
在开始系统迁移前,确保你已准备好以下硬件:
软件方面需要:
rootOnNVMe脚本(GitHub开源项目)提示:选择SSD时,优先考虑工业级产品,它们更能适应嵌入式开发环境中的长时间高负载运行。
连接SSD到Jetson TX2 NX后,首先需要正确识别和格式化存储设备。通过SSH或直接连接终端执行:
bash复制sudo fdisk -l
确认SSD的设备标识(通常是/dev/nvme0n1或/dev/sda)。接下来使用parted工具进行分区:
bash复制sudo parted /dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) quit
然后创建ext4文件系统:
bash复制sudo mkfs.ext4 /dev/nvme0n1p1
为验证分区成功,可以临时挂载检查:
bash复制sudo mkdir /mnt/ssd
sudo mount /dev/nvme0n1p1 /mnt/ssd
df -h
sudo umount /mnt/ssd
rootOnNVMe是专为Jetson系列设计的开源工具,能完整克隆系统到外部存储。执行以下命令获取脚本:
bash复制git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
关键迁移步骤:
复制根文件系统:
bash复制sudo ./copy-rootfs-ssd.sh
这个过程可能需要15-30分钟,取决于eMMC和SSD的速度。
配置启动服务:
bash复制sudo ./setup-service.sh
这个脚本会修改启动配置,确保系统从SSD引导。
验证迁移结果:
bash复制sudo reboot
重启后执行df -h,确认根分区已变为SSD设备。
迁移完成后,可以通过以下方式进一步优化SSD性能:
I/O调度器调整:
bash复制echo deadline | sudo tee /sys/block/nvme0n1/queue/scheduler
文件系统挂载选项优化:
修改/etc/fstab,为SSD添加以下挂载参数:
code复制noatime,nodiratime,discard,errors=remount-ro
常见问题解决方案:
jetson-expand工具扩展根分区性能对比测试结果:
| 指标 | eMMC | SATA SSD | NVMe SSD |
|---|---|---|---|
| 顺序读取(MB/s) | 280 | 520 | 2200 |
| 4K随机读写(IOPS) | 8000 | 35000 | 150000 |
| 延迟(ms) | 1.2 | 0.3 | 0.05 |
为充分发挥SSD潜力,建议进行以下配置:
TRIM定时任务:
bash复制sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
SWAP空间优化:
如果内存不足,可以在SSD上创建交换文件:
bash复制sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
定期健康检查:
bash复制sudo smartctl -a /dev/nvme0n1
在最近的一个机器人视觉项目中,迁移到NVMe SSD后,模型加载时间从原来的12秒缩短到2秒,数据处理吞吐量提升了4倍。这种性能提升让实时处理4K视频流成为可能,而这是eMMC存储根本无法实现的。