Jetson Orin nano 扩容 NVMe SSD 配置指南

在这里插入图片描述


前言

如果你在使用 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 了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值