Jetson AGX Orin加装SSD实战:从硬件安装到系统优化全攻略
2026/8/26 4:13:23 网站建设 项目流程

1. 项目概述:为什么需要给Jetson AGX Orin加装SSD?

如果你正在用Nvidia Jetson AGX Orin搞AI开发、机器人或者边缘计算项目,那你大概率已经体会过它的强大算力了。不过,很多朋友在兴奋地跑起第一个YOLO模型或者部署完ROS2节点后,很快就会遇到一个不大不小的瓶颈:存储空间。Orin自带的32GB或64GB eMMC存储,在装完JetPack系统、CUDA、TensorRT、PyTorch等一系列开发环境后,基本就所剩无几了。想存点训练数据、视频流或者模型权重?空间立刻告急。

这就是我们今天要动手解决的核心问题:为Jetson AGX Orin加装一块M.2 NVMe SSD固态硬盘。这绝不仅仅是简单的“扩容”,而是一次对设备潜力的深度释放。想象一下,你的数据集可以直接放在本地高速读取,模型推理的中间缓存不再受限于缓慢的eMMC,系统日志和临时文件的写入也不会成为性能瓶颈。对于需要处理高帧率视频流、进行实时数据记录或者部署大型模型的应用场景,一块高速SSD带来的体验提升是立竿见影的。

这个项目适合所有Jetson AGX Orin的用户,无论是刚入门的新手,还是正在部署生产环境的老鸟。整个过程涉及硬件拆装、系统分区、挂载配置以及性能优化,我会把每一步的原理、操作和踩过的坑都讲清楚。你不需要是硬件专家,只要有一把合适的螺丝刀和一点耐心,跟着做,一两个小时就能搞定。

2. 硬件准备与选型:找到最适合Orin的那块SSD

动手之前,准备工作至关重要。给嵌入式设备加装硬件,选错了型号或者工具,轻则无法识别,重则可能损坏设备。

2.1 确认Jetson AGX Orin的硬件接口

首先,我们必须明确Jetson AGX Orin的扩展能力。以Jetson AGX Orin 64GB模组为例,它内部预留了一个M.2 Key M接口的插槽,专门用于连接NVMe PCIe Gen4 x4的固态硬盘。这是最关键的信息:

  • 接口类型:M.2 Key M。这意味着它支持PCIe通道的NVMe SSD,不支持SATA协议的M.2 SSD(通常是Key B+M口)。
  • 协议与带宽:支持NVMe over PCIe Gen4 x4。理论带宽极高,但实际速度会受Orin平台PCIe控制器和散热条件限制,后文会详述。
  • 尺寸规格:支持2230和2242两种尺寸的SSD。2280尺寸的SSD(最常见的那种)无法直接安装,因为机壳内部空间长度不够。

注意:在购买SSD前,请务必再次确认你的Orin模组型号和载板设计。少数第三方载板可能设计不同。最稳妥的方法是查阅Nvidia官方文档或打开设备外壳直接观察插槽。

2.2 SSD硬盘选型指南

基于以上接口信息,我们选购SSD时需要关注以下几个核心参数:

  1. 尺寸(Form Factor)必须选择2230或2242规格。2230尺寸(22mm宽,30mm长)的SSD更为紧凑,是许多迷你主机和嵌入式设备的首选。2242尺寸(22mm宽,42mm长)的选择会稍多一些。市面上常见的2280尺寸无法安装。
  2. 接口与协议(Interface & Protocol)必须选择NVMe PCIe SSD。确认商品描述中明确写着“NVMe PCIe”,而不是“SATA”。一个简单的辨别方法是看金手指的缺口,NVMe通常是单缺口(M Key)。
  3. 容量(Capacity):建议至少512GB,预算充足直接上1TB。对于AI开发,动辄几十GB的数据集和模型很常见,大容量能让你更从容。Orin的PCIe接口理论上支持大容量SSD。
  4. 性能(Performance):顺序读写速度(如3500MB/s)在这个场景下不是首要考量。Orin作为嵌入式平台,其PCIe通道和散热设计可能无法让高端消费级SSD满血运行。更应关注随机读写性能(IOPS)功耗/发热。一些主打低功耗的OEM盘或企业级边缘盘可能更合适。
  5. 品牌与可靠性:建议选择三星(Samsung)、西部数据(WD)/闪迪(SanDisk)、铠侠(Kioxia)等一线品牌。对于2230规格,三星PM991a、西部数据SN530等是常见且经过验证的选择。

