存储#
存储服务支持自动设置和配置连接到 Jetson 设备的外部存储(如硬盘),并作为名为 jetson-storage 的 systemd 服务提供。在启用或启动 jetson-storage 服务之前,您可能需要首先在自定义中自定义一些配置。并且在您通过以下方式启用 jetson-storage 服务后,该服务会在下次启动时自动检测并格式化可用的存储:
sudo systemctl enable jetson-storage
然后在后续启动时,它会根据配置文件 /opt/nvidia/jetson-configs/jetson-storage.conf 和 /opt/nvidia/jetson-configs/storage-quota.json 配置存储设备,直到您通过运行以下命令禁用该服务:
sudo systemctl disable jetson-storage
注意
存储驱动器将挂载在 /data 下。如果根文件系统中存在现有的 /data 目录,则其内容将被挂载的存储隐藏。建议在启动存储服务之前删除 /data 中的任何现有内容,因为这些内容将继续占用根文件系统中的磁盘空间。
jetson-storage 服务将创建一个从 /var/lib/docker 到 /data/docker-volume 的符号链接。如果您在启动 jetson-storage 服务之前已经运行了 docker,则 docker 服务将被停止,并且所有容器都将被终止。您可以手动通过 “systemctl start docker” 启动 docker 服务,或者重启您的设备,以便该服务可以再次启动并运行。原始 /var/lib/docker 目录中的现有文件将由 jetson-storage 服务移动到 /data/docker-volume,因此您先前下载的 docker 镜像将被保留。
注意
当删除软件包 nvidia-jetson-services 时,符号链接 /var/lib/docker 将被删除。重新启动 docker 服务时,将创建一个新的 /var/lib/docker 目录,因此您将无法访问 /data/docker-volume 中的任何先前数据。
恢复出厂设置#
如果您想使用先前被存储服务使用过的驱动器,并希望擦除旧数据并像新驱动器一样使用它,请重置磁盘标签(请参见以下示例)并重新启动存储服务,以便它将格式化驱动器并重新设置存储的文件系统。
禁用 LVM 时#
SATA: sudo e2label /dev/sda1 ""
NVMe: sudo e2label /dev/nvme0n1p1 ""
启用 LVM 时#
输入命令 sudo pvdisplay
以检查您的存储是否已格式化为 JPS 的 LVM 卷。如果您看到如下输出,并且 VG Name 是 jetson-vg,您将需要先删除 LVM
--- Physical volume ---
PV Name /dev/sda1
VG Name jetson-vg
PV Size <14.96 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 3829
Free PE 0
Allocated PE 3829
PV UUID J5Dgo3-205q-xLA9-z5QF-C7On-bHSK-mA9c1
输入命令 sudo vgremove -y jetson-vg
以删除 VG jetson-vg。然后通过以下方式删除 PV
SATA: sudo pvremove -y /dev/sda1
NVMe: sudo pvremove -y /dev/nvme0n1p1
在上面的示例中,将 /dev/sda1 和 /dev/nvme0n1p1 替换为您的存储路径。如果您有多个存储,则需要为每个存储执行此操作。
自定义#
jetson-storage.conf#
在 /opt/nvidia/jetson-configs/jetson-storage.conf 中可以更改一些选项
LVM_ENABLED=1
ENCRYPTION_ENABLED=0
# User defined storage list, ex: ("/dev/sda" "/dev/nvme0n1" "dev/sdb")
# Only feasible when ENCRYPTION_ENABLED=0
STORAGE_PATH=()
MAX_STORAGE_NUM=5
LVM_ENABLED
用于为多个磁盘启用 LVM。自此版本以来,此选项默认设置。如果您是从先前禁用 LVM 的版本升级的,则需要编辑 /opt/nvidia/jetson-configs/jetson-storage.conf 并手动将其设置为 1。请注意,如果磁盘分区之前已格式化为 LVM 卷,请按照恢复出厂设置中的说明首先删除 LVM 分区,否则 jetson-storage 服务将被未知的 LVM 卷混淆并表现不当。
如果设置了 LVM_ENABLED
,您可以在首次设置 jetson 存储后向系统中添加更多磁盘,只要总存储数量小于(或等于)下面提到的 MAX_STORAGE_NUM
即可。新存储将被正确格式化并添加到 LVM 中。除非您在高级 LVM 操作方面有丰富的经验,否则我们不建议您删除或更换任何 LVM 设备。稍后,当您在 jetson-storage 启动后有更多磁盘要添加到系统中时,您可以重新启动设备,以便服务可以在启动时设置您的新磁盘。或者您可以重新启动服务以通过以下方式添加新磁盘:
sudo systemctl restart jetson-storage
ENCRYPTION_ENABLED
用于在 Jetson 存储上启用磁盘加密。请参阅磁盘加密。
STORAGE_PATH
是 Bash 中的一个数组。仅当禁用磁盘加密时,此选项才可行(ENCRYPTION_ENABLED
为 0)。您可以使用命令 sudo blkid
列出系统上的可用磁盘,并在启用 jetson-storage 之前指定要使用的存储,例如:
STORAGE_PATH=("/dev/sda")
如果 STORAGE_PATH
为空(默认情况下),则 jetson-storage 服务将自动选择可用的存储作为 Jetson 存储。
MAX_STORAGE_NUM
是您希望在 jetson-storage 服务中支持的最大存储数量。如果连接到您的 Jetson 的存储驱动器数量超过 MAX_STORAGE_NUM
,请更新该值。STORAGE_PATH
中的存储驱动器数量不能超过 MAX_STORAGE_NUM
。
storage-quota.json#
默认的 /opt/nvidia/jetson-configs/storage-quota.json 包括一些微服务的项目,并且此文件将被应用程序包覆盖。以下是来自 ai_nvr 的一个示例,用于填写 storage-quota.json 中的必填字段。任何人都可以在文件底部添加自己的设置。该服务将创建一个系统用户,其中包含 name
和用户 id
,并在后续版本中为用户配置磁盘配额,配额大小为 KiB 中指定的 quota
。NVME 或 SATA HDD 分区挂载到 /data,其中包含子目录,这些子目录以 volume
命名,用于各种 Jetson 软件模块。以下是默认配置
{
"default-group" : "logusers",
"default-group-id" : "150",
"jetson-quota" : [
{
"name" : "ingress",
"id" : 2002,
"quota" : 1048576,
"volume" : "ingress-secrets-volume",
"in-group" : "logusers"
},
{
"name" : "redis",
"id" : 2003,
"quota" : 5242880,
"volume" : "redis-volume",
"in-group" : "logusers"
},
{
"name" : "logging",
"id" : 2004,
"quota" : 10485760,
"volume" : "logging-volume",
"in-group" : "logusers",
"share-volume" : "true"
},
{
"name" : "monitoring",
"id" : 2005,
"quota" : 5242880,
"volume" : "monitoring-volume",
"dirs" : "db",
"in-group" : "logusers"
},
{
"name": "vodi",
"id" : 2007,
"quota" : 104857600,
"volume" : "vodi-volume",
"in-group" : "logusers"
},
{
"name": "iotgateway",
"id" : 2008,
"quota" : 1048576,
"volume" : "iotgateway-volume",
"in-group" : "logusers"
}
]
}
注意
在第一个版本中,定义的存储配额未强制执行。
磁盘加密#
您可以按照以下说明在 Jetson 存储上启用磁盘加密。
刷写#
请参阅 Jetson Linux 开发者指南中的“安全性 > 磁盘加密”部分,并首先使用磁盘加密刷写您的 Jetson 设备。以下是在 Jetson AGX Orin 和 Jetson Orin Nx 上启用磁盘加密的示例
根据 Jetson Linux 开发者指南生成 EKS 镜像,并覆盖
Linux_for_Tegra/bootloader/eks.img
和Linux_for_Tegra/bootloader/eks_t234.img
。生成默认 EKB 密钥
cd Linux_for_Tegra echo "00000000000000000000000000000000" > ekb.key
注意
上面的零密钥只是一个示例。您应该将其替换为生成 EKS 镜像时设置的任何密钥。
将设备置于恢复模式
刷写 Jetson AGX Orin
sudo ROOTFS_ENC=1 ./flash.sh -i "./ekb.key" jetson-agx-orin-devkit mmcblk0p1
刷写 Jetson Orin Nx
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --network usb0 --showlogs -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" -i ./ekb.key --no-flash jetson-orin-nano-devkit internal sudo ROOTFS_ENC=1 ./tools/kernel_flash/l4t_initrd_flash.sh --network usb0 --showlogs --no-flash --external-device nvme0n1p1 -S 16GiB -c ./tools/kernel_flash/flash_l4t_t234_nvme_rootfs_enc.xml --external-only --append -i ./ekb.key jetson-orin-nano-devkit external sudo ./tools/kernel_flash/l4t_initrd_flash.sh --network usb0 --showlogs --flash-only
注意
默认情况下,根文件系统将被加密。您可以仅为外部存储启用磁盘加密,并将根文件系统分区保留为未加密。有关更多详细信息,请参阅 Jetson Linux 开发者指南。
启用#
按照快速入门指南中的说明安装 nvidia-jetson-services 软件包。
编辑 /opt/nvidia/jetson-configs/jetson-storage.conf 并将 ENCRYPTION_ENABLED
设置为 1
ENCRYPTION_ENABLED=1
然后启用 jetson-storage 服务
sudo systemctl enable jetson-storage
关闭您的 Jetson 设备电源,确保存储已正确插入,然后打开设备电源。请注意,jetson-storage 需要在启用 jetson-storage 后的首次启动时检测您的存储并将其添加到 LUKS 表中,因此您需要通过以下方式检查服务状态:
systemctl status jetson-storage
如果状态如下所示为 active (exited),请再次重启您的 Jetson,以便 Jetson 磁盘加密实用程序可以正确格式化和加密您的设备。
ubuntu@tegra-ubuntu:~$ systemctl status jetson-storage
● jetson-storage.service - Jetson storage service
Loaded: loaded (/lib/systemd/system/jetson-storage.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2023-11-23 02:49:37 UTC; 4 days ago
Process: 4315 ExecStart=/opt/nvidia/jetson/services/storage/bin/jetson-storage-setup init (code=exited, status=0/SUCCESS)
Main PID: 4315 (code=exited, status=0/SUCCESS)
CPU: 597ms
所有可用的外部存储都将由 jetson-storage 服务检测并设置为 Jetson 存储。
现在,当您登录控制台时,您应该看到如下所示的挂载消息。您现在可以开始使用加密存储了。
CURRENT STORAGE STATUS ON JETSON:
* Mount Point: /data
* Mount Path: /dev/mapper/jetson-enc-nvme0n1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/jetson-enc-nvme0n1 1.9T 48K 1.8T 1% /data