问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Jetson Orin Nano 扩容 NVMe SSD 配置指南

创作时间:
作者:
@小白创作中心

Jetson Orin Nano 扩容 NVMe SSD 配置指南

引用
CSDN
1.
https://blog.csdn.net/weixin_43837762/article/details/139647951

本文将详细介绍如何在Jetson Orin Nano开发板上配置NVMe SSD,包括硬件安装、系统识别、格式化、挂载以及迁移Docker目录等步骤。通过本文的指导,你将能够充分利用NVMe SSD的高速读写性能,为存储容器镜像和rosbag文件提供更大的空间。

前言

如果你在使用Jetson开发套件,为了存储容器镜像和rosbag文件,你需要一个快速且大容量的存储设备。最好的方式是安装NVMe SSD到Jetson开发套件的载板上。
注意:通过USB 3.x连接SSD并不推荐,因为其读写速度比NVMe(PCIe)接口慢。

一、配置Jetson使用NVMe SSD

选择以下方法之一来设置Jetson的NVMe SSD:

  1. 在全新Jetson开发套件上安装NVMe SSD,并使用运行在Ubuntu PC上的SDK Manager将整个L4T(Jetson Linux)刷入SSD。
  2. 将L4T刷入Jetson的eMMC或microSD卡,然后安装NVMe SSD,并将其配置为ROS2工作区或Docker overlay文件的可选存储。
    第一个选项更简单,但需要重新刷写整个Jetson,会导致现有文件丢失。第二个选项虽然步骤更多,但可以避免重新刷写Jetson。

二、使用步骤

1.SSD安装和自动挂载

  1. 断开Jetson开发套件的电源和所有外设
  2. 将NVMe SSD安装到Jetson开发套件的载板上,确保正确连接并用螺丝固定
  3. 重新插入电源线和外设,并启动Jetson开发套件。

验证系统是否识别到PCI总线上的新内存控制器:

lspci  

典型输出应如下所示:

0007:01:00.0 Non-Volatile memory controller: Marvell Technology Group Ltd. Device 1322 (rev 02)  

使用lsblk命令找到设备名称:

lsblk  

典型输出应如下所示:

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0          7:0    0    16M  1 loop
mmcblk1      179:0    0  59.5G  0 disk
...
nvme0n1      259:0    0 238.5G  0 disk  

识别你的SSD对应设备名称,在我的设备中为nvme0n1

2.格式化SSD,创建挂载点并挂载到文件系统(可以不格式化)

  1. 格式化(可选):
sudo mkfs.ext4 /dev/nvme0n1
#mkfs.ext4格式化并转成ext4格式,可以看情况跳过这一步  
  1. 挂载
sudo mkdir -p /mnt/nova_ssd
#自己选名字,我这里写的nova_ssd
sudo mount /dev/nvme0n1 /mnt/nova_ssd  
  1. 为了确保挂载在启动后仍然有效,需要添加一个条目到fstab文件:
    找到你的SSD的UUID:
lsblk -f  
  1. 编辑fstab文件(vim nano gedit都行,看习惯):
sudo vi /etc/fstab  
  1. 插入以下内容,替换为你的UUID:
UUID=你的UUID /mnt/nova_ssd/ ext4 defaults 0 2  
  1. 更改/mnt/nova_ssd目录的所有权:
sudo chown ${USER}:${USER} /mnt/nova_ssd  
  1. 查看当前USER是谁
whoami  

3.迁移Docker目录到SSD

  1. 将nvidia用户添加到docker组以便使用docker无需sudo:
sudo usermod -aG docker $USER
id nvidia | grep docker
newgrp docker  
  1. 停止Docker服务
sudo systemctl stop docker  
  1. 移动现有的Docker文件夹:
sudo du -csh /var/lib/docker/ && \
    sudo mkdir /mnt/nova_ssd/docker && \
    sudo rsync -axPS /var/lib/docker/ /mnt/nova_ssd/docker/ && \
    sudo du -csh  /mnt/nova_ssd/docker/  
  1. 编辑/etc/docker/daemon.json文件:
sudo vi /etc/docker/daemon.json  

把下面内容复制进去做替换:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia",
    "data-root": "/mnt/nova_ssd/docker"
}  
  1. 重命名旧的Docker数据目录:
sudo mv /var/lib/docker /var/lib/docker.old  
  1. 重新启动Docker守护进程:
sudo systemctl daemon-reload && \
    sudo systemctl restart docker && \
    sudo journalctl -u docker  

3.在SSD上测试Docker

  1. 打开一个终端监控磁盘使用情况:
watch -n1 df  
  1. 在另一个终端开始Docker拉取:
docker pull nvcr.io/nvidia/l4t-base:r35.2.1  

观察/mnt/nova_ssd的磁盘使用情况随着容器镜像的下载和解压而增加

4.最终验证

重新启动Jetson,验证以下内容:

  1. 查找并显示已连接的NVMe SSD的UUID
sudo blkid | grep nvme  

典型输出:

/dev/nvme0n1: UUID="9fc06de1-7cf3-43e2-928a-53a9c03fc5d8" TYPE="ext4"  
  1. 以人类可读的格式显示文件系统的磁盘空间使用情况
df -h  

典型输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk1p1  116G   18G   94G  16% /
...
/dev/nvme0n1    458G  824M  434G   1% /mnt/nova_ssd  
  1. 从Docker的信息输出中筛选包含“Root”字符串的行
docker info | grep Root  

典型输出:

Docker Root Dir: /mnt/nova_ssd/docker  

三.总结

至此,你的Jetson现在已经配置好使用SSD了!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号