我的实操心得与避坑指南

  • 散热片问题:2230/2242 SSD通常不带散热片。Orin机壳内部空间紧凑,不要自行加装厚重的金属散热片,可能导致无法合盖或挤压其他元件。如果SSD发热较大,可以贴上一片薄薄的导热硅胶垫,将热量传导到金属外壳上。
  • 功耗考量:Orin的载板供电能力是设计好的。虽然PCIe插槽能提供标准供电,但为避免意外,不建议选择那些功耗特别高的“性能猛兽”盘。选择TDP(热设计功耗)在3.5W至5W左右的型号比较稳妥。
  • 购买渠道:2230规格的SSD在零售市场相对少见,很多是笔记本拆机盘或OEM渠道流通。购买时请选择信誉好的商家,并注意鉴别是否为二手或清零盘。2242规格的选择会多一些。

2.3 所需工具清单

除了SSD,你还需要准备以下工具:

  • 螺丝刀套装:必备!需要PH000十字螺丝刀来拆卸Jetson AGX Orin背面的螺丝。螺丝非常小,使用不合适的螺丝刀极易滑丝,一旦滑丝几乎无法修复,务必使用尺寸精确的PH000。
  • 塑料撬棒或拨片:用于无损打开设备外壳的卡扣。可以使用吉他拨片、旧银行卡剪成的塑料片替代。
  • 防静电手环(可选但推荐):在干燥环境下操作精密电子设备,静电是隐形杀手。佩戴防静电手环或将手频繁接触接地的金属物体(如暖气管道、机箱外壳)以释放静电。
  • 导热硅胶垫(可选):如果担心SSD散热,可以准备一片厚度约1mm的导热硅胶垫,尺寸略大于SSD芯片即可。
  • 干净的工作台:确保操作区域宽敞、明亮、无灰尘。

3. 拆机与硬件安装实战

这是整个过程中最需要细心和耐心的一步。请确保在断电状态下操作,并遵循静电防护规范。

3.1 安全拆卸Jetson AGX Orin外壳

  1. 完全断电:拔掉Jetson AGX Orin的所有连接线,包括电源、网线、USB设备等。
  2. 卸下底部螺丝:将设备翻转,底部朝上。你会看到周围有一圈共8颗非常小的十字螺丝。使用PH000螺丝刀,逆时针方向将它们全部拧下。重要:找一个小盒子或磁吸垫存放这些螺丝,它们极易丢失。
  3. 分离底壳:拧下所有螺丝后,底壳(带有散热鳍片的部分)依然通过塑料卡扣与中框固定。这时需要使用塑料撬棒。从设备的一个角开始,将撬棒轻轻插入底壳与中框的缝隙,小心地撬开卡扣。沿着缝隙慢慢移动,依次撬开四周的卡扣。切勿使用蛮力或金属工具,否则会损坏卡扣或划伤外壳。
  4. 暴露内部:当所有卡扣都松开后,就可以将金属底壳轻轻取下了。这时你将看到Jetson AGX Orin的核心模组、散热风扇以及我们此行的目标——那个空闲的M.2插槽。插槽通常位于板子的一侧,由一个很小的固定螺丝固定着。

3.2 安装M.2 NVMe SSD

  1. 找到M.2插槽:它看起来是一个长约3厘米的短插槽,旁边印有“M.2 KEY M”字样。插槽末端有一个螺丝柱,上面可能已经预装了一个“固定螺丝”(也叫“螺丝柱”或“standoff”),或者是一个塑料卡扣。
  2. 安装SSD
    • 将SSD以约30度角插入M.2插槽。注意SSD金手指的缺口要与插槽的凸起对应(NVMe SSD是单缺口)。
    • 轻轻向下按压SSD的另一端,直到SSD的金手指完全没入插槽,并且SSD的PCB板呈水平状态。
    • 使用刚才卸下的(或插槽旁边预留的)那颗小螺丝,将SSD末端的螺丝孔固定在螺丝柱上。拧紧的力度要适中,感觉到有阻力后再稍微加一点力即可,过度拧紧可能损坏SSD或主板上的螺纹。
  3. (可选)添加导热垫:如果你准备了导热硅胶垫,现在可以将其贴在SSD的主控芯片和NAND闪存芯片上。垫片厚度要合适,确保在装上底壳后能被轻微压紧,起到导热作用即可,不要过厚。
  4. 复原设备:将金属底壳对准位置,先让四周的卡扣初步对齐,然后用手掌均匀按压底壳四周,听到轻微的“咔哒”声,表示卡扣已扣回。最后,将8颗底部螺丝重新拧回原位。同样,力度适中,避免滑丝。

