使 NAS 显示为 USB 驱动器

Ric*_*olt 14 network-shares usb-storage

我的电视可以录制到 USB 存储,这很常见。我想要的是录制到我的 NAS 上,那里有足够的空间,可以更好地共享和管理录音。所以我正在寻找一种适配器(硬件/软件),它可以让我的 NAS 在电视上显示为 USB 块存储设备。有任何想法吗?谷歌搜索一无所获。

请注意,这与将 USB 设备用作网络驱动器的非常常见的情况完全相反。有很多解决方案,所以让我强调一下,我正在寻找相反的方法:让我的NAS看起来像一个物理 USB 驱动器,可以直接插入我的电视,如下所示:

[NAS] ——— Ethernet ——— [adapter] ——— USB ——— [TV]
Run Code Online (Sandbox Code Playgroud)

Mat*_* W. 7

我知道这篇文章已经很老了,但当我寻找同一问题的解决方案时,我偶然发现了它。我还没有看到可以购买的现成解决方案,但有几种自己动手 (DIY) 的方法。

\n

因此,这些 DIY 方法都是基于构建自己的“适配器”。该适配器是基于Linux的计算机,例如单板计算机(SBC),例如Raspberry Pi。它一方面充当智能电视的 USB 海量存储设备(“闪存驱动器”),另一方面访问(读取和写入)网络附加数据存储 (NAS)。

\n
                 iSCSI via                              Mass Storage\n                TCP/IP via                            Device Class via\n[NAS] \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 Ethernet or Wi-Fi \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 [Linux computer] \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 USB \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 [Smart TV]\n
Run Code Online (Sandbox Code Playgroud)\n

Matt Olan 在今年早些时候尝试存储 PlayStation 4 的游戏和备份时就意识到了这种方法:https ://matt.olan.me/making-a-piscsi-usb-drive-part-1/和https://matt.olan.me/making-a-piscsi-usb-drive-part-2/ - 他还进行了一些性能测量。

\n

开始在 SBC 上安装 Linux 操作系统 (OS)

\n

如果您使用基于 Raspberry Pi 的 SBC,则应从 Linux 安装开始。Raspberry Pi OS的当前版本 (以前称为Raspbian)可以从https://www.raspberrypi.org/software/下载。

\n

然后,您还可以按照https://www.raspberrypi.org/documentation/configuration/wireless/headless.md上的指南来无头设置您的 Raspberry Pi,即您已经可以修改 SD 上的内容(启动文件夹)卡片。您还可以从启用 SSH 开始(通过ssh在启动目录中创建一个名为的新空文件)。然后使用raspi-config更改进一步的设置。

\n

为您的智能电视提供大容量存储设备

\n

通常计算机充当 USB 主机。我们这里需要的是一台充当 USB 从设备的计算机。计算机的硬件需要提供USB On-The-Go (OTG)端口。在 Linux 中,这种系统也称为USB 设备。您将需要修改您的 Linux 安装。

\n

USB 驱动程序需要在和dwc2中使用。/boot/config.txt/etc/modules

\n