至此,硬件安装部分就圆满完成了。整个过程最需要小心的是拆卸外壳和拧螺丝,只要工具合适、动作轻柔,基本不会有风险。

4. 系统配置:让Ubuntu识别并使用新硬盘

硬件装好了,但系统还不知道它的存在。我们需要进入Linux系统,进行分区、格式化和挂载。

4.1 启动系统并识别新硬盘

  1. 将Jetson AGX Orin连接上显示器、键盘鼠标和电源,开机。
  2. 进入Ubuntu桌面后,打开终端(Ctrl+Alt+T)。
  3. 首先,我们需要确认系统是否已经识别到了新的NVMe设备。使用lsblk命令查看所有块设备:
    sudo lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL
    你应该能看到类似下面的输出:
    NAME SIZE FSTYPE MOUNTPOINT MODEL mmcblk0 58.2G ext4 / eMMC ├─mmcblk0p1 58.2G ext4 / └─mmcblk0p2 4.2M vfat /boot/efi nvme0n1 476.9G # 这就是我们新加的NVMe SSD!
    这里nvme0n1就是新硬盘的设备名(如果是第二个NVMe设备,可能是nvme1n1)。它还没有分区(没有p1p2这样的子项),也没有文件系统类型(FSTYPE为空)。

4.2 使用fdisk进行分区

我们将使用fdisk工具为这块新硬盘创建一个分区。这里假设你想把整个硬盘作为一个单独的分区使用,这是最常见和简单的做法。

  1. 使用sudo fdisk /dev/nvme0n1命令进入fdisk交互界面。
  2. 输入g然后回车,创建一个新的GPT分区表。这对于大容量现代硬盘是推荐的选择。
  3. 输入n然后回车,创建一个新分区。接下来会有一系列提示:
    • 分区号:直接回车,使用默认值1。
    • 第一个扇区:直接回车,从默认起始位置开始。
    • 最后一个扇区:直接回车,使用所有剩余空间。
  4. 输入p然后回车,打印分区表,确认分区/dev/nvme0n1p1已经创建,大小正确。
  5. 关键步骤:输入t然后回车,来更改分区类型。分区1应该已经被自动选中。当询问“Hex code”时,输入1然后回车。这会将分区类型设置为“EFI System”,这对于后续可能的多系统引导或某些工具是友好的。当然,如果你确定只做数据盘,也可以保持默认的Linux filesystem类型(代码8300)。
  6. 最后,输入w然后回车,将分区表写入硬盘并退出。这个操作是不可逆的,请务必确认前序步骤正确

4.3 格式化分区并创建文件系统

分区创建好后,需要为其创建一个文件系统,才能存储数据。对于Linux系统,ext4是一个稳定、高效且兼容性好的选择。

使用以下命令将新分区格式化为ext4文件系统:

sudo mkfs.ext4 /dev/nvme0n1p1

系统会提示你确认,输入y并回车。格式化过程很快,几秒钟即可完成。

参数选择解析:为什么选ext4而不是xfsbtrfsext4是Ubuntu的默认文件系统,其日志机制成熟可靠,在意外断电等情况下数据恢复能力较强,且与Jetson系统的工具链(如e2fsck检查工具)集成最好。xfs在处理超大文件时可能有优势,但对我们当前场景提升不大。btrfs功能强大但相对复杂,在嵌入式稳定运行场景下,ext4是更稳妥的选择。

4.4 挂载分区并设置开机自动挂载

现在,我们可以手动挂载分区来测试,并配置系统在每次启动时自动挂载它。

  1. 创建挂载点:选择一个目录作为SSD的访问入口。通常我们会在/media或根目录下创建一个。例如:

    sudo mkdir /data

    这里我选择创建/data目录,简洁明了。

  2. 临时挂载测试

    sudo mount /dev/nvme0n1p1 /data

    运行后,使用df -h命令查看,应该能看到/dev/nvme0n1p1已经挂载到了/data,并且显示了可用空间。

  3. 获取分区的UUID:为了在启动配置中可靠地识别分区,我们需要使用它的UUID(全局唯一标识符),而不是设备名(/dev/nvme0n1p1),因为设备名在某些情况下可能会变。使用以下命令查看:

    sudo blkid /dev/nvme0n1p1

    输出中会包含类似UUID="a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8"的信息。复制这个很长的字符串。

  4. 配置开机自动挂载:编辑系统文件系统表/etc/fstab

    sudo nano /etc/fstab

    在文件末尾添加一行:

    UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 /data ext4 defaults,nofail 0 2
    • UUID=...:替换为你刚才复制的实际UUID。
    • /data:挂载点。
    • ext4:文件系统类型。
    • defaults:使用默认挂载选项(包含读写权限等)。
    • nofail这个选项非常重要!它告诉系统,即使启动时这块硬盘不存在(比如你后来拔掉了),也不要导致系统启动失败。对于可移动或后加的存储设备,务必加上此选项。
    • 0 2:最后的两个数字。第一个0表示不使用dump备份工具;第二个2表示在启动时用fsck检查文件系统的优先级(根目录/是1,其他普通分区是2)。
  5. 测试并应用配置:保存并退出编辑器。为了测试fstab配置是否正确,且不重启系统,可以运行:

    sudo mount -a

    这个命令会挂载fstab中所有未挂载的设备。如果没有报错,再用df -hls /data检查一下,确认挂载成功且目录可访问。

现在,你的SSD已经成为了Jetson系统的一部分。重启设备,SSD也会自动挂载到/data,可以像使用本地文件夹一样使用它了。

5. 性能测试与优化配置

硬盘装上了,系统也认了,但它跑得到底有多快?我们需要进行基准测试,并根据结果进行一些优化,确保其发挥出在Orin平台上的最佳性能。

5.1 使用FIO进行专业磁盘性能测试

dd命令虽然简单,但测试的是顺序读写,对于AI和系统运行中大量的小文件、随机读写场景参考价值有限。我推荐使用更专业的fio(Flexible I/O Tester)工具。

  1. 安装fio

    sudo apt update sudo apt install fio -y
  2. 测试随机读写(4K块,队列深度=64):这是模拟数据库、文件系统元数据操作等真实负载的关键测试。

    • 随机读测试
      sudo fio --name=random-read --ioengine=libaio --iodepth=64 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting --filename=/data/testfile
    • 随机写测试
      sudo fio --name=random-write --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting --filename=/data/testfile

    参数解读

    • --direct=1:绕过系统缓存,测试真实磁盘性能。
    • --iodepth=64:较高的队列深度,能压出SSD的峰值IOPS。
    • --bs=4k:4KB小块,是许多系统操作的典型大小。
    • --size=1G:测试文件大小,1GB足够且不会过度磨损SSD。
    • --runtime=60:测试时长60秒。

    测试完成后,重点关注输出中的iops值(每秒读写操作数)。对于一块不错的NVMe SSD,在Orin上随机读的IOPS达到数万甚至十几万,随机写达到几万是比较正常的。如果结果远低于预期(例如只有几千),可能需要排查问题。

  3. 测试顺序读写(1M块):模拟大文件连续读写,如视频流、数据集加载。

    # 顺序读 sudo fio --name=seq-read --ioengine=libaio --iodepth=32 --rw=read --bs=1M --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting --filename=/data/testfile # 顺序写 sudo fio --name=seq-write --ioengine=libaio --iodepth=32 --rw=write --bs=1M --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting --filename=/data/testfile

    关注输出中的bw(带宽,单位KB/s或MB/s)。受限于Orin的PCIe通道和平台性能,顺序读写速度可能无法达到消费级PC上的峰值(如7000MB/s),能达到1000-2000MB/s就已经是非常好的成绩,足以碾压eMMC。

5.2 性能瓶颈分析与优化建议

在Jetson这样的嵌入式平台上,SSD性能可能无法达到标称值,这是正常的。瓶颈可能来自:

  1. PCIe通道共享:Orin的PCIe通道可能与其他高速外设(如某些载板上的网卡、PCIe插槽)共享带宽。
  2. CPU/SoC性能:NVMe驱动、文件系统处理需要消耗CPU资源,在Orin的ARM CPU上,其单核性能与x86桌面CPU有差距,可能无法完全驱动高端SSD。
  3. 散热与功耗限制:紧凑的机身可能导致SSD在持续高负载下因过热而降速。你可以通过sudo apt install nvme-cli然后使用sudo nvme smart-log /dev/nvme0来查看SSD的温度。