这里使用的是“Mass Storage Gadget ”(MSG)。它“提供对 USB 海量存储类的支持。它可以在主机上显示为一组最多 8 个 SCSI 磁盘驱动器(称为逻辑单元,通常称为 LUN,尽管它在技术上代表逻辑单元号),尽管大多数单个 LUN 就足够了。为每个 LUN 存储的信息必须由小工具在某个地方维护,无论是在普通文件中,还是在块设备(例如磁盘分区,甚至是 ramdisk)中。该文件或块设备被称为小工具的后备存储(...)。” (来源: http: //www.linux-usb.org/gadget/file_storage.html

\n

该模块g_mass_storage是通过modprobe指向后备存储来加载的:

\n

sudo modprobe g_mass_storage file=/dev/sd... stall=0

\n

我们将使用通过 iSCSI 提供的块设备,请参见下文。

\n

(还有一篇不错的文章介绍了仅将 Pi Zero W 制作为 USB 闪存驱动器,因此无需连接到另一侧的 NAS。某些部分仍然适用于我们的场景:https: //magpi.raspberrypi.org /articles/pi-zero-w-smart-usb-flash-drive - 提示:如果您采用此方法,请确保您的容器文件对于您的智能电视来说足够大。我刚刚发现我的 LG 电视仅接受带有以下格式的闪存驱动器容量至少为 4 GB。)

\n

访问您的 NAS

\n

限制:您无法直接提供对网络中共享目录的访问作为小工具的后备存储。NAS 的底层通信协议通常是服务器消息块( SMB ) 或通用 Internet 文件系统( CIFS ) 或网络文件系统( NFS )。

\n

“g_mass_storage 模块需要块设备或平面文件,大多数网络共享也不需要。” (来源:https ://www.raspberrypi.org/forums/viewtopic.php?t= 220468)

\n

相反,它要求您的 NAS 提供 iSCSI 一种互联网小型计算机系统接口),“一种基于互联网协议 (IP) 的存储网络标准,用于链接数据存储设施。它通过通过传输 SCSI 命令来提供对存储设备的块级访问” TCP/IP 网络。iSCSI 用于促进通过 Intranet 进行数据传输 (...)。” (来源: https: //en.wikipedia.org/wiki/ISCSI

\n

由于它基于 TCP/IP 网络,因此它基本上独立于底层链路层,即您应该能够通过有线以太网连接或无线 Wi-Fi 访问它。这取决于您本地的设置。请记住,通过以太网的吞吐量应该更高。

\n

您需要询问您的 NAS 用户手册,了解如何将其启用为 iSCSI 目标。

\n\n

在运行 Linux 的 SBC 上,您需要执行更多步骤来启动与 NAS 的 iSCSI 连接。Matt Olan 在https://matt.olan.me/making-a-piscsi-usb-drive-part-1/的“方法”部分有一个非常好的描述- 它还描述了设置质量的先前步骤存储小工具如上所示。

\n

硬件选择提示

\n
    \n
  • 一些 Raspberry Pi SBC 将其 USB 连接到 USB 集线器,或将 USB ID 引脚永久接地到印刷电路板上。这并不能使它们通过 USB OTG 用作 USB 从设备。
  • \n
  • 根据您的 SBC,您可能只有 Wi-Fi以太网连接。
  • \n
  • 您可能想要选择带有 USB 3.0 OTG 的 SBC 以实现更高的数据速率。确保使用“超高速”而不仅仅是“高速”。
  • \n
  • Raspberry Pi Zero W 和 Raspberri Pi 4 Model B 似乎可以工作(不保证)。
  • \n
  • Matt Olan 首先使用了 Raspberry Pi Zero W(USB 2.0 OTG、WiFi),然后使用了 RockPi 4b(USB 3.0 OTG)。
  • \n
\n

不支持 iSCSI 的替代方式

\n

如果您的 NAS 不提供 iSCSI,则可以采取不同的方法。NAS 上的文件通过 SMB 访问。

\n
           SMB or NFS or \xe2\x80\xa6 via                          Mass Storage\n            usually TCP/IP via                        Device Class via\n[NAS] \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 Ethernet or Wi-Fi \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 [Linux computer] \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 USB \xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94 [Smart TV]\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如前所述,SMB 访问不受支持g_mass_storage,这就是我们需要采取解决方法的原因:

\n\n

这种方法的缺点是您需要同步/安排对后备存储的访问。将数据从 A 复制到 B(反之亦然)将需要一些时间,并且您将需要额外的步骤来自动执行此操作。

\n

其他尝试

\n
    \n
  • 我不记得参考文献,但上面提到的方法似乎需要 Linux 内核版本 >= 4.4。
  • \n
  • 如果您的智能电视支持媒体传输协议 (MTP),您可能可以采取不同的方法。
  • \n
  • Matt Olan 提到,一些“NAS 制造商(例如 QNAP)提供对直接 USB 存储的支持”
  • \n
  • 我读过有关 QEMU 虚拟 VFAT 文件系统 (vvfat) 的简短摘要,但我不确定它是否可以应用于这种情况。
  • \n
\n