优化建议

  • 调整I/O调度器:Linux内核有不同的I/O调度算法。对于NVMe SSD,通常建议使用none调度器(即Noop),因为它没有额外的排序逻辑,延迟最低。可以使用以下命令查看和设置:
    cat /sys/block/nvme0n1/queue/scheduler # 输出可能为:[mq-deadline] kyber bfq none echo none | sudo tee /sys/block/nvme0n1/queue/scheduler
    要让设置永久生效,可以创建udev规则或修改内核引导参数,但这需要更深入的系统配置,对于一般应用,性能提升感知可能不明显。
  • 启用TRIM支持:TRIM命令帮助SSD回收已删除数据占用的块,维持长期写入性能。ext4文件系统默认支持discard(一种实时TRIM),但可能会对突发写入性能有轻微影响。更推荐使用周期性的fstrim
    sudo fstrim -v /data
    可以将其加入每周的cron任务中:
    sudo crontab -e # 添加一行,例如每周日凌晨3点执行 0 3 * * 0 /sbin/fstrim /data
  • 合理规划数据存放:将需要频繁读写的工作目录、Docker容器存储、数据库文件等设置到SSD挂载点(如/data)下。例如,可以在/data下建立workspacedocker等子目录,并通过软链接或直接修改应用配置来指向它们。

6. 高级应用与系统集成

现在SSD已经稳定运行,我们可以把它深度集成到开发工作流中,最大化利用其性能优势。

6.1 将Docker数据目录迁移至SSD

如果你在Jetson上使用Docker,默认的镜像和容器存储位置在/var/lib/docker,这仍在eMMC上。迁移到SSD可以极大提升容器启动和运行效率。

  1. 停止Docker服务

    sudo systemctl stop docker docker.socket
  2. 备份并迁移现有数据

    sudo cp -rp /var/lib/docker /data/
  3. 修改Docker配置:编辑Docker的daemon配置文件。

    sudo nano /etc/docker/daemon.json

    如果文件不存在,就新建一个。添加以下内容(假设你的SSD挂载在/data):

    { "data-root": "/data/docker" }
  4. 重启Docker并验证

    sudo systemctl start docker sudo docker info | grep "Docker Root Dir"

    输出应该显示Docker Root Dir: /data/docker

重要警告:此操作会改变Docker的所有数据路径。确保/data/docker目录备份或迁移成功后再修改配置。如果操作失误导致Docker无法启动,可以删除/etc/docker/daemon.json文件并恢复原/var/lib/docker目录。

6.2 将conda/pip缓存与虚拟环境置于SSD

Python包管理工具下载的缓存和创建的虚拟环境也会占用大量空间和IO。

  • 修改pip缓存路径:设置环境变量(可以写入~/.bashrc)。

    echo 'export PIP_CACHE_DIR=/data/.cache/pip' >> ~/.bashrc source ~/.bashrc
  • 修改conda环境默认路径:如果你使用conda,可以修改.condarc文件。

    conda config --add envs_dirs /data/anaconda3/envs conda config --add pkgs_dirs /data/anaconda3/pkgs

    之后新创建的conda环境就会在SSD上了。

6.3 为ROS2工作空间提供高速存储

对于机器人开发者,ROS2工作空间在编译时会产生大量中间文件,读写非常频繁。

  1. 直接在SSD上创建你的ROS2工作空间:

    mkdir -p /data/ros2_ws/src cd /data/ros2_ws
  2. 从此在这个目录下进行colcon build等操作,编译速度会有显著提升,尤其是首次编译和清理后重新编译。

6.4 使用SSD作为交换分区(谨慎操作)

如果你的应用内存消耗极大,可以考虑用SSD的一部分空间创建交换文件,作为虚拟内存。这比使用eMMC上的交换文件快得多。

  1. 创建交换文件(例如8GB):

    sudo fallocate -l 8G /data/swapfile sudo chmod 600 /data/swapfile sudo mkswap /data/swapfile
  2. 启用交换文件

    sudo swapon /data/swapfile
  3. 开机自动启用:在/etc/fstab中添加一行:

    /data/swapfile none swap sw 0 0

注意:频繁使用交换分区会显著增加SSD的写入量,可能影响其寿命。仅建议在物理内存确实不足且应用对性能不极度敏感的情况下作为临时解决方案。优先考虑优化应用内存使用。

7. 故障排除与常见问题

即使按照步骤操作,你也可能会遇到一些问题。这里汇总了一些常见情况及其解决方法。

7.1 系统无法识别NVMe SSD

  • 症状lsblksudo lspci | grep -i nvme命令看不到新硬盘。
  • 排查步骤
    1. 硬件连接:首先关机断电,重新打开外壳,检查SSD是否完全插入插槽,固定螺丝是否拧紧。金手指是否有污渍?可以尝试用橡皮轻轻擦拭后重新安装。
    2. BIOS/UEFI设置:Jetson AGX Orin的启动配置中,可能需要启用NVMe控制器。进入启动引导界面(开机时按EscDel键,具体按键因载板而异),在高级设置或PCIe配置中,查看NVMe控制器是否处于Enabled状态。
    3. 内核驱动:运行dmesg | grep -i nvme查看内核启动日志。如果看到关于NVMe的错误信息,可能是内核模块未加载。尝试手动加载:sudo modprobe nvme。如果模块不存在,可能需要更新你的JetPack SDK或内核。

7.2 SSD性能远低于预期

  • 症状fio测试结果非常低,例如顺序读写只有几百MB/s,随机IOPS只有几千。
  • 排查步骤
    1. 散热问题:运行sudo nvme smart-log /dev/nvme0 | grep temperature。如果温度持续高于70°C,很可能因过热降速。确保设备通风良好,可以考虑在SSD与外壳间添加导热垫。
    2. PCIe链路速度:运行sudo lspci -vv -s $(lspci | grep -i nvme | awk '{print $1}') | grep -i LnkSta。查看“Speed”和“Width”。理想状态应为“Speed 8GT/s” (PCIe Gen3) 或 “16GT/s” (PCIe Gen4), “Width x4”。如果显示为x2或x1,速度减半或降至1/4,可能是硬件连接问题或BIOS设置限制。
    3. 电源管理:检查PCIe设备的电源管理是否限制了性能。可以尝试在/etc/default/grub文件中的GRUB_CMDLINE_LINUX_DEFAULT行添加pcie_aspm=off参数,然后运行sudo update-grub并重启。但这可能会略微增加功耗。
    4. SSD本身问题:不排除SSD有质量问题。可以尝试在x86电脑上测试同一块SSD,对比性能。

7.3 开机时出现“磁盘检查”或“emergency mode”

  • 症状:系统启动变慢,甚至进入紧急模式,提示无法挂载/data
  • 原因:通常是/etc/fstab文件配置错误,特别是UUID写错,或者没有添加nofail选项导致系统在硬盘未就绪时无限等待。
  • 解决方法
    1. 在启动时,如果进入紧急模式,会提供一个root shell。
    2. 首先,检查你的SSD设备名是否还是nvme0n1p1lsblk
    3. 检查你输入的UUID是否正确:blkid /dev/nvme0n1p1
    4. 编辑/etc/fstab文件进行修正:nano /etc/fstab
    5. 务必确认添加了nofail选项
    6. 修正后,运行mount -a测试,无误后重启。

7.4 权限问题:无法在/data目录下写入文件

  • 症状:挂载成功后,普通用户无法在/data目录下创建文件或文件夹,提示“Permission denied”。
  • 原因ext4文件系统挂载后,目录的属主和权限默认是root。
  • 解决方法:将挂载点的所有权更改给你的用户(假设你的用户名是jetson):
    sudo chown -R jetson:jetson /data
    或者,如果你希望所有用户都能读写,可以更改目录权限(安全性较低):
    sudo chmod -R 777 /data # 不推荐在生产环境使用
    更精细的做法是,在/etc/fstab中使用特定的挂载选项,如uid=1000,gid=1000(1000通常是第一个创建用户的ID),可以在挂载时直接设置属主。

整个项目从硬件拆装到系统调优,到这里就全部完成了。我个人最大的体会是,给Jetson AGX Orin加装SSD,其价值远超简单的容量提升。它从根本上改变了设备的I/O能力,让数据密集型应用从“能跑”变成了“跑得畅快”。尤其是在处理连续的视频流、频繁读写模型文件或者运行需要大量临时空间的编译任务时,那种流畅感的提升是实实在在的。最后一个小建议,定期用fstrim维护一下你的SSD,就像给车做保养一样,能让它长久保持最佳状态。